Colorer — гибкая раскраска синтаксиса в редакторе и др.

Здесь можно обсудить ваш любимый плагин.
User avatar
ctapmex
Posts: 1241
Joined: Fri 11 Apr, 2008 07:53
Has thanked: 1 time
Been thanked: 50 times

Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by ctapmex »

Far Colorer — плагин подсветки синтаксиса в редакторе, основанный на Colorer Library Игоря Русских.
  • Изначальный автор плагина — Игорь Русских (lomecb, он же cail).
  • После того как плагин портирован на Far 2, поддержкой занимается Алексей Добрунов (ctapmex, он же на форуме ctapmex).
  • Официальная поддержка осуществляется через google-группу colorer_ru (на форуме бывает только ctapmex).
  • Актуальные версии основаны на Colorer Library версии take5.
GitHub | Анонс | Старые домашние страницы библиотеки Colorer и плагина для FAR

Плагин входит в дистрибутив Far Manager с v3.0.2948 (старые версии доступны тут)
Поддержка Windows XP
Начиная с версии FarColorer 1.4.0 в плагине прекращена поддержка Windows XP. Полностью поддерживается и тестируется на Windows 10. Несколько версий Windows назад - по запросу. Но кажется, что всегда должно работать начиная с Windows 2008.
Far Manager 3.0.5797 (2021.05.10) и более новые в дистрибутиве содержат FarColorer версии 1.4.
Поддержка Windows XP осталась только на FarColorer 1.3.x. В данной ветке будут выходить только критичные исправления. Скачать можно на GitHub странице плагина. Последняя версия 1.3.30



Что не разжёвано в документации плагина:
  • Как подключить собственные цветовые стили *.hrd
  • Как подключить собственную схему:
    • используя пользовательский файл прототипов:
    • используя папку auto:
    • через пользовательский catalog.xml:
  • Как переопределить существующую схему
  • Как правильно "удалить" какую-либо стандартную схему
  • Как использовать относительные пути и переменные окружения
  • Если раскраска неправильна:
  • Неочевидные настройки: maxlinelength (в теме)
  • Тонкая настройка подсветки для отдельной схемы: в теме.
Last edited by ctapmex on Mon 18 Oct, 2021 19:17, edited 5 times in total.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by NightRoman »

Latest post of the previous page:

Схема sql.hrc, кажется, имеет дефект для выражения CASE. А именно, в строке 970

Code: Select all

    <block start="/\b(case)\b/i" end="/\b(end([\s])*case)\b/i" scheme="sql" region00="tsqlWord" region10="tsqlWord" region01="PairStart" region11="PairEnd"/>
выражение

Code: Select all

    end="/\b(end([\s])*case)\b/i"
предлагается заменить на

Code: Select all

    end="/\b(end(?:\s*case)?)\b/i"
Иными словами, в оригинальной схеме блок, открытый словом CASE, закрывается
либо ENDCASE, либо END CASE, но не END. Предлагаемое изменение к двум
существующим вариантам добавляет и END.

Известные примеры с END:

1. В популярном SQLite используется только END:
http://www.sqlite.org/lang_expr.html#case

2. Такая же картина (только END) и в TSQL:
http://msdn.microsoft.com/en-us/library/ms181765.aspx

Если знатоки SQL в его других реализациях не видят никакого подвоха в
изменении, то просьба принять его в поставку.

Незакрытый блок - непорядок в самой раскраске SQL (хоть я пока и не видел
серьезных дефектов). Но особо криво все становится, когда кусок SQL с
незакрытым блоком внедрен в другие схемы. Родительская раскраска после
вставленного незакрытого SQL блока может ошибочно трактоваться как SQL.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by NightRoman »

3. В википедии тоже только END упоминается
http://en.wikipedia.org/wiki/SQL_CASE#CASE_expressions

4. В этом попавшемся документе SQL-92 тоже только END.
http://www.contrib.andrew.cmu.edu/~shad ... ql1992.txt

Получается, что пока даже не попадаются случаи, отличные от просто END.

P.S. Ни в коем случае не предлагаю старые варианты убрать, но для образования стало интересно - существуют ли диалекты SQL CASE с конечным ENDCASE или END CASE?
Grey
Posts: 79
Joined: Wed 16 Mar, 2005 11:19
Location: Киев
Been thanked: 1 time

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by Grey »

В Oracle и END CASE и END
так что +1 :)
User avatar
ur4ltz
Posts: 76
Joined: Fri 08 Jan, 2010 14:07
Location: Харьков
Has thanked: 1 time

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by ur4ltz »

Схема lua.hrc имеет дефект при обработке ключевого слова do.
Дефект видно при редактировании этого скрипта.
http://forum.farmanager.com/viewtopic.p ... 195#p93445
В имени функции editor.UndoRedo воспринимает как ключевое слово.
User avatar
Sav
Posts: 53
Joined: Thu 15 Jan, 2009 15:25
Has thanked: 1 time

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by Sav »

Если в питон-файле написать в комментарии #FIX и встать на эту строку курсором слово FIX исчезает полностью за курсорным крестом.
Как это поправить (нельзя ли придумать на этот случай другой цвет)? Есть еще какой-то случай (не запомнил), кажется что-то с обратным слэшом внутри строки.
Не заметил когда появилось, при Джобсе раньше такого не было.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by NightRoman »

В ColorerPack добавлена новая схема r.hrc для языка программирования R. Wikipedia. Предлагаю добавить ее в стандартную поставку.

Схему powershell.hrc из того же пакета тоже предлагаю включить в поставку.

Обе схемы подходят под категорию scripts, вероятнее всего.

Сборки пакета (и исходники) живут на сайте FarNet:
http://code.google.com/p/farnet/downloads/list

P.S. Очень вероятно, что схемы будут развиваться, поэтому включать лучше не текущий пакет, а то, что будет на момент сборки Colorer.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by NightRoman »

Прикрепил исправленные/доработанные схемы (sonar - для рассмотрения, пользователям - чтобы не ждать и для обкатки)

1. sql.hrc
- исправлен блок CASE - http://forum.farmanager.com/viewtopic.p ... 726#p93726

2. csharp.hrc
- строковые комментарии наследуют def:Comment, как и блочные (для TODO, линков, и прочего)
- struct тоже должно быть outlined, как и class
- добавил пропущенное ключевое слово var
- вербатим строки @"" - упростил парсинг и добавил подсветку экранированных двойных кавычек внутри

Код, на котором эти изменения можно посмотреть

Code: Select all

// TODO, etc. should be colored in // as well as in /*...*/
struct S1 // `struct` is outlined just like `class`
{
	void Test()
	{
		var s = // `var` is colored as keyword
			@"test "" text"; // `""` is colored as escaped
	}
}
Attachments
csharp.hrc.7z
csharp
(2.33 KiB) Downloaded 115 times
sql.hrc.7z
sql
(8.41 KiB) Downloaded 114 times
User avatar
ctapmex
Posts: 1241
Joined: Fri 11 Apr, 2008 07:53
Has thanked: 1 time
Been thanked: 50 times

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by ctapmex »

NightRoman wrote: Сборки пакета (и исходники) живут на сайте FarNet:
http://code.google.com/p/farnet/downloads/list

P.S. Очень вероятно, что схемы будут развиваться, поэтому включать лучше не текущий пакет, а то, что будет на момент сборки Colorer.
добавил в проект как external , всегда будут браться свежие сборки.
добавил изменения для csharp и sql
User avatar
ctapmex
Posts: 1241
Joined: Fri 11 Apr, 2008 07:53
Has thanked: 1 time
Been thanked: 50 times

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by ctapmex »

забыл написать, к проекту, в рамках правки схем, присоединился lazyeugene . большинство последних изменений за его авторством (возможно забыл где то отметить).
User avatar
Aidar
Posts: 541
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 7 times
Contact:

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by Aidar »

Предлагаю заменить схему lua.hrc на исправленную схему с расширенной раскраской.

Есть:
- подсветка блоков-функций function-end, function()-end.
- подсветка условных блоков if-end, elseif-then.
- подсветка блоков do-end, for-end, while-end, repeat-until.
- доп. подсветка if-then: выделяются then + пробел после if
(естественно, в обычном случае выделения пробела не видно).
- outliner для function-end, ^do-end, local = {, -(40 раз).
- подсветка ключевых слов (см. LuaCoreKeys).
- блоки [...[ ]...], в т.ч. в комментариях.

Также новый

Приложен пример задания цветов для доп. регионов.
Attachments
rh_lua_hrc.7z
(3.45 KiB) Downloaded 123 times
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by Maximus5 »

А чей-то она?

Если строка заканчивается табом (минимально для воспроизведения - "пробел буква таб"), то в конце экрана колорер не закрашивает один символ.
Тип - "plain text".
Far 3 build 2581, 2592 x86.
Colorer 1.0.3 (build 10)
User avatar
ctapmex
Posts: 1241
Joined: Fri 11 Apr, 2008 07:53
Has thanked: 1 time
Been thanked: 50 times

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by ctapmex »

замечал этот глюк, но времени не хватало отладить. гляну по мере возможности
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by Shmuel »

sonar
Схема для языка Lua (которая из коробки) содержит довольно грубые дефекты. Поскольку её вроде никто не поддерживает, просьба поставить ту схему, что предлагает Aidar.
pp
Posts: 36
Joined: Wed 24 Jan, 2007 11:39
Location: Česká republika
Has thanked: 8 times
Contact:

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by pp »

batch.hrc 2012-03-26 r1850 (FarColorer 1.0.3.10)


Changes
- added missing keyword ELSE


batch.hrc.diff
Post Reply

Return to “Обсуждение плагинов”