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

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

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

Post by IgorZ »

Latest post of the previous page:

John Doe wrote:
IgorZ wrote:Ради интереса попробовал заменить io.line на чтение всего файла целиком и затем лущение полученной строки с помощью gmatch. io.line работает даже чуть быстрее (примерно на 10%). Издержки интерпретации, однако...
Интересно. Из PIL можно сделать другие выводы. Полноценно тестировать лень, и в любом случае для мелких файлов разницы не будет.
А разницу во времени выполнения dofile и вашей новой функции вы измеряли?
Через dofile примерно в 15 раз быстрее. Но и то, и другое порядка 1 мс.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

Насчёт io.lines(file) - она не закрывает хэндл файла после выхода из цикла. Это сделает только сборщик мусора, причём неизвестно когда. В результате и файл, и папка scripts, и папка Macros оказываются залоченными, их нельзя даже переименовать.

Поэтому: открывайте файл с помощью io.open, читайте строки с помощью метода lines, затем закрывайте методом close.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Shmuel wrote:Насчёт io.lines(file) - она не закрывает хэндл файла после выхода из цикла. Это сделает только сборщик мусора, причём неизвестно когда. В результате и файл, и папка scripts, и папка Macros оказываются залоченными, их нельзя даже переименовать.

Поэтому: открывайте файл с помощью io.open, читайте строки с помощью метода lines, затем закрывайте методом close.
Понял, спасибо, переделаю. Заодно ещё кое-что добавлю, до чего руки не доходили.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Версия 1.2 - Расширение формата каталога. Теперь можно явно указывать панели: активную, пассивную, левую, правую (подробности в справке по F1 в диалоге редактирования закладки). Если текущего языка Far-а в локализациях скрипта нет, подгружается английский, при загрузке настроек язык не подгружается, если не менялся. Изгнание io.lines и другие мелкие правки.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Перед Новым Годом привожу выкладки в порядок.
Версия 1.2.1 - Срабатывание быстрых клавиш в меню RCtrl+/ (то есть, набираем RCtrl+<нужная последовательность>), рефакторинг, добавим uid-ы в макросы и пункт в меню плагинов.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post by sToLp »

IgorZ wrote:Версия 1.2.1
Замечательно! Похоже, что данный менеджер закладок с учётом всех предоставляемых им пользователю удобств становится наиболее предпочтительным.

IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Версия 1.2.2 - "&" в меню отрабатывался как акселератор, а не символ. Запрет вводить символы, которые нельзя ввести в сочетании с Ctrl.

sToLp wrote:а) меню, вызываемое по RCtrl+/, редактируется и через него можно добавлять закладки. Но по RCtrl+Shift/RAlt+последовательность клавиш вылезает ошибка:

Code: Select all

╔══════════════════════════════════════ LuaMacro ═══════════════════════════════════════╗
║ ...киВпанелях[BookmarkManager1.2.1](IgorZ)she.lua:178: invalid flag combination       ║
║ stack traceback:                                                                      ║
║    [C]: in function 'CreateSettings'                                                  ║
║    ...киВпанелях[BookmarkManager1.2.1](IgorZ)she.lua:178: in function <...киВпанелях[ ║
║ BookmarkManager1.2.1](IgorZ)she.lua:164>                                              ║
╟───────────────────────────────────────────────────────────────────────────────────────╢
║                                        { OK }                                         ║
╚═══════════════════════════════════════════════════════════════════════════════════════╝
Ни разу не удалось повторить. Более того, строка 178, в которой якобы происходит ошибка, в версии 1.2.1 содержит только комментарий, так что либо речь идёт о старой версии, либо Вы модифицировали скрипт самостоятельно, либо нарушили нормальную работу системы каким-то способом. Во всех этих случаях претензии - не к скрипту и не ко мне.
sToLp wrote:б) небольшой нюанс касательно использования в меню менеджера амперсанда & для обозначения хоткеев — кажется он учитывается при сортировке шорткатов и занимаемое им знакоместо идёт в зачёт размера шортката.
в) шорткаты вводятся в меню только в верхнем регистре. А хотелось бы, чтобы можно было вводить и в нижнем регистре тоже. Тогда проще будет различить раскладки.
По обеим пунктам. В комбинации с Ctrl любая клавиша вводит только латиницу в верхнем регистре или цифру. Поэтому другие символы (в том числе и "&") в закладке недопустимы. То, что их можно было вводить - ошибка. В новой версии она исправлена.
aflexus
Posts: 74
Joined: Sat 12 Mar, 2011 16:57
Has thanked: 23 times
Been thanked: 1 time

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

Post by aflexus »

Хотел перейти на данный скрипт с ansi-шного HotDir, но вылазит та же ошибка, что и у sToLp: invalid flag combination.. Версия скрипта 1.2.2. Версия фара последняя ночная 4260. Проверил еще на Far30b4230 - история та же.
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 »

Подтверждаю, ошибка в строке 178:

Code: Select all

obj = far.CreateSettings(nil,UseLocal and UseGlobal and DefaultBMProfile or UseLocal or UseGlobal) -- откроем настройки
Проявляется в случае когда не задана отдельная папка для локального профиля.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Версия 1.2.3 - В версии 1.2.1 была поломана загрузка части параметров, в результате чего при некоторых комбинациях настроек скрипт падал при попытке создать новую закладку.

Приношу извинения тем, кому не поверил сразу, но действительно только сейчас сумел воспроизвести ошибку и, соответственно, разобраться в проблеме.
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 »

Если в любом меню нажать F11, то там зачем-то будет пункт "BookmarkManager: menu".
BFDA
Posts: 19
Joined: Tue 04 Jul, 2006 10:21
Location: Москва

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

Post by BFDA »

Версия 1.2.3. При попытки добавить закладку падает :(

...g\Far Manager\Profile\Macros\scripts\BookmarkManager.lua:308: bad argument #1 to 'Set' (number expected, got nil)
stack traceback:
: in function 'Set'
...g\Far Manager\Profile\Macros\scripts\BookmarkManager.lua:308: in function 'edit_bm'
...g\Far Manager\Profile\Macros\scripts\BookmarkManager.lua:336: in function <...g\Far Manager\Profile\Macros\scripts\BookmarkManager.lua:235>
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 »

BFDA, не воспроизводится.
Приведите точную последовательность шагов, приводящую к проблеме.
BFDA
Posts: 19
Joined: Tue 04 Jul, 2006 10:21
Location: Москва

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

Post by BFDA »

:(

Нажимаю Ctrl-/
Появляется окно:

Code: Select all

╔════════════ Bookmark manager ════════════╗
╟──────────────── Options ─────────────────╢
║√ Use local bookmarks                     ║
║√ Use global bookmarks                    ║
║  Jump to folder message delay (ms): 1000 ║
║  Save bookmark message delay (ms): 500   ║
╚══════ Enter, Esc, F1, F4, Ins, Del ══════╝
Нажимаю Ins, набираю:

Code: Select all

 ╔════════════════ Edit bookmark ════════════════╗
 ║ Bookmark: SERVER1-C                           ║
 ║ Folder:   \\server1\c$                        ║
 ║ (•) Local bookmark    ( ) Global bookmark     ║
 ╟───────────────────────────────────────────────╢
 ║               { OK } [ Cancel ]               ║
 ╚═══════════════════════════════════════════════╝
Нажимаю Enter, получаю:

Code: Select all

╔════════════════════════════════════════════════════ LuaMacro ════════════════════════════════════════════════════╗
║ ...g\Far Manager\Profile\Macros\scripts\BookmarkManager.lua:308: bad argument #1 to 'Set' (number expected, got  ║
║ nil)                                                                                                             ║
║ stack traceback:                                                                                                 ║
║    [C]: in function 'Set'                                                                                        ║
║    ...g\Far Manager\Profile\Macros\scripts\BookmarkManager.lua:308: in function 'edit_bm'                        ║
║    ...g\Far Manager\Profile\Macros\scripts\BookmarkManager.lua:336: in function <...g\Far Manager\Profile\       ║
║ Macros\scripts\BookmarkManager.lua:235>                                                                          ║
╟──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢
║                                                      { OK }                                                      ║
╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
Far Manager, version 3.0 (build 4328) x64
Кстати, в поле Bookmark на втором скриншоте название вводится только большими буквами, это так и задумано?
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 »

У меня не воспроизводится, зато нашёл другой баг: в существующей закладке нельзя отредактировать поле Bookmark.
(Вместо изменения существующей создаётся новая закладка)

P.S.
Ещё заметил что в меню закладок ширина для столбца Bookmark может отличаться (Local bookmarks одна ширина, а Global bookmarks другая).
Напрасно это.
BFDA
Posts: 19
Joined: Tue 04 Jul, 2006 10:21
Location: Москва

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

Post by BFDA »

В поле Bookmark название вводится только большими буквами, это так и задумано? Или это только у меня?
Post Reply

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