Syntax definition rules for 1C:Enterprise 8 for tmLanguage-based text editors (Sublime Text, Atom and VS Code).
Данный репозиторий создан для консолидации работ по развитию пакетов, добавляющих поддержку языка 1С:Предприятие 8 для текстовых редакторов Atom, Sublime Text и Visual Studio Code.
Под каждый из редакторов создан отдельный репозиторий и опубликован соответствующий пакет на площадке распространения пакетов:
| Репозиторий | Пакет |
|---|---|
| Sublime Text | Package control |
| Atom | Atom.io/packages |
| VS Code | Marketplace |
Разработка описания грамматики языка на основе формата TextMate ведется в специальном YAML-файле, описание которого и примеры использования вы можете найти здесь.
Проект 1c-syntax не органичивается репозиториями с описанием грамматики. В рамках наших активностей так же выполнялись/выполняются работы по направлениям:
- Подсветка синтаксиса для Github: библиотека linguist
- Подсветка синтаксиса GitLab: библиотека rouge и братский проект 1c-syntax-for-GitLab
- Подсветка синтаксиса в редакторе Ace: репозиторий ace
- Подсветка синтаксиса в редакторе Vim: репозиторий vim-language-1c-bsl за авторством @andreevlex
- Подсветка синтаксиса в редакторах с поддержкой GtkSourceView: библиотека GtkSourceView, репозиторий gtksourceview-1c-bsl
- Запуск скриптов OneScript в редакторе Atom: пакеты atom-script и atom-build
- Модули подсветки brush-bsl и brush-sdbl для js библиотеки syntaxhighlighter. Эти модули должны работать в JIRA.
Планируются работы по направлениям:
- Подсветка синтаксиса в редакторе CodeMirror - для поддержки подсветки в git-сервере BitBucket
- Обновление подсветки в редакторе Highlight.js - для улучшенной поддержки подсветки в git-сервере Gogs и приведения идентификаторов языка к единому виду
Помимо, собственно, грамматики, мы пытаемся добавить в редакторы дополнительные
возможности, которые могут упростить работу с 1С.
На данный момент список таких фич выглядит вот так:
| Функциональность \ Поддержка в редакторах | Atom | Sublime Text | VS Code |
|---|---|---|---|
| Подсветка текста запроса внутри модуля и отдельно | Есть | Есть | Есть |
Блочное комментирование через // |
Есть | Есть | Есть |
| Список процедур и функций текущего файла | Есть | Есть | Есть |
| Список процедур и функций рабочего каталога | Есть | Есть | Есть |
| Переход к определению процедур и функций | Есть | Есть | Есть |
| Автодополнение процедур и функций глобального контекста | Есть | Есть | Есть |
| Автодополнение процедур и функций, уникальных для OneScript | Нет | Нет | Есть |
| Сниппеты (шаблоны текста) | Есть | Есть | Есть |
| Использование автоматических отступов по ключевым словам | Есть | Есть | Есть |
| Автоматическое выравнивание блока кода или файла целиком | Есть | Есть | Есть |
Разворачивание конструкций вида ++/+= и подобных по нажатию Tab |
Есть | Есть | Есть |
| Автоматическое добавление символа | при добавлении новой строки во время редактирования строкового литерала | Есть | Есть | Есть |
Автоматическое добавление символов // при добавлении новой строки во время редактирования комментария по нажатию Shift-Enter |
Есть | Есть | Есть |
Запуск скриптов .os/.bsl с помощью OneScript |
Есть | Есть | Есть |
Линтер на базе oscript -check |
Есть | Есть | Есть |
| Использование отступов в виде 4х-символьных табов | Есть | Есть | Есть |
| Поиск мест использования процедур | Нет | Нет | Есть |
| Информация о процедуре | Нет | Нет | Есть |
| Предварительный просмотр определения процедуры | Нет | Нет | Есть |
| Автодополнение через точку | Нет | Нет | Есть |
| Подсказка по параметрам процедур | Нет | Нет | Есть |
| Поиск определения | Нет | Нет | Есть |
| Поддержка английского языка конфигурации | Нет | Нет | Есть |
| Создание описания метода | Нет | Нет | Есть |
| Синтакс-помощник по функциям глобального контекста | Нет | Нет | Есть |
| Синтакс-помощник по методам oscript | Нет | Нет | Есть |
| Автоматическая вставка скобок | Нет | Нет | Есть |
| Динамические шаблоны | Нет | Нет | Есть |
Информацию об использовании каждой из возможностей вы найдете в README соответствующего редактора.
Если вы разработчик и хотите помочь с разработкой пакетов и/или грамматикой, пожалуйста, ознакомьтесь с гайдом для разработчиков.
Уже поставленные задачи по разработке можно найти на странице Issues данного репозитория.