Что нам стоит код 1С раскрасить?




Решение раскраски кода в управляемых приложениях. Используем CodeMirror!

Доброго времени суток!

Открыв окно в конвертации 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/

13 Comments

  1. tormozit

    Еще бы для языка запросов сразу настройку.

    Reply
  2. NeviD

    Неточности реализации:

    В конфигураторе точка подсвечивается красным цветом.

    Не реализовано продолжение строки знаком |

    Reply
  3. tormozit

    Простейшую контекстную подсказку желаю.

    Reply
  4. r0610201

    Еще слово «По» не подсвечивается.

    Reply
  5. NeviD

    Если слово начинается с ключевого, то все слово подкрашивается как ключевое. Например, Идентификатор, Использование, ПоказыватьОповещение — они все выделяются красным. А если после точки идут, то черным. Должны быть синими.

    Цвет комментария становится после одного знака / . Соответственно, формулы с делением подсвечиваются наполовину как комментарий.

    Reply
  6. NeviD

    Ещё знак ? должен красным подсвечиваться.

    Reply
  7. nixel

    Не рекламы ради, а порядка для отмечу, что в рамках проекта https://github.com/xDrivenDevelopment/1c-syntax на основе устаканеной за год грамматики вскоре планируется релиз подсветки 1c (bsl) для редактора Ace. После этого планировался полноценный порт в CodeMirror

    Reply
  8. sikuda

    (2) Ошибки поправил.

    Reply
  9. 1С_Мастер

    Ace, кстати, отличная штука. К сожалению, заставить его правильно работать в поле html документа, сложнее, чем CodeMirror и производительность связки «костыля-перехватчика нажатий клавиш» и Ace получается ниже, чем у того же костыля и CodeMirror

    Reply
  10. sikuda

    (5) Текущие проблемы исправил.

    (7) Возможно Вы и правы и я немного поторопился. Имея богатый опыт несоответствие стандартам html внутри 1С в поле html могу пожелать Вам терпения и настойчивости. Если мой путь коснется Axe c удовольствием присоединюсь к Вам.

    Reply
  11. gortol

    всё это удобно и прекрасно спасибо. А intellesence планируется реализовать? (то что после точки если ctrl+пробел нажимаешь, для выбора свойств/методов)

    Reply
  12. elian

    Только что скачал и попробовал. В строке «Команда.ПоказыватьОповещение = Истина;» четыре буквы «Пока» отображаются красным, а остальное — синим. То есть он находит ключевое слово в части строки.

    Reply
  13. sikuda

    (12) Да устарела обработочка. Обновлю ее обязательно.

    Тестировать можно здесь: http://code1c.sikuda.ru/wp-content/plugins/codemirror1c/run/

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *