Coder plugin (2)
- Author
- Message
-
Offline
- Posts: 1161
- Joined: Sun Oct 20, 2013 11:44 am
Натолкнулся у себя случайно на nncron.highlight от Casm для nnCron и неудачный набросок nncron.coder, переделал, дополнил (+полно комментов Ru/En), выкладываю: nncron.coder.
Из минусов (на первый взгляд) - цвета были заданы абсолютно, но вполне удобоваримо (проверил на дефолтной и паре темных тем). Была мысль пропиарить в соответствубщей теме на руборде для обратной связи, но как-то неловко.
Из минусов (на первый взгляд) - цвета были заданы абсолютно, но вполне удобоваримо (проверил на дефолтной и паре темных тем). Была мысль пропиарить в соответствубщей теме на руборде для обратной связи, но как-то неловко.
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
Изменено: корректировка положения окна дополнения (Coder::AutoComplete).
Changed: correction of auto-complete window position(Coder::AutoComplete).
Coder plugin v13.0
Changed: correction of auto-complete window position(Coder::AutoComplete).
Coder plugin v13.0
-
Offline
- Posts: 1161
- Joined: Sun Oct 20, 2013 11:44 am
1
ps1.coder отсюда http://akelpad.sourceforge.net/files/plugs/Coder/
ps1.coder отсюда http://akelpad.sourceforge.net/files/plugs/Coder/
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
Обнаружил довольно неприятную (потому что неочевидную и неожиданную) штуку в Coder::AutoComplete. Итак:
1) Настройка редактора заменять табуляцию пробелами отключена - т.е. символ табуляции остаётся символом табуляции
2) Открываем любой файл .ini, для которого в файле ini.coder прописано вот что:
В результате появляется совершенно неожиданный текст abc, появившийся как результат автодополнения к "слову" <TAB>abc
Другой пример:
В том же .ini файле нажимаем следующую последовательность клавиш:
<Shift+Home> <Del> <Space> def <Enter> <Shift+Home> <Del> <Space> <TAB>
В результате пробел на второй строке "дополняется" до <Space>def
Как-то это странно, в особенности учитывая наличие \t и пробела в списке разделителей слов в настройках редактора.
1) Настройка редактора заменять табуляцию пробелами отключена - т.е. символ табуляции остаётся символом табуляции
2) Открываем любой файл .ini, для которого в файле ini.coder прописано вот что:
3) в этом .ini набираем <TAB> abc <Enter> (т.е. клавишу TAB, текст abc и клавишу Enter) и ещё раз нажимаем клавишу TABini.coder wrote:Delimiters:
1 0 ${DEL1} 0 =
В результате появляется совершенно неожиданный текст abc, появившийся как результат автодополнения к "слову" <TAB>abc
Другой пример:
В том же .ini файле нажимаем следующую последовательность клавиш:
<Shift+Home> <Del> <Space> def <Enter> <Shift+Home> <Del> <Space> <TAB>
В результате пробел на второй строке "дополняется" до <Space>def
Как-то это странно, в особенности учитывая наличие \t и пробела в списке разделителей слов в настройках редактора.
-
Offline
- Posts: 381
- Joined: Wed Sep 28, 2011 3:05 pm
Хочу добить тему подсветки классов и id в CSS и LESS.
При добавлении
в QuotesRE css.coder-а также подсвечиваются и единицы измерения с точкой
Как убрать такую подветку внутри {...}?
Правда LESS еще позволяет делать
Это тоже надо учесть.
Тут видимо надо делать какую-то специальную проверку, но я не силен в регулярках...
При добавлении
Code: Select all
0 "(\.(\w|-)+)" "\1=(0,${AREA},0)"
0 "(#(\w|-)+)" "\1=(0,${VAR},0)"
Как убрать такую подветку внутри {...}?
Правда LESS еще позволяет делать
Это тоже надо учесть.
Тут видимо надо делать какую-то специальную проверку, но я не силен в регулярках...
-
Offline
- Posts: 1161
- Joined: Sun Oct 20, 2013 11:44 am
Cuprum
А если добавить условие "в начале строки"
?
Вот еще не забудьте, хотя и не обязательно.
А если добавить условие "в начале строки"
Code: Select all
0 "^\s*(\.(\w|-)+)" "\1=(0,${AREA},0)"
0 "^\s*(#(\w|-)+)" "\1=(0,${VAR},0)"
Вот еще не забудьте, хотя и не обязательно.
-
Offline
- Posts: 582
- Joined: Mon Apr 08, 2013 9:50 pm
- Location: Win7SP1x64, APx64
Skif_off
тогда вложенность не будет учитываться если точка не с начала строки идёт.
Предлагаю добавить positive look ahead {
В любом случае - так тоже не правильно, ведь селектор может быть комплексным, да ещё и порядок перечисления id и class может быть произвольным:
И ни предложенные мной правила, ни предложенные Skif_off правила здесь не сработают.
И тут логично предположить, что если в верхнее правило добавить условие, что после class может идти id, а в нижнее правило добавить условие, что после id может идти class, т.е. примерно вот так
- то это решит наши проблемы, но на самом деле нет: верхнее правило всегда будет перебивать нижнее. Единственный выход - объединить правила в одно и расписать вообще все возможные случаи употребления селекторов в нём. Такое правило будет очень длинным и очень сложным в составлении.
И тем самым мы снова возвращаемся к нашим баранам и моей просьбе к Instructor'у добавить каскадность работы QuotesRE правил.
тогда вложенность не будет учитываться если точка не с начала строки идёт.
Предлагаю добавить positive look ahead {
Code: Select all
0 "\s*(\.(\w|-)+)\s*(?=\{)" "\1=(0,${AREA},0)"
0 "\s*(#(\w|-)+)\s*(?=\{)" "\1=(0,${VAR},0)"
Code: Select all
#id1 #id2 .class1 .class2, .class1.class2 #id1 #id2
{property: value}
И тут логично предположить, что если в верхнее правило добавить условие, что после class может идти id, а в нижнее правило добавить условие, что после id может идти class, т.е. примерно вот так
Code: Select all
0 "\s*(\.(?:\w|-)+)\s*(#(?:\w|-)+)?\s*(?=\{)" "\1=(0,${AREA},0) \2=(0,${VAR},0)"
0 "\s*(#(?:\w|-)+)\s*(\.(?:\w|-)+)\s*(?=\{)" "\1=(0,${VAR},0) \2=(0,${AREA},0)"
И тем самым мы снова возвращаемся к нашим баранам и моей просьбе к Instructor'у добавить каскадность работы QuotesRE правил.
-
Offline
- Posts: 381
- Joined: Wed Sep 28, 2011 3:05 pm
Drugmix
Может лучше идти другим путем, отсеять все лишнее, что не является идентификатором CSS? По-русски: после # или точки не может сразу идти цифра или два дефиса подряд или дефис+цифра. Тут поподробнее. Тогда и проверять наличие скобок {} не придется. Правда, как такое правило записать регуляркой, хз.
Может лучше идти другим путем, отсеять все лишнее, что не является идентификатором CSS? По-русски: после # или точки не может сразу идти цифра или два дефиса подряд или дефис+цифра. Тут поподробнее. Тогда и проверять наличие скобок {} не придется. Правда, как такое правило записать регуляркой, хз.
-
Offline
- Posts: 1161
- Joined: Sun Oct 20, 2013 11:44 am
Не умеют, по факту \s* сработает как "ноль или более пробелов и/или табов", поэтому можно оставить для тех, которые были приведены в качестве примеров, и копать произвольное перечисление: как минимум - точно известно, какие символы можно использовать для названия.Drugmix wrote:quotesRE правила, кажется, не умеют в мультстрочность, т.е. \s* перед (?=\{) должно бы и символ конца строки в себя включать, но как оно по факту в акелпаде будет работать - надо проверять.
-
Offline
- Posts: 582
- Joined: Mon Apr 08, 2013 9:50 pm
- Location: Win7SP1x64, APx64
Cuprum wrote:Drugmix
Может лучше идти другим путем, отсеять все лишнее, что не является идентификатором CSS?
Так не получится: допустимые имена классов пересекаются с допустимыми именами значений для целого списка свойств.Skif_off wrote:поэтому можно оставить для тех, которые были приведены в качестве примеров, и копать произвольное перечисление: как минимум - точно известно, какие символы можно использовать для названия.
Code: Select all
.55 { border-width: .55 em }
-
Offline
- Posts: 582
- Joined: Mon Apr 08, 2013 9:50 pm
- Location: Win7SP1x64, APx64
Cuprum
я прочитал как-то по диагонали и подумал, что наоборот может.
Хм, тогда должно быть проще.
Как-то так (не тестировал):
я прочитал как-то по диагонали и подумал, что наоборот может.
Хм, тогда должно быть проще.
Как-то так (не тестировал):
Code: Select all
0 "\s*(\.([a-z]|-(?!-|\d))(\w|-)*)" "\1=(0,${AREA},0)"
Last edited by Drugmix on Wed Apr 02, 2014 10:59 pm, edited 1 time in total.
-
Offline
- Posts: 381
- Joined: Wed Sep 28, 2011 3:05 pm
Drugmix
Да, все ближе к нужному варианту
Я только немножко поправил, т. к. в вашем варианте также выбирались
.--class и .-9class что невалидно. Получилось так
Но все равно смущает несколько моментов. Хотя бы такой - если заменить
(\w|-)+ на [\w-]+ то перестает работать. Не знаете, почему ? Ведь это синонимы.
Да, все ближе к нужному варианту
Я только немножко поправил, т. к. в вашем варианте также выбирались
.--class и .-9class что невалидно. Получилось так
Code: Select all
"\s*(\.(?!\d|--|-\d)(\w|-)+)" "\1=(0,${AREA},0)"
(\w|-)+ на [\w-]+ то перестает работать. Не знаете, почему ? Ведь это синонимы.