Программируя в 1С привыкаешь к подсветке синтаксиса, используемой в конфигураторе, но когда хочешь распечатать исходник какого-либо модуля, чтоб вечерком посидеть с карандашом и подумать над написанным, то возникает некоторая проблема: а как же его распечатать с сохранением подсветки? Копипаст в текстовый редактор — потеря раскраски, печать напрямую из конфигуратора — тот же результат.
В последнее время подсел на notepad++, он умеет печатать с выбранной подсветкой синтаксиса, но проблема в том, что нет подсветки именно для языка, используемого в 1С. Долго и безрезультатно искал нужную подсветку синтаксиса. Нашел на одном сайте, но они просят денег и нет гарантии, что это то самое искомое.
Попытался сам вручную создать подсветку, но все шаманства с xml файлами не приводили к успеху. Наткнулся на статью «Включаем подсветку синтаксиса для less файлов в Notepad++», ожидал увидеть там рецепт создания этой самой подсветки, но как и многие комментирующие был разочарован содержанием поста. В результате копания мануалов у меня получилось таки создать нужную мне подсветку. Оказывается это совсем не сложно! Итак приступим:
- Открываем Notepad++.
- Для удобства открываем текстовый файл с кодом, который будем раскрашивать.
- В меню «Синтаксис» выбираем параметр «Свои настройки»
- В меню «Вид» выбираем пункт «Пользовательское определение языка» или нажимаем на панели инструментов кнопку:
Откроется окно настроек синтаксиса. Можно нажать кнопку «Стыковать» в правом верхнем углу (которая может называться «Dock», в зависимости от полноты перевода интерфейса), чтоб прилепить к правому краю окна. Плюсом такого решения будет полоса прокрутки, дающая возможность добраться до нижних параметров, которые могут просто не влезть по вертикали в монитор - На вкладке «Стандартный» настраиваем базовый стиль отображения в разделе «Настройка стандартного стиля»: основной шрифт, размер, цвет фона и текста, который не будет попадать под остальную раскраску. Все параметры применяются сразу и любые изменения можно наблюдать воочию.
На этой же вкладке в разделе «Настройка открытия ключевых слов» указываем теги группы, по которым определяются блоки текста. Например, у нас блоком является все, что между операторами «Процедура» и «КонецПроцедуры», следовательно «Процедура» пишем в первое поле, а «КонецПроцедуры» в поле ниже. Для каждой группы можно указать отдельные настройки шрифта и цвета. Ключевые слова разделяются пробелом. Добавим туда процедуры циклов и условий, чтоб можно было сворачивать их в группы. - С блоками разобрались, теперь подкрасим ключевые слова. Для этого нам понадобится вкладка «Списки ключевых слов». Здесь нам доступны 4 группы, которые мы можем использовать как нам заблагорассудится. Добавляем в первую все операторы, которые нужно выделить цветом, это будут всякие «Перем», «Выбрать» и т.п. Во вторую группу пропишем инструкции препроцессора "#" и поставим галочку «Префикс» для того, чтоб цветовая схема распространилась и на слово после этого символа.
- Плавно переходим на вкладку раскраски комментариев. Заполнение этой вкладки не должно вызвать каких-либо затруднений.
- Вкладка «Операторы» немного отличается от описанных выше. Здесь нам предоставляют список одиночных операторов, которые мы можем раскрасить. При помощи кнопки со стрелкой переносим нужные нам операторы в поле «Активные операторы» и ниже выставляем параметры раскраски. Чекбокс «Включить знак перехода» мне ничем не помог, так как при включении появляются в поле китайские символы и никак не хотят меняться. Далее следует группа разделителей: тут указываем цветовые и шрифтовые параметры для окавыченного текста. Думаю затруднений не составит сделать настройки на свой вкус.
- Теперь осталось сохранить наше творение под каким либо именем. Для этого в верхней части окна нажимаем кнопку «Сохранить как...» и вводим имя нашей синтаксической подсветки. Раскраска сохраняется в специальном файле userDefineLang.xml. Настройки можно экспортировать в отдельный файл, который в последствии можно распространять.
Кстати чекбокс «Любой регистр» почему-то игнорируется и подсветка остаётся регистрозависимой.
Всё! Наконец-то теперь можно распечатать код в цвете:
Единственное неудобство — это выбирать подсветку синтаксиса вручную при каждом открытии файла.
Ссылка на готовый xml для подсветки языка 1С на Github. Для использования у себя нужно сделать импорт через «Пользовательское определение языка» и перезапустить Notepad++.
Автор: msincster