FarGroup / FarManager

File and Archive Manager
https://farmanager.com
BSD 3-Clause "New" or "Revised" License
1.82k stars 203 forks source link

баг с макросом ...\Far Manager\Addons\Macros\Panel.CtrlIns...lua #111

Open AVBL opened 5 years ago

AVBL commented 5 years ago

Описание говорит "If CtrlIns was pressed while on .. and command line is empty then copy to clipboard the path of the current folder" (в descript.ion, кстати, сказано ".", а не ".."). Реализуется через "CtrlShift[" в диалоге создания каталога.

По факту же, всегда копируется только имя (не путь) каталога .., то есть проверка "if APanel.Bof and not APanel.Selected and not APanel.Root then" не работает.

johnd0e commented 5 years ago

https://forum.farmanager.com/viewtopic.php?f=15&t=7812&p=119722#p119722

AVBL commented 5 years ago

Заменил содержимое файла (в каталоге "AppData\Roaming\Far Manager\Profile\Macros\scripts"; с перезапуском фара) на код, который предложен по ссылке - нет эффекта. Но даже если бы этот код работал - он же не в дистрибутиве лежит, а где-то на форуме.

AVBL commented 5 years ago

Ай, блин, я затупил - только сейчас сообразил, что FAR различает нумпад, а я использую стрелки обычно как раз с нумпада (в данном случае - это CtrlNum0 вместо CtrlIns; разумеется, при выключенном нумлоке).

Так что багрепорт немного меняется - проблема не в том, что не работает CtrlIns, а в том, что не предусмотрена обработка его дубля - CtrlNum0.

PS: Кстати, а есть примеры пользы о того, что фар в макросах выделяет нумпадовские клавиши с выключенным нумлоком (Num0 вместо Ins, Num4 вместо Left)?

johnd0e commented 5 years ago

а есть примеры пользы

Нет, просто не существует честного способа определить какая клавиша нажата. Когда-то была эвристика, но в некоторых случаях она давала неожиданные результаты, посему убрали.

AVBL commented 5 years ago

Сорь за офтопик, можно примерчики (или ссылку на них) таких неожиданных результатов? А насчёт эвристик - я, может, чего-то не знаю, но тут же вроде всё прямолинейно: при получении Num0 (и производных - Ctrl/Shift/AltNum0) сразу конвертировать в Ins/Ctrl/Shift/Alt (чтобы потом не было двойных проверок и двойных макросов).

И, кстати, насчёт двойных макросов: можно в одном макросе указать два хоткея? (Я просто не знаю где почитать про нынешние возможности макросов фара).

shmuz commented 5 years ago

Я просто не знаю где почитать про нынешние возможности макросов фара.

В папке %FARHOME%\Encyclopedia. А также https://forum.farmanager.com/viewtopic.php?f=15&t=4365 А также https://forum.farmanager.com/viewtopic.php?f=15&t=7302

AVBL commented 5 years ago

Спасибо, нашёл.

PS: Увы, "Клавиатурные макросы ... Поле “key” может содержать имя только одного ключа". Это я к тому, что у меня по два идентичных (кроме поля key) макроса internal\Editor_CtrlNum3.lua + Editor_CtrlPgDn.lua Macro { description=""; area="Editor"; key="CtrlPgDn"; flags=""; code="Keys(\"CtrlE\")"; } и internal\Editor_CtrlNum9.lua + Editor_CtrlPgUp.lua Macro { description=""; area="Editor"; key="CtrlPgUp"; flags=""; code="Keys(\"CtrlN\")"; }

shmuz commented 5 years ago

Один ключ - это ограничение "клавиатурных" макросов. Используйте "стационарные" макросы, там нет этого ограничения.

AVBL commented 5 years ago

Да, я сообразил после того, как написал, только что перетащил и слил, всё работает, спасибо.

johnd0e commented 5 years ago

можно примерчики (или ссылку на них) таких неожиданных результатов?

https://forum.farmanager.com/viewtopic.php?p=14506#p14506

AVBL commented 5 years ago

Посмотрел. Как я понял, основная изюминка обсуждения в том, что Shift+Num# в винде при включённом нумлоке возвращает Num# (без модификатора Shift, в отличие от Ctrl и Alt). И как это мешает тому, чтобы заменять для макросов Num# (и производные) на управляющие клавиши? Ну будет нажатие Shift-Num4 при включённом нумлоке возвращать Left, а не ShiftLeft - ну так оно и сейчас возвращает Num4, а не ShiftNum4, так что конвертация никаких новых искажений не добавит.

Тут вопрос в другом: есть ли примеры макросов, которые должны работать только, скажем, для Num4, но не для Left (или наоборот)?