Coder plugin (2)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

Вчера вечером вносил дополнения в секцию Blocks au3.coder и подумал: может быть, зря я отказался от секции Words в latex.coder (регулярными выражениями подсветил команды разметки и всё, цели превратить AkelPad в полноценную IDE не было)? Все-таки Автодополнение - полезная фича. Прошерстил несколько книг - получается чуть более 4х сотен, но осталось пару справок (.chm) по LaTeX ("This is edition 1.6 of the LaTeX2e documentation" 2008го года) и по самому TeX пройтись.
Возможно добавить в Words "\xxx", сохранив при этом обратный слэш в Delimiters?
Last edited by Skif_off on Sat Dec 28, 2013 11:17 pm, edited 1 time in total.

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

Post by Instructor »

Drugmix wrote:зависания нет, но правило не работает должным образом.
Это уже к самому правилу.
А ещё меня очень расстраивает...
Не нужно расстраиваться. Всё будет хорошо :)
Вы их не читаете или просто молча принимаете их к сведению? :)
Молча принимаю к сведению.
Skif_off wrote:Возможно добавить в Words "\xxx", сохранив при этом обратный слэш в Delimiters?
Только в "Quotes:"

Code: Select all

Quotes:
;==============================================================================
;Flags  Font    Color   Color   Quote        Quote       Escape Quote   Quote
;       style   text    bkgrnd  start        end         char   include exclude
;==============================================================================
;32772=4+32768
32772	0	${OP}	0	"" "xxx"       ""	""	""

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

Post by Skif_off »

Instructor wrote:Только в "Quotes:"
Тогда не попадут в список автодополнения и тогда вообще нет смысла добавлять слова, ибо регулярными выражениями подсветится всё, в т.ч. пользовательские или еще не придуманные. :) В общем, надо подумать.

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

Post by Drugmix »

Instructor wrote:Это уже к самому правилу.
Спасибо, это меня неофициальная справка в *.chm файле запутала (там написана ложная информация по поводу | в RegEx).
Сделал всё по официальной справке из *.htm - правило заработало.

На самом деле, получается, что добиться того, чего я изначально пытался (чтобы одно правило в coder.coder окрашивало все правила для QuotesRE секции во всех *.coder файлах) - всё равно невозможно: само это правило всё равно не будет раскрашиваться должным образом без другого правила.


Может стоит добавить эти 2 правила в coder.coder?

Code: Select all

0   '^\s*(\d+)\s+(?:`|")(.*)(?:`|")\s*(?:`|")\s*(\\\d*=\([^,()]*?,[^,()]*?,[^,()]*?\)\s*)*(?:`|")\s*$'  '\1=(0,${STR},0) \2=(0,${OP},0) \3=(2,${AREA},0)'
0   "^\s*(\d+)\s+'(.*)'\s*'\s*(\\\d*=\([^,()]*?,[^,()]*?,[^,()]*?\)\s*)*'\s*$"  "\1=(0,${STR},0) \2=(0,${OP},0) \3=(2,${AREA},0)"
Drugmix wrote:Может стоит добавить эти 2 правила в coder.coder?

Code: Select all

0   '^\s*(\d+)\s+(?:`|")(.*)(?:`|")\s*(?:`|")\s*(\\\d*=\([^,()]*?,[^,()]*?,[^,()]*?\)\s*)*(?:`|")\s*$'  '\1=(0,${STR},0) \2=(0,${OP},0) \3=(2,${AREA},0)'
0   "^\s*(\d+)\s+'(.*)'\s*'\s*(\\\d*=\([^,()]*?,[^,()]*?,[^,()]*?\)\s*)*'\s*$"  "\1=(0,${STR},0) \2=(0,${OP},0) \3=(2,${AREA},0)"
EDIT:
Наверно, всё же не
видимо из-за конфликта с правилом

Code: Select all

0	"#[A-F\d]{6}"  "\0=(0,\0,0)"
визуальный глюк появился - сначала всё в файле окрашивается одним образом (как задано этими 2-умя правилами, если они идут в списке правил первыми),

Image
а если в документе передвигать каретку кнопками Up/Down с клавиатуры (при выставлении каретки на эту или на соседние строки простым левым кликом с мышки - переокрашивания не случается) прямо по строкам сквозь эту же самую строку со скриншота, то она переокрашивается

Image
но если ресайзнуть окно, то всё переокрашивается в изначальный вариант.
, потому что на вот такой коротенькой строке, например, глюк не воспроизводится:
Image
.
Last edited by Drugmix on Sun Dec 29, 2013 1:07 am, edited 1 time in total.

Offline
Posts: 19
Joined: Mon Jul 19, 2010 9:36 pm

Post by FalseMaster »

Намедни захотелось мне фолдинга, до этого плагинами не пользовался (кроме "Format") - как-то не было необходимости. Но то ли я дурак, то ли с плагином "Coder" что-то не то. Проковырялся почти целый день, но как я флаги не менял, получается какая-то лажа. Вот она:

Image

Плюс к этому при сворачивании остаётся видимой последняя строка блока. Может кто что подскажет?
Last edited by FalseMaster on Sun Dec 29, 2013 9:57 pm, edited 1 time in total.

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

Post by Drugmix »

FalseMaster,
и где содержимое секции Folds из .coder файла?
FalseMaster wrote:Плюс к этому при сворачивании остаётся видимой последняя строка блока. Может кто что подскажет?
Folds только так работает, нижнюю строку пока вроде как нельзя никак скрыть.
EDIT: интересно, а можно ли это скриптом сделать?
Last edited by Drugmix on Sat Dec 28, 2013 10:47 pm, edited 1 time in total.

Offline
Posts: 19
Joined: Mon Jul 19, 2010 9:36 pm

Post by FalseMaster »

Drugmix wrote:и где содержимое секции Folds из .coder файла?

Code: Select all

513   3  ${COMM}  0  "{"         "}"    ""
513   3  ${COMM}  0  "(*"        "*)"   ""
3     0  0        0  "record"    "end"  ""
3     0  0        0  "function"  "end;"  ""
2049  0  0        0  "case"      "end"  ""
2049  0  0        0  "if"        "end"  ""
2049  0  0        0  "with"      "end"  ""
2049  0  0        0  "try"       "end"  ""

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

Post by Drugmix »

FalseMaster
а что не так на скриншоте?
нижняя строка же - наверняка последняя в файле?
т.к. третьего вхождения end; в файле не было найдено, то все последующие строки подпадают под folding.
Если в тексте заменить end. на end; то фолдинг остановится же тогда на строке с ним?
Или можно попробовать добавить в .coder (в конец или в начало списка правил) ещё такое правило:

Code: Select all

3     0  0        0  "function"  "end."  ""

Offline
Posts: 19
Joined: Mon Jul 19, 2010 9:36 pm

Post by FalseMaster »

Drugmix
Да без разницы, сколько там вхождений "end" и чем они заканчиваются - я уже всяко перепробовал. Суть в том, что должна быть возможность не фолдить одиночную "function", иначе какой прок от данной фичи плагина.

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

Post by Drugmix »

FalseMaster wrote:иначе какой прок от данной фичи плагина.
в том, что настроив однажды правила фолдинга для какого-то типа файлов - текст будет анализироваться плагином и все блоки текста будут сворачиваемыми, как это было задано при настройке.


Кстати, а было бы удобно, если б прям на кнопке сворачивания [-] или разворачивания [+] рисовалось бы число, соответствующее уровню в иерархии свёрнутых строк.

Code: Select all

[-1] if {
[-2]      if {
          …
          }
      …
      }

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

Post by Instructor »

FalseMaster
Есть же pascal.coder там все уже

Code: Select all

Folds:
;=====================================================================
;Flags  Font    Color   Color   Fold              Fold      Delimiters
;       style   text    bkgrnd  start             end
;=====================================================================
;513=1+512
513	3	${COMM}	0	"{"               "}"       ""
;513=1+512
513	3	${COMM}	0	"(*"              "*)"      ""
;130=2+128
130	0	0	0	"case"            "end"     " 	;.}"
2	0	0	0	"begin"           "end"     " 	;.}"
2	0	0	0	"implementation"  "end"     " 	;.}"
2	0	0	0	"repeat"          "until"   " 	;.}"
;--try--
2	0	0	0	"try"             "end"     " 	;.}"
;130=2+128
130	0	0	0	"try"             "except"  " 	;.}"
;130=2+128
130	0	0	0	"try"             "finally" " 	;.}"
2	0	0	0	"except"          "end"     " 	;.}"
2	0	0	0	"finally"         "end"     " 	;.}"
;--Definitions--
2	0	0	0	"record"          "end"     " 	;.}"
2048	0	0	0	"class;"          ""        ""
2	0	0	0	"class"           "end"     " 	;.}("

Offline
Posts: 19
Joined: Mon Jul 19, 2010 9:36 pm

Post by FalseMaster »

Drugmix wrote:...как это было задано при настройке
Так всё и дело-то в том, что настроить не получается.
Instructor wrote:Есть же pascal.coder там все уже прописано.
Это:

Code: Select all

   function Function1;
[+]begin
   end;

нелепая пародия на фолдинг, а должно быть по крайней мере так:

Code: Select all

[+]function Function1;

[+]function Function2;

[+]function Function3;

Ну а в идеале:
свёрнутое состояние:

Code: Select all

[+]function Function1;
[+]function Function2;
[+]function Function3;
развёрнутое состояние:

Code: Select all

[-]function Function1;
   begin
     // some code
   end;

[-]function Function2;
   begin
     // some code
   end;

, т.е. скрываться должна не только последняя строка блока, но и следующая за ней пустая строка. Естественно, условия поведения должны описыватся в файле "*.coder".

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

FalseMaster
Если чуть-чуть поступиться идеализмом, то можно и на стандартной подсветке получить хороший фолдинг определений функций. Достаточно Begin записывать В ТОЙ ЖЕ САМОЙ СТРОКЕ:

Code: Select all

function Function1; begin
  // some code
end;
Это ведь не будет ошибкой?

Offline
Posts: 19
Joined: Mon Jul 19, 2010 9:36 pm

Post by FalseMaster »

opk44
1. Я хотел юзать плагин для улучшения удобочитаемости, а не наоборот.
2. Переменные/константы/типы тоже в одну строку писать?
Last edited by FalseMaster on Sun Dec 29, 2013 11:58 pm, edited 1 time in total.

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

Post by Drugmix »

opk44
даже если это не будет ошибкой - всё равно не очень удобно без более гибких правил.
Я вот предпочитаю Allman'овскую стилизацию кода.
При такой стилизации, блоки кода требующие фигурных скобок - располагаются на новой строке.
Соответственно, в свёрнутом виде это будет выглядеть как

Code: Select all

   myFunc()
[+]{
   }
вместо желаемого

Code: Select all

[+]myFunc()
Locked