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

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

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

Post by ctapmex » Wed 04 May, 2005 14:45

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 (в теме)
  • Тонкая настройка подсветки для отдельной схемы: в теме.

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

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

Post by ctapmex » Thu 15 Mar, 2012 09:32

Latest post of the previous page:

мне кажется его лучше разместить в rare.inet , если уж не в other . в inet там xml-подобные схемы.

а для чего в прототипе используешь '?:' ?

up. а что на github не заливаешь схему раскраски ? в исходники, а не в готовый дистрибутив .

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

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

Post by NightRoman » Thu 15 Mar, 2012 11:18

sonar wrote:мне кажется его лучше разместить в rare.inet , если уж не в other . в inet там xml-подобные схемы.
Да, логично. Уточню в комментах.
sonar wrote:а для чего в прототипе используешь '?:' ?
Привычка :). Там, где группа снаружи не используется, всегда стараюсь использовать ?:, типа самодокументирование. А () без ? автоматом означает, что на группу кто-то реально ссылается. Ну это мелочи. Там по стилю везде без ? - пусть будет без.
sonar wrote:up. а что на github не заливаешь схему раскраски ? в исходники, а не в готовый дистрибутив .
Залью. Пока мне так удобнее было, чтобы файл схемы в 2-х местах не держать. Проект-то вообще-то не про схему, схема там просто как addon идет.

Вообще, еще очень вероятно буду схему подпиливать, так что при включении лучше взять последнюю оттуда.
Last edited by NightRoman on Thu 15 Mar, 2012 11:28, edited 1 time in total.

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

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

Post by ctapmex » Thu 15 Mar, 2012 11:24

ну я готов хоть сейчас добавить в svn. но поскольку схема пока еще дорабатывается временами, то залью её при следующем релизе схем

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

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

Post by NightRoman » Thu 15 Mar, 2012 11:52

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

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

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

Post by NightRoman » Thu 15 Mar, 2012 13:17

По поводу Region info и scheme. Кажется, там выводится имя схемы самого верхнего уровня. Но, если это возможно, то и имя той схемы по которой реально идет раскраска хорошо бы знать тоже (даже очень надо).

Пример: test.c

Code: Select all

/*
http://foo.bar
*/
Если встать на адрес и вызвать инфу, то она покажет Scheme: def:Comment, схему, "с которой все началось". Но раскраску-то URL в конечном итоге определяет схема def:NetURL, а ее нет в инфе. Между ними еще есть схемы, может, это лишнее их знать (может, нет). Но начальную (сделано) и конечную (еще нет) хотелось бы.

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

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

Post by ctapmex » Fri 16 Mar, 2012 05:46

к сожалению, не смогу вытянуть эту информацию

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

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

Post by NightRoman » Fri 16 Mar, 2012 08:52

sonar wrote:к сожалению, не смогу вытянуть эту информацию
Это другое дело, нет проблем.

User avatar
Tim Sobolev
Posts: 705
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time

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

Post by Tim Sobolev » Sun 18 Mar, 2012 00:35

Пример раскраски для скриптового языка Squirrel (расширение ".nut"), взятое с форума:

Может прикрутить его к Colorer?


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

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

Post by NightRoman » Sat 24 Mar, 2012 09:53

Предлагаю дополнить стандартную схему hrd.hrc из поставки 16-ю регионами, которые
соответствуют кодам цветов консоли, и распознаванием этих кодов от #0 до #F в
атрибутах fore и back в файлах HRD. Измененная схема:
http://farnet.googlecode.com/files/_120 ... hrd.hrc.7z

По умолчанию это ничего не изменит и никому не помешает. Однако, это может быть
полезно тем, кто работает с HRD файлами (настройка по вкусу цветовой схемы или
цветов регионов отдельных схем), если они добавят туда эти строки:

Code: Select all

<assign fore="#00" name="hrd:fore.Black"/>
<assign fore="#01" name="hrd:fore.DarkBlue"/>
<assign fore="#02" name="hrd:fore.DarkGreen"/>
<assign fore="#03" name="hrd:fore.DarkCyan"/>
<assign fore="#04" name="hrd:fore.DarkRed"/>
<assign fore="#05" name="hrd:fore.DarkMagenta"/>
<assign fore="#06" name="hrd:fore.DarkYellow"/>
<assign fore="#07" name="hrd:fore.Gray"/>
<assign fore="#08" name="hrd:fore.DarkGray"/>
<assign fore="#09" name="hrd:fore.Blue"/>
<assign fore="#0A" name="hrd:fore.Green"/>
<assign fore="#0B" name="hrd:fore.Cyan"/>
<assign fore="#0C" name="hrd:fore.Red"/>
<assign fore="#0D" name="hrd:fore.Magenta"/>
<assign fore="#0E" name="hrd:fore.Yellow"/>
<assign fore="#0F" name="hrd:fore.White"/>
Эти принесет желающим две полезные вещи:

1. Готовую таблицу цветов для справки прямо в файле (видел, в некоторых схемах
подобная таблица вставлена авторами в комментариях).

2. Все коды от #0 до #F в схеме подсвечены именно тем цветом, который они и
задают, что делает схему наглядной и понятной без всяких справочных таблиц.

Вот как выглядит после этого сама такая вставка в схемы с синим и белым фоном
(ведущий нолик в коде цвета опционален, но с ним более наглядно получается):

Image

Если это изменение HRD принимается в поставку, то все ОК. Если нет, мало ли
что, тогда попробую изменить подход на другой, использующий hrd.hrc иначе.
(напомню, изменение по умолчанию не влияет на вид HRD)

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

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

Post by NightRoman » Mon 26 Mar, 2012 13:32

В опубликованной сегодня версии Colorer изменение hrd.hrc принято, так что новой фичей можно пользоваться без хаков. Кроме того в новом Colorer в меню Region Info теперь показывается правильное название региона, что позволяет легко поменять цвет одного региона одной схемы в своем hrd файле цветов. Не идеальный вариант настройки цветов, но уже вполне практичный.

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

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

Post by NightRoman » Thu 29 Mar, 2012 11:48

Схема 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: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

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

Post by NightRoman » Thu 29 Mar, 2012 13:14

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: 77
Joined: Wed 16 Mar, 2005 11:19
Location: Киев

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

Post by Grey » Thu 29 Mar, 2012 14:03

В 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 » Sat 31 Mar, 2012 15:25

Схема 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 » Sat 31 Mar, 2012 20:45

Если в питон-файле написать в комментарии #FIX и встать на эту строку курсором слово FIX исчезает полностью за курсорным крестом.
Как это поправить (нельзя ли придумать на этот случай другой цвет)? Есть еще какой-то случай (не запомнил), кажется что-то с обратным слэшом внутри строки.
Не заметил когда появилось, при Джобсе раньше такого не было.

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

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

Post by NightRoman » Sun 01 Apr, 2012 07:05

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

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

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

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

P.S. Очень вероятно, что схемы будут развиваться, поэтому включать лучше не текущий пакет, а то, что будет на момент сборки Colorer.

Post Reply

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