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

Здесь выкладываются готовые к использованию макросы и скрипты.
IgorZ
Posts: 609
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 9 times
Been thanked: 42 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.3.0.2.7z
(24.3 KiB) Downloaded 122 times
Last edited by IgorZ on Mon 26 Nov, 2018 05:32, edited 15 times in total.

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

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

Post by IgorZ » Tue 28 Jan, 2014 10:58

Latest post of the previous page:

John Doe wrote:
IgorZ wrote:Частично нужно. Иначе приоритет макроса получается 1 или 0, и все другие, назначенные на Ctrl+буква, его перебивают.
Не будут перебивать, если указать в регекспе ^ и $ (в ряде случаев это также может несколько улучшить скорость работы регекспа)
Допустим, у меня есть макрос сравнения двух файлов, назначенный на CtrlC, и закладка CONF, назначенная на %USERPROFILE%. Нажатие RCtrlC будет намедленно вызывать сравнение, и закладка будет недоступна (кроме как по RCtrl/). Сейчас же смогут благополучно отработать и то, и другое действие.
John Doe wrote:
IgorZ wrote:Можно, конечно, кэшировать только чтение, но тогда о сокращении кода можно забыть.
Независимо от кэширования (это не главное).
Я не уверен что количество строк исходника можно существенно сократить, но код действительно упростился бы, если всю работу с настройками убрать в 2 функции, аналогичные mf.msave/mf.mload.
Собственно единственное чего тут не хватает в стандартных функциях, это возможности работать с локальным профилем.
Чтение/запись везде убраны в небольшие функции, там сворачивать уже практически некуда, да и незачем. Операции в разных местах происходит по разным алгоритмам. Да и реальный объём выполняемых скриптом действий возрастёт в разы, а то и на порядок. Нет, сейчас всё практически оптимально, разве что в следующей версии формирование меню соптимизирую. Но это уж когда какие-то ещё замечания/пожелания появятся.

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

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

Post by John Doe » Tue 28 Jan, 2014 12:26

IgorZ wrote:
John Doe wrote:
IgorZ wrote:Частично нужно. Иначе приоритет макроса получается 1 или 0, и все другие, назначенные на Ctrl+буква, его перебивают.
Не будут перебивать, если указать в регекспе ^ и $ (в ряде случаев это также может несколько улучшить скорость работы регекспа)
Допустим, у меня есть макрос сравнения двух файлов, назначенный на CtrlC, и закладка CONF, назначенная на %USERPROFILE%. Нажатие RCtrlC будет намедленно вызывать сравнение, и закладка будет недоступна (кроме как по RCtrl/). Сейчас же смогут благополучно отработать и то, и другое действие.
Это другое дело. Приоритет макросов для закладок дейстствительно должен быть >50.
Меня смутило то, что он разный у двух макросов.
Чтение/запись везде убраны в небольшие функции, там сворачивать уже практически некуда, да и незачем.
По поводу "незачем" спорить не стану.
Что касается "некуда", то мне самому стало любопытно попробовать это при случае, из спортивного интереса.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

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

Post by Max Rusov » Tue 28 Jan, 2014 12:41

Хотелось бы еще поддержку плагинных панелей. Хотя бы в ограниченном объеме, типа:

R --> REG:\HKEY_CURRENT_USER\Software

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

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

Post by John Doe » Tue 28 Jan, 2014 21:12

При попытке вывести меню получаю ошибку

Code: Select all

...ofile\Macros\scripts\BookmarkManager\BookmarkManager.lua:228: attempt to concatenate field 'Delay' (a nil value)
stack traceback:
   ...ofile\Macros\scripts\BookmarkManager\BookmarkManager.lua: in function <...ofile\Macros\scripts\BookmarkManager\BookmarkManager.lua:146>

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

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

Post by IgorZ » Wed 29 Jan, 2014 07:04

John Doe wrote:При попытке вывести меню получаю ошибку

Code: Select all

...ofile\Macros\scripts\BookmarkManager\BookmarkManager.lua:228: attempt to concatenate field 'Delay' (a nil value)
stack traceback:
   ...ofile\Macros\scripts\BookmarkManager\BookmarkManager.lua: in function <...ofile\Macros\scripts\BookmarkManager\BookmarkManager.lua:146>
В строку 228 нет упоминания поля Delay (такого поля вообще нет в скрипте), в строке 146 нет функции. Но в строке 146 стоит eval(<нажатая комбинация клавиш>,2), надо копать в эту сторону.

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

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

Post by John Doe » Wed 29 Jan, 2014 07:29

Отбой. Скрипт обновил, да макросы не перегрузил...

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

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

Post by IgorZ » Wed 29 Jan, 2014 11:37

Версия 1.0.4 - Небольшая оптимизация формирования меню, поддержка плагиновых панелей, мелкие правки.
Почему-то не переходит в SQLite database editor (просто встаёт в панели на файл, внутрь которого надо перейти), причём panel.SetPanelDirectory() возвращает true. Видимо, ошибка плагина? Остальные выборочно проверенные плагины поддерживаются нормально.

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

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

Post by John Doe » Wed 29 Jan, 2014 12:53

LoadSettings() во всех condition это зря. По моему опыту использование Settings API сравнительно дорого обходится.

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

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

Post by IgorZ » Thu 30 Jan, 2014 04:42

John Doe wrote:LoadSettings() во всех condition это зря. По моему опыту использование Settings API сравнительно дорого обходится.
На практике тормозов не замечено. А с точки зрения красоты и правильности работы алгоритма - там им самое место, поскольку в condition приходится проверять параметры конфигурации, которые могли измениться с прошлого запуска скрипта. Можно было бы ещё закинуть всё в глобальные переменные, но это, на мой взгляд, некрасивый подход.

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

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

Post by John Doe » Thu 30 Jan, 2014 07:26

IgorZ wrote: Можно было бы ещё закинуть всё в глобальные переменные, но это, на мой взгляд, некрасивый подход.
Зачем в глобальные?

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

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

Post by IgorZ » Thu 30 Jan, 2014 07:55

John Doe wrote:
IgorZ wrote: Можно было бы ещё закинуть всё в глобальные переменные, но это, на мой взгляд, некрасивый подход.
Зачем в глобальные?
Как альтернативу БД, для взаимодействия нескольких запущенных экземпляров. Хотя с точки зрения сохранности данных тоже не идеал, но работы с БД было бы меньше. Впрочем, в условиях, когда имеющийся алгоритм работает без нареканий (в т. ч., по скорости), это всё ненужная абстракция. Да и не люблю в глобальные переменные сорить без необходимости, как уже говорил.

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

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

Post by John Doe » Thu 30 Jan, 2014 08:33

Глобальные переменные не разделяются разными экземплярами фара, поэтому база единственный вариант.

Мне казалось что кроме самих закладок синхронизировать между экземплярами нечего. Но теперь я вижу что вы действительно хотите синхронизировать все.

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

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

Post by IgorZ » Thu 30 Jan, 2014 09:38

John Doe wrote:Глобальные переменные не разделяются разными экземплярами фара, поэтому база единственный вариант.
О, точно. Что-то меня переклинило.
John Doe wrote:Мне казалось что кроме самих закладок синхронизировать между экземплярами нечего. Но теперь я вижу что вы действительно хотите синхронизировать все.
Ну, вроде, логично. А что, есть другие предложения?

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

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

Post by John Doe » Thu 30 Jan, 2014 11:07

IgorZ wrote:
John Doe wrote:Мне казалось что кроме самих закладок синхронизировать между экземплярами нечего. Но теперь я вижу что вы действительно хотите синхронизировать все.
Ну, вроде, логично. А что, есть другие предложения?
Поскольку всё работает как задумано, то и предложений нет.
Изначально вопрос возник по причине того, что я считал достаточным считывать настройки при старте, т.е. однократно.

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

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

Post by IgorZ » Tue 04 Feb, 2014 09:28

Версия 1.1 - Поддержка установки одновременно (или раздельно) активной и пассивной панели, мелкие правки. Экспериментально: изменён принцип хранания и загрузки языковых данных. Просьба отписаться в теме, который вариант лучше на Ваш взгляд. Если новый вариант понравится, внедрю его и в остальные свои скрипты с поддержкой настройки языка.

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

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

Post by John Doe » Tue 04 Feb, 2014 10:22

...ofile\Macros\scripts\BookmarkManager\BookmarkManager.lua:60: attempt to index local 'n' (a nil value)

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

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

Post by IgorZ » Tue 04 Feb, 2014 11:10

Версия 1.1.1 - Корректная обработка пустой строки в языковом файле. ССЗБ, тестировать надо тщательнее после каждого изменения.

Post Reply

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