Coder plugin (2)
- Author
 - Message
 
- 
				
								Offline
 - Posts: 1162
 - Joined: Sun Oct 20, 2013 11:44 am
 
Натолкнулся у себя случайно на nncron.highlight от Casm для nnCron и неудачный набросок nncron.coder, переделал, дополнил (+полно комментов Ru/En), выкладываю: nncron.coder.
Из минусов (на первый взгляд) - цвета были заданы абсолютно, но вполне удобоваримо (проверил на дефолтной и паре темных тем). Была мысль пропиарить в соответствубщей теме на руборде для обратной связи, но как-то неловко.
			
			
									
																
						Из минусов (на первый взгляд) - цвета были заданы абсолютно, но вполне удобоваримо (проверил на дефолтной и паре темных тем). Была мысль пропиарить в соответствубщей теме на руборде для обратной связи, но как-то неловко.
- 
				
								Offline
 - Site Admin
 - Posts: 6412
 - 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: 1162
 - 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: 1294
 - 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: 382
 - 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: 1162
 - 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: 382
 - Joined: Wed Sep 28, 2011 3:05 pm
 
Drugmix
Может лучше идти другим путем, отсеять все лишнее, что не является идентификатором CSS? По-русски: после # или точки не может сразу идти цифра или два дефиса подряд или дефис+цифра. Тут поподробнее. Тогда и проверять наличие скобок {} не придется. Правда, как такое правило записать регуляркой, хз.
			
			
									
																
						Может лучше идти другим путем, отсеять все лишнее, что не является идентификатором CSS? По-русски: после # или точки не может сразу идти цифра или два дефиса подряд или дефис+цифра. Тут поподробнее. Тогда и проверять наличие скобок {} не придется. Правда, как такое правило записать регуляркой, хз.
- 
				
								Offline
 - Posts: 1162
 - 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: 382
 - 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-]+ то перестает работать. Не знаете, почему

