Coder plugin (1)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 3
Joined: Tue Dec 28, 2010 1:36 pm

Post by binariti »

Обновил, теперь все нормально.

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Instructor wrote:Когда диалог настроек закрывается кнопкой "ОК", то происходит перечитывание всех файлов настроек. Ошибка же говорит о том, что в активной теме подсветки в "Coder::Settings" не определены переменные, которые встречаются в синтаксических файлах.
У меня открывается AkelPad (я не нажимаю Ок), в сессии с предыдущего сеанса остался 1 js-файл, и вылазят эти сообщения:
"js.coder" содержит неизвестную переменную "${CodeFold_ListTextColor}"
"js.coder" содержит неизвестную переменную "${CodeFold_ListBkColor}"
Может при открытии проги не отображать эти сообщения, а оставить их только на "Ок" в диалоге настройки плагина?

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Открывается AkelPad, с предыдущего сеанса остался 1 coder-файл, при открытии которого вылетают следующие сообщения:
"coder.coder" содержит неизвестную переменную "${CodeFold_ListTextColor}"
"coder.coder" содержит неизвестную переменную "${CodeFold_ListBkColor}"
Не совсем понятно, что и зачем что-то дополнительно нужно делать пользователю, если он скачал Coder-плагин и все coder-файлы с сайта?


Добавлено:
Сообщение, наверное, надо изменить с
"js.coder" содержит неизвестную переменную "${CodeFold_ListBkColor}"
на
В текущей теме Coder-плагина "Имя темы" отсутствует описание переменной "${*}", встречающейся в файле "*.coder"
иначе рехнуться можно, пытаясь понять, что же не так...


P.S. И, всё-таки, было бы лучше иметь цветовые схемы отдельными файлами.

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Ещё одна неприятность - блочная подсветка не работает, я подозреваю потому, что не включен фолдинг. Хотелось бы всё-таки, чтобы подсветка не зависела от фолдинга; я, например, фолдинг почти не использую..
Можно в coder-файлы специальной секцией добавить начальный и конечный тэги блочной подсветки, и если фолдинг не включен, расчитывать блоки только для подсветки, а если включен, то для всего сразу.

Offline
Posts: 2248
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Добавлено: синтаксический файл для Lua.
Так в версии 4.4 уже добавили
Кое-кто уже второй месяц для Lua делает синтаксис.
Прув-линки:
viewtopic.php?p=10261#p10261
viewtopic.php?p=10400#p10400

Так что буду критиковать(а вечером, когда найду свой - критиковать в полную силу):

Прошу убрать из секции Words: все lua_ и luaL_ вхождения. Если так нужно их подсветить, то это делать нужно в cpp.coder, ибо это функции из исходников интерпретатора на C/C++, а не функции языка Lua.

Также в секции фолдов добавить ещё
;513=1+512
513 3 ${COMM} 0 "--[[" "]]" ""
513 3 ${COMM} 0 "--[=[" "]=]" ""
513 3 ${COMM} 0 "--[==[" "]==]" ""
513 3 ${COMM} 0 "--[===[" "]===]" ""
;513=1+512
513 3 ${STR} 0 "[[" "]]" ""
513 3 ${STR} 0 "[=[" "]=]" ""
513 3 ${STR} 0 "[==[" "]==]" ""
513 3 ${STR} 0 "[===[" "]===]" ""
В большинстве случаев тройного "=" хватает, но иногда попадается вложенность и поглубже.

Также в разделители к открывающим фолдам if, elseif, function, for, while добавить "("

Также можно посмотреть тут один из моих промежуточных вариантов http://staynormal.org.ua/akelpad/lua.coder
(вечером найду один из последних)

Offline
Posts: 15
Joined: Thu Nov 29, 2007 2:15 pm
Location: St. Petersburg

Post by Paulus »

Paulus wrote:я тут делаю подсветку для фортрана.

я так понял что в разделе Folds не поддерживаются краткие if-конструкции, например такая запись

Code: Select all

IF (i<0) EXIT

которые пишутся в одну строку и оператор "END IF" не ставится. Что можно сделать?
Instructor wrote:Paulus
Можно началом блока делать "THEN".
Если использовать "THEN", то неверно находятся блоки в расширенных конструкциях IF:

Code: Select all

IF condition THEN
   stat
ELSE IF condition THEN
   stat
ELSE
   stat
END IF
два THEN на один END IF

Offline
Site Admin
Posts: 6403
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

FeyFre
Прошу убрать из секции Words: все lua_ и luaL_ вхождения.
Убрал.
Также в секции фолдов добавить ещё...
Насколько я понял из описания: в блоке "[[", "]]" находится "[=[", "]=]", в блоке "[=[", "]=]" находится "[==[", "]==]" и т.д. Если так, то флаг 512 исключает это, поэтому достаточно одного "[[", "]]".
Также в разделители к открывающим фолдам if, elseif, function, for, while добавить "("
Добавил.

Paulus
Примерно так:

Code: Select all

;--IF...ELSE...END IF--
;51=1+2+16+32
51	0	0	0	"THEN"            "END IF"        " 	"
;435=1+2+16+32+128+256
435	0	0	0	"THEN"            "ELSE IF"       " 	"
;435=1+2+16+32+128+256
435	0	0	0	"THEN"            "ELSE"          " 	"
;2121=1+8+64+2048
2121	0	0	0	"ELSE IF"         "THEN"          " 	"
;41=1+8+32
41	0	0	0	"ELSE IF"         "END IF"        " 	"
;425=1+8+32+128+256
425	0	0	0	"ELSE IF"         "ELSE IF"       " 	"
;425=1+8+32+128+256
425	0	0	0	"ELSE IF"         "ELSE"          " 	"
;41=1+8+32
41	0	0	0	"ELSE"            "END IF"        " 	"

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

Post by Infocatcher »

Instructor wrote:
И я настаиваю на «"default" "case"»:
Добавил.
А вот в C/C++ надо проверять, вполне может ругаться на такой порядок.

js.coder wrote:

Code: Select all

1	0	${TYPE}	0	undefined
1	0	${TYPE}	0	NaN
Только нужно помнить, что undefined и NaN – обычные глобальные переменные (и их можно переопределить :)).
И за что обидели Infinity?
http://javascript.ru/ecma/part15#a-15.1

Offline
Posts: 2248
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Насколько я понял из описания: в блоке "[[", "]]" находится "[=[", "]=]", в блоке "[=[", "]=]" находится "[==[", "]==]" и т.д. Если так, то флаг 512 исключает это, поэтому достаточно одного "[[", "]]".
Вы меня не так поняли. Мой код Lua чаще всего такой:

Code: Select all

--[===[
--
-- Мой копирайт
--
-- Прочая инфа
--
--]===]
--[===[ ]===] - Блок комментария точно такой же как и --[[]] (знаков = может быть сколько угодно, главное одинаковое количество в обоих концах), это используется для решения проблемы вложенности. Вот и я прошу что-бы они тоже выделялись как и --[[]]

Вот ещё вспомнил: в расширения добавить luac и wlua

DV
Offline
Posts: 1291
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

В файле cpp.coder остро не хватает строки
5 3 ${STR} 0 "'" "'" "\" "" ""
в секции Quotes.
В файле pascal.coder не хватает строк
2 0 0 0 "class" "end" " ;.}"
2 0 0 0 "record" "end" " ;.}"
в секции Folds.

Offline
Posts: 2248
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Вот отрыл свой вариант lua.coder, объеденил с вариантом Инструктора - судите.
Основные отличия в секции Words, а также значительно большая секция Blocks. Также немного дополнена секции Folds и Quotes расширенными кавычками и комментариями.

Offline
Posts: 19
Joined: Fri Jan 14, 2011 3:29 am

Post by lexa »

FeyFre, у end в делителях должна быть и точка с запятой, иначе при встрече

Code: Select all

some (do|then)

end; --> этого ";"
Блок фолдинга съезжает вниз документа.

P.S. lua.coder из комплекта (ага, я его нашёл :)) так же игнорирует этот разделитель.

upd С примером. Если блок заканчивается end, то должен быть и ";":

Code: Select all

1	0	0	0	"оператор"     "end"     " 	-();"

Offline
Posts: 19
Joined: Fri Jan 14, 2011 3:29 am

Post by lexa »

Не редактирую предыдущий, чтобы разделить посты по смыслу.

Ребята, а есть для подсветки какой-то гайдлайн? Правила раскраски, так казать. Это я к теме про функция это блок, столб или верёвка. :)

Просто я часто перескакиваю на разные языки (обычно между PHP, JavaScript, Lua, C#, иногда Python (веб теперь тоже зоопарк) и теперь копаюсь в Си, но забавы ради) и, думаю, не я один. И единство стиля сказалось бы супер-дупер положительно. :)

Например, самое очевидное подсветка слов (для скриптовых языков) вроде: as, in, and, or, not. Это ключевые слова, но и операторы блока. Как return, break, continue его манипуляторы.

Так же class, function, def, while, if, for, foreach - сами блоки. Я определяю блоки так: если их можно сунуть в фигурные скобки это либо утка, либо блок. :)

Блоки и их приспешников красить в ${IF}.

local, var, private, public, protected это тоже ключевые слова. Но в контексте языков ещё и типы указывающие зону видимости переменной/метода. Если тип значит, спорно, конечно, но ${TYPE}. :) Для PHP есть ещё static (переменные и методы) и global (переменные).

Средствами ${OP} (от изначального operator, да, но кто помнит? :)) красить иные ключевые слова вроде стандартных функций/модулей/методов. То есть дать ${OP} низкий приоритет при раскраске.

P.S. Это чисто идея, конечно. Но с пользовательской стороны (в частности, моей :)) это кажется благоразумным.

В основном из-за того, что глаз "намыливается" на какие-то "зацепки". Например, те же блоки/не блоки. Если где-то in выделен ${IF}, а в другой подсветке как ${OP}, то глаз его не сразу найдёт. Хотя сердце поможет, да. :)

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

Offline
Posts: 1
Joined: Sat Jan 15, 2011 2:00 am

Post by Althathwe »

А для httpd.conf есть подсветка?

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Зачем в каждом .coder файле вставлены одинаковые комментарии

Code: Select all

;Flags (sum of the members)
;    1  case sensitive.
;    2  word is a composition of characters ("Words:" section only). Example: "0123456789" - highlight words that contain only digits.
;    4  quote end required ("Quotes:" section only).
...
и тому подобных. или такие:

Code: Select all

;=================================================================
;FontStyle             FontSize              FaceName
;=================================================================
хотя дальше идёт строка

Code: Select all

${HighLight_FontStyle} ${HighLight_FontSize} ${HighLight_FaceName}
получается масло масленное
или такие:

Code: Select all

;5=1+4
;1=1
как будто не понятно, что 1 = 1

1. Эти комментарии увеличивают размер файла в 3 раза (у меня 44 файла с комментариями они весили 3,2 мегабайт, после чистки 1,1 мег.)
2. Зачем повторять одно и тоже (к примеру ;5=1+4) везде, где встречается 5, достаточно один раз написать
3. Те, кто составляет\изменяет .coder файлы и так все эти правила знают
4. Не проще ли сделать специальный файл справки, где это всё описать и не только на английском, но и на русском... и на других языках
Locked