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 данного репозитория.