Доброго времени суток!
Открыв окно в конвертации 3.0 на алгоритм 1С, был страшно разочарован. Сколько лет управляемых приложениям в 1С, а подветки кода до сих пор нет. Печалька. В своих разработках (http://code1C.sikuda.ru) тоже очень сильно не хватает подсветки кода. А между тем в интернете много хорошо развитых и поддерживаемых открытых проектов не только для выделения синтаксиса, но и полноценные редакторы текста. почему бы нам не взять один из них и написать для языка 1С?
На infostart был найден подобный проект (выделение синтаксиса запросов 1С) и реализация его очень понравилась: //infostart.ru/public/515572/. Спасибо Василию.
Приступаем: Рассмотрим проект CodeMirror(https://codemirror.net/index.html) поподробнее. А именно пока только его ту часть, что отвечает за раскраску кода. Она сделана в проекте для отдельного языка в виде ‘languge mode’. Специфики разбора выражения конкретного языка. А конкретные цвета для ключевых выражений, переменных и проч. задается в ‘CSS theming system’ . Очень гибко и красиво. Просто идеально, чтобы добавить язык 1С.
Тестирование реализации можно сделать здесь: http://code1c.sikuda.ru/wp-content/plugins/codemirror1c/ 😉
Далее можно прочитать здесь //infostart.ru/public/994455/
Еще бы для языка запросов сразу настройку.
Неточности реализации:
В конфигураторе точка подсвечивается красным цветом.
Не реализовано продолжение строки знаком |
Простейшую контекстную подсказку желаю.
Еще слово «По» не подсвечивается.
Если слово начинается с ключевого, то все слово подкрашивается как ключевое. Например, Идентификатор, Использование, ПоказыватьОповещение — они все выделяются красным. А если после точки идут, то черным. Должны быть синими.
Цвет комментария становится после одного знака / . Соответственно, формулы с делением подсвечиваются наполовину как комментарий.
Ещё знак ? должен красным подсвечиваться.
Не рекламы ради, а порядка для отмечу, что в рамках проектаhttps://github.com/xDrivenDevelopment/1c-syntax на основе устаканеной за год грамматики вскоре планируется релиз подсветки 1c (bsl) для редактора Ace. После этого планировался полноценный порт в CodeMirror
(2) Ошибки поправил.
Ace, кстати, отличная штука. К сожалению, заставить его правильно работать в поле html документа, сложнее, чем CodeMirror и производительность связки «костыля-перехватчика нажатий клавиш» и Ace получается ниже, чем у того же костыля и CodeMirror
(5) Текущие проблемы исправил.
(7) Возможно Вы и правы и я немного поторопился. Имея богатый опыт несоответствие стандартам html внутри 1С в поле html могу пожелать Вам терпения и настойчивости. Если мой путь коснется Axe c удовольствием присоединюсь к Вам.
всё это удобно и прекрасно спасибо. А intellesence планируется реализовать? (то что после точки если ctrl+пробел нажимаешь, для выбора свойств/методов)
Только что скачал и попробовал. В строке «Команда.ПоказыватьОповещение = Истина;» четыре буквы «Пока» отображаются красным, а остальное — синим. То есть он находит ключевое слово в части строки.
(12) Да устарела обработочка. Обновлю ее обязательно.
http://code1c.sikuda.ru/wp-content/plugins/codemirror1c/run/
Тестировать можно здесь: