Coder plugin (3)

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

Post by YuS »

AZJIO
1. Если конец блока описываем регвыром "\z", то для корректной работы фолдинга, необходимо это указывать в сумме флагов, например, так:

Code: Select all

;3145733=1+4+1048576+2097152
2. Ну, вот, теперь понятно, что в захвате сверток правилом из секции Folds:, присутствует баг.
Описание:
Если начало блока описать регвыр-ом "\A", конец блока неважно как, но можно описать также регвыр-ом "\Z".

Code: Select all

3145733    0    0    0    "\A"    "\Z"    ""    0    0    "alias:.ooo"
- алиас здесь для подсветки содержимого блока из другого файла.
При наличии в начале блока пустой строки:
Image
- если установить курсор в начало блока и нажать <Enter>, начало блока смещается вместе с курсором:
Image
Если же в начале блока присутствует хотя бы один, любой символ, а не пустая строка, тогда смещения начала блока не происходит и подсветка из другого файла применяется автоматически.

Вот, как-то так.
Прошу автора обратить внимание на эту ситуацию и если это не баг, то описать это как фичу в файле помощи.

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

Post by AZJIO »

akelmenu.coder - подстроил под себя подсветку кода меню (чёрная тема, регвыры). В txt.coder добавил

Code: Select all

Folds: 
;1048580=4+1048576
1048580    0    0    0    "\A(?=.*SEPARATOR)"    "\z"    ""    0    0    "alias:.akelmenu"
В меню

Code: Select all

"Меню AkelPad" Call("Coder::Settings", 1, "akelmenu")

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

Post by YuS »

AZJIO wrote:

Code: Select all

Folds: 
;1048580=4+1048576
1048580    0    0    0    "\A(?=.*SEPARATOR)"    "\z"    ""    0    0    "alias:.akelmenu"
Правильно понимаю, что советы вроде этого:
YuS wrote:AZJIO
1. Если конец блока описываем регвыром "\z", то для корректной работы фолдинга, необходимо это указывать в сумме флагов, например, так:

Code: Select all

;3145733=1+4+1048576+2097152
совсем не нужны? :)
ок, понял.

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

Post by AZJIO »

YuS wrote:Правильно понимаю, что советы вроде этого:
YuS wrote:AZJIO
1. Если конец блока описываем регвыром "\z", то для корректной работы фолдинга, необходимо это указывать в сумме флагов, например, так:

Code: Select all

;3145733=1+4+1048576+2097152
совсем не нужны? :)
ок, понял.
Предыдущий совет с флагом 1048580 тоже был твой, передумал? Если бы была причина для чего менять оно было бы стимулом. Но я попробовал, сменил на 3145733, вызвал рефреш кодеров, AkelPad повис с процессом 50% (то есть 100% на 1-м ядре), ладно, убил процес, запустил AkelPad, повис сразу, даже файлы сессии не открыл, ладно меняю \z на \Z вроде заработало, но технически всё осталось также.

Разница между \z и \Z что один захватывает не включая последний \n, другой включая, но это мелочи, \n всё равно не подсветится, так что можно до него. Но то что при правке это может вызвать зависон с полной нагрузкой ядра, а потом попробуй угадай откуда он появился, всего лишь скопировал что-то поменял через 3 часа перезапустил AkelPad и гадай что ты делал эти 3 часа.

Надо что-то в плаге исключить эту проблему, это не нормально.

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

Post by YuS »

AZJIO wrote:Предыдущий совет с флагом 1048580 тоже был твой, передумал?
Дело даже не в том, кто какие советы раздает, я тоже могу ошибаться, увы, а в том, что существует документация от автора, вот её и надо придерживаться.
; 1048576 регулярное выражение в начале блока (секция "Folds:") или начале пропуска (секция "Skips:").
; 2097152 регулярное выражение в конце блока (секция "Folds:") или конце пропуска (секция "Skips:").
Просто иногда освежаю память, особенно в случаях, когда что-то пошло не так...
AZJIO wrote: Если бы была причина для чего менять оно было бы стимулом. Но я попробовал, сменил на 3145733, вызвал рефреш кодеров, AkelPad повис с процессом 50% (то есть 100% на 1-м ядре), ладно, убил процес, запустил AkelPad, повис сразу, даже файлы сессии не открыл, ладно меняю \z на \Z вроде заработало, но технически всё осталось также.
Какие нужны стимулы, чтобы следовать документации? Странно.
Ну, вот такой вот пример, может послужить стимулом:
попробуй своими файлами синтаксиса, которые ты чуть раньше выкладывал для тестов, исследовать, например, файл test.txt с таким содержимым:

Code: Select all

21.07.19 111 текст 
21.07.19 222 текст 
21.07.19 333 текст 
21.07.19 444 текст

текстовый блок с примером для наглядности \z или \Z

21.07.19 111 текст 
21.07.19 222 текст 
21.07.19 333 текст 
21.07.19 444 текст
увидишь наглядно, зачем и для чего пишется документация :)

А технически - это про что именно речь?
Если про \z и \Z, то разницы не будет никакой, если именно таких символов у тебя в тексте нет.
В любом случае, если используется регулярное выражение, то необходимо указывать соответствующие флаги. Если что-то не работает или работает не так, как ожидалось - всегда есть возможность задавать вопросы или писать багрепы, если есть уверенность, что это именно баг.
AZJIO wrote: Разница между \z и \Z что один захватывает не включая последний \n, другой включая, но это мелочи, \n всё равно не подсветится, так что можно до него. Но то что при правке это может вызвать зависон с полной нагрузкой ядра, а потом попробуй угадай откуда он появился, всего лишь скопировал что-то поменял через 3 часа перезапустил AkelPad и гадай что ты делал эти 3 часа.

Надо что-то в плаге исключить эту проблему, это не нормально.
Чтобы исправить баг, его необходимо повторить...
А если он ни у кого не проявлялся, что тогда делать? Т.е. требуется подробное описание того, как воспроизвести проблему, вплоть до предоставления каталога с самим акелпадом...
Иначе, баг, если он редкий, будет жить годами в программе.

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

Post by AZJIO »

YuS wrote:попробуй своими файлами синтаксиса, которые ты чуть раньше выкладывал для тестов, исследовать, например, файл test.txt с таким содержимым:

Code: Select all

21.07.19 111 текст 
21.07.19 222 текст 
21.07.19 333 текст 
21.07.19 444 текст

текстовый блок с примером для наглядности \z или \Z

21.07.19 111 текст 
21.07.19 222 текст 
21.07.19 333 текст 
21.07.19 444 текст
увидишь наглядно, зачем и для чего пишется документация :)
Не увидел, всё подсветилось.
YuS wrote:А технически - это про что именно речь?
про то что оба ищут до конца строки.
YuS wrote:Чтобы исправить баг, его необходимо повторить....
Почему всегда надежда что у меня какой то особый AkelPad или я с ним вытворил что-то, что у меня изменение меню связывается с кодером и подсветкой и дают особый результат, типа сложная комбинация чего то там, нет, тупо флаг 3145733 и \z и ничего больше. Вот не лень, выкладываю чистый AkelPad с чистым txt.coder и 1.txt-файл в корне для теста. Запусти его и кинь в него 1.txt, у меня сразу зависон.

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

Post by YuS »

AZJIO wrote: Не увидел, всё подсветилось.
Вот с такой суммой флагов
;1048580=4+1048576
?
Не верю! Как минимум, должно быть так:
Image
Ну, с соответствующей темой, естественно...
AZJIO wrote:
YuS wrote:А технически - это про что именно речь?
про то что оба ищут до конца строки.
Это, по документации одно и то же, но:
\z - Тоже, что и \Z, но соответствует позиции конца диапазона поиска.
У нас есть диапазон поиска? Вот, не вижу ни одного. А если нет необходимого условия, тогда зачем использовать метасимвол, который может привести к проблеме? Не понимаю.
AZJIO wrote:
YuS wrote:Чтобы исправить баг, его необходимо повторить....
Почему всегда надежда что у меня какой то особый AkelPad или я с ним вытворил что-то, что у меня изменение меню связывается с кодером и подсветкой и дают особый результат, типа сложная комбинация чего то там, нет, тупо флаг 3145733 и \z и ничего больше. Вот не лень, выкладываю чистый AkelPad с чистым txt.coder и 1.txt-файл в корне для теста. Запусти его и кинь в него 1.txt, у меня сразу зависон.
Ну почему-почему... потому, что не любишь читать документацию, вот почему :) шутка.
Ну, а если серьезно, то скачал твой комплект, запустил, открыл приложенный файл и ... ничего, т.е. открывается обычно, никаких тормозов, зависонов и прочей гадости нет. Что делать, как воспроизвести?

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

Post by opk44 »

YuS wrote:...то скачал твой комплект, запустил, открыл приложенный файл и ... ничего, т.е. открывается обычно, никаких тормозов, зависонов и прочей гадости нет. Что делать, как воспроизвести?
1. Перед первым запуском удалить раздел реестра HKEY_CURRENT_USER\Software\Akelsoft
2. После запуска поставить птички у Coder::HighLight, Coder::AutoComplete, Coder::CodeFold
У меня после подключения Coder::CodeFold на файле "1.txt" виснет и начинает активно жрать память (прибил после 1 Гб).
3. В тестовом комплекте используется Coder.dll версии 19.7.. Замена плагина на актуальную версию 20.0. решает проблему утечки памяти и "тормозов".

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

Post by YuS »

opk44 wrote:
YuS wrote:...то скачал твой комплект, запустил, открыл приложенный файл и ... ничего, т.е. открывается обычно, никаких тормозов, зависонов и прочей гадости нет. Что делать, как воспроизвести?
1. Перед первым запуском удалить раздел реестра HKEY_CURRENT_USER\Software\Akelsoft
2. После запуска поставить птички у Coder::HighLight, Coder::AutoComplete, Coder::CodeFold
У меня после подключения Coder::CodeFold на файле "1.txt" виснет и начинает активно жрать память (прибил после 1 Гб).
3. В тестовом комплекте используется Coder.dll версии 19.7.. Замена плагина на актуальную версию 20.0. решает проблему утечки памяти и "тормозов".
Вот, это уже ближе к делу...
1. Удалять нечего, ибо все настройки всегда перевожу в файл .ini
2. Это обязательно для воспроизведения бага. Повторяемость 100% на различных компьютерах.
3. У меня обновление не исправляет ситуацию. Более того, замена \z на \Z, тоже не исправляет ситуацию, в смысле не помогает в тестовом комплекте, но помогает если AP x64.

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

Post by AZJIO »

Попробовал индивидуальные подсветки

Code: Select all

"Подсветить выборочно" Icon("%a\AkelFiles\Plugs\Coder.dll", 13)
{
    -"Числа" Call("Coder::HighLight", 2, "#F3CF70", 0, 2, 0, -1, "\d+")
    -"Числа-16" Call("Coder::HighLight", 2, "#F3CF70", 0, 2, 0, -1, "(?<=[x#])[\dA-Fa-f]+")
    -"Английские" Call("Coder::HighLight", 2, "#BFCAA9", 0, 2, 0, -1, "[A-Za-z]+")
    -"Русские" Call("Coder::HighLight", 2, "#D3A3A3", 0, 2, 0, -1, "[А-Яа-яЁё]+")
    -"Дату" Call("Coder::HighLight", 2, "#AFE7B3", 0, 2, 0, -1, "\d{1,4}[:.\\]\d{2}[:.\\]\d{1,4}")
    -"Комментарии" Call("Coder::HighLight", 2, "#71AE71", 0, 2, 0, -1, "^[\t ]*?(?:[;#]|---|\===|\*\*\*).*?(?=\n)")
    -"Операторы" Call("Coder::HighLight", 2, "#FF8080", 0, 2, 0, -1, "[\(\)\{\}\[\]+\-*]")
    -"Задать рег.выр." Call("Scripts::Main", 1, "SetHighLight.js")
    -"TextMarker" Call("Scripts::Main", 1, "TextMarker.js")
}
SetHighLight.js

Code: Select all

var sValue;
if (sValue=AkelPad.InputBox(AkelPad.GetMainWnd(), WScript.ScriptName, "Задайте регулярное выражение","")) // если жмём "ОК"
  AkelPad.Call("Coder::HighLight", 2, "#FF8080", 0, 2, 0, -1, sValue);
TextMarker.ini

Code: Select all

aMark=[["Английские","#BFCAA9","0",0,"[A-Za-z]+",1,0,1,""],["Дата","#AFE7B3","0",0,"\\d{1,4}[:.\\\\]\\d{2}[:.\\\\]\\d{1,4}",1,0,1,""],["Комментарии","#71AE71","0",0,"^[\\t ]*?(?:[;#]|---|\\===|\\*\\*\\*).*?(?=\\n)",1,0,1,""],["Операторы","#FF8080","0",0,"[\\(\\)\\{\\}\\[\\]+\\-*]",1,0,1,""],["Русские","#D3A3A3","0",0,"[А-Яа-яЁё]+",1,0,1,""],["Числа","#F3CF70","0",0,"\\d+",1,0,1,""],["Числа-16","#F3CF70","0",0,"(?<=[x#])[\\dA-Fa-f]+",1,0,1,""]];

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

Post by AZJIO »

Можно как-то сделать, чтобы при "Просмотр HTML-кода" открывшийся файл подсветился как HTML? Файл создаётся в кэше с именем типа name[1]. В Notepad++ использовался дополнительный exe-файл, который прописан был в реестре как редактор для команды "Просмотр HTML-кода", но при этом он перенаправлял файл в Notepad++ и включал подсветку.
Если бы он хотя бы открывался как txt, то можно было бы сделать alias на html-кодер, но он то без темы.

Offline
Posts: 2
Joined: Mon Nov 18, 2019 2:05 pm

let в синтаксической подсветке JScript

Post by sPSjnbjhUM »

Синтаксическая подcветка JavaScript до сих пор не знает, что let ключевое слово. Думаю, что тоже самое и с новыми синтаксическими конструкциями вроде создания классов.

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

Wrong cASE with autocompleting words

Post by фдуч »

Всем привет и доброго дня.
У меня авто-завершение работает с ошибочной сменой регистра. Например:

(1) Написал в тексте 28px.
После этого набираю "28",
показывается подстановка "28px",
жму ввод - и появляется 28PX.

(2) В js пишу inner
показывается подстановка "innerHTML",
при вводе оказывается innerhtml.

Версии всего последние.
У меня ещё стоит AHK со скриптом смены регистра по клавише Shift-Break, но не думаю, что это имеет отношение.

Заранее спасибо за помощь, и вообще за ваш труд.
Акела рулит! :)

Offline
Posts: 2
Joined: Mon Nov 18, 2019 2:05 pm

Wrong cASE with autocompleting words

Post by sPSjnbjhUM »

А это точно была синтаксическая тема JScript, а не HTML?

P.S. AkelPad велик и могуч :D .

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

Post by opk44 »

фдуч
1. Постарайтесь осознанно подойти к трём последним настройкам [Coder-плагин]-->[Autocomplete2]. На иллюстрации мои настройки, вам могут потребоваться другие:
Image
2. Либо для вставки из списка можно использовать [Shift+Enter].
3. Воспользуйтесь поиском по форуму с ключевыми словами "Наследовать регистр".
Post Reply