HaRT wrote: Wed 18 Dec, 2024 20:22
Почему это Punto Switcher и ему подобные вдруг отправит в программу больше BackSpace'ов, чем было набрано символов?!
Отправляет ровно столько, сколько было набрано, но AH умеет на один BS удалять более одного символа
Nikolay, вскрылась ещё одна потребность, которую на данный момент я не вижу способа удовлетворить разумным образом. Сценарий такой: в меню просмотра-редактирования почти исключительно редактировавшиеся файлы, но я ищу тот, про который точно помню, что его именно просматривал. Т.е., минимально обобщая, нужно каким-то образом отфильтровать записи по действию (View/ Edit/ Ext.).
Я вижу два возможных подхода к решению этой задачи:
Добавить по сути 3 дополнительные фиксированные фильтра (View/ Edit/ Ext.), которые включаются/выключаются, например, кнопкосочетаниями CtrlAltV/E/X и визуализируются в области типа фильтра буквами V/E/X соответственно.
И по поведению тут два варианта:
(а-ля radio buttons, RB) Из этих 3 фильтров в каждый момент может быть активен только один (и показываются только записи с этим действием) или ни одного (и тогда работает, как сейчас).
(а-ля check boxes, CB) Эти 3 фильтра можно включать в любой комбинации (и показываются только записи с выбранными действиями), в т.ч. ни одного (и тогда работает, как сейчас).
В этом случае визуализация типа фильтра может, например, выглядеть так: *VX.
Добавить ещё один тип фильтра (“action-aware”, «с учётом действия»), при включении которого вводимый текст фильтра распространяется на весь текст записи в диалоге, включая и обозначение действия (например, view*my_file). Визуализируется это в области типа фильтра, например, буквой A.
Этот подход имеет тот недостаток, что обозначения действий и преобладающие пути к файлам могут быть на разных языках, т.ч. при наборе action-aware фильтра части пользователей придётся переключать язык ввода. Но, учитывая, что сценарий всё же не очень частый, думаю, это не критично.
Притом тут тоже два варианта:
Сделать 3 типа фильтра: (от начала слова;
на мой взгляд, не очень удобно, что это обозначается отсутствием какого-либо значка, — я бы предпочёл <, по аналогии с одним из диалектов регэкспов
), * (с любого места), A (с обозначения действия).
Но так мы ограничиваем возможность фильтровать собственно путь файла от начала слова.
Сделать 4 типа фильтра (2×2): (от начала слова, без учёта действия), * (с любого места, без учёта действия), A (от начала слова, с учётом действия), *A (с любого места, с учётом действия).
Отсутствие A можно также обозначать, например, символом чёрточки или подчёркивания.
Переключать такие типы фильтра можно либо перебором по F2 (возможно, несколько утомительно), либо для новой «размерности» добавить отдельное кнопкосочетание (например, CtrlAltA).
Какой бы вариант ни был выбран, думаю, лучше всего будет, чтобы функциональность получения и выставления типов фильтров была вынесена в API (например, через параметр/-ы к get_filter/set_filter), а уж за скриптами, навешивающими на неё кнопкосочетания, дело не станет.
phidel wrote: Sat 18 Apr, 2026 02:46
На сегодняшний день у этого плагина есть какие-то преимущества перед встроенной историей?
Да. Из того, что не добавить к стандартной истории скриптами: гораздо более удобная фильтрация и навигация и гораздо более наглядное отображение. А также всяческие дополнительные функции вроде локальной истории.
Но вообще функциональность очень богатая, и повторять её скриптами замучаешься, да и зачем. (У меня этот плагин является наиболее используемым.)
Кому то может будет полезно, сделал плагин под AltHistory.
folder_shortcuts_copy.lua
Плагин добавляет быстрое копирование текущего пункта из меню Folder Shortcuts в буфер обмена по горячим клавишам Alt+Shift+Ins и Ctrl+Ins.
Копирует удобный текст выбранной записи, обычно это путь.
rufat,
Я не пользователь AltHistory, но неоднократно "игрался" с ним, это мощный плагин.
Как-то не верится, что в нём нет встроенного копирования текущего пункта в буфер обмена.
Вот вроде в его справке написано
Не закрывая списка поместить имя папки в Буфер Обмена, Ctrl-Ins
заключая в кавычки, если это необходимо или (*) Ctrl-C
Не закрывая списка поместить имя папки Ctrl-Shift-C
в Буфер Обмена или Ctrl-Shift-Ins
По поводу ваших макросов - можно обойтись одним, указав key = "AltShiftIns CtrlIns";