Данный скрипт позволяет назначать на папки и файлы закладки (закладка может содержать ссылки как на одну, так и на несколько целей, для разных панелей; подробнее во встроенной справке скрипта) и переходить по ним (или запускать их средствами ОС), а также по переменным окружения, содержащим пути. Идея взята у Shell Bookmark (с) Max Rusov, текст написан с нуля.
Не требуются дополнительные плагины, чистый lua-скрипт;
Если закладка не опознана, нажатые клавиши возвращаются Far-у;
Закладки могут храниться и в локальном, и в глобальном профиле;
Локализация;
Встроенная справка;
Настройки хранятся не в файле скрипта, а в профиле Far-а;
Скрипт добавляет себя в меню плагинов и дисков;
Если имя набрано частично, предлагается выбор из меню;
Позволяет переходить по путям из переменных окружения;
Если значение закладки/переменной указывает на несколько целей, можо выбрать одну с помощью меню;
Цель можно не только выбрать в панели Far, но и выполнить системные команды "открыть" и "редактировать";
Позволяет работать с закладками через префиксы командной строки;
При работе с префиксами командной строки позволяет добавлять после закладки относительный путь;
Скрипт можно вызывать как функцию (подробности в справке).
Скрипт содержит три макроса.
Сохранение текущей папки в новой закладке.
Клавиша вызова: RCtrl+Shift/RAlt+последовательность клавиш.
Переход по закладке.
Клавиша вызова: RCtrl+последовательность клавиш.
Меню закладок и настроек.
Клавиша вызова: RCtrl+/.
bm - перейти по закладке/переменной окружения;
bma - добавить закладку;
bmal - добавить локальную закладку;
bmag - добавить глобальную закладку;
bme - редактировать в диалоге закладку;
bmel - редактировать в диалоге локальную закладку;
bmeg - редактировать в диалоге глобальную закладку;
bmr - удалить закладку;
bmrl - удалить локальную закладку;
bmrg - удалить глобальную закладку;
bmhelp - вызов справки.
Требуемая версия Far 3.0.4324+.
Версия 1.0 - Первый релиз.
Версия 1.0.1 - Исправлена ошибка, когда скрипт не запускался, пока не вызовешь меню закладок, мелкие правки
Версия 1.0.2 - Локализация работы с настройками, более корректная обработка ситуации, когда локальный и глобальный профили совпадают и когда не совпадают, мелкие правки
Версия 1.0.3 - Сообщение при сохранении новой закладки, мелкие правки
Версия 1.0.4 - Небольшая оптимизация формирования меню, поддержка плагиновых панелей, мелкие правки
Версия 1.1 - Поддержка установки одновременно активной и пассивной панели, мелкие правки. Экспериментально: изменён принцип хранения и загрузки языковых данных. Просьба отписаться в теме, который вариант лучше на Ваш взгляд. Если новый вариант понравится, внедрю его и в остальные свои скрипты с поддержкой настройки языка.
Версия 1.1.1 - Корректная обработка пустой строки
Версия 1.1.2 - Исправлена ошибка с обращением к старым языковым файлам, мелкие правки
Версия 1.2 - Расширение формата каталога. Теперь можно указывать панели: активную, пассивную, левую, правую. Изгнание io.lines. Если языка нет, подгружается английский, при загрузке настроек язык не подгружается, если не менялся. Мелкие правки.
Версия 1.2.1 - Срабатывание быстрых клавиш в меню RCtrl+/, рефакторинг, добавим uid-ы в макросы и пункт в меню плагинов.
Версия 1.2.2 - "&" в меню отрабатывался как акселератор, а не символ. Запрет вводить символы, которые нельзя ввести в сочетании с Ctrl.
Версия 1.2.3 - В версии 1.2.1 была поломана загрузка части параметров, в результате чего при некоторых комбинациях настроек скрипт падал при попытке создать новую закладку.
Версия 1.2.4 - Скрипт зачем-то вызывался из любых меню. Исправлено. В целях унификации с другими скриптами автора изменен механизм языковой настройки. Исправлена ошибка с разной шириной столбца закладок для локальных и глобальных закладок. Теперь в менеджере закладок по F4 закладка не копируется при её изменении. Для копирования жать F5.
Версия 2.0.0 - Помимо закладок поддерживаются переменные окружения (только переход на папки). Если закладка или переменная набрана частично, выводится список всех, содержащих набранный фрагмент. Мелкие правки.
Версия 2.0.1 - Мелкие правки.
Версия 2.1.0 - Добавлена работа из командной строки через префиксы. Можно переходить по закладкам и переменным окружения, добавлять/редактировать в диалоге/удалять закладки. Рефакторинг. Исправление кучи внезапно обнаруженных ошибок.
Версия 2.1.1 - Сокращённые меню позволяют все те же действия, что и полное. Комбинации RCtrlЦифра передаются Far-у, если такой закладки или переменной нет. Не совпадающие даже частично ни с одной закладкой или переменной окружения, содержащей путь, тоже.
Версия 2.1.2 - При вызове через префикс несуществующая комбинация не возвращается в виде нажатий клавиатуры.
Версия 2.2.0 - Настройка вынесена в отдельный диалог. Улучшены диалоги для совпадающих локального и глобального профилей. Переработана справка. Добавлен префикс для вызова справки. Мелкие правки.
Версия 2.2.1 - Исправлена ошибка, из-за которой не показывалась справка.
Версия 2.3.0 - Теперь можно использовать в командной строке конструкции вида "bm:<метка><подкаталог>", к примеру, "bm:фильмы\Мульфильмы\Фиксики". Nfo. Смена места хранения данных. Разделение префиксов. При выводе справки используется язык справки фара. Улучшение быстрого позиционирования в главном меню. Мелкие правки.
Версия 2.3.1 - В прошлой версии забыл сменить uid на id в зависимости от версии LuaMacro. Изменено определение Info.
Версия 2.4.0 - Скрипт можно вызывать из меню дисков; показываются только актуальные пункты. Исправлены замеченные ошибки. Мелкие правки.
Версия 2.4.1 - Исправлены свежевыявленные ошибки.
Версия 2.4.2 - Исправлена ошибка с вызовом меню при пустом списке закладок. Исправлены свежевыявленные ошибки в справке.
Версия 2.5.0 - Изменён формат хранения закладок в БД. Старый формат пока поддерживается. Рефакторинг.
Версия 2.5.1 - Исправлены некоторые недоделки и упущения предыдущей версии.
Версия 2.5.2 - Исправлен вызов из меню дисков, там же изменена логика работы.
Версия 2.5.3 - Теперь можно указать с помощью модификатора "C" необходимость смены панели. Подробности в справке.
Версия 2.5.4 - Работа над ошибками.
Версия 3.0.0 - Если в качестве цели указан файл, не просто переходим в папку, но и позиционируемся на файле. Возможно не только переходить в папку или на файл, но и выполнять системные контекстные команды "открыть" (выполнить) и "редактировать"; можно указывать действие в параметрах закладки. Можно указывать маски для пути (включая маску имени локального диска); основа алгоритма разработана buniak_a_h. Если элемент пути не найден, ищем его же, но в обрамлении "*" (настраивается). Скрипт теперь можно вызывать как функцию, параметры как для префиксов. При наборе последовательности символов она опционально отображается на экране. При неполном наборе закладки/переменной, если подходит всего один вариант, меню может не выводиться (настраивается). Отдельная настройка для показа переменных окружения в меню. Рефакторинг.
Версия 3.0.1 - Исправление ошибки с переходом в сетевую папку. Исправление справки. Рефакторинг.
Версия 3.0.2 - При вызове скрипта как функции без параметров ошибка не выдаётся. Исправлена ошибка при переходе в плагин.
Версия 3.0.3 - Исправлена ошибка при нажатии клавиш в режиме активной фильтрации. Предпочтительное место хранения закладок теперь настраивается. Доработан вызов action-функций с учётом введённых в build 717 параметров для condition/action. Рефакторинг.
Версия 3.0.4 - Исправлена работа диалога настроек. Дополнена справка по диалогу настроек.
Версия 3.0.5 - Исправлена работа с закладкой на файл. Дополнена справка по закладкам.
Версия 3.0.6 - Исправлена ошибка с удалением несуществующей закладки. Рефакторинг.
Версия 3.0.7 - Исправлена ошибка с ненужными сообщениями об удалении несуществующей закладки. Исправлена опечатка в английском языковом файле.
Версия 3.0.8 - Исправлена ошибка с некорректной обработкой модификатора "C". Небольшой рефакторинг.
Версия 3.0.9 - Исправлена ошибка с выводом информации о новой папке при переходе для правой панели.
al-ddh wrote: ↑Mon 19 Nov, 2018 19:14
WinXP SP3 - проблемы с закладками в реестре (проверял на сборках от Victor_VG, их тех, что были у меня в архивах):
FarUE3 b5000 (BM 2.4.2) -- тут пока всё нормально
Тут есть ошибка, влияющая на переход по закладкам в некоторые плагины: часть информации не сохраняется в закладке.
al-ddh wrote: ↑Mon 19 Nov, 2018 19:14
FarUE3 b5170 (BM 2.5.4) -- при создании закладки через CtrlShift текст дублируется, хотя на работу не влияет:
reg_bookmark.png
Текст закладки: <A>RegEditor||\HKEY_LOCAL_MACHINE|\HKEY_LOCAL_MACHINE
Если убрать повтор \HKEY_LOCAL_MACHINE -- на работу не влияет.
Тут указанная выше ошибка исправлена. Это дублирование не в BookmarkManager, а в RegEditor. Хотя, возможно, и там всё правильно. А BookmarkManager добросовестно выводит содержимое двух разных полей записи, в данном конкретном случае совпадающих по значению.
al-ddh wrote: ↑Mon 19 Nov, 2018 19:14
FarUE3 b5267 (BM 3.0.1) -- при создании закладки через CtrlShift дубль сохраняется, но переход по закладке вызывает ошибку:
BM_error.png
А здесь действительно ошибка в BookmarkManager, возникшая в версии 3.0.0.
Исправлена ошибка при нажатии клавиш в режиме активной фильтрации.
Предпочтительное место хранения закладок теперь настраивается. Раньше для этого надо было редактировать файл скрипта, теперь настройки в окне конфигурации.
Доработан вызов action-функций с учётом введённых в build 717 параметров для condition/action.
IgorZ
1. Беру свежий фар с чистым профилем
2. Добавляю туда этот макрос
3. RCtrl+/ - переменные среды включены и видны
4. F9
5. Меняем длительность подсказок на "-1" - Сохранить
6. Переменные среды сразу же пропадают и включить их невозможно (настройка не запоминается) + у закладок все время выбрано "глобально" и тоже не переключается.
1. Беру свежий фар с чистым профилем
2. Добавляю туда этот макрос
3. RCtrl+/ - переменные среды включены и видны
4. F9
5. Меняем длительность подсказок на "-1" - Сохранить
6. Переменные среды сразу же пропадают и включить их невозможно (настройка не запоминается) + у закладок все время выбрано "глобально" и тоже не переключается.
Подскажите, пожалуйста, как решить проблему: в Far Manager v3.0 build 5577 x86 и BookmarkManager.3.0.4 если в качестве цели указан файл, то переход в целевую папку не происходит и соответственно позиционирование на файле тоже не работает. И еще вопрос можно ли сделать так чтобы при переходе к файлу через клавиши вызова не выходило меню для выбора объекта, если файл единственный, а сразу происходил переход в папку с позиционированием на файле. Спасибо за очень полезную программу.
Dimitry wrote: ↑Thu 21 May, 2020 17:58
Подскажите, пожалуйста, как решить проблему: в Far Manager v3.0 build 5577 x86 и BookmarkManager.3.0.4 если в качестве цели указан файл, то переход в целевую папку не происходит и соответственно позиционирование на файле тоже не работает. И еще вопрос можно ли сделать так чтобы при переходе к файлу через клавиши вызова не выходило меню для выбора объекта, если файл единственный, а сразу происходил переход в папку с позиционированием на файле. Спасибо за очень полезную программу.
Исправлена работа с закладкой на файл. Ошибка присутствует с момента добавления данной возможности, так что как оно работало раньше - не понимаю. Видимо, сказывается то, что на тот момент UTF8 обрабатывала другая библиотека, работающая чуть неконвенционально.
Дополнена справка по закладкам. Работа с закладками на файлы (раздел редактирования, формат закладки) была описана не совсем полно и не совсем корректно.
Для начала хотелось бы узнать, как именно Виктору удалось ввести пустую закладку. Я, вроде бы, автор скрипта, знаю его досконально, но мне не удалось обойти защиту.
А так - да, никакой защиты от пустой закладки не предусмотрено, поскольку считается, что их невозможно получить средствами скрипта. Так что если Виктор нашёл способ, пусть не жадничает и поделится с миром.
Last edited by IgorZ on Mon 16 Aug, 2021 11:03, edited 1 time in total.
Поставил версию 3.0.6
Вызываю меню по RCtrl/
Получаю
...ar Manager\Profile\Macros\scripts\BM\BookmarkManager.lua:542: bad argument #1 to 'find' (string expected, got table)
stack traceback: : in function 'find'
...ar Manager\Profile\Macros\scripts\BM\BookmarkManager.lua:542: in function 'prep_menu'
...ar Manager\Profile\Macros\scripts\BM\BookmarkManager.lua:565: in function <...ar Manager\Profile\Macros\scripts\BM\BookmarkManager.lua:511>
Volodya wrote: ↑Wed 18 Aug, 2021 18:45
Поставил версию 3.0.6
Вызываю меню по RCtrl/
Получаю
...ar Manager\Profile\Macros\scripts\BM\BookmarkManager.lua:542: bad argument #1 to 'find' (string expected, got table)
stack traceback:
[С]: in function 'find'
...ar Manager\Profile\Macros\scripts\BM\BookmarkManager.lua:542: in function 'prep_menu'
...ar Manager\Profile\Macros\scripts\BM\BookmarkManager.lua:565: in function <...ar Manager\Profile\Macros\scripts\BM\BookmarkManager.lua:511>
Far 3.0.5879.0 x86 Windows 64 10.0.22000.132
BookmarkManager 3.0.6.
Строка 542 (в которой, якобы, и происходит ошибка):