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

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

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

Post by IgorZ » Fri 24 Jan, 2014 09:51

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

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

Attachments
BookmarkManager.2.5.2.7z
(19.32 KiB) Downloaded 41 times
Last edited by IgorZ on Fri 29 Sep, 2017 11:27, edited 8 times in total.

IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Mon 10 Feb, 2014 11:14

Latest post of the previous page:

John Doe wrote:
IgorZ wrote:Ради интереса попробовал заменить io.line на чтение всего файла целиком и затем лущение полученной строки с помощью gmatch. io.line работает даже чуть быстрее (примерно на 10%). Издержки интерпретации, однако...
Интересно. Из PIL можно сделать другие выводы. Полноценно тестировать лень, и в любом случае для мелких файлов разницы не будет.
А разницу во времени выполнения dofile и вашей новой функции вы измеряли?
Через dofile примерно в 15 раз быстрее. Но и то, и другое порядка 1 мс.

Shmuel
Posts: 5234
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 152 times

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

Post by Shmuel » Thu 26 Jun, 2014 19:53

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

Поэтому: открывайте файл с помощью io.open, читайте строки с помощью метода lines, затем закрывайте методом close.

IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Fri 27 Jun, 2014 04:42

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

Поэтому: открывайте файл с помощью io.open, читайте строки с помощью метода lines, затем закрывайте методом close.
Понял, спасибо, переделаю. Заодно ещё кое-что добавлю, до чего руки не доходили.

IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Mon 30 Jun, 2014 04:04

Версия 1.2 - Расширение формата каталога. Теперь можно явно указывать панели: активную, пассивную, левую, правую (подробности в справке по F1 в диалоге редактирования закладки). Если текущего языка Far-а в локализациях скрипта нет, подгружается английский, при загрузке настроек язык не подгружается, если не менялся. Изгнание io.lines и другие мелкие правки.

IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Mon 29 Dec, 2014 11:53

Перед Новым Годом привожу выкладки в порядок.
Версия 1.2.1 - Срабатывание быстрых клавиш в меню RCtrl+/ (то есть, набираем RCtrl+<нужная последовательность>), рефакторинг, добавим uid-ы в макросы и пункт в меню плагинов.

User avatar
sToLp
Posts: 768
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 57 times
Been thanked: 5 times

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

Post by sToLp » Mon 29 Dec, 2014 21:59

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


IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Fri 30 Jan, 2015 20:40

Версия 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:б) небольшой нюанс касательно использования в меню менеджера амперсанда [size=150][b]&[/b][/size] для обозначения хоткеев — кажется он учитывается при сортировке шорткатов и занимаемое им знакоместо идёт в зачёт размера шортката.
в) шорткаты вводятся в меню только в верхнем регистре. А хотелось бы, чтобы можно было вводить и в нижнем регистре тоже. Тогда проще будет различить раскладки.
По обеим пунктам. В комбинации с Ctrl любая клавиша вводит только латиницу в верхнем регистре или цифру. Поэтому другие символы (в том числе и "&") в закладке недопустимы. То, что их можно было вводить - ошибка. В новой версии она исправлена.

aflexus
Posts: 36
Joined: Sat 12 Mar, 2011 16:57
Has thanked: 4 times

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

Post by aflexus » Tue 03 Feb, 2015 09:00

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

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

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

Post by John Doe » Tue 03 Feb, 2015 10:51

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

Code: Select all

obj = far.CreateSettings(nil,UseLocal and UseGlobal and DefaultBMProfile or UseLocal or UseGlobal) -- откроем настройки
Проявляется в случае когда не задана отдельная папка для локального профиля.

IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Fri 06 Feb, 2015 07:10

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

Приношу извинения тем, кому не поверил сразу, но действительно только сейчас сумел воспроизвести ошибку и, соответственно, разобраться в проблеме.

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

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

Post by John Doe » Wed 18 Mar, 2015 12:46

Если в любом меню нажать F11, то там зачем-то будет пункт "BookmarkManager: menu".

BFDA
Posts: 19
Joined: Tue 04 Jul, 2006 10:21
Location: Москва

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

Post by BFDA » Tue 31 Mar, 2015 16:08

Версия 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: 11421
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Tue 31 Mar, 2015 18:04

BFDA, не воспроизводится.
Приведите точную последовательность шагов, приводящую к проблеме.

BFDA
Posts: 19
Joined: Tue 04 Jul, 2006 10:21
Location: Москва

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

Post by BFDA » Tue 31 Mar, 2015 18:34

:(

Нажимаю 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: 11421
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Tue 31 Mar, 2015 19:37

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

P.S.
Ещё заметил что в меню закладок ширина для столбца Bookmark может отличаться (Local bookmarks одна ширина, а Global bookmarks другая).
Напрасно это.

BFDA
Posts: 19
Joined: Tue 04 Jul, 2006 10:21
Location: Москва

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

Post by BFDA » Wed 01 Apr, 2015 08:57

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

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

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

Post by John Doe » Thu 02 Apr, 2015 07:43

BFDA wrote: В поле Bookmark название вводится только большими буквами
Так и задумано, см. стр. 285.
Суть видимо в том, что это не столько имя, сколько последовательность нажатий.

Post Reply

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