Coder plugin (2)

Discuss and announce AkelPad plugins
  • Author
  • Message
YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Skif_off wrote: Идеи приветствуются.
Тут супер идей, наверное, не будет, но можно упростить до одной строки:

Code: Select all

0   "(^(?>[a-f\d]{128}|[a-f\d]{64}|[a-f\d]{40}|[a-f\d]{32})(?=[ \t])|(?<=[ \t])[a-f\d]{8}$)"   "\1=(0,${OP},0)"   0   0
-имхо, так даже чуток менее ресурсоемко будет...

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

Post by Skif_off »

YuS
Спасибо, новое подлиньше и поточнее за счёт "[ \t](\*)", кажется, уловил, как работает, получится так:

Code: Select all

0	"(^(?>[a-f\d]{128}|[a-f\d]{96}|[a-f\d]{64}|[a-f\d]{48}|[a-f\d]{40}|[a-f\d]{32}|[a-f\d]{8})(?=[ \t]\*)|(?<=[ \t])([a-f\d]{8})$)"	"\1=(0,${IF},0) \2=(2,${DEL1},0)"	0	0
?
YuS wrote:имхо, так даже чуток менее ресурсоемко будет...
А почему? То, что поиск с флагом 1 пошустрее - помню, поэтому нагромоздил [A-Fa-f], а \d убрал для наглядности (плохо всё-таки ещё понимаю).

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

Post by YuS »

Skif_off wrote:YuS
Спасибо, новое подлиньше и поточнее за счёт "[ \t](\*)"
Да, если наличие "*" обязательно, то так, конечно, точнее и правильнее... не будут "случайно" подсвечены crazy-name файлов. :)
Skif_off wrote:
YuS wrote:имхо, так даже чуток менее ресурсоемко будет...
А почему? То, что поиск с флагом 1 пошустрее - помню, поэтому нагромоздил [A-Fa-f], а \d убрал для наглядности (плохо всё-таки ещё понимаю).
А я, кстати, не помню о том, что регистрозависимый парсинг шустрее... если так, то лучше его и использовать, в шаблоне это не критично.
А ресурсоемкость уменьшена за счет использования атомарной группы и удаления захватывающей группы (^.+) (которая, по сути, не используется и большого смысла в ней нет) .

Если необходима различающаяся раскраска, то лучше так:

Code: Select all

0	"(^(?>[a-f\d]{128}|[a-f\d]{96}|[a-f\d]{64}|[a-f\d]{48}|[a-f\d]{40}|[a-f\d]{32}|[a-f\d]{8})(?=[ \t]\*))|((?<=[ \t])[a-f\d]{8}$)"	"\1=(0,${IF},0) \2=(2,${DEL1},0)"	0	0
- либо изменить на регистрозависимость флаг и шаблон

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

Post by Skif_off »

YuS wrote:Если необходима различающаяся раскраска, то лучше так:

Code: Select all

0	"(^(?>[a-f\d]{128}|[a-f\d]{96}|[a-f\d]{64}|[a-f\d]{48}|[a-f\d]{40}|[a-f\d]{32}|[a-f\d]{8})(?=[ \t]\*))|((?<=[ \t])[a-f\d]{8}$)"	"\1=(0,${IF},0) \2=(2,${DEL1},0)"	0	0
- либо изменить на регистрозависимость флаг и шаблон
Так получается не совсем то:
8cf939b33a4ece35116acc236489d3c4 *filename
filename c0590b9b
а нужно
8cf939b33a4ece35116acc236489d3c4 *filename
filename c0590b9b
Немного смущает, что вместе со звёздочкой "*" захватывается и "[ \t]":

Code: Select all

0   "...(?=[ \t]\*)..."   "... \2=(2,${DEL1},0)"   0   0
но, думаю, не страшно :)
YuS wrote:А я, кстати, не помню о том, что регистрозависимый парсинг шустрее... если так, то лучше его и использовать, в шаблоне это не критично.
Чуть не плюнул, но всё-таки сумел найти http://akelpad.sourceforge.net/forum/vi ... 7595#27595

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

Post by YuS »

Skif_off wrote: Так получается не совсем то:
...
а нужно
...
Так в моем, первоначальном варианте, так и было... а различная окраска - из Вашего варианта. Итоговый шаблон чуть ниже:
Skif_off wrote: Немного смущает, что вместе со звёздочкой "*" захватывается и "[ \t]":

Code: Select all

0   "...(?=[ \t]\*)..."   "... \2=(2,${DEL1},0)"   0   0
но, думаю, не страшно :)
Это "positive lookahead", он работает только как условие, при этом ничего не захватывая.
Skif_off wrote: Чуть не плюнул, но всё-таки сумел найти http://akelpad.sourceforge.net/forum/vi ... 7595#27595
Сделал себе памятку. :)
Итого:

Code: Select all

1   "(^(?>[A-Fa-f\d]{128}|[A-Fa-f\d]{96}|[A-Fa-f\d]{64}|[A-Fa-f\d]{48}|[A-Fa-f\d]{40}|[A-Fa-f\d]{32}|[A-Fa-f\d]{8})(?=[ \t]\*)|(?<=[ \t])[A-Fa-f\d]{8}$)"   "\1=(0,${IF},0)"   0   0

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

Post by Infocatcher »

Skif_off wrote:первое правило в Quotes закомментировал
А что с ним не так?
Как вот тут, когда имя с пробелами?
И в каком формате Double Commander записывает?

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

Post by Skif_off »

Infocatcher wrote:А что с ним не так?
Как вот тут, когда имя с пробелами?
Да, если имя начинается с [a-f0-9] и потом есть пробел.
Infocatcher wrote:И в каком формате Double Commander записывает?

Code: Select all

TC:
;*.md5
[a-f\d]{32} *name
;*.sfv
name [A-F\d]{8}
;*.sha
[a-f\d]{40} *name
;*.sha256
[a-f\d]{64} *name
;*.sha512
[a-f\d]{128} *name

DC:
;*.blake2s
[a-f\d]{64} *name
;*.blake2sp
[a-f\d]{64} *name
;*.crc32
[a-f\d]{8} *name
;*.haval
[a-f\d]{64} *name
;*.md4
[a-f\d]{32} *name
;*.md5
[a-f\d]{32} *name
;*.ripemd128
[a-f\d]{32} *name
;*.ripemd160
[a-f\d]{40} *name
;*.sfv
name [a-f\d]{8}
;*.sha
[a-f\d]{40} *name
;*.sha256
[a-f\d]{64} *name
;*.sha384
[a-f\d]{96} *name
;*.sha512
[a-f\d]{128} *name
;*.tiger
[a-f\d]{48} *name
, по идее только ТС в *.sfv пишет "a-f" в верхнем регистре, наверное, я перестраховался? С другой стороны - есть и другой софт...

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

Post by Infocatcher »

Skif_off
Я пока сделал вот такой фокус:

Code: Select all

768	0	${OP}	0	""	"*"	""	"0123456789abcdef 	"	""
Так оно попроще. На валидатор не потянет, но подсвечивать должно как надо.
https://github.com/Infocatcher/AkelPad_ ... hsum.coder
(ну да подробности изменений в веб-интерфейсе, увы, не видно)

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

Post by Skif_off »

Infocatcher
Ага, попроще, надо подумать. Попутная валидация - штука не вредная.
Пробежался по утилитам, с RHash есть проблема: с ключом --sfv получается канонiчный вывод в файл, а с остальными в качестве разделителя не пробел и звёздочка " *", а два пробела " ". Ключами вроде не изменить, может, напишу разработчику. Подумываю прикрутить к файловым менеджерам, очень уж шустрая, пожалуй, самая.

P.S. По поводу изменений: Lenchik удобно сделал здесь, просто копия в UTF-8, можно обойтись без WinMerge :)

Добавлено:
Про RHash беру свои слова взад,

Code: Select all

; для всех файлов в каталоге, рекурсивно, с полным путём к файлу
; CRC32 в традиционный *.sfv:
rhash --crc32 --recursive --output=path\file.sfv --sfv path\*.*
; остальные:
rhash [othet hash sums options] --recursive --output=path\file.ext --printf="[hash sum] *%p\r\n" path\*.*
; например, md5:
rhash --md5 --recursive --output=path\file.md5 --printf="%m *%p\r\n" path\*.*
Last edited by Skif_off on Thu Oct 29, 2015 7:57 pm, edited 1 time in total.

Offline
Posts: 366
Joined: Mon Jan 10, 2011 5:28 pm
Contact:

Post by Lenchik »

Skif_off wrote:P.S. По поводу изменений: Lenchik удобно сделал здесь, просто копия в UTF-8, можно обойтись без WinMerge :)
Instructor здорово помог это автоматизировать: LenchikGithub.js

Offline
Posts: 173
Joined: Mon Dec 06, 2010 9:53 am
Location: г.Харьков, Русь

Post by San_dr »

Lenchik, скачал несколько твоих кодеров на пробу и заметил, что с ними перестаёт работать возможность в плагине coder сменить цветовую тему (по причине плохого зрения часто пользуюсь - ищу более контрастный вид). Скачал txt.coder, bibtex.coder, cue.coder - на всех невозможно изменить тему - это зачем?
----------------
AkelPad.exe 4.9.6.0
Coder.dll 19.1.0.0
"7"х64

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

Post by Skif_off »

San_dr
Ничего подобного не наблюдаю, темы переключаются и сохраняются и в диалоге настроек плагина, и через меню с вызовом

Code: Select all

Call("Coder::Settings", 5, "name")
ОСь та же, проверил AkelPad х64 на всякий случай - никаких проблем.
В чём выражается "невозможность"? Сообщение об ошибке? Молчаливое игнорирование нажатия кнопки "Применить"?

Offline
Posts: 202
Joined: Sat Mar 28, 2015 2:36 pm
Location: Russia

Post by Kley »

Instructor
Небольшой недочет:
Coder-Rus.txt wrote:*** Описание переменных, не применяющихся в *.coder файлах ***
...
HighLight_AutoMarkFlags
HighLight_AutoMarkFontStyle
HighLight_AutoMarkTextColor
HighLight_AutoMarkBkColor
*.coder wrote:AutoMark:
;====================================================================================================================
;AutoMarkFlags AutoMarkFontStyle AutoMarkTextColor AutoMarkBkColor
;====================================================================================================================
${HighLight_AutoMarkFlags} ${HighLight_AutoMarkFontStyle} ${HighLight_AutoMarkTextColor} ${HighLight_AutoMarkBkColor}

Offline
Posts: 173
Joined: Mon Dec 06, 2010 9:53 am
Location: г.Харьков, Русь

Post by San_dr »

Skif_off wrote: В чём выражается "невозможность"? Сообщение об ошибке? Молчаливое игнорирование нажатия кнопки "Применить"?
Да, молчит и не отрабатывает. И если была включена темная тема, то при открытии файла именно с твоим кодером тема сама меняется на светлую и не реагирует на изменения

вот для опытов http://rghost.ru/7lgfXWqgL

(там сейчас не твои кодеры.)

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

Post by Skif_off »

San_dr
Не удаётся воспроизвести, грохнул папку Coder и заменил на свою - выбранная тема так же сохраняется и не меняется.
Сделайте, пожалуйста, скрины/видео, если есть возможность, может быть, просто не понял, что вы имеете ввиду?

P.S. Проверьте кодировки:
matlab.coder - ANSI;
bib.coder - UTF-32LE и при этом рядом более свежий bibtex.coder под оригинальным именем;
ahk.coder - UTF-32BE;
cue.coder - UTF-32BE.
Везде должна быть UTF-16LE, лучше обновить файлы, а не пересохранять: matlab.coder, например, убит.
Locked