DialogTools — макросы для диалогов

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

DialogTools — макросы для диалогов

Post by John Doe »

В этой теме публикую "служебные" макросы диалогов, по мотивам плагина DialogTools
  • Макросы для работы с паролями, скрытыми под звёздочками: DI_PSWEDIT.lua
  • Макрос для запрета подстановки переменных окружения: DIF_EDITEXPAND.lua
  • Редактировать содержимое поля ввода в редакторе: EditBoxToEditor.lua
  • Change Case @ivank DialogChangeCase.lua
Кроме того, на форуме есть другие темы с подобными скриптами для диалогов:
Last edited by John Doe on Tue 03 Sep, 2024 18:32, edited 1 time in total.
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

DI_PSWEDIT

Post by John Doe »

Макросы для работы с паролями, скрытыми под звёздочками.

CtrlIns — копировать пароль в буфер обмена
F3 — показать пароль
F4 — редактировать пароль

Альтернативно можно использовать пункт в меню плагинов.
Его можно настроить на одно из трёх перечисленных действий, для этого необходимо в начале скрипта изменить значение переменной F11Mode.

User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Макрос для запрета подстановки переменных окружения

Post by John Doe »

Макрос для запрета подстановки переменных окружения

По мотивам 0000281: Автоподстановка переменных среды не позволяет работать с путями вида C:\%AppData%.



Добавляет в меню плагинов 2 команды:
  • ExpandEnv: on / off — переключает режим подстановки переменных в текущем поле ввода.
    ExpandEnv: '<value>' — раскрывает переменные окружения.
Вызывать надо в диалоге, непосредственно в нужном поле редактирования.

Протестировать можно в диалоге создания папки, введя например %USERNAME%, и нажав F11: .

Для быстрого доступа к командам можно назначить макросы, в комплекте уже есть два (с неназначенными клавишами).
2useven10
Posts: 5498
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 21 times
Been thanked: 353 times

Макрос для запрета подстановки переменных окружения

Post by 2useven10 »

В диалоге копирования работать не будет.
Там теперь подстановка переменных после диалога.
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Макрос для запрета подстановки переменных окружения

Post by John Doe »

2useven10 wrote: Там теперь подстановка переменных после диалога.
Может есть смысл вернуть туда DIF_EDITEXPAND, а ИИ перенести в обработчик диалога, чтобы срабатывало при закрытии?
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

DialogTools — макросы для диалогов

Post by John Doe »

Редактировать содержимое поля ввода в редакторе



Возможно когда-нибудь приделаю специальную обработку для диалогов с [x] Process multiple names, чтобы разделял строки точкой с запятой.

P.S.
Аналогичный макрос есть в пакете SimSU: Dialog_ToEditor.lua
Разница в том, что мой
  • сохраняет позицию курсора при переходах между строкой ввода и редактором
  • не задаёт вопросов об управляющих символах
  • не вызывается в диалогах с DIF_EDITPATHEXEC
  • потенциально корректнее работает в диалогах с нетипичным порядком элементов.
https://t.me/FarManager — Telegram чат
ivank
Posts: 166
Joined: Fri 08 Aug, 2008 16:14
Has thanked: 3 times
Been thanked: 8 times
Contact:

DialogTools — макросы для диалогов

Post by ivank »

John Doe wrote: EditBoxToEditor.lua
В far2m возникает ошибка:

Code: Select all

EditBoxToEditor.lua:22: bad argument #2 to 'band' (bad int64)
т.к. F.DIF_EDITPATHEXEC возвращает nil. Еще в far2m не перерисовывается экран после закрытия редактора, у SimSU это исправляется вызовом far.SaveScreen и far.RestoreScreen.
Last edited by ivank on Sun 29 Jun, 2025 10:11, edited 1 time in total.
ivank
Posts: 166
Joined: Fri 08 Aug, 2008 16:14
Has thanked: 3 times
Been thanked: 8 times
Contact:

DialogTools — макросы для диалогов

Post by ivank »

Из функционала плагина DialogTools может пригодиться Change Case, вариант реализации (far3 и far2m):

Last edited by ivank on Wed 23 Jul, 2025 18:54, edited 3 times in total.
Shmuel
Posts: 7246
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 636 times

DialogTools — макросы для диалогов

Post by Shmuel »

ivank wrote: Sun 29 Jun, 2025 08:52 Еще в far2m не перерисовывается экран после закрытия редактора
В far2m нужно вызвать actl.RedrawAll() после закрытия редактора.
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

DialogTools — макросы для диалогов

Post by John Doe »

ivank wrote: Sun 29 Jun, 2025 08:52 В far2m возникает ошибка:
Исправил.
Кроме того, теперь позиция курсора синхронизируется между редактором и полем ввода, в обоих направлениях.
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 11458
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

DialogTools — макросы для диалогов

Post by HaRT »

John Doe wrote: Sun 29 Jun, 2025 14:09 теперь позиция курсора синхронизируется между редактором и полем ввода
Сложно ли сделать то же самое и для выделения (при возврате из редактора — хотя бы в случае однострочного текста)?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

DialogTools — макросы для диалогов

Post by John Doe »

Сложно ли
Чересчур костыльно как по мне.
Надо следить за выделением в EE_REDRAW, потому что в EE_CLOSE получать его уже поздно.
При этом FAR API не даёт нам EditorID, его надо будет эвристически получать.

А в каком сценарии это вообще могло бы пригодиться?
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 7246
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 636 times

DialogTools — макросы для диалогов

Post by Shmuel »

John Doe wrote: Sun 29 Jun, 2025 15:33 При этом FAR API не даёт нам EditorID, его надо будет эвристически получать.
Это где не даёт? В EE_CLOSE даёт.
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

DialogTools — макросы для диалогов

Post by John Doe »

Shmuel wrote: Sun 29 Jun, 2025 16:50 Это где не даёт?
Речь о EE_REDRAW.

В FAR API не предусмотрены специальные средства для обработки событий в редакторе, открываемом через editor.Editor, а значит работаем через ProcessEditorEvent, куда приходят события всех редакторов.
EditorID нашего редактора заранее неизвестен, значит надо исхитряться, например предполагая что это редактор в который первым придёт EE_READ.
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 11458
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

DialogTools — макросы для диалогов

Post by HaRT »

John Doe wrote: Sun 29 Jun, 2025 15:33 в каком сценарии это вообще могло бы пригодиться?
Спросил я, признаться, из абстрактного интереса, так сказать, для завершённости картины. На практике, конечно, в редакторе можно сделать с текстом всё, что требуется, поэтому перенос выделения оттуда в поле диалога вряд ли понадобится. Однако для переноса выделения из диалога в редактор применения, как мне кажется, всё-таки могут найтись. Например, вставил путь/имя для переименования, взятые из другого приложения (хоть из письма), перечитал и обнаружил какой-то проблематичный фрагмент, требующий нетривиальной обработки (хоть замены с регулярками), сразу его выделил, чтобы потом снова не выискивать, и открыл в редакторе.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

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