Folder Shortcuts Menu

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Folder Shortcuts Menu

Post by Smitis »

Макросы для хранения ссылок на папки в пользовательском меню.

Внимание! Начиная с версии ФАРа ~3879 изменён синтаксис командной строки для вызова скриптов, используемый для создания ссылок. Старый синтаксис пока оставлен, но через какое-то время будет отменён. Для работы ссылок в новых версиях ФАРа необходимо открыть меню со ссылками, перейти в начало файла и произвести замену всех вхождений lm:post на lua:. Для новых версий ФАРа необходимо обновить версию Folder Shortcuts Menu на >= 2.07. Новая версия в зависимости от версии ФАРа использует старый или новый синтаксис.

Макросы:
CtrlShift-цифра - Сохранить ссылку на папку. При этом создаётся, если его ещё нет, файл меню с именем по умолчанию Shortcuts.farmenu. В меню ищется подменю с соответсвующей горячей клавишей. Если подменю нет, оно создаётся с дефолтным именем. В подменю создаётся пункт, влючающий дату (настраивается) и имя текущей папки/файла и вставляется команда перехода на папку, после чего меню закрывается.
AltShift-цифра - То же, что и предыдущий, но создаётся ссылка на обе панели.
CtrlAlt-цифра - Открыть подменю с сылками. Если подменю отсутствует - создаётся и открывается пустое.
CtrlShift` - Добавить ссылку непосредственно из открытого пользовательского меню. Работает в любом пользовательском меню!
AltShift` - То же, что и предыдущий, но создаётся ссылка на обе панели.
CtrlAlt` - Открыть общее меню.
Дополнительно возможны макросы (отключены по умолчанию):
- Вызов меню и вставка (вместо перехода) путей из ссылок в редакторе и полях ввода диалогов.
- Создание двойных ссылок для обеих панелей одновременно.
Примеры включения дополнительных макросов в FolderShortcutsMenu.sample.cfg

Особенности и отличия от встроенных в ФАР ссылок на папки:
- Всегда открывается список с ссылками, даже если ссылка одна или ссылок нет (единообразие поведения).
- Можно выходить из подменю на уровень вверх, заходить в другое подменю и т.д.
- Можно менять имена подменю на любые удобные (важно лишь сохранить горячие клавиши).
- Можно не ограничиваться шорткатами 0-9, а использовать буквенные клавиши и символы. См. примеры в тексте скрипта. Таким образом, групп ссылок (подменю) может быть более 10. Можно даже сделать так, что на цифрах будут стандартные ссылки на папки, а на буквах - через меню, и т.п.
- Так как это пользовательское меню, могут применятся все доступные средства для его редактрования. Подменю можно переименовывать, сортировать, заранее создавать с нужными именами и ссылками, удалять ссылки и подменю. Можно вообще пихать в меню всё что угодно, следует только помнить, что прилагаемые макросы открывают подменю по горячим клавишам.
- Вместо отдельного файла, можно использовать основное пользоваетльское меню ФАРа (выбирается в настройках).
- После перехода по ссылке происходит позиционирование на файл, который был текущим на момент создания ссылки.
- Можно создать одну ссылку сразу на обе панели.

Версия 2 работает с сетевыми папками, плагинами ftp, netbox, arclite, multiarc и observer. Почему-то не работает с torrentview и torrentinfo. С остальными плагинами не проверялась.
К сожалению, используемая функция panel.SetPanelDirectory не даёт полного контроля над сменой директории панели. Поэтому:
- Если отсутствует папка назначения, будет выведен диалог с сообщением об ошибке.
- Если отсутствует архив, arclite выдаст сообщение об ошибке, а если отсутствует ещё и папка, сообщений будет два.
Возможно, будут сообщения и в других каких-либо случаях.


Attachments
FolderShortcutsMenu.2.08.7z
Версия 2.08
(4.47 KiB) Downloaded 391 times
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Folder Shortcuts Menu

Post by Smitis »

Версия 1.01. Небольшие доработки.
Изменения:
- Изменилась структура меню. Теперь в корне пользовательского меню подменю Shortcuts. Это сделано для того, чтобы в заголовке меню высвечивалось название подменю, а не непонятное "Local Menu".
- Меню может быть не в отдельном файле, а в основном пользовательском меню.
- Добавилась возможность делать ссылки на плагины. Не знаю, насколько хорошо получилось. Для архивнх плагинов сначала делается переход в папку с архивом, затем вход в архив, затем переход по архиву.
Разум когда-нибудь победит.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Folder Shortcuts Menu

Post by Smitis »

Добавил версию 2, использующую дял перехода по ссылкам глобальную функцию. Версию 1 оставил.
К сожалению, в версии 2 используемый метод через panel.SetPanelDirectory не работает с плагинами multiarc, torrentinfo и torrentview.
Разум когда-нибудь победит.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Folder Shortcuts Menu

Post by John Doe »

Code: Select all

_G.FSM = {}
_G.FSM.setdir = function(dir,current)
А зачем вам тут ещё и глобальная таблица?
Задел на будущее?

Если дело в этом, то я бы сделал иначе:

Code: Select all

if not Smitis then Smitis = {} end
Smitis.FSMsetdir = и т.д.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Folder Shortcuts Menu

Post by Smitis »

Глобальная таблица на всякий случай.
Вообще, лучше было бы что-то вроде users.Smitis.FSMsetdir или scripts.Smitis.FSMsetdir, т.е. одна общая глобальная таблица, куда договориться помещать глобальные данные. Минимум засорения.
Разум когда-нибудь победит.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Folder Shortcuts Menu

Post by John Doe »

Таблица первого уровня не может быть простым словом типа users или scripts, чтобы исключить коллизии.
Глобальная таблица под каждый макрос тоже не годится, заведите себе хотя бы одну (а внутри неё уж как вам захочется).
Договариваться всем вместе об общей таблице считаю НЕ НАДО. Т.к. это вообще не приветствуется, и тем более зоопарк нам не нужен.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Folder Shortcuts Menu

Post by Smitis »

Ладно, сделал таблицу Smitis и функцию Smitis.FSM
А зоопарк был бы о одной таблице и никому особенно не мешал бы.

П.С.
Бывали подобные преценденты, например разделы Software в реестре.
Разум когда-нибудь победит.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Folder Shortcuts Menu

Post by John Doe »

Проблема в другом.
Само наличие подобной договорённости автоматически поощряет плохую практику программирования на Lua

Сравнение с реестром некорректно.
У нас для подобных целей msave/mload - пользуйтесь на здоровье.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Folder Shortcuts Menu

Post by Shmuel »

John Doe wrote:

Code: Select all

if not Smitis then Smitis = {} end
Можно короче:

Code: Select all

Smitis = Smitis or {}
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Folder Shortcuts Menu

Post by John Doe »

100%
Точнее _G.Smitis = Smitis or {}

А вот так нельзя точно: _G.Smitis = {}
Сами подумайте: что произойдёт если эта конструкция появится в 2х разных скриптах.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Folder Shortcuts Menu

Post by Smitis »

Согласен
Разум когда-нибудь победит.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Folder Shortcuts Menu

Post by John Doe »

Smitis wrote: Отличия версии 1 от версии 2:
- В версии 1 ссылки делаются командами cd и lm:post прямо в меню. Содержимое коммандной строки может потеряться. Не делаются проверки. В общем, упрощённая версия.
- В версии 2 для перехода по ссылкам создаётся и используется глобальная функция, вызываемая из пользовательского меню.
Не понял почему не делать ссылки прямо в меню?
Где потеряется содержимое командной строки?
О каких проверках речь?
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Folder Shortcuts Menu

Post by John Doe »

Сама функция тоже довольно простая, и оперирует только своими параметрами (т.е. среда ей не важна).
Значит её можно поместить в lm:post целиком.
Или загрузить из базы (mload).

Это к тому, что помимо использования глобальной среды всегда есть другие варианты.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Folder Shortcuts Menu

Post by Smitis »

John Doe wrote:Не понял почему не делать ссылки прямо в меню?
В смысле?

В принципе, "ссылки" на папки хорошо получаются командой cd, правда без перехода к файлу (который был текущим при создании ссылки).
С плагинами сложнее.
Сама функция тоже довольно простая, и оперирует только своими параметрами (т.е. среда ей не важна).
Есть такая идея. Но внешнюю функцию можно модифицировать (улучшить). Тогда как уже созданные ссылки останутся неизменными. В настоящий момент, не всё гладко работает (не со всеми архивными плагинами).
О каких проверках речь?
Например, существует ли ещё папка.
Где потеряется содержимое командной строки?
Это уже несколько устарело. Уберу.
Разум когда-нибудь победит.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Folder Shortcuts Menu

Post by John Doe »

"В смысле" ссылки могут хорошо получаться командой lm:post и не используя глобальный функций (это вы вероятно и без меня знаете)

P.S.
Кстати для перехода к файлу можно использовать команду goto:
Post Reply

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