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

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

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

Post by IgorZ »

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

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

Attachments
BookmarkManager.3.0.3.7z
(24.5 KiB) Downloaded 44 times
Last edited by IgorZ on Mon 09 Dec, 2019 12:26, edited 16 times in total.

Volodya
Posts: 239
Joined: Thu 31 Mar, 2005 19:41
Has thanked: 2 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: 660
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 12 times
Been thanked: 52 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: 239
Joined: Thu 31 Mar, 2005 19:41
Has thanked: 2 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: 660
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 12 times
Been thanked: 52 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 - выглядит намного аккуратнее и читается легче.

buniak_a_h
Posts: 1389
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 95 times
Been thanked: 105 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 была даже возможность не просто переходить в папку, а ещё и запускать приложение. Это было бы вообще идеально, но я понимаю, что это уж совсем много хочу...

buniak_a_h
Posts: 1389
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 95 times
Been thanked: 105 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.

buniak_a_h
Posts: 1389
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 95 times
Been thanked: 105 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.

buniak_a_h
Posts: 1389
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 95 times
Been thanked: 105 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 56 times
Last edited by buniak_a_h on Fri 04 May, 2018 20:10, edited 4 times in total.

IgorZ
Posts: 660
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 12 times
Been thanked: 52 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.
Остальное пока внимательно посмотреть не успел.

buniak_a_h
Posts: 1389
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 95 times
Been thanked: 105 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: 9230
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 91 times
Been thanked: 193 times

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

Post by HaRT »

buniak_a_h wrote:
Thu 03 May, 2018 13:06
я убираю свои посты и пользуюсь моими переделками "индивидуально"
Посты лучше оставьте. И даже если не найдёте общего языка с автором скрипта, всегда можете форкнуть (надеюсь, лицензия это не запрещает).
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 12589
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 257 times

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

Post by John Doe »

HaRT wrote:
Thu 03 May, 2018 13:33
Посты лучше оставьте.
Там 3 поста с вложениями, два первых вложения точно не нужны.

buniak_a_h
Posts: 1389
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 95 times
Been thanked: 105 times
Contact:

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

Post by buniak_a_h »

HaRT,
John Doe wrote:
Thu 03 May, 2018 14:09
два первых вложения точно не нужны
У меня, видимо, не хватает прав для удаления моих же постов... Я все изменения просуммировал в последнем; первые два с вложениями уберите, пожалуйста...

Shmuel
Posts: 5961
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 24 times
Been thanked: 256 times

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

Post by Shmuel »

buniak_a_h, посты удалять нельзя, если они не последние в теме, но редактировать их и удалять из них вложения можно.

buniak_a_h
Posts: 1389
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 95 times
Been thanked: 105 times
Contact:

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

Post by buniak_a_h »

Shmuel, оффтопик.

User avatar
HaRT
Moderator
Posts: 9230
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 91 times
Been thanked: 193 times

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

Post by HaRT »

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

Post Reply

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