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

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

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 (старые версии доступны тут)



Что не разжёвано в документации плагина:
  • Как подключить собственные цветовые стили *.hrd
  • Как подключить собственную схему:
    • используя пользовательский файл прототипов:
    • используя папку auto:
    • через пользовательский catalog.xml:
  • Как переопределить существующую схему
  • Как правильно "удалить" какую-либо стандартную схему
  • Как использовать относительные пути и переменные окружения
  • Если раскраска неправильна:
  • Неочевидные настройки: maxlinelength (в теме)
  • Тонкая настройка подсветки для отдельной схемы: в теме.

pp
Posts: 35
Joined: Wed 24 Jan, 2007 11:39
Location: Česká republika
Has thanked: 4 times
Contact:

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

Post by pp »

Latest post of the previous page:

HaRT, thanks for advice, you're right. Seems that problem is in missing DecodePointer and EncodePointer from kernel32.dll. If plugin developer is interested, I can provide more info.

User avatar
ctapmex
Posts: 1013
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 5 times
Contact:

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

Post by ctapmex »

pp wrote:HaRT, thanks for advice, you're right. Seems that problem is in missing DecodePointer and EncodePointer from kernel32.dll. If plugin developer is interested, I can provide more info.
I see what I can do about it

Yuriy2000
Posts: 5
Joined: Sun 04 Dec, 2011 19:14

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

Post by Yuriy2000 »

darkmist wrote:
Это происходит из-за того, что в схеме vbasic.hrc, из которой наследуется vbscript.hrc, обрабатывающий файлы с расширением vbs, схема PairedConstructions обрабатывается до Outlines, а используемые в PairedConstructions не содержат якоря дальнейшей обработки '\M'. Если применить такой патч:
то Outlines для указанных случаев начинают работать.

Попутно: идентификаторы функций в outlines задаются как \w+. На самом деле, они, вероятно, \w[\w\d]*
Спасибо! Но каким образом "применить патч"? Есть какая-то утилита?

pp
Posts: 35
Joined: Wed 24 Jan, 2007 11:39
Location: Česká republika
Has thanked: 4 times
Contact:

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

Post by pp »

There is a utility patch (google for "diff patch"). Or you can edit vbasic.hrc manually.

Yuriy2000
Posts: 5
Joined: Sun 04 Dec, 2011 19:14

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

Post by Yuriy2000 »

pp wrote:There is a utility patch (google for "diff patch"). Or you can edit vbasic.hrc manually.
OK, Thank you!

Zzzz
Posts: 91
Joined: Sat 13 Oct, 2007 10:12
Been thanked: 1 time

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

Post by Zzzz »

FarColorer_far2_1.0.3.4.7z не подсвечивает в *.lua функции, если есть пробел между именем и скобками, и if, если then на другой строке.
W7U SP1 x64

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 »

В схеме jar:common.jar!base/lua.hrc
1. попробуйте заменить

Code: Select all

<block start="/\b(?{Outline}(?{PairStart}(?{Keyword}function))\b\s*\M\S*\(.*\))/"
на

Code: Select all

<block start="/\b(?{Outline}(?{PairStart}(?{Keyword}function))\b\s*\M\S*\s*\(.*\))/"
2. попробуйте заменить

Code: Select all

<block start="/(?{Outline}(?{PairStart}(?{Keyword}if))\s+\M.*)\s+then/"
на

Code: Select all

<block start="/(?{Outline}(?{PairStart}(?{Keyword}if))\s+\M.*)\s+/"

darkmist
Posts: 124
Joined: Wed 08 Aug, 2007 19:44

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

Post by darkmist »

1. В общем случае, вопрос с переносом на разные строки частей выражения, увы, не решен. В частности, из-за того, что редактор Far'а отдает наружу строки и colorer пытается применять свои регулярные выражения построчно.
Так, например, если в языке C функцию написать следующим образом:

Code: Select all

void
foo
( int param1, int param 2 ) {
}
, то она не попадет в Outlines.
2. В добавок к предложенному Aidar'ом изменениям логично добавить еще аналогичные изменения для while/for с do на следующей строчке.
3. Есть еще предложение поменять lua схему для того, чтобы она корректно раскрашивала такой код:

Code: Select all

if(abc)then
  -- do smth
end
то есть после if не обязательно должен быть пробел, достаточно целого слова.
4. Заодно можно не требовать отсутствия переноса строки после until и, поскольку выражение для if/while не попадает в паттерн, убрать якоря дальнейшей обработки.

Итого, предлагаемый патч относительно схемы из FarColorer_far3_1.0.3.5_2197.7z:

Code: Select all

--- lua.hrc~	2011-02-16 14:12:42.000000000 +0400
+++ lua.hrc	2011-12-16 19:13:09.401254800 +0400
@@ -69,16 +69,16 @@
 		</scheme>
 
 		<scheme name="OutlinedStructures">
-			<block start="/\b(?{Outline}(?{PairStart}(?{Keyword}function))\b\s*\M\S*\()/"
+			<block start="/\b(?{Outline}(?{PairStart}(?{Keyword}function))\b\s*\M\S*\s*\()/"
 						 end="/\b(?{PairEnd}(?{Keyword}end))\b/" scheme="lua"/>
-			<block start="/(?{PairStart}(?{Keyword}if))\s+\M.*\s+then/"
+			<block start="/\b(?{PairStart}(?{Keyword}if))\b/"
 						 end="/\b(?{PairEnd}(?{Keyword}end))\b/" scheme="lua"/>
-			<block start="/\b(?{PairStart}(?{Keyword}(while|for))\s+\M.*)\s+do/"
+			<block start="/\b(?{PairStart}(?{Keyword}(while|for)))\b/"
 						 end="/\b(?{PairEnd}(?{Keyword}end))\b/" scheme="lua"/>
 			<block start="/\b(?{PairStart}(?{Keyword}repeat))\b/"
-						 end="/\b(?{PairEnd}(?{Keyword}until))\b\M[^;\n\r]+/" scheme="lua"/>
-			<block start="/(\s?(?{PairStart}(?{Keyword}do)))\b/"
-						 end="/\b\M(?{PairEnd}(?{Keyword}end))\b/" scheme="lua"
+						 end="/\b(?{PairEnd}(?{Keyword}until))\b/" scheme="lua"/>
+			<block start="/\b((?{PairStart}(?{Keyword}do)))\b/"
+						 end="/\b(?{PairEnd}(?{Keyword}end))\b/" scheme="lua"
 						 content-priority="low" priority="low"/>
 		</scheme>

Zzzz
Posts: 91
Joined: Sat 13 Oct, 2007 10:12
Been thanked: 1 time

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

Post by Zzzz »

Спасибо, работает.
W7U SP1 x64

Zzzz
Posts: 91
Joined: Sat 13 Oct, 2007 10:12
Been thanked: 1 time

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

Post by Zzzz »

Вернул старый конфиг для for и do, т.к. глючит:

Code: Select all

function test()
 for i=1, 2 do
 end
end
Image
W7U SP1 x64

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 есть отдельная конструкция do-end.
Можно попробовать так: переключиться на отдельную схему, в которой и обработать по отдельности for/while-do и do-end.

Code: Select all

<block start="/\b(?{PairStart}(?{Keyword}(while|for)))\b/"
                   end="/\b(?{PairEnd}(?{Keyword}end))\b/" scheme="lualoop"/>
<scheme name="lualoop">
 <block start="/((\bfor)?#3|(\bwhile)?#5)(\s+)/"
        end="/(do)\b/" scheme="lua"
        region00="Keyword"  region10="Keyword"
        region04="PairStart" region11="PairEnd"/>
 <inherit scheme="lua"/>
</scheme>
Только код надо подправить: заменить регионы на (?{}).

Zzzz
Posts: 91
Joined: Sat 13 Oct, 2007 10:12
Been thanked: 1 time

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

Post by Zzzz »

В таком виде разницу не заметил, после удаления имен внутри ?{} не работает...
Думаю сейчас нормально - меня больше if интересовал.
W7U SP1 x64

User avatar
faruh
Posts: 55
Joined: Sat 04 Apr, 2009 19:46

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

Post by faruh »

после смены типа раскраски, список функций показывается согласно предыдущей (первой после загрузки файла) схемы раскраски.
Полагаю это баг.

FAR2 build 1807 bis23 x86
Colorer 1.0.3.4 . 04.07.2011


User avatar
NightRoman
Posts: 5920
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 12 times
Been thanked: 14 times
Contact:

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

Post by NightRoman »

При старте Фара после обновления колорера:

Code: Select all

╔════════════════════════ Error ════════════════════════╗
║    This plugin requires more recent version of Far    ║
║ C:\Program Files\Far3\Plugins\Colorer\bin\colorer.dll ║
║          Required Far version is 3.0.0.2328.          ║
║          Current Far version is 3.0.0.2311.           ║
╟───────────────────────────────────────────────────────╢
На всякий случай спрошу - это так и задумано или, как нередко с версиями бывает, "ложная тревога"? (Фар я конечно обновлю - завтра, ибо там сейчас 2325).
Colorer только что взятый последний для Фар 3.

User avatar
faruh
Posts: 55
Joined: Sat 04 Apr, 2009 19:46

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

Post by faruh »

а Colorer 1.0.3.5 для Far2 будет?

Post Reply

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