Макросы для редактора Журко

Здесь обсуждается всё, что касается макросов.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Макросы для редактора Журко

Post by citRiks »

Latest post of the previous page:

DEL
Last edited by citRiks on Tue 09 Feb, 2021 09:09, edited 3 times in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Макросы для редактора Журко

Post by John Doe »

Дмитрий Журко wrote: Mon 08 Feb, 2021 21:24 Вкратце, прежде искали с шаблоном любые слова, которые сравнивали с тем словом, которое нужно. Теперь ищется слово без шаблона, "плоским" поиском. Если находит в строке, то далее с шаблоном именно этого слова. Можно было бы и просто искать с таким шаблоном, но тогда ускорения не будет, а иногда наоборот, на коротких словах.
Интересно каков порядок ускорения.
Возможно переход на использование editor.GetStringW / regex.findW даст более ощутимые результаты.

Вот такое ещё резануло глаз:

Code: Select all

Keys('F7 Down') local f7insens = Dlg.GetValue() == 0 Keys('Esc') -- Поиск [ ] Учитывать регистр.
Но тут обнаружил что другого пути похоже действительно нет.
Искомый параметр:
- недоступен через апи макросов (Editor.Set), хотя рядом есть аналогичные
- недоступен через апи плоагинов, т.к. вообще не входит в состояние редактора (но тут не и других)
- отсутствует и в конфиге (far:config)
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Макросы для редактора Журко

Post by buniak_a_h »

John Doe wrote: Tue 09 Feb, 2021 12:45 Но тут обнаружил что другого пути похоже действительно нет.
У меня (да и у Вас наверняка) есть макрос для получения всех элементов диалога (использует апи диалогов: hDlg:send(F.GetDlgItem, …)). Так что вешаете ивент на DN_INITDIALOG, в котором читаете соответствующий чекбокс и посылаете DM_CLOSE, -2 (имитация Esc).
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Макросы для редактора Журко

Post by John Doe »

Я имел ввиду что нет способа получить требуемые значения напрямую.
Выковыривать из диалога это всё-таки окольный путь.
https://t.me/FarManager — Telegram чат
Дмитрий Журко
Posts: 81
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 25 times
Been thanked: 1 time

Макросы для редактора Журко

Post by Дмитрий Журко »

buniak_a_h wrote: Mon 08 Feb, 2021 23:34 Попробуйте начать не с учебника, а с описания языка. Vararg описан тут. И ФАР тут вообще ни при чём.
Давайте вы учтёте, наконец, что пишите не идиоту, а программисту. Не я начал с учебника. Даже тому, кто начал писать такое не стоит. Всё что хорошо описано и лежит в известных местах я изучил сообразно задаче. Вы можете обсудить вопрос с теми, кто по-прежнему убежден, что arg[...] и arg.n есть. Да, мне не сразу пришло на ум, что arg могли упустить, оставив работу с ...
Дмитрий Журко
Posts: 81
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 25 times
Been thanked: 1 time

Макросы для редактора Журко

Post by Дмитрий Журко »

Shmuel wrote: Mon 08 Feb, 2021 23:54 Если не трудно, укажите, пожалуйста, где находится этот баг в документации FAR.
Пока трудно. Я непременно припомню и соберу все камни. Но пока моя задача сводилась к тому, чтобы довести свой давний замысел. Почти довёл.
Дмитрий Журко
Posts: 81
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 25 times
Been thanked: 1 time

Макросы для редактора Журко

Post by Дмитрий Журко »

HaRT wrote: Mon 08 Feb, 2021 23:23 Где же Pull request с исправлением?!
Что такое Pull request? Мне надо угадать?
Дмитрий Журко
Posts: 81
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 25 times
Been thanked: 1 time

Макросы для редактора Журко

Post by Дмитрий Журко »

John Doe wrote: Tue 09 Feb, 2021 12:45 Интересно каков порядок ускорения.
Особая благодарность за то, что вы тут один о теме. В пару раз, в лучшем случае. Окно маленькое, наверное.
John Doe wrote: Tue 09 Feb, 2021 12:45 Возможно переход на использование editor.GetStringW / regex.findW даст более ощутимые результаты.
Обязательно испытаю. И любопытно, и перфекционизм требует.
John Doe wrote: Tue 09 Feb, 2021 12:45 Но тут обнаружил что другого пути похоже действительно нет.
Искомый параметр:
- недоступен через апи макросов (Editor.Set), хотя рядом есть аналогичные
- недоступен через апи плоагинов, т.к. вообще не входит в состояние редактора (но тут не и других)
- отсутствует и в конфиге (far:config)
Да, жаль. Но для меня это цветочки. Далее по более простому поводу (поиск по словам) пришлось изгаляться намного сильнее. И в диалоги лезть, и вручную перерисовывать, "подымать" экран, чтобы не было так, что нажимаю клавишу, чтобы слово найти, слова дальше нет, но текущая строка куда-то с глаз улетела (центрировалась, но внимание-то в другом месте). Это в модуле jr.lines и модуле jr.block. Писал и переписывал раз двадцать. И не потому что работало, но некрасиво, не работало совсем.
Дмитрий Журко
Posts: 81
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 25 times
Been thanked: 1 time

Макросы для редактора Журко

Post by Дмитрий Журко »

buniak_a_h wrote: Tue 09 Feb, 2021 13:03 У меня (да и у Вас наверняка) есть макрос для получения всех элементов диалога (использует апи диалогов: hDlg:send(F.GetDlgItem, …)). Так что вешаете ивент на DN_INITDIALOG, в котором читаете соответствующий чекбокс и посылаете DM_CLOSE, -2 (имитация Esc).
А этот скрипт учтёт, скажем, что в F7 пропуски и повторы индексов? Впрочем, обойти их легко, lua-же, но смысл влезать в чужую работу, возможно её портить? Будет авторский механизм, использую. А пока надеюсь спрятать в процедурку, и ладно. Последователи легко повторят за мной все эти нажатия.

Проще говоря, я не о таких как вы старался. Вы и не станете, кстати, использовать чужое, у вас своего много. Я о тех беспокоен, кто будет использовать мой код.
Last edited by Дмитрий Журко on Wed 10 Feb, 2021 01:35, edited 1 time in total.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Макросы для редактора Журко

Post by HaRT »

Дмитрий Журко wrote: Wed 10 Feb, 2021 01:08 Я непременно припомню и соберу все камни.
Дмитрий Журко wrote: Wed 10 Feb, 2021 01:05 Давайте вы учтёте, наконец, что пишите не идиоту, а программисту.
Дмитрий Журко wrote: Wed 10 Feb, 2021 01:09 Что такое Pull request? Мне надо угадать?
Достаточно погуглить. А пока нарекания на документацию Фара больше похожи на голословные утверждения.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Дмитрий Журко
Posts: 81
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 25 times
Been thanked: 1 time

Макросы для редактора Журко

Post by Дмитрий Журко »

Дмитрий Журко
Posts: 81
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 25 times
Been thanked: 1 time

Макросы для редактора Журко

Post by Дмитрий Журко »

HaRT wrote: Wed 10 Feb, 2021 01:25 Достаточно погуглить. А пока нарекания на документацию Фара больше похожи на голословные утверждения.
Они и есть, И что? Примите чужое мнение. Я не выдавал его за факты, только за неуважение. Вы, кстати, не ответили на прямой вопрос. А он прямой. Значит вам не надо было.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Макросы для редактора Журко

Post by buniak_a_h »

Дмитрий Журко wrote: Wed 10 Feb, 2021 01:05 Давайте вы учтёте, наконец, что пишите не идиоту, а программисту
Дмитрий Журко
Posts: 81
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 25 times
Been thanked: 1 time

Макросы для редактора Журко

Post by Дмитрий Журко »

Я и ещё раз напомню о заголовке обсуждения. Мерить свой член я не буду. Напишите лучше, посмотрю, поблагодарю. Я привёл почти весь код, что я использую. Если кто-то чего-то не обнаружил, то нет. И я знаю притом, что то же самое у вас.

Системный подход надо применять к системе. К костылям надо применять костыльный подход. Я сделал костыли. Подожду, куда система пойдёт. Я всегда учу, что надо быть уместным и точным.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Макросы для редактора Журко

Post by buniak_a_h »

Дмитрий Журко wrote: Wed 10 Feb, 2021 01:20
buniak_a_h wrote: Tue 09 Feb, 2021 13:03 У меня (да и у Вас наверняка) есть макрос для получения всех элементов диалога (использует апи диалогов: hDlg:send(F.GetDlgItem, …)). Так что вешаете ивент на DN_INITDIALOG, в котором читаете соответствующий чекбокс и посылаете DM_CLOSE, -2 (имитация Esc).
А этот скрипт учтёт, скажем, что в F7 пропуски и повторы индексов? Впрочем, обойти их легко, lua-же, но смысл влезать в чужую работу, возможно её портить? Будет авторский механизм, использую. А пока надеюсь спрятать в процедурку, и ладно. Последователи легко повторят за мной все эти нажатия.
Этот скрипт только получает то, что есть в диалоге. Независимо от того, виден элемент, или нет. Чем вызван диалог - нажатием F7 в редакторе, или F6 в панели - для него значения не имеет.
--
Что такое "пропуски и повторы индексов" в контексте диалога - я не знаю. Это больше похоже на структуру форматной строки в некоторых языках (Object Pascal, например): там после % может стоять конструкция index:. Увы, функция string.format такого не умеет. Если имеется в виду получение всех параметров, передаваемых в функцию, то конструкция {...} дойдёт только до первого переданного nil-а. Точнее, оператор # (количество) и ipair (перечисление всех элементов) остановятся на первом же nil-е. Зато select - абсолютно правильно (с точки зрения здравого смысла) отработает.
Дмитрий Журко
Posts: 81
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 25 times
Been thanked: 1 time

Макросы для редактора Журко

Post by Дмитрий Журко »

buniak_a_h wrote: Wed 10 Feb, 2021 01:46 Этот скрипт только получает то, что есть в диалоге. Независимо от того, виден элемент, или нет. Чем вызван диалог - нажатием F7 в редакторе, или F6 в панели - для него значения не имеет.
F7 есть только в редакторе. Макрос исполняется в редакторе тоже. Ну нет смысла лезть.

С аргументами я давно разобрался. Спасибо вам ещё раз. Пишите тому, кто не стал.
Post Reply

Return to “Обсуждение макросов”