Coder plugin (2)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 381
Joined: Wed Sep 28, 2011 3:05 pm

Post by Cuprum »

Drugmix
Спасибо!
Тогда вдогонку.

Image

Может знаете, почему у некоторых элементов другой цвет (em, table и некоторых других). Они же ведь равноправны. Баг или фича :) ?

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

Cuprum
во-первых, я подправил те 2 правила, обновите и у себя.
во-вторых, попробуйте в .coder файле ctrl+f по слову table сделать.
там заданы наиболее популярные слова (HTML'ные элементы), внесите туда же и div.
Видимо, его забыли.
А вообще, с т.з. css было бы правильней вообще все слова из words обесцветить, т.к. имя у узла может быть любое, например width, который тут же раскрасится как свойство.

Offline
Posts: 366
Joined: Mon Jan 10, 2011 5:28 pm
Contact:

Post by Lenchik »

Serge Yolkin wrote:подсветка синтаксиса является приятной, но не основной фичей
Так и не ставьте/ не включайте плагин Coder.

Cuprum
Все эти правки переправятся с очередным обновление coder плагина.

Offline
Posts: 381
Joined: Wed Sep 28, 2011 3:05 pm

Post by Cuprum »

Lenchik wrote: Все эти правки переправятся с очередным обновление coder плагина.
Если только Instructor не добавит эти изменения, чтобы сделать такой вид css.coder дефолтным :)

Drugmix
ОК.

Offline
Posts: 294
Joined: Tue Jul 27, 2010 11:18 pm

Post by Serge Yolkin »

Drugmix
Lenchik
Что добавлять, а что не - решит автор, но я больше двух лет пытаюсь совершенствовать несколько собственных файлов подсветки и пришёл к выводу: для идеальной подсветки того, или иного языка необходимо полностью повторить алгоритм парсинга исходников, используемый в этом языке. Особенно это касается скриптовых языков с их не слишком строгим синтаксисом. Парсеры, как правило, работают в несколько проходов, поэтому повторить их логику на QuotesRE, где обрабатываются только отдельные строки, нереально. Встраивать логику конкретного парсера в функционал плагина - какого именно парсера, или всех сразу? Как компромисс, выкатывал пробный шар на тему FoldsRE или включения QuotesRE и гипотетического FoldsRE в одну секцию, но, видимо, Instructor не определился с ответом на этот вопрос.

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

Serge Yolkin wrote:Drugmix
Парсеры, как правило, работают в несколько проходов, поэтому повторить их логику на QuotesRE, где обрабатываются только отдельные строки, нереально.
А у меня получилось. Получилось всё, кроме экранированной запятой, а так я даже учёл все возможные случаи

Code: Select all

SHOULD WORK:

#IfWinActive
MButton::#IfWinActive
Try #IfWinActive
Else #IfWinActive
Try,#IfWinActive
Else,#IfWinActive

#IfWinActive,
MButton::#IfWinActive,
Try #IfWinActive,
Else #IfWinActive,
Try,#IfWinActive,
Else,#IfWinActive,

#IfWinActive,,
MButton::#IfWinActive,,
Try #IfWinActive,,
Else #IfWinActive,,
Try,#IfWinActive,,
Else,#IfWinActive,,

#IfWinActive arg1
MButton::#IfWinActive arg1
Try #IfWinActive arg1
Else #IfWinActive arg1
Try,#IfWinActive arg1
Else,#IfWinActive arg1

#IfWinActive,arg1
MButton::#IfWinActive,arg1
Try #IfWinActive,arg1
Else #IfWinActive,arg1
Try,#IfWinActive,arg1
Else,#IfWinActive,arg1

#IfWinActive arg1,
MButton::#IfWinActive arg1,
Try #IfWinActive arg1,
Else #IfWinActive arg1,
Try,#IfWinActive arg1,
Else,#IfWinActive arg1,

#IfWinActive,arg1,
MButton::#IfWinActive,arg1,
Try #IfWinActive,arg1,
Else #IfWinActive,arg1,
Try,#IfWinActive,arg1`,
Else,#IfWinActive,arg1,

#IfWinActive arg1, arg2
MButton::#IfWinActive arg1, arg2
Try #IfWinActive arg1, arg2
Else #IfWinActive arg1, arg2
Try,#IfWinActive arg1, arg2
Else,#IfWinActive arg1, arg2

#IfWinActive arg1,arg2
MButton::#IfWinActive arg1,arg2
Try #IfWinActive arg1,arg2
Else #IfWinActive arg1,arg2
Try,#IfWinActive arg1,arg2
Else,#IfWinActive arg1,arg2

#IfWinActive,arg1, arg2
MButton::#IfWinActive,arg1, arg2
Try #IfWinActive,arg1, arg2
Else #IfWinActive,arg1, arg2
Try,#IfWinActive,arg1, arg2
Else,#IfWinActive,arg1, arg2

#IfWinActive,arg1,arg2
MButton::#IfWinActive,arg1,arg2
Try #IfWinActive,arg1,arg2
Else #IfWinActive,arg1,arg2
Try,#IfWinActive,arg1,arg2
Else,#IfWinActive,arg1,arg2

#IfWinActive ; comm
MButton::#IfWinActive ; comm
Try #IfWinActive ; comm
Else #IfWinActive ; comm
Try,#IfWinActive ; comm
Else,#IfWinActive ; comm

#IfWinActive, ; comm
MButton::#IfWinActive, ; comm
Try #IfWinActive, ; comm
Else #IfWinActive, ; comm
Try,#IfWinActive, ; comm
Else,#IfWinActive, ; comm

#IfWinActive,, ; comm
MButton::#IfWinActive,, ; comm
Try #IfWinActive,, ; comm
Else #IfWinActive,, ; comm
Try,#IfWinActive,, ; comm
Else,#IfWinActive,, ; comm

#IfWinActive arg1 ; comm
MButton::#IfWinActive arg1 ; comm
Try #IfWinActive arg1 ; comm
Else #IfWinActive arg1 ; comm
Try,#IfWinActive arg1 ; comm
Else,#IfWinActive arg1 ; comm

#IfWinActive,arg1 ; comm
MButton::#IfWinActive,arg1 ; comm
Try #IfWinActive,arg1 ; comm
Else #IfWinActive,arg1 ; comm
Try,#IfWinActive,arg1 ; comm
Else,#IfWinActive,arg1 ; comm

#IfWinActive arg1, ; comm
MButton::#IfWinActive arg1, ; comm
Try #IfWinActive arg1, ; comm
Else #IfWinActive arg1, ; comm
Try,#IfWinActive arg1, ; comm
Else,#IfWinActive arg1, ; comm

#IfWinActive,arg1, ; comm
MButton::#IfWinActive,arg1, ; comm
Try #IfWinActive,arg1, ; comm
Else #IfWinActive,arg1, ; comm
Try,#IfWinActive,arg1, ; comm
Else,#IfWinActive,arg1, ; comm

#IfWinActive arg1, arg2 ; comm
MButton::#IfWinActive arg1, arg2 ; comm
Try #IfWinActive arg1, arg2 ; comm
Else #IfWinActive arg1, arg2 ; comm
Try,#IfWinActive arg1, arg2 ; comm
Else,#IfWinActive arg1, arg2 ; comm

#IfWinActive arg1,arg2 ; comm
MButton::#IfWinActive arg1,arg2 ; comm
Try #IfWinActive arg1,arg2 ; comm
Else #IfWinActive arg1,arg2 ; comm
Try,#IfWinActive arg1,arg2 ; comm
Else,#IfWinActive arg1,arg2 ; comm

#IfWinActive,arg1, arg2 ; comm
MButton::#IfWinActive,arg1, arg2 ; comm
Try #IfWinActive,arg1, arg2 ; comm
Else #IfWinActive,arg1, arg2 ; comm
Try,#IfWinActive,arg1, arg2 ; comm
Else,#IfWinActive,arg1, arg2 ; comm

#IfWinActive,arg1,arg2 ; comm
MButton::#IfWinActive,arg1,arg2 ; comm
Try #IfWinActive,arg1,arg2 ; comm
Else #IfWinActive,arg1,arg2 ; comm
Try,#IfWinActive,arg1,arg2 ; comm
Else,#IfWinActive,arg1,arg2 ; comm



SHOULD FAIL:
#IfWinActivearg1
Try#IfWinActive arg1
Else#IfWinActive arg1
::#IfWinActive,arg1
#IfWinActive; comm
#IfWinActive arg1; comm
#IfWinActive,arg1; comm

#IfWinActive arg1, arg2; comm
#IfWinActive,arg1,arg2; comm
#IfWinActive , arg2; comm
#IfWinActive,,arg2; comm

Offline
Posts: 366
Joined: Mon Jan 10, 2011 5:28 pm
Contact:

Post by Lenchik »

Serge Yolkin wrote:я больше двух лет пытаюсь совершенствовать несколько собственных файлов подсветки
Поделитесь с массами?
Serge Yolkin wrote:для идеальной подсветки того, или иного языка необходимо полностью повторить алгоритм парсинга исходников
Может быть и так, конечно, а может быть для задач подсветки и автодополнения функций такой мощи и не надо.
Правда, может быть, нужны будут какие-то скрипты, читающие специальные мета-секции кодер-файла с листингом функций, их параметров, дефолтных значений и диапазонов. Вот так, например, узкозаточенный редактор AviSynth скриптов принимает подобные данные в себя - https://github.com/AvsPmod/AvsPmod/wiki/Filter-database
Drugmix wrote:А у меня получилось.
Похоже, что Вы просто не знали, что это нереально. :)

Offline
Posts: 294
Joined: Tue Jul 27, 2010 11:18 pm

Post by Serge Yolkin »

Drugmix
За эти пару лет мне неоднократно такое казалось, но каждый раз я находил в инете примерчик, раздалбывающий мою подсветку. С одними только скобками (круглыми) в пакетниках сколько бился - не победил. Надеюсь, Вам повезёт больше.

Lenchik
Поделюсь чуть позже - сейчас перевожу ещё непереведённые Quotes'ы в QuotesRE. А по поводу узкозаточенных - так я о том и говорю: в узкозаточенном учесть особенности синтаксиса одного языка вполне возможно. А если объединить редактор с компилятором в одном пакете, а парсер вынести в библиотеку...

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

Serge Yolkin
не повезёт, если Instructor проигнорирует мои просьбы о необходимых изменениях.

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

Доделываю подсветку для скриптов Script-Fu (скрипты для расширения функционала GIMP, используется язык Scheme, поддержка встроена в GIMP), стоит попробовать расширить до Scheme вообще?

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Skif_off wrote:стоит попробовать расширить до Scheme вообще?
Ммм... разве там есть, что расширять? По-моему, там кроме структуры, которая не должна меняться, можно только встроенные функции подсветить, а они, по идее, должны и там, и там работать.

Я, кстати, как-то пытался: _lisp.coder, но на тот момент у меня не вышло победить скобочки, а потом пропал интерес.

Offline
Posts: 294
Joined: Tue Jul 27, 2010 11:18 pm

Post by Serge Yolkin »

Lenchik
Делюсь. Основное творение - HTA.CODER. Попытка подсветить xhtml размктку, правила CSS и скрипты (js, vbs) в одном файле одновременно. Синтаксисы существенно разные, ключевые слова пересекаются... В общем, куча компромиссов, но меня устраивает. Если файл html, но не x - подсветка должна работать, а фолдинг, скорее всего, нет. Из остальных интерес могут представлять INF.CODER и CMD.CODER. TXT.CODER - мой самый короткий кодер-файл :)

Название сайта пишется так же, как мой ник, только чёрточка вместо пробела, домен - .ru (www в начале можно добавить, но не обязательно)

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

Infocatcher
_lisp.coder видел, думал расширять его, но передумал и делаю с нуля.
Infocatcher wrote:можно только встроенные функции подсветить
Именно об этом подумал, пока закончил с внутренними функциями GIMP (2.8.10), до кучи отделил подсветкой устаревшие/нерекомендуемые (т.к. они до сих пор используются в старых скриптах). Вопроса еще в том, как его назвать: scheme.coder или script-fu.coder?

Serge Yolkin
А как с главной страницы добраться до coder-файлов? Почему CMD.CODER, а не добавление в существующий bat.coder?

Добавлено:
Любопытно - в ишаке работает, в FF/Pale Moon - нет.

Offline
Posts: 294
Joined: Tue Jul 27, 2010 11:18 pm

Post by Serge Yolkin »

Skif_off
Я ж .hta пишу, иногда .chm... Под другие движки когда-нибудь гляну, если время найду. Мне этот сайт пол-года назад подарили, а он до сих пор в андерконстракшне.

А в существующие добавлять иногда труднее, чем с нуля написать. У всех свой стиль написания, идеология, если угодно... Так, как, например, Drugmix пишет, я писать не умею. Подход другой.

Offline
Posts: 294
Joined: Tue Jul 27, 2010 11:18 pm

Post by Serge Yolkin »

Instructor, а нельзя ли для секций Font:, Colors:, AutoMark:, FoldPanel:, TagMark: разрешить многострочность, ну, чтоб можно было так:

Code: Select all

Colors:
${HighLight_BasicTextColor}  ;Основной цвет текста	
${HighLight_BasicBkColor}    ;Основной цвет фона	
${HighLight_SelTextColor}    ;Цвет текста в выделении 
${HighLight_SelBkColor}      ;Цвет фона в выделении	
${HighLight_LineTextColor}   ;Цвет текста акт. строки 
${HighLight_LineBkColor}     ;Цвет фона акт. строки	
${HighLight_LineBorderColor} ;Цвет границы акт. строки
${HighLight_AltTextColor}    ;Цвет текста зебры	
${HighLight_AltBkColor}      ;Цвет фона зебры	
${HighLight_AltBorderColor}  ;Цвет границы зебры	
${HighLight_ColumnColor}     ;Цвет активного столбца	
${HighLight_MarkerColor}     ;Цвет маркера	
${HighLight_CaretColor}      ;Цвет каретки	
${HighLight_UrlColor}        ;Цвет ссылки	
${HighLight_ActiveUrlColor}  ;Цвет активной ссылки	
${HighLight_VisitUrlColor}   ;Цвет посещенной ссылки
А то ошибки искать забавно...
Locked