Загрузка, редактирование и установка цветовых схем (раскраски кода) в Конфигуратор и EDT

Публикация № 1236182

Разработка - Работа с интерфейсом

Цветовые схемы раскраска кода Конфигуратор EDT

В современных IDE и текстовых редакторах есть удобная работа с цветовыми схемами: их можно загружать из файлов, выбирать из списка и сразу устанавливать в оболочку. К сожалению, в Конфигураторе и EDT цвета кода можно настроить только вручную. Этой разработкой хочу исправить эту проблему.

Введение

Наверное, во мне умер один дизайнер, но меня хлебом не корми, дай с цветами поиграться. Я давно еще нашел набор цветов темы Solarized для конфигуратора, настроил себе и был счастлив. Но потом, когда начал работать в Android Studio из семейства IDEA, я увидел, сколько бывает разных цветов схем, нашел сайты, посвященные им, и пропал надолго. Вот бы такое в конфигураторе, подумал я, и взялся за разработку.

Хорошо подобранная цветовая схема делает код более читаемым, приятным глазу. После такой схемы стандартная навевает тоску. Да и вообще, необычное оформление может преобразить код до неузнаваемости:

 

Далее я опишу функционал разработки, но можно сначала вместо 1000 слов посмотреть видео, в котором я кратко показываю и комментирую обработку в деле.

 

 
 Неважная информация о разработке

 

Описание функционала

Данная обработка никак не зависит от конфигурации, запускайте хоть в пустой базе, единственное, для полного функционала рекомендуется платформа не ниже 8.3.16 и режим совместимости не ниже 8.3.11. Ну и наличие Интернета для режима работы онлайн.

Рассмотрим основное окно обработки:

В заголовке формы пишется название текущей цветовой схемы (1). При открытии будут выбраны схемы, которые сейчас установлены в Конфигураторе и EDT, и в заголовке будет указано <Default>.

Слева располагается три типа источников (2), при открытии выбрано расположение Локально. В данном случае в списке (4) появятся все подходящие файлы цветовых схем (с расширениями csi, jar, icls, xml, tmtheme), которые вы скачаете из Интернета (ссылки в конце статьи) и положите в папку (3).

Жирным выделены файлы *.csi, специального формата именно для этой обработки, которые создаются через кнопку (10). Используя эти файлы, вы можете сохранять в избранное понравившееся вам схемы, отредактированные вами схемы, переносить раскраску на другой компьютер, может, даже делиться с кем-то схемой.

Обработка предназначена как для конфигуратора, так и для EDT, поэтому правая часть экрана, относящаяся к конкретным IDE, переключается вкладками (5). Для каждой области используется свой функционал, за исключением кнопки (10), она сохраняет настройки сразу по обеим IDE.

При смене текущей строки в списке (4), тут же меняется пример кода на русском и английском в поле (6) и используемая палитра (7). В примере кода использованы, по возможности, все варианты лексем, чтобы можно было увидеть полную палитру цветов.

При клике на части кода в (6) можно спозиционироваться на соответствующем цвете в (7) и поменять его, если текущий вариант вас не устраивает. Можно задать цвет RGB вручную или выбрать один из веб-цветов. А можно вообще психануть и поменять все цвета на противоположные через кнопку (8).

При считывании цветовой схемы происходит сопоставление тегов загружаемого редактора и 1С. Не всегда в файле есть все необходимые цвета, поэтому некоторые могут быть подобраны обработкой автоматически. В таком случае название цвета в палитре (7) помечается красным цветов. Это как сигнал о том, что, возможно, данный цвет нужно подправить.

Вообще, сделать сопоставление тегов совершенно разных лексических систем, было отдельной задачей натягивания совы на глобус. Поэтому я где-то мог ошибиться, и вы можете подправить этот мэппинг, который хранится в формате JSON в макетах обработки.

После того, как вы выбрали и, может, подправили схему, ее можно загружать в Конфигуратор с помощью кнопки (9). После нажатия вам надо будет в качестве подтверждения выбрать файл настроек 1cv8.pfl. Он у вас будет отображаться один среди папок. Есть небольшая вероятность, что у вас настройки берутся из предыдущей версии 1С, и в открывшейся папке файла не будет. Тогда следует посмотреть файл в рядом лежащей папке 1Cv81 или 1Cv82. После записи нужно просто перезапустить Конфигуратор, и вы увидите код в новой цветовой схеме.

При первом запуске обработки, у вас, конечно, список (4) будет пуст, но можно даже ничего не качать, для этого есть еще две вкладки (2).

 

На этих вкладках идет подключение к сайтам (4) с цветовыми схемами для IDEA и Sublime, и динамическое получение списка схем по API. В списке (3) появляется оформление строк, так можно сразу понять, это будет светлая или темная схема.

В верху списка находятся кнопки сортировки (1). Можно отсортировать список по названию, по "светлости" и по популярности (количестве загрузок). Также можно искать схему по названию.

По умолчанию идет сортировка по популярности и выбирается TOP-100 схем (2). Вы можете изменить это число, всего на сайте сейчас представлено более 600 схем, однако при большом числе выборки будет более долгая загрузка.

Для сайта по Sublime все тоже самое, только произойдет загрузка сразу всех 600 - 700 схем, и не будет сортировки по популярности. Если сравнивать эти вкладки, то, вроде, удобней работать с IDEA, т.к. тут показываются сразу популярные схемы. Для Sublime же поиск будет сложнее, некоторые позиции даже не будут открываться, из-за удаленного репозитория или схемы неверного формата, однако там встречаются "жемчужины", которые идеально ложатся на 1С, особенно, EDT.

В правой части можно увидеть вариант для EDT. Здесь уже другой пример кода (5) и палитра (6), на которой столько цветов, что они не поместились в одном списке. И это не полный список, особо редкие случаи я еще не покрыл, думаю, добавлю их в следующих версиях.

Чтобы считывалась текущая цветовая схема, и можно было загружать новые, необходимо указать путь к рабочей области (Workspace) EDT (7). Дальше можно сохранять настройки (8). Вас попросят подтвердить перезапись двух файлов, но перед этим нужно будет закрыть саму EDT.

 

 
 Лирическое отступление на тему темных тем

 

Что дальше?

Надеюсь, это решение пригодится разработчикам, и вы сами предложите варианты развития обработки. Однако, что я вижу сейчас, это возможность играться не только с цветами, но и со шрифтами. В Конфигураторе можно выбрать шрифт только для всего кода, а в EDT можно настраивать стиль написания для каждой лексемы отдельно. Например, ключевые слова жирным, директивы - курсивом. Это также повышает визуальную составляющую кода. И хорошо, что в цветовых схемах, что я подключил, есть описание таких настроек, так что нужно будет добавить эти настройки и их загрузку из источников.

 

Благодарности

Конечно, моя разработка не является чем-то совсем уникальным и не родилась на пустом месте. Поэтому я хотел бы поблагодарить:

  • Автора с ником Ramz и его Визуальный редактор цветовых схем. У него я подсмотрел как можно распарсить файл настроек Конфигуратора и как оформить предпросмотр кода.
  • Никиту Грызлова и его разработку Подсветка синтаксиса 1С в текстовых редакторах. Благодаря плагину для Sublime, я увидел, как круто может выглядеть код 1С, когда его хорошенечко покрасишь, и окончательно загорелся своей разработкой.
  • Nakonechniy Dmitry, который разместил публикацию Приятная глазу цветовая схема, а именно Solarized. Здесь я впервые понял, что код в 1С можно раскрасить по-другому, и это будет круто.

 

Ссылки

Адреса сайтов, на которых можно скачать цветовые схемы для IDEA и Sublime, т.е. подходящие для этой обработки:

Скачать файлы

Наименование Файл Версия Размер
ColorSchemesInstaller
.epf 39,04Kb
14.05.20
44
.epf 1.1.1 39,04Kb 44 Скачать

Специальные предложения

Лучшие комментарии
14. CyberCerber 500 19.05.20 11:33 Сейчас в теме
(13)
В конфигураторе - половина окон белая осталась, например окно объектов конфигурации, сообщений, СКД

Да, конечно, это так и останется. Все эти окна не относятся к области кода. Это тема среды, а она в Конфигураторе только одна :-(

Прикрепляю файл с настройками цветовой схемы по умолчанию, если надо. А в pfl не JSON, там собственный 1Совский формат.
Прикрепленные файлы:
Default.csi
GOshaSaveiko; +1 Ответить
Остальные комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Snitkovski 87 14.05.20 18:28 Сейчас в теме
Константин = кр-р-расавчик!
LIKE однозначно!
и "Маней" проголосую! 8-)
2. user817897 14.05.20 23:45 Сейчас в теме
3. SirStefan 41 15.05.20 03:46 Сейчас в теме
Скачанные темы победительницы конкурса для IDEA за 2019 год не заработали. Оказалось, что программа ищет только в папке "/colors" архива, а в файлах они то в "/themes", то вообще в корне.
Изменение в процедуре ReadIDEAFile строки
	//if ZipItem.Path = "colors\" and ZipItem.Name <> "" then             
	if ZipItem.Path <> "META-INF\" and ZipItem.Name <> "" and ZipItem.Extension = "xml" then
поправило ситуацию.
Из пожеланий:
Неплохо было бы кнопку сохранения текущей схемы (конечно можно сохранить pfl вручную, но не каждый подумает об этом заранее).
В некоторых jar есть различные варианты раскраски (тот же Gradianto из победителей). Хотелось бы обрабатывать не первый файл из архива, а все и выводить как варианты.
TreeDogNight; +1 Ответить
4. CyberCerber 500 15.05.20 11:20 Сейчас в теме
(3) Да, забыл написать, что там файлы jar в другом формате, нужно вручную распаковывать. А, интересное решение, спасибо. Но там еще бывает несколько схем, верно. В общем, т.к. это формат архива редкий, я решил пока не делать для него парсер. Наверное, сделаю в будущих версиях
6. SirStefan 41 15.05.20 11:25 Сейчас в теме
(4), половинчатое решение оказалось. Есть архивы с *.xml без блока color. Похоже нужно все таки перебирать все xml в файле и проверять ещё, есть ли у них блок color.
5. CyberCerber 500 15.05.20 11:22 Сейчас в теме
(3) Когда только открыли обработку, в ней активна текущая тема, можете сохранить ее в файл csi, нажав кнопку снизу. Еще думаю сделать, чтобы эта тема была всегда в списке, а не только при открытии.
7. P_enemy 24 15.05.20 11:36 Сейчас в теме
Хороший инструмент.

Небольшой недочет: в темных темах "точку" плохо видно или совсем не видно, если фон почти черный. "Точка" не отнесена ни к одному классу в макете HTML и по умолчанию черная. Добавил ее в класс "Operators", стало на много лучше.
8. CyberCerber 500 15.05.20 11:37 Сейчас в теме
(7) Ммм, спасибо, вроде, разносил ее. Наверное, в процессе исправлений что-то потерялось. В новой версии сделаю
9. GOshaSaveiko 30 15.05.20 15:36 Сейчас в теме
Работает даже на платформе 8.3.13 в режиме совместимости 8.3.8
При запуске выдает ошибку:
{ВнешняяОбработка.ColorSchemesInstaller.Форма.Form.Форма(225,5)}: Процедура или функция с указанным именем не определена (StrStartsWith)
if <<?>>StrStartsWith(Item.Name, "Des") then (Проверка: Тонкий клиент)

Надо только вручную дорисовать функцию в хвост:
&AtClient
function StrStartsWith(SourceString, Substring)
	strl = StrLen(SourceString);
	return ?(Left(SourceString,strl) = Substring, true, false);
endfunction
10. CyberCerber 500 15.05.20 16:22 Сейчас в теме
(9) Да, из-за этой функции и написал про режим совместимости. Кстати, если написать просто СтрНачинаетсяС, должно и с 8.3.6 заработать, она тогда появилась. Наверное, просто английский аналог забыли добавить или назвали по-другому...
Но я рад, что вы не нарушили стиль :-) Можно даже еще короче: return Left(SourceString, strl) = Substring
А на платформе 8.3.13 не пропала кнопка сортировки по цвету? И отступы в примере кода остались?
13. GOshaSaveiko 30 19.05.20 09:35 Сейчас в теме
(10)
return Left(SourceString, strl) = Substring

Да, я иногда пользуюсь этим, хотел даже поправить, но коммент на редактирование уже был закрыт.

Кнопка сортировки по цвету отображается без иконки, но, вроде как, работает. Отступы в превьюхе отсутствуют.

Ещё не хватает кнопки "вернуть стандарт". Я купил обработку, попробовал, но мне результат не понравился. В конфигураторе - половина окон белая осталась, например окно объектов конфигурации, сообщений, СКД (я понимаю, что не всё зависит тут от вас). Просто удалил файл pfl, чтобы он пересоздался. Хотя можно было удалить кусок JSON из pfl - но лень разбираться.
14. CyberCerber 500 19.05.20 11:33 Сейчас в теме
(13)
В конфигураторе - половина окон белая осталась, например окно объектов конфигурации, сообщений, СКД

Да, конечно, это так и останется. Все эти окна не относятся к области кода. Это тема среды, а она в Конфигураторе только одна :-(

Прикрепляю файл с настройками цветовой схемы по умолчанию, если надо. А в pfl не JSON, там собственный 1Совский формат.
Прикрепленные файлы:
Default.csi
GOshaSaveiko; +1 Ответить
11. unichkin 1253 17.05.20 23:33 Сейчас в теме
Добрый день! Решается ли проблема раскраски областей в EDT? Я сколько не морочился с настройкой цвета - области воспринимаются как инструкции препроцессора, а идентификаторы областей - нет. И вот такая печальненькая картинка, в объемных текстах неудобно ориентироваться. Стал подкрашивать фон области, чтобы видеть отличие от метода.
Прикрепленные файлы:
12. CyberCerber 500 18.05.20 11:25 Сейчас в теме
(11) Да, к сожалению, это никак не решить. Почему-то отнесли название области к идентификаторам. Ну, оно-то и понятно, это и есть идентификатор, но в конфигураторе наглядней получается. Может, изменят подход в будущих версиях.
15. nicxxx 236 19.05.20 12:35 Сейчас в теме
Разработка огонь! Вдохнул второе дыхание в конфигуратор :) Я конечно и до этого пользовался своей цветовой схемой, но удобство настройки через данную обработку выше всяких похвал.
16. Synoecium 684 19.05.20 16:11 Сейчас в теме
Класс!
Кривовато работает диалог вывода цвета - приходится переводить фокус на числовые значения, потому что если просто выбирать цвет из списка, то он не применяется в обработке.
17. CyberCerber 500 19.05.20 16:21 Сейчас в теме
(16) Это стандартный диалог выбора цвета. Не работают только цвета стиля, веб-цвета в числовые превращаются
18. Synoecium 684 20.05.20 08:25 Сейчас в теме
(17) цвет стиля тоже можно выудить, насколько я знаю. Вот пример: https://infostart.ru/public/484812/
Сообщения про то, что цвет стиля не поддерживается у меня не видно, может стоит сделать через СообщениеПользователю?
19. CyberCerber 500 20.05.20 11:15 Сейчас в теме
(18) Спасибо за ссылку, посмотрю
Странно, у вас никаких сообщений не видно? А какая платформа?
20. frkbvfnjh 579 01.06.20 09:09 Сейчас в теме
Когда новую версию выложите со всеми правками? А то судя по датам, все замечания в комментах сделаны после последней даты обновления...
21. CyberCerber 500 01.06.20 11:24 Сейчас в теме
(20) Да у меня даже и не было обновления, только пока первоначальная версия. Хочу, конечно, выпустить, но не могу пока найти время из-за дел. Надеюсь, на следующей неделе. А чего не хватает в текущей версии?
22. frkbvfnjh 579 01.06.20 13:00 Сейчас в теме
(21) Ну вот к примеру в (3) сообщении вроде правки делали какие-то, плюс может совместимость с более низкими версиями платформы сделаете, дописав нужные функции.
23. CyberCerber 500 01.06.20 13:14 Сейчас в теме
(22) Вы как раз перечислили те функции, которые пока не ожидаются в следующем обновлении. В (3) рассказано об особых цветовых схемах, котрые составляют 1% от общего числа схем, и разархивировав их, они заработают.
По поводу функций, я не повлияю на саму платформу, только на режим совместимости. На более старой платформе заработает, но будет не так красиво.
Я это к тому, что вы можете скачать и текущую версию, она работает, как мне кажется, вполне хорошо.
А какая у вас версия платформы?
24. frkbvfnjh 579 01.06.20 13:37 Сейчас в теме
(23) Мы до сих пор активно используем 8.3.10 в силу определенных обстоятельств. Но думаю скачаю, т.к. Ваша разработка пока самая адекватная из всех, что встречал. И прикрепите файл Default.csi прям в статью, пока не добавили кнопку сброса темы, я думаю так было бы удобнее читателям.
25. CyberCerber 500 01.06.20 13:43 Сейчас в теме
(24) Т.е. у вас именно сама платформа 8.3.10 и новее нет? Сейчас открыл у себя, работает, только некоторое оформление сбилось.
Сделал пока ответ лучшим, он выделился и вверх поднялся.
26. frkbvfnjh 579 01.06.20 13:57 Сейчас в теме
(25) Все проблемы решаемы, конечно сама платформа новая есть, можно установить, просто хотелось бы иметь самую совершенную версию обработки :)
27. SirStefan 41 01.06.20 17:24 Сейчас в теме
(24), у меня с ходу все заработало на 8.3.9
Только в коде СтрНачинаетсяС заменил русским вариантом и все.
28. CyberCerber 500 01.06.20 17:27 Сейчас в теме
(27) Кстати, там прикол в том, что изначально функцию назвали StrStartWith, потом поняли, что есть грам. ошибка и переименовали в StrStartsWith.
Так что достаточно только одну s убрать.
Оставьте свое сообщение

См. также

Цветной журнал документов Промо

Обработка документов Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Разработка, которая поможет вам скрасить вашу жизнь и сохранить зрение. Создан журнал документов с возможностью их цветового выделения по определенному реквизиту (организации, складу, контрагенту и т. д.).

1 стартмани

23.11.2009    14078    3    Svetozor    43    

Универсальный рабочий стол

Универсальные обработки Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Рабочий стол в виде ссылок. + календарь с праздниками, записями пользователей и подсчетом рабочих дней.

1 стартмани

14.05.2013    13947    4    Demic    26    

Браузер 1С

WEB Работа с интерфейсом Рабочее место v8 1cv8.cf Абонемент ($m)

Обработка, представляющая из себя веб-проводник, наделенный всеми возможностями современного браузера, которые удалось реализовать в 1С: вкладки, история, рейтинг посещений, просмотр информации о странице, код HTML-документа, куки, выбор сайта из списка, избранное, сохранение настроек пользователя, а также управление этими настройками и другое.

1 стартмани

18.07.2011    9085    24    PeterBayan    22    

Настраиваемая панель пользователя

Универсальные обработки Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Обработка предназначена для создания интерфейса самим пользователем, т.е. пользователь может настраивать вид панели добавляя доступные ему объекты.

1 стартмани

26.07.2009    70912    6    Evg-Lylyk    78    

Вытягивание многоэтажных списков MXL Промо

Универсальные обработки Загрузка и выгрузка в Excel Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Вытянуть таблицу MXL со списком в одну строчку для Excel

1 стартмани

19.01.2012    14986    0    fixin    11    

Редактор MXL – вырезание группировок в любом отчете Промо

Универсальные обработки Работа с интерфейсом v8 1cv8.cf Россия Абонемент ($m)

Часто встречал у пользователей желание быстрым способом убрать из отчета MXL ненужный уровень группировок. Но подходящего инструмента не нашел, поэтому написал свой.

1 стартмани

11.04.2013    19147    3    fixin    19    

Графическое планирование для документа "План производства по сменам" Промо

Производство готовой продукции (работ, услуг) Обработка документов Работа с интерфейсом Производство готовой продукции (работ, услуг) v8 УПП1 Россия УУ Абонемент ($m)

К вниманию предлагается внешняя обработка табличной части документа УПП "План производства по сменам" позволяющая выполнять планирование производства продукции в удобном графическом виде. Хочется узнать, есть ли потребность в такой разработке среди пользователей УПП.

1 стартмани

20.12.2012    22662    12    INTECH1    20    

Логистика (Распределение груза и прокладка оптимального маршрута с использованием API 2.0 Яндекс карт) Промо

Универсальные обработки WEB Работа с интерфейсом v8 УТ10 Абонемент ($m)

Оптимизация транспортировки товара (нагрузка на транспорт и расстояние маршрута) от продавца к покупателю.

1 стартмани

30.09.2012    22274    53    cvmbackup    16