--{ See https://forum.farmanager.com/viewtopic.php?p=174997#p174997
local function currentHistoryTypeSync() -- works fine without AltHistory too
return plugin_sync_call( cfm.get_current_history_type )
end;
local function processSimilarPath( payload )
local s = ah.get_current_item()
if s ~= nil then
Keys'Esc'
if Area.Shell or Area.Tree or Area.Viewer or Area.Editor then payload(s)
else Hint("Current Area '" .. Area.Current .. "' is not among { Shell, Tree, Viewer, Editor }.")
end
end
end
Macro {
description = "Alternative history: edit file with similar path...";
area = 'Dialog'; key = 'ShiftF4';
condition = function()
return currentHistoryTypeSync() ~= history_type.folders
end;
action = function()
local function act( curItem )
Keys'ShiftF4'
mf.print( curItem )
end
processSimilarPath( act )
end
}
Macro {
description = "Alternative history: CHDIR to folder similar path...";
area = 'Dialog'; key = 'ShiftF4';
condition = function()
return currentHistoryTypeSync() == history_type.folders
end;
action = function()
local function act( curItem )
local path = far.InputBox(win.Uuid'6155F9B3-2CC4-4FF7-84B9-8F5A3A4803CF',
"CHDIR to folder on the active panel", "&Path",
'ChDirToFolder', curItem, nil, nil, F.FIB_BUTTONS+F.FIB_NOAMPERSAND+F.FIB_EDITPATH)
if path ~= nil then
panel.SetPanelDirectory( nil, 1, path )
end
end
processSimilarPath( act )
end
}
--}
Nikolay, похоже, обнаружилась ещё одна мелкая ошибка: при открытии диалога для добавления нового шаблона исключения (AltDel) туда подставляется регулярка, созданная из выбранного (текущего) элемента истории, и в ней экранируются обратными слэшами спец.символы (например, \, .) — это оправданно. Однако в их числе экранируются почему-то и минусы и запятые, которые специальными являются только внутри диапазона ([…] и {…} соответственно) и при заэкранированных скобках на разбор регулярки не влияют.
А заметил я это потому, что иногда использую этот диалог (в сочетании с Dialog_Maximize) для просмотра полного текста элемента в ситуации, когда из-за отсечения непонятно, который из нескольких элементов истории нужен сейчас. И, помнится, раньше вообще никакого экранирования не было, и текст элемента отображался в неизменном виде. Ну да ничего страшного, сейчас сделаю скриптец, чтобы выводить элемент в диаложке.
-- See https://forum.farmanager.com/viewtopic.php?p=175767#p175767
Macro { -- AltHistory_ViewItem
description = "Alternative history: show the entire chosen item in a dialog's text edit field";
area = 'Dialog'; key = 'Clear';
condition = ah.is_current_history_dialog;
action = function()
local s = ah.get_current_item()
if s ~= nil then
far.InputBox( win.Uuid'193AA8E6-FD4F-4915-848E-6E8D1E0C1A21', "View item - AltHistory",
"Current history item (edits will be discarded)", nil, s, nil, nil, 'FIB_NONE' )
end
end;
}
Конечно, немного неудобно, что текст сначала блёклый (т.к. неизменённый) и что каретка без выбора в конце, но бороться с этими мелочами мне уже лень.
Last edited by HaRT on Fri 21 Jul, 2023 12:57, edited 1 time in total.
Reason:Добавлен скрипт
Nikolay, оказывается, поломалась функциональность перехода на файл перед его просмотром/редактированием: 1. Из панели открываю Историю просмотра/редактирования и там на каком-нибудь файле нажимаю CtrlPgDn/CtrlShiftPgDn. Ожидаю, что на активной/пассивной панели соответственно произойдёт позиционирование на этот файл, но фокус окажется в (новом) просмотрщике/редакторе с этим файлом. На деле же редактор открывается, но даже директория соответствующей панели не меняется. 2. Из (немодального) просмотрщика/редактора открываю Историю просмотра/редактирования и там на каком-нибудь файле нажимаю CtrlPgDn/CtrlShiftPgDn. Ожидаю, что на активной/пассивной панели соответственно произойдёт позиционирование на этот файл, но фокус окажется в (новом) просмотрщике/редакторе с этим файлом. На деле же редактор открывается, но директория панели не меняется (как и в п.1), а фокус оказывается в (активной и прежде) панели.
Far Manager, version 3.0.6306.0 x86 (b6333 тоже), AltHistory 4.3.5 (4.3.810.5 Alpha)
Добрый день.
А почему может не активироваться плагин и как это отладить?
Win11 x64, FAR 3.0.6300.0 x64
Просто положил файлики его, как написано, в "C:\Program Files\Far Manager\Plugins\AltHistory\"
Зарегистрировал макросы старта по горячим клавишам и их видно MacroBrowser
А вот самого AltHistory нигде не видно - ни по горячим клавишам, ни в Commands/Plugin Commands
iamhere2 wrote: Tue 30 Jul, 2024 16:21
А почему может не активироваться плагин и как это отладить?
Win11 x64, FAR 3.0.6300.0 x64
Для начала убедитесь, что вы распаковали именно архив для x64, а не для x86. Затем перезапустите Фар и нажмите F11.
Ну и в целом рекомендую использовать Фар посвежее, из ночных сборок (хоть в данном случае это и не должно влиять.)
День добрый.
Когда я хочу очистить фильтр, я просто держу Backspace, пока он все не очистит.
Но начиная с некоторай версии и в определенных ситуациях после того, как Backspace очистил всё и фильтр пуст, нажатие еще одного Backspace восстанавливает имя текущей директории.
Пример.
После неск Backspacов фильтр пустой, 617 элементов подходят, ок:
════ Folders history [](617/617) ════
Нажимаю Backspace и получаю:
╔═══════════════ Folders history [althistory](3/617) ══════════════╗
║ D:\Distr\Far\Plugins\AltHistory ║
║ C:\Program Files (x86)\Far3\Plugins\AltHistory\Config ║
║ C:\Program Files (x86)\Far3\Plugins\AltHistory ║
╚ Shift-Enter: Open in the passive panel, F4: Edit plugin's prefix ╝
Это баг или фича? И можно ли это отключить?
Far v3.0.6364 x86, AltHistory.dll v4.3.5, Win10.
На самом деле всё ещё хуже. BackSpace меняет (восстанавливает?) позицию в списке даже при непустом фильтре. Т.е. получается так: отфильтровал я записи, переместился вверх во списку, жму BackSpace - а указатель сместился на последнюю запись из отфильтрованных. Я не помню, как было раньше, но это - неправильно: при нажатии BackSpace текущая запись продолжает удовлетворять фильтру и смещаться нет необходимости.
P/S. В нативной истории поведение более предсказуемое и логичное: текущая строка не меняется (хотя тоже не без неудобства: список скроллируется таким образом, чтобы текущая запись оказывалась в самом низу окна, хотя лучше бы оставалась на старом месте на экране).
Получается, что DI_USERCONTROL не точно симулирует поведение DI_LISTBOX-а. Не очень понятно, зачем нужен DI_USERCONTROL. Только усложнение, а видимы плюсов я не вижу…
IgorT75, В папке Plugins\AltHistory\Config\AdvancedSettings есть несколько файлов *.farconfig. В частности, там есть управление поведением при нажатии BackSpace. Хотя к Вашему случаю это отношения не имеет, но я не смотрел внимательно. Может, есть и нужная опция?
P/S. Я просмотрел и не нашёл того, что мы с Вами хотим…
Last edited by buniak_a_h on Thu 29 Aug, 2024 05:34, edited 1 time in total.
IgorT75 wrote: Thu 29 Aug, 2024 04:43
Это баг или фича? И можно ли это отключить?
Это фича, просил её я, и я активно ею пользуюсь. Но зачем зажимать Backspace, когда можно один раз нажать Del?!
В идеале, конечно, хотелось бы, чтобы зажатый Backspace не приводил к такому эффекту, а восстанавливался фильтр только новым нажатием Backspace при пустом фильтре.
buniak_a_h wrote: Thu 29 Aug, 2024 05:19
На самом деле всё ещё хуже. BackSpace меняет (восстанавливает?) позицию в списке даже при непустом фильтре. Т.е. получается так: отфильтровал я записи, переместился вверх во списку, жму BackSpace - а указатель сместился на последнюю запись из отфильтрованных.
У меня такого не происходит, текущий элемент сохраняется при изменении (в т.ч. уменьшении) фильтра. Об этой фиче, помнится, тоже в своё время просил именно я, и я ею тоже активно пользуюсь. AltHistory 4.3.5 (4.3.810.5 (Alpha))
Ндя… Если ничего не помогает - читай мануал…
Вопрос снят. Полагаю, у IgorT75 тоже.
P/S. Хотелось бы, чтобы все (все!) доступные кнопки были перечислены на нижней подсказке (на рамке). Тогда был бы повод обратиться к руководству. Хотя бы чтобы узнать, что означает кнопка Ins
Last edited by buniak_a_h on Thu 29 Aug, 2024 11:32, edited 2 times in total.