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

Здесь выкладываются готовые к использованию макросы и скрипты.
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 142 times
Last edited by IgorZ on Fri 17 Feb, 2023 07:41, edited 24 times in total.
User avatar
Dennis_Moore
Posts: 295
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 17 times

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

Post by Dennis_Moore »

Latest post of the previous page:

Спасибо, работает!
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Версия 2.4.0 - Скрипт можно вызывать из меню дисков; показываются только актуальные пункты (если закладка настроена только для правой панели, нет смысла показывать её для левой). Исправлены замеченные ошибки. Мелкие правки.
Skaramush
Posts: 50
Joined: Mon 16 May, 2011 04:03
Has thanked: 5 times
Been thanked: 1 time

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

Post by Skaramush »

Несколько ночных билдов назад (текущий - 3.0 build 4956 x64) появилась проблема: при переходе по любой закладке вида

Code: Select all

  ╔═════════════════════════════════════ Менеджер закладок ═════════════════════════════════════╗  
  ╟───────────────────────────────────────── Закладки ──────────────────────────────────────────╢  
  ║  LOC-LYNCPHOTO │ D:\info\фото\lync_photos                                                   ║

появляется окно вида

Code: Select all

   ╔══════════════════════════════╗   
   ║ <A> D:\info\фото\lync_photos ║   
   ╚══════════════════════════════╝  
и не исчезает до нажатия любой клавиши. После нажатия любой клавиши окно закрывается, переход происходит, а внизу в командной строке появляется наименование клавиши, нажатием на которую, было закрыто окно:

Code: Select all

║errorreporting.ad
╟─────────────────
║..               
╚═════════════════
D:\distr\1>Shift 
Проблема воспроизводится как на версии скрипта 2.3.1, так и на версии 2.4.0.
ОС: Win10 Корп x64
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Skaramush wrote:Несколько ночных билдов назад (текущий - 3.0 build 4956 x64) появилась проблема:
Не моё. У меня там вообще вывода никакого в принципе нет. Получается, это eval или Keys так глючить начал. А сообщение не исчезает - это к mf.waitkey вопрос. Что уж там нарефакторили - не знаю. Судя по сообщению на Ru.Board, "сильно вероятно что это последствия b4952".
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

IgorZ wrote: Не моё
Таки ваше.
Если вы хотите "<0 - message will be not displayed" - то сообщение вообще не надо выводить, а не выводить и делать waitkey c отрицательным временем, надеясь, что оно как бы сразу истечёт и сообщение закроется.

Waitkey никогда логику "отрицательное время - это типа оно сразу истекло" не поддерживал, а "работало" оно только потому, что время в этом случае было представлено 32-битной величиной, при прибавлении к которой (unsigned)-1 == 4294967295 происходило целочисленное переполнение.
Теперь время в этом случае 64-битное, переполнения не происходит и сообщение будет честно висеть запрошенные 49 дней и 17 часов.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

DrKnS wrote:
IgorZ wrote: Не моё
Таки ваше.
Если вы хотите "<0 - message will be not displayed" - то сообщение вообще не надо выводить, а не выводить и делать waitkey c отрицательным временем, надеясь, что оно как бы сразу истечёт и сообщение закроется.

Waitkey никогда логику "отрицательное время - это типа оно сразу истекло" не поддерживал, а "работало" оно только потому, что время в этом случае было представлено 32-битной величиной, при прибавлении к которой (unsigned)-1 == 4294967295 происходило целочисленное переполнение.
Теперь время в этом случае 64-битное, переполнения не происходит и сообщение будет честно висеть запрошенные 49 дней и 17 часов.
"Не моё" относилось к выводу нажатой клавиши. Специально сейчас проверил с последней ночнушкой - если поставить, к примеру, 10000 и нажать клавишу до исчезновения сообщения, она таки выводится в командной строке.
За пояснение относительно waitkey спасибо.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

IgorZ wrote: "Не моё" относилось к выводу нажатой клавиши. Специально сейчас проверил с последней ночнушкой - если поставить, к примеру, 10000 и нажать клавишу до исчезновения сообщения, она таки выводится в командной строке.
Это тоже ваше.
Я в луа понимаю, как свинья в апельсинах, но:
  1. for c in seq:gmatch(".") do -- для каждой ранее нажатой клавиши
  2.  
  3.   if eval(mod..c,2)<0 then Keys(mod..c)
seq здесь - строка с именем клавиши, которую вы попросили waitkey() вам вернуть. Вы её посимвольно проходите и каждый символ исполняете. Что просили - то и получили.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Обидно чувствовать себя балбесом. Таки ошибки были действительно свои, причём одна из них была предусмотрена, исключена, а затем снова привнесена путём опечатки (причиной другой была честная лень). Так что
Версия 2.4.1 - Исправлены свежевыявленные ошибки.
Ищите новые...
vasyabelkin
Posts: 1
Joined: Mon 31 Jul, 2017 20:11
Has thanked: 1 time

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

Post by vasyabelkin »

IgorZ, Если вызвать меню сразу после установки плагина, получим

Code: Select all

 C:\progs\conTools\Far\Plugins\LuaMacro\LuaMacro.dll:
 ...g\far\Macros\scripts\BookmarkManager\BookmarkManager.lua:427: attempt to get length of local 'l' (a nil value)
 stack traceback:
    ...g\far\Macros\scripts\BookmarkManager\BookmarkManager.lua:427: in function 'prep_menu'
    ...g\far\Macros\scripts\BookmarkManager\BookmarkManager.lua:488: in function 'BMMenu'
    ...g\far\Macros\scripts\BookmarkManager\BookmarkManager.lua:605: in function 'action'
    C:\progs\conTools\Far\Plugins\LuaMacro\LuaMacro.lua:426: in function <C:\progs\conTools\Far\Plugins\LuaMacro\LuaMacro.lua:380>
Гляньте, пожалуйста
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Версия 2.4.2 - Исправлена ошибка с вызовом меню при пустом списке закладок. Исправлены свежевыявленные ошибки в справке.

Внимание!!!
В выложенную версию прокралась ошибка! Версия перевыложена. Кто успел скачать - перекачайте.
Last edited by IgorZ on Tue 01 Aug, 2017 12:59, edited 1 time in total.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Понадобился мне по работе NetBox. Внезапно выяснилось, что его закладки не работают - я не совсем корректно сохраняю данные о папке плагина. В итоге пришлось полностью переделывать эту часть алгоритма (и кое-что из остального). Так что
Версия 2.5.0 - Изменён формат хранения закладок в БД. Старый формат пока поддерживается. Рефакторинг.
Зато теперь, по идее, проблем с закладками, вообще не должно быть в принципе. Если старую закладку открыть в редакторе (по F4) и сохранить, она перезапишется в новом формате. А если выкрою время, сделаю конвертор закладок в новый формат и выпущу версию без поддержки старого.
skipik
Posts: 318
Joined: Wed 03 Jun, 2015 15:24
Has thanked: 67 times
Been thanked: 29 times

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

Post by skipik »

Поставил версию 2.5.0. Открываю RCrtl/, далее пытаюсь зайти, например, в ALLUSERSPROFILE, получаю такое:

+ ещё один подобный репорт: http://forum.ru-board.com/topic.cgi?for ... art=3460#5
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Версия 2.5.1 - Исправлены некоторые недоделки и упущения предыдущей версии. Переменные окружения, во всяком случае, теперь у меня работают (извиняюсь, забыл про них, был в Попыхах... :))
IgorZ wrote: Wed 09 Aug, 2017 05:22А если выкрою время, сделаю конвертор закладок в новый формат и выпущу версию без поддержки старого.
А вот этого не будет. Поскольку скрипт понимает префиксы командной строки, то от поддержки строкового формата всё равно не избавиться.
Last edited by IgorZ on Fri 11 Aug, 2017 05:16, edited 1 time in total.
skipik
Posts: 318
Joined: Wed 03 Jun, 2015 15:24
Has thanked: 67 times
Been thanked: 29 times

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

Post by skipik »

Исправлено, спасибо!
Но есть ещё кое что: AltF1/AltF2 -> Меню Закладок -> Enter. Получаем:

+ ещё репорт: http://forum.ru-board.com/topic.cgi?for ... art=3460#6
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

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

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

Post by IgorZ »

Версия 2.5.3 - Теперь можно указать с помощью модификатора "C" необходимость смены панели. Простой пример:
  • <L>%TEMP% откроет на левой панели временную папку.
  • <LC>%TEMP% откроет на левой панели временную папку, и сделает левую панель активной.
Post Reply

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