Менеджер закладок для папок

Здесь выкладываются готовые к использованию макросы и скрипты.
Post Reply
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Менеджер закладок для папок

Post by IgorZ »

Данный скрипт позволяет назначать на папки и файлы закладки (закладка может содержать ссылки как на одну, так и на несколько целей, для разных панелей; подробнее во встроенной справке скрипта) и переходить по ним (или запускать их средствами ОС), а также по переменным окружения, содержащим пути. Идея взята у Shell Bookmark (с) Max Rusov, текст написан с нуля.
Скрипт содержит три макроса.
  • Сохранение текущей папки в новой закладке.
    Клавиша вызова: RCtrl+Shift/RAlt+последовательность клавиш.
  • Переход по закладке.
    Клавиша вызова: RCtrl+последовательность клавиш.
  • Меню закладок и настроек.
    Клавиша вызова: RCtrl+/.

Требуемая версия Far 3.0.4324+.

Attachments
BookmarkManager.3.0.9.7z
(25.26 KiB) Downloaded 138 times
Last edited by IgorZ on Fri 17 Feb, 2023 07:41, edited 24 times in total.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Re: Менеджер закладок для папок

Post by IgorZ »

Просьба знатоков английского проверить английский текст справки. Я в нём не очень силён.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Менеджер закладок для папок

Post by John Doe »

Что-то ничего не заработало, кроме меню.

P.S
А звезда тут для чего /RCtrl\\w*/ ?
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Менеджер закладок для папок

Post by John Doe »

Странно, помимо меня скачало ещё семеро, и все молчат. Неужто про запас качают.
У меня запоминание работает, а восстановление - нет.
Причём до первого вызова меню закладок - макрос перехода вообще не активируется.
После - активируется, но не переходит.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Менеджер закладок для папок

Post by Max Rusov »

Да, что-то глючит. Я посмотрел, и откатился на свой. Надеюсь, автор доработает - еще посмотрю.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Менеджер закладок для папок

Post by John Doe »

Причина неперехода найдена: опечатка в строке 122 - русская 'п'

Ещё заметил что перезагрузка макросов стала заметно дольше, подозреваю что работа с настройками неоптимальна
Может far.FreeSettings() тормозит, неясно кстати зачем он вообще при наличии obj:Free()
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Re: Менеджер закладок для папок

Post by IgorZ »

Версия 1.0.1 - Исправлена ошибка, когда скрипт не запускался, пока не вызовешь меню закладок, мелкие правки.
Это нашёл за выходные, что тормозит, посмотрю позже.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Re: Менеджер закладок для папок

Post by IgorZ »

John Doe wrote:Ещё заметил что перезагрузка макросов стала заметно дольше, подозреваю что работа с настройками неоптимальна
Потестировал исполнение тела скрипта, выбросив Macro{...} (поскольку там, как я понимаю, ничего не может тормозить, да и не ко мне эта часть загрузки). Тысяча циклов исполняется за 2.3 секунды (новая, свежая версия) или 0.6 секунды (старая версия 1.0). Вряд ли 0.0023 (а тем более, 0.0006) секунды может быть ощутимо заметна. Может, проблема (если есть) кроется в чём-то другом?
John Doe wrote:Может far.FreeSettings() тормозит, неясно кстати зачем он вообще при наличии obj:Free()
far.FreeSettings() и obj:Free() для одного объекта выполняются за одинаковое время. Проверено.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Менеджер закладок для папок

Post by John Doe »

Исполнение самого скрипта действительно не тормозит.
А тормозит перезагрузка макросов в целом.

Code: Select all

lm:post local a = Far.UpTime; far.MacroLoadAll(); msgbox("",(Far.UpTime - a)/1000)
Без BookmarkManager.lua - 0.1..0.2 секунды
С BookmarkManager.lua - почти всегда 1.1 и выше
Пробовал также запускать на чистом профиле где BookmarkManager.lua единственный скрипт.

Если ничего не путаю, то наблюдал такую проблему в случае когда настройки не были корректно закрыты.
В вашем случае судить не берусь, т.к. работа с настройками размазана по всему скрипту (Можете считать это критикой)
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Re: Менеджер закладок для папок

Post by IgorZ »

Версия 1.0.2 - Локализация работы с настройками, более корректная обработка ситуации, когда локальный и глобальный профили совпадают и когда не совпадают, мелкие правки
John Doe wrote:Исполнение самого скрипта действительно не тормозит.
А тормозит перезагрузка макросов в целом.

Code: Select all

lm:post local a = Far.UpTime; far.MacroLoadAll(); msgbox("",(Far.UpTime - a)/1000)
Без BookmarkManager.lua - 0.1..0.2 секунды
С BookmarkManager.lua - почти всегда 1.1 и выше
Пробовал также запускать на чистом профиле где BookmarkManager.lua единственный скрипт.
Сколько ни пробовал, добиться подобного результата не смог. Всегда в районе 18мс.
John Doe wrote:Если ничего не путаю, то наблюдал такую проблему в случае когда настройки не были корректно закрыты.
В вашем случае судить не берусь, т.к. работа с настройками размазана по всему скрипту (Можете считать это критикой)
Всё перепроверил, незакрытых настроек не нашёл. В новой версии более строго локализовал участки, где идёт работа с настройками. Жду результатов проверки.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Менеджер закладок для папок

Post by John Doe »

Проблема действительно ушла (возможно ещё в 1.01, её я не проверял)
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Менеджер закладок для папок

Post by Shmuel »

IgorZ
В вашем скрипте два BOM'а. Это работает только благодаря дефекту в LuaFAR'е, который может быть вскоре исправлен, и тогда ваш скрипт перестанет работать.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Менеджер закладок для папок

Post by John Doe »

John Doe wrote:А звезда тут для чего /RCtrl\\w*/ ?
Вижу вы убрали её из регэкспа.
Подозреваю что шаманство с приоритетами теперь тоже ни к чему, ведь этот макрос больше не конфликтует с макросом на "/RCtrlShift\\w/"
IgorZ wrote:В новой версии более строго локализовал участки, где идёт работа с настройками
Всё что касается настроек можно упростить радикально, если кэшировать закладки в таблице.
Минус: при этом вновь созданные закладки не будут моментально доступны в других экземплярах фара.
Плюс: в 2 раза меньше кода (и ошибок с ним связанных)

Дальше имхо:
Умолчание в 2с для длительности сообщение при переходе в папку великовато
Впрочем я бы наверно его вообще отключил, ведь и так невооружённым глазом видно что переход удался.
А вот при создании закладки сообщение не предусмотрено, хотят тут оно вполне уместно (0.5с достаточно)
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Re: Менеджер закладок для папок

Post by IgorZ »

Версия 1.0.3 - Сообщение при сохранении новой закладки, мелкие правки.
John Doe wrote:
John Doe wrote:А звезда тут для чего /RCtrl\\w*/ ?
Вижу вы убрали её из регэкспа.
Подозреваю что шаманство с приоритетами теперь тоже ни к чему, ведь этот макрос больше не конфликтует с макросом на "/RCtrlShift\\w/"
Частично нужно. Иначе приоритет макроса получается 1 или 0, и все другие, назначенные на Ctrl+буква, его перебивают.
John Doe wrote:
IgorZ wrote:В новой версии более строго локализовал участки, где идёт работа с настройками
Всё что касается настроек можно упростить радикально, если кэшировать закладки в таблице.
Минус: при этом вновь созданные закладки не будут моментально доступны в других экземплярах фара.
Плюс: в 2 раза меньше кода (и ошибок с ним связанных)
Плюс количественный, минусы качественные. Думал я над таким вариантом. Реальный выигрыш незаметен при работе, а при написании я разберусь. Есть, кстати, и ещё минус: если Far слетит (а периодически мне, к примеру, удаётся его завесить или уронить), изменения потеряются в случае кэширования. Можно, конечно, кэшировать только чтение, но тогда о сокращении кода можно забыть.
John Doe wrote:Дальше имхо:
Умолчание в 2с для длительности сообщение при переходе в папку великовато
Впрочем я бы наверно его вообще отключил, ведь и так невооружённым глазом видно что переход удался.
Так настраивается же... (F1 в меню)
John Doe wrote:А вот при создании закладки сообщение не предусмотрено, хотят тут оно вполне уместно (0.5с достаточно)
Сделал.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Менеджер закладок для папок

Post by John Doe »

IgorZ wrote:Частично нужно. Иначе приоритет макроса получается 1 или 0, и все другие, назначенные на Ctrl+буква, его перебивают.
Не будут перебивать, если указать в регекспе ^ и $ (в ряде случаев это также может несколько улучшить скорость работы регекспа)
IgorZ wrote:Можно, конечно, кэшировать только чтение, но тогда о сокращении кода можно забыть.
Независимо от кэширования (это не главное).
Я не уверен что количество строк исходника можно существенно сократить, но код действительно упростился бы, если всю работу с настройками убрать в 2 функции, аналогичные mf.msave/mf.mload.
Собственно единственное чего тут не хватает в стандартных функциях, это возможности работать с локальным профилем.
Post Reply

Return to “Полезные макросы и скрипты”