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

Здесь выкладываются готовые к использованию макросы и скрипты.
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.
Volodya
Posts: 268
Joined: Thu 31 Mar, 2005 19:41
Has thanked: 30 times

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

Post by Volodya »

Latest post of the previous page:

Установил макрос в %FARPROFILE%\Macros\scripts\BM\
Посмотрел из меню дисков BookmarkManager меню.
Посмотрел help по bmhlep:
Добавил закладку командой:
bmag:qwe D:\foo\bar\
Попытался ещё раз посмотреть BookmarkManager меню.
Получил
╔══════════════════════════════════════════════════════════════════ Error ══════════════════════════════════════════════════════════════════╗
║ C:\Program Files (x86)\Far Manager\Plugins\LuaMacro\LuaMacro.dll: ║
║ ...ar Manager\Profile\Macros\scripts\BM\BookmarkManager.lua:196: attempt to concatenate a nil value ║
║ stack traceback: ║
║ ...ar Manager\Profile\Macros\scripts\BM\BookmarkManager.lua:196: in function 'BM2str' ║
║ ...ar Manager\Profile\Macros\scripts\BM\BookmarkManager.lua:227: in function 'NiceFolder' ║
║ ...ar Manager\Profile\Macros\scripts\BM\BookmarkManager.lua:514: in function 'fill_menu' ║
║ ...ar Manager\Profile\Macros\scripts\BM\BookmarkManager.lua:528: in function 'BMMenu' ║
║ ...ar Manager\Profile\Macros\scripts\BM\BookmarkManager.lua:638: in function 'action' ║
║ ...am Files (x86)\Far Manager\Plugins\LuaMacro\LuaMacro.lua:442: in function <...am Files (x86)\Far Manager\Plugins\LuaMacro\LuaMacro. ║
║ lua:396> ║
╟───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢
║ { OK } ║
╚═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
Windows Version 10.0.16299.125 x64
Far 3.0.5119 x86
BookmarkManager 2.5.3.7

Что я делаю не так?
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Volodya wrote: Fri 05 Jan, 2018 09:03

Что я делаю не так?
Заставляете ленивого автора на каникулах :beer: :popcorn: :angel: заниматься поиском :Search: и правкой :hacking: мелких ошибок. :shit:
Версия 2.5.4 - Работа над ошибками.

P. S. Всем советую закладки, сделанные версией 2.5.3, проверить на корректность наличия модификатора "C". Мог ставиться туда, где не должен быть, и наоборот.
Last edited by IgorZ on Fri 05 Jan, 2018 13:58, edited 1 time in total.
Volodya
Posts: 268
Joined: Thu 31 Mar, 2005 19:41
Has thanked: 30 times

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

Post by Volodya »

Версия 2.5.4
Нажимаю Rctrl\
Получаю
╔════════════════════════════════════════════════════════════════ LuaMacro ═════════════════════════════════════════════════════════════════╗
║ ...ar Manager\Profile\Macros\scripts\BM\BookmarkManager.lua:197: attempt to concatenate a nil value ║
║ stack traceback: ║
║ ...ar Manager\Profile\Macros\scripts\BM\BookmarkManager.lua: in function 'BM2str' ║
║ ...ar Manager\Profile\Macros\scripts\BM\BookmarkManager.lua:228: in function 'NiceFolder' ║
║ ...ar Manager\Profile\Macros\scripts\BM\BookmarkManager.lua:515: in function 'fill_menu' ║
║ ...ar Manager\Profile\Macros\scripts\BM\BookmarkManager.lua:529: in function <...ar Manager\Profile\Macros\scripts\BM\BookmarkManager. ║
║ lua:462> ║
╟───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢
║ { OK } ║
╚═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
Вопрос тот же. ЧЯДНТ?
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Volodya wrote: Fri 05 Jan, 2018 18:25 Версия 2.5.4
Нажимаю Rctrl\
Получаю

Вопрос тот же. ЧЯДНТ?
Некорректно сохранившаяся закладка осталась (тут я недодумал в прошлый раз). Для исправления ситуации можно строку 197

Code: Select all

  s = s..(f.CD and (f.Panel:match("(<.*)>").."C>") or f.Panel)..f.Plugin.."|"..f.File.."|"..f.Folder.."|"..f.Param
исправить на

Code: Select all

  s = s..(f.CD and f.Panel~="" and (f.Panel:match("(<.*)>").."C>") or f.Panel)..f.Plugin.."|"..f.File.."|"..f.Folder.."|"..f.Param
После этого запустить скрипт, удалить эту закладку и работать дальше.
Это самый простой способ. Или же можно удалить или изменить вручную закладку с помощью дополнительных инструментов, таких как SQLiteDB или Редактор БД плагинов. Это несколько сложнее, но если есть желание, надо параметр CD у соответствующей закладки изменить с 1 на 0.

P. S. Для цитирования диалогов с сообщениями об ошибках и т. п. советую использовать тег code - выглядит намного аккуратнее и читается легче.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

IgorZ, если Вы ещё не забросили тему, есть пара пожеланий.
Ваш скрипт очень похож по функционалу на плагин NamedFolders.
  • Хочется иметь возможность указывать не целиком имя подкаталога, а маску или начало. Например, в каталоге D:\Root, занесённом в закладку ROOT, есть подкаталоги SYSTEM и несколько каталогов вида SAVE_01, SAVE_02... . Хотелось бы иметь возможность перейти командой BM:\ROOT\SY сразу на SYSTEM (т.к. он - единственный, подходящий по маске), а по команде BM:ROOT\SA* (или без звёздочки) - получить МЕНЮ со всеми подкаталогами D:\Root\SAVE_*.
  • Из той же темы: хотелось бы иметь возможность и в качестве диска указывать "*" (*:\Root).
  • Если после "\" указано имя не каталога, а файла, то позиционироваться на этом файле. Думаю, это - совсем просто.
  • Задачка сложнее, но была очень удобной в старом Named Folders: кроме Environment-переменных в список добавить папки, на которые ссылаются элементы главного меню. В NamedFolders была даже возможность не просто переходить в папку, а ещё и запускать приложение. Это было бы вообще идеально, но я понимаю, что это уж совсем много хочу...
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

Last edited by buniak_a_h on Fri 04 May, 2018 20:15, edited 6 times in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

Last edited by buniak_a_h on Fri 04 May, 2018 20:15, edited 2 times in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

Суммирую мои посты в один.
Итак, отличия от авторской версии:
  • Добавлена возможность указания wildcard ("*", "?") для "внутренних" (промежуточных) каталогов пути (для файловых панелей)
  • Добавлена возможность указывать в качестве имени диска выражения типа "*:" и "[C-Q]:" (регэкспы в формате FAR Manager-а)
  • добавлена возможность указывать в качестве целевого объекта не только папки, но и файлы. При этом выводится меню для выбора объекта даже если этот объект - единственный. Если выбрать файл [Enter]-ом, то происходит позиционирование на файле; если [Ctrl+PgDn], то открытие выбранного файла ассоциированной в системе программой; если [F4] - то ассоциированным в системе редактором.
  • Добавлена возможность указывать в пути "родительский" каталог (".."). Так, стало возможным при наличии закладки PLUGIN=%FARHOME%\Plugins переходить на каталог %FARHOME%\Encyclopedia введя команду bm:Plu\..\enc.
  • Добавлена возможность перехода даже не по закладкам, а по переменным окружения. Например, в каталоге %TEMP% имеются подкаталоги 180429, 180430, ... Команда bm:%temp%\18 выведет меню со списком подкаталогов (а, возможно, и файлов) с именами, начинающимися с 18, а команда bm:%path%\delphi32.exe найдёт файл delphi32.exe аналогично команде whereis:delphi32.exe
  • Добавлен интерфейсный режим работы с закладками. Предусмотрено два диалога: диалог сохранения закладок
    Image
    и диалог перехода на закладку
    Image
  • В диалоге сохранения закладки есть возможность указать, какую панель сохранять. возможен один из двух вариантов:
    • Активную и/или пассивную.
    • Левую и/или правую.
    Таким образом можно указать сохранение контекста (за исключением CurPos на
    панелях. Это - в планах).
Есть новости
Attachments
BookmarkManager.lua.bb.7z
(16.12 KiB) Downloaded 190 times
Last edited by buniak_a_h on Fri 04 May, 2018 20:10, edited 4 times in total.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

buniak_a_h wrote: Thu 26 Apr, 2018 21:27 IgorZ, если Вы ещё не забросили тему, есть пара пожеланий.
Ваш скрипт очень похож по функционалу на плагин NamedFolders.
  • Хочется иметь возможность указывать не целиком имя подкаталога, а маску или начало. Например, в каталоге D:\Root, занесённом в закладку ROOT, есть подкаталоги SYSTEM и несколько каталогов вида SAVE_01, SAVE_02... . Хотелось бы иметь возможность перейти командой BM:\ROOT\SY сразу на SYSTEM (т.к. он - единственный, подходящий по маске), а по команде BM:ROOT\SA* (или без звёздочки) - получить МЕНЮ со всеми подкаталогами D:\Root\SAVE_*.
  • Из той же темы: хотелось бы иметь возможность и в качестве диска указывать "*" (*:\Root).
  • Если после "\" указано имя не каталога, а файла, то позиционироваться на этом файле. Думаю, это - совсем просто.
  • Задачка сложнее, но была очень удобной в старом Named Folders: кроме Environment-переменных в список добавить папки, на которые ссылаются элементы главного меню. В NamedFolders была даже возможность не просто переходить в папку, а ещё и запускать приложение. Это было бы вообще идеально, но я понимаю, что это уж совсем много хочу...
В принципе, возможно почти всё, а тему я не забросил. Просто всё свободное время пилил LuaManager.
С NamedFolders не знаком, поэтому любые хотелки должны быть описаны точно, иначе может быть сделано совсем другое.
Теперь о Ваших изменениях.
1. Я, честно говоря, в шоке. BookmarkManager прекрасно понимает переменные окружения в качестве имён закладок. Для примера можно набрать, скажем, bm:FARHOME<Enter>. Это и описано в справке, и отчётливо видно в изменяемом Вами коде. Так что зачем было добавлять обработку имён переменных в %-ах - совершенно непонятно.
2. Выведение меню в случае, когда закладка набрана неполностью, даже если в меню всего один пункт - совершенно сознательное решение. Меняться оно не будет. Максимум - можно добавить соответствующую настройку - выводить или переходить сразу.
3. Дополнительные макросы - в отдельный файл. Тем более, такие, которые дублируют уже имеющуюся функциональность. Если надо, могу дать программный интерфейс, чтоб из своего файла вызывать BookmarkManager.
Остальное пока внимательно посмотреть не успел.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

IgorZ wrote: Thu 03 May, 2018 12:09 1. Я, честно говоря, в шоке. BookmarkManager прекрасно понимает переменные окружения в качестве имён закладок. Для примера можно набрать, скажем, bm:FARHOME<Enter>. Это и описано в справке, и отчётливо видно в изменяемом Вами коде. Так что зачем было добавлять
Попробуйте набрать bm:path\notepad.exe. С моим функционалом (команда bm:%path%\notepad.exe) - найдёт. А требование указания переменной среды в виде %name% произошло из-за того, что Ваш скрипт искал в них только в случае включения UseEnv, а при этом в меню выбора закладки (в том, что вызывается про RCtrl/) добавляется дикое количество пунктов. И мешает визуальному поиску, и время занимает заметное (как ни странно...)
IgorZ wrote: Thu 03 May, 2018 12:09 2. Выведение меню в случае, когда закладка набрана неполностью, даже если в меню всего один пункт - совершенно сознательное решение. Меняться оно не будет. Максимум - можно добавить соответствующую настройку - выводить или переходить сразу.
С настройкой - было бы хорошо. Лишние диалоги сильно раздражают.
IgorZ wrote: Thu 03 May, 2018 12:09 3. Дополнительные макросы - в отдельный файл. Тем более, такие, которые дублируют уже имеющуюся функциональность.
Если под дублирующими макросами Вы имеете в виду диалоги, то я поясню. Набор "вслепую" имени закладки левой рукой (правая держит RCtrl), да ещё в относительно быстром темпе (я знаю, что таймаут можно увеличить. Но это всё равно неудобно), для правши - задача совершенно неразрешимая. Один-два символа ещё можно ввести; больше - сбиваешься (я знаю, что клавиши также можно поменять, но это всё равно неудобно: у меня уже почти не осталось горячих кнопок). А набор в командной строке "захламляет" историю команд. Сначала именно поэтому я и доделал диалоги. Потом нашёл возможность в диалоге сохранения закладки указать, какую конкретно панель запоминать (т.е. вообще можно запомнить контекст обеих панелей!) И для меня это оказалось полезным.
IgorZ wrote: Thu 03 May, 2018 12:09 Если надо, могу дать программный интерфейс, чтоб из своего файла вызывать BookmarkManager.
1. Вы сможете реализовать поиск (а) с wildcard-ами как в промежуточных папках, так и в последней? А также указание имени диска в виде *: или в виде регэкспа типа [d-f]: ? И поиск по списку вариантов, разделённых ";" (как в path)?
2. Вы сможете предоставить в интерфейсе сохранения закладок (функция BMSaveFolder) также и признак, какие панели сохранять?
3. Вы можете сделать так, чтобы если закладка (с учетом дополнения trail) указывает на файл, а не на папку, то происходило позиционирование на объекте, а не вход в папку?

Если всё это будет реализовано - мне хватит и интерфейса к функциям CLProc (или GoToFolder, если указанные в пунктах 1 и 3 изменения будут реализованы в ней) и BMSaveFolder.
Короче, если Вы против моих изменений, я убираю свои посты и пользуюсь моими переделками "индивидуально". Только скажите.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

buniak_a_h wrote: Thu 03 May, 2018 13:06 я убираю свои посты и пользуюсь моими переделками "индивидуально"
Посты лучше оставьте. И даже если не найдёте общего языка с автором скрипта, всегда можете форкнуть (надеюсь, лицензия это не запрещает).
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

HaRT wrote: Thu 03 May, 2018 13:33 Посты лучше оставьте.
Там 3 поста с вложениями, два первых вложения точно не нужны.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

HaRT,
John Doe wrote: Thu 03 May, 2018 14:09 два первых вложения точно не нужны
У меня, видимо, не хватает прав для удаления моих же постов... Я все изменения просуммировал в последнем; первые два с вложениями уберите, пожалуйста...
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

buniak_a_h, посты удалять нельзя, если они не последние в теме, но редактировать их и удалять из них вложения можно.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

Shmuel, оффтопик.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

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