Coder plugin (3)

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 348
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

Сделал описание пока 2-х вкладок автозавершения

Offline
Posts: 15
Joined: Fri May 10, 2013 3:29 am

RE:

Post by фдуч »

Благодарю!

Я так и не понял, почему при вставке по образцу типа "24px" буквы переводились в заглавный регистр — по-моему, это прямая противоположность любому типу наследования... Тип файла был .txt

...Но при поправленных настройках проблема исчезла. Спасибо!

Кстати — предлагаю, по возможности, в "Настройки - Плагины" добавить ссылки на их настройку.

Это будет естественно, и простные смертные пользователи легче сами найдут ответы на такие вопросы.

Иначе мы ищем
"Настройки - Плагины - Coder - Autocomplete"

и остаёмся в недоумении, что надо лезть в
"Плагины - Программирование - Настроить".

Это разные слова "Coder - Autocomplete" и "Программирование", поэтому в поисках настроек мозг их даже не ассоциирует...

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

Re: RE:

Post by opk44 »

фдуч wrote:Я так и не понял, почему
Поскольку ни старых ни поправленных настроек вы не предоставили, то и у нас шансов нет.
фдуч wrote:Кстати — предлагаю, по возможности, в "Настройки - Плагины" добавить ссылки на их настройку.

Это будет естественно, и простные смертные пользователи легче сами найдут ответы на такие вопросы.
Открою вам страшную тайну - они там уже есть! Все записи вида "<Название-плагина>::Settings" - это и есть "ссылки на их настройку".

Offline
Posts: 348
Joined: Mon Jun 03, 2019 2:33 am

Re: RE:

Post by AZJIO »

opk44 wrote:Поскольку ни старых ни поправленных настроек вы не предоставили, то и у нас шансов нет.
По моему для данного случая какими бы не были настройки автозавершение (при отмеченном "Наследовать регистр введённых символов") 28PX не могло произойти, если только цифры не определились как верхний регистр. Теоретически алгоритм ищет слева первый символ, у которого можно определить регистр и при ненайденности должен вставить как есть в списке автозавершения. Я произвёл тест (в пустом файле и в не пустом), ввёл 28px, в новой строке ввёл 28, выбрал из списка 28px, получил 28PX.
Попробовал t8px и ввёл t8, выбрал из списка t8px, получил t8px. Вот, уже видит регистр.

_______________________
Можно ли как то отключить встроенные горячие клавиши? Я хотел проверить, мешает ли встроенная горячая клавиша моей глобальной горячей клавише обработки текста. Открыл "Hotkeys плагин", нажал "Все клавиши...", здесь не получилось изменить. Попутно: в этом окне снизу поле поиска, но не очевидно что оно для поиска, я пытался в нём задать хоткей и потом не мог понять для чего оно.

Offline
Posts: 165
Joined: Fri Aug 15, 2008 8:58 am

Post by Diamen »

I have this annoying defect.ini coder.
How can I avoid it?
Image

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

Post by opk44 »

Diamen wrote:How can I avoid it?
Try some monospaced font. For example: https://dejavu-fonts.github.io

Offline
Posts: 165
Joined: Fri Aug 15, 2008 8:58 am

Post by Diamen »

The problem is:
517 2 0 0 "[" "]" "" "" "" 0 0
if i change to
517 0 0 0 "[" "]" "" "" "" 0 0
work fine
do it have a problem with brackets and bold?

Offline
Posts: 19
Joined: Sun Dec 08, 2013 5:35 am

Post by W0LF »

1. Имеет ли значение порядок секций в .coder-файле?
Т.е., если я на пример секцию QuotesRE перенесу после секции Words это как-то повлияет на раскраску?

2. Для раскраски слов, начинающихся с "_" и заканчивающихся ":" использую такую регулярку:

Code: Select all

"\b_\S+:?\b"
Для раскраски слов, начинающихся с "." и заканчивающихся ":" использую такую регулярку:

Code: Select all

"\b\.\S+:?\b"
Дык вот для "_" раскраска работает, а для точки - нет. Что я делаю не так?

Image

YuS
Offline
Posts: 513
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

W0LF
1.
.. возрастающий приоритет (от меньшего к большему):
1. "Words:".
2. "Delimiters:".
3. "QuotesRE:", "Quotes:" - сейчас может меняться.
4. "Folds:".


2.
Регулярка:
"\b\.\S+:?\b"
- не имеет смысла, ибо:
"\b" - граница слова
"\." - не является словом, это разделитель.
"\S" - любой не пробельный символ.
" " - пробел тоже не является словом, а значит границы слова там тоже не будет...
т.е. совпадения не будет найдено в том тексте, который у Вас на скрине, да и в принципе, такой регэксп может сработать только на таком, например, тексте:
a.abc
a.abc:b

тест
====
Last edited by YuS on Sun Feb 02, 2020 10:55 am, edited 1 time in total.

Offline
Posts: 19
Joined: Sun Dec 08, 2013 5:35 am

Post by W0LF »

YuS wrote: "\b" - граница слова
"\." - не является словом, это разделитель.
Тогда как же правильно составить регулярку?

Offline
Posts: 348
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

W0LF
както так:

Code: Select all

"(?<=[ \t\\*+-])\.\S+:?\b"
"(?<!\w)\.\S+:?\b"

Offline
Posts: 19
Joined: Sun Dec 08, 2013 5:35 am

Post by W0LF »

AZJIO wrote:W0LF
както так:

Code: Select all

"(?<=[ \t\\*+-])\.\S+:?\b"
"(?<!\w)\.\S+:?\b"
AkelPad ругается на первую строчку, а вторая - да, работает. Спасибо.

YuS
Offline
Posts: 513
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

W0LF wrote: Тогда как же правильно составить регулярку?
Правильность составления шаблона зависит от того, что именно требуется найти (что должен захватить шаблон), а что исключить из результатов поиска...
И пример текста не помешает для анализа, чтобы понять, какие возможны варианты расположения символов...

Offline
Posts: 348
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

1. в кодерах имеем разные пересечения *.cfg, как они будут обрабатываться?
ini.coder
*.cfg
_syslinux.coder
syslinux.cfg
_grub2.coder
grub.cfg
*.txt
txt.coder
7zsfxconfig.coder
*config.txt
У меня с cfg была проблема, пришлось указывать *.cfg1 *.cfg2 *.cfg3 в разных чтобы не мешали друг-другу, а в ini.coder пришлось делать так:

Code: Select all

3145733    0    0    0    "(?i)\A(?=.*menu label)"    "\Z"    ""    0    0    "_syslinux.coder"
3145733    0    0    0    "(?i)\A(?=.*menuentry)"    "\Z"    ""    0    0    "_grub2.coder"
2. В пунктах меню сделал так:

Code: Select all

"Grub2 AZJIO" Call("Coder::Settings", 1, "cfg1")
"Grub2 Skif_off" Call("Coder::Settings", 1, "cfg3")
"syslinux" Call("Coder::Settings", 1, "cfg2")
Но изначально я не хотел прописывать в них расширения *.cfg1 *.cfg2 *.cfg3, а просто указать файл целиком, например "_syslinux.coder", но это не работало. Посмотрел в справке:

Code: Select all

Call("Coder::Settings", 1, "EXTENSION")
Call("Coder::Settings", 6, "ALIAS")
тут либо расширение "cfg" либо псевдоним ".cfg" что в принципе одно и тоже расширение.

3. В AutoIt3 и PureBasic одинаковый синтаксис функций

Code: Select all

Func FuncName(...)
	...
EndFunc

Procedure FuncName(...)
	...
EndProcedure
если в секции Folds: указать так:

Code: Select all

40	0	0	0	"Procedure"	"EndProcedure"	" 	"	0	0
40	0	0	0	"Func"            "EndFunc"       " 	"       0	0
; 1048576	0	0	0	"(?<=Func[ \t])\w+"            "EndFunc"       " 	"       0	0
то первые 2 вставляют в панель списка свёрток
Procedure FuncName()
Func _FuncName()
а надо только имя FuncName(). Попробовал регулярное выражение, оно добавляет в список только имя, а выделяет начало и конец не Func-EndFunc, а FuncName-EndFunc (который маркер CodeFold_TagMark), что не совсем идеально.
Подумал может флаг 4 сработает (4 форсировать получение имени для списка справа от начала блока, включая начало блока (только для секции "Folds:").), но не помогло.
И, кстати, понятно, что каждый флаг создавался для реального случая, вот к описанию бы примеры, потому что методом тыка тяжело разгадывать.

Для коллекции дополнительных кодеров добавьте
au3.coder (AutoIt3, 3741 элементов автозавершения, оптимизированный поиск всех имён функций включая UDF и собственные по наличию открывающей скобки)
pb.coder (PureBasic, 1674 элементов автозавершения)
reg.coder - в отличии от ini-файлов, хоть и формат похожий, но всё же есть свои особенности подсветки типов данных, есть подсветка удаляемых разделов, GUID.
Для ini.coder можно добавить строку

Code: Select all

; параметр = значение (3 варианта значений: число, шестнадцатеричное число, текст)
1	"^(.+?)(=)(?:(-?\d+$)|(#?[\da-fA-F]+$)|([^\r\n]+$))"	"\1=(0,#AAAAAA,0)	\2=(0,#FF8080,0)	\3=(0,#F666FF,0)	\4=(0,#6588F7,0)	\5=(0,#C0AD72,0)"
bbcode.coder - в txt.coder надо добавить строку:

Code: Select all

3145733    0    0    0    "\A(?=.*\[(?:[a-z]{3,7}=|\[/[a-z]{3,7}\]))"    "\Z"    ""    0    0    "bbcode.coder"
Единственное я вставил русское описание флагов в кодеры. В идеале бы сделать стандартизацию описаний, чтобы кликом утилиты тексты подменились бы на родной язык. И стандартизацию авторства и краткого описания чьих файлов будет кодер, так как расширение ни о чём не говорит, так как многие используют одно и тоже для своих программ.

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

Post by Skif_off »

AZJIO
1. В каком порядке идут coder-файлы, в таком и будут обрабатываться открываемые файлы, поэтому
_grub2.coder будет применён к grub.cfg,
_syslinux.coder к syslinux.cfg, isolinux.cfg и extlinux.conf,
7zsfxconfig.coder к *config.txt, *.sfx.config и *.sfx.config.*,
далее ini.coder ко всем оставшимся *.cfg, а следом txt.coder заберёт своё.
В первом и втором не зря написано
;NOTE1: Don't rename file!
;ПРИМЕЧАНИЕ1: Не переименовывать файл!
3.
au3.coder (AutoIt3, 3741 элементов автозавершения, оптимизированный поиск всех имён функций включая UDF и собственные по наличию открывающей скобки)
Использовать \w по крайней мере в данном случае плохая идея, потому что \w не равно [A-Za-z0-9_], со всеми вытекающими.
Post Reply