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

Здесь выкладываются готовые к использованию макросы и скрипты.
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:

Версия 1.1.1 - Корректная обработка пустой строки в языковом файле. ССЗБ, тестировать надо тщательнее после каждого изменения.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

При попытке вызова любого из макросов скрипта

Code: Select all

LuaMacro

cannot open C:\APPs\Far3\Profile\Macros\scripts\BookmarkManager\BookmarkManagerEng.lng: No such file 
or directory
stack traceback:
   [C]: in function 'dofile'
   ...ofile\Macros\scripts\BookmarkManager\BookmarkManager.lua:97: in function 'LoadSettings'
   ...ofile\Macros\scripts\BookmarkManager\BookmarkManager.lua:283: in function <...ofile\Macros\
scripts\BookmarkManager\BookmarkManager.lua:210>

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

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

Post by IgorZ »

Версия 1.1.2 - Исправлена ошибка с обращением к старым языковым файлам.
Работа, работа, работа... Запарка, извиняюсь. Но, вроде, больше ошибок быть не должно.

P. S. Одна ошибка таки нашлась. При переключении языка в Far-е язык в скрипте не переключается. Перезалил, версию не правил. Кто успел скачать - перекачайте.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

IgorZ wrote:Экспериментально: изменён принцип хранания и загрузки языковых данных. Просьба отписаться в теме, который вариант лучше на Ваш взгляд.
А как мы должны оценивать этот эксперимент?
Один lng на все языки это хорошо или плохо? Мне как пользователю безразлично.
Многострочные значения оканчиваются слешем? Тому кто будет править удобства не добавится, но по большому счёту неважно.

Вообще собственная процедура загрузки lng это прежде всего головная боль для самого автора (написать, отладить, поддерживать).
Может в вашем случае всё просто, но я лично не возьмусь протестировать на всех возможных некорректных данных.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

John Doe wrote:
IgorZ wrote:Экспериментально: изменён принцип хранания и загрузки языковых данных. Просьба отписаться в теме, который вариант лучше на Ваш взгляд.
А как мы должны оценивать этот эксперимент?
1. Новый вариант, возможно, будет у кого-то подтормаживать - кода-то больше.
2. В идеале, хорошо бы, чтоб кто-то попробовал локализовать скрипт на какой-либо язык (мечты, мечты...) и определить, который вариант в этом плане удобнее.
3. Не я один делаю скрипты с локализацией. Взгляд коллег, обладающих аналогичным опытом, тоже интересен. Возможно, в итоге получится какой-то единый стандарт локализации скриптов.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

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

Post by Smitis »

IgorZ wrote:3. Не я один делаю скрипты с локализацией. Взгляд коллег, обладающих аналогичным опытом, тоже интересен. Возможно, в итоге получится какой-то единый стандарт локализации скриптов.
Что может быть проще - файл локализации это скрипт на lua?
Пример из собственного скрипта

Загружать через loadfile
Разум когда-нибудь победит.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Smitis wrote:
IgorZ wrote:3. Не я один делаю скрипты с локализацией. Взгляд коллег, обладающих аналогичным опытом, тоже интересен. Возможно, в итоге получится какой-то единый стандарт локализации скриптов.
Что может быть проще - файл локализации это скрипт на lua?
Загружать через loadfile
Примерно так я и делал в предыдущем варианте. Но в силу некоторых нюансов (в т. ч., ради соблюдения правил хорошего тона, которые рекомендуют разделять код и данные) решил попробовать другой способ.
К слову, я использовал не loadfile(), а dofile() - удобней.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

IgorZ wrote:ради соблюдения правил хорошего тона, которые рекомендуют разделять код и данные
Напрасно, в lua такая загрузка данных идиоматична.
IgorZ wrote:К слову, я использовал не loadfile(), а dofile() - удобней.
dofile работает с глобальной средой, что в общем случае нежелательно.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

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

Post by Smitis »

IgorZ wrote:ради соблюдения правил хорошего тона, которые рекомендуют разделять код и данные) решил попробовать другой способ.
Так данные и код разделены, просто формат записи данных получается другой.
Сравнить diEdit_Folder="Folder:" и langs.english.diEdit_Folder="Folder:"
Только в первом случае надо писать свой загрузчик, а во втором всё сделает сам lua
Разум когда-нибудь победит.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Smitis wrote:langs.english.diEdit_Folder="Folder:"
Можно без langs.: http://forum.farmanager.com/viewtopic.p ... 34#p116434
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

John Doe wrote:
IgorZ wrote:ради соблюдения правил хорошего тона, которые рекомендуют разделять код и данные
Напрасно, в lua такая загрузка данных идиоматична.
Привычка. Просто некомфортно даже, когда в формальном файле данных фактически исполняемый код (даже в столь малой дозе).
John Doe wrote:
IgorZ wrote:К слову, я использовал не loadfile(), а dofile() - удобней.
dofile работает с глобальной средой, что в общем случае нежелательно.
В данном конкретном случае это было несущественно. А в новом варианте этого вообще нет.
Smitis wrote:
IgorZ wrote:ради соблюдения правил хорошего тона, которые рекомендуют разделять код и данные) решил попробовать другой способ.
Так данные и код разделены, просто формат записи данных получается другой.
Сравнить diEdit_Folder="Folder:" и langs.english.diEdit_Folder="Folder:"
Только в первом случае надо писать свой загрузчик, а во втором всё сделает сам lua
Потому что во втором мы имеем исполняемый файл, который условно назвали файлом данных. Так что фактически идёт разделение одного исполняемого файла на две исполняемые части. Это проще, это легче, это быстрее исполняется, но мне такой код не особо нравится, это "низкий класс" согласно моим привычкам.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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

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

Post by Smitis »

IgorZ wrote:Потому что во втором мы имеем исполняемый файл, который условно назвали файлом данных. Так что фактически идёт разделение одного исполняемого файла на две исполняемые части. Это проще, это легче, это быстрее исполняется, но мне такой код не особо нравится, это "низкий класс" согласно моим привычкам.
А если закрыть глаза и представить, что это действительно файл данных... но просто очень продвинутый (с поддержкой выражений, условных операторов, циклов и др.)? :)
В конце концов, макросы ФАРа когда-то тоже были "конфигурационными" и представляли просто последовательность нажимаемых клавиш + некоторые параметры (область действия и т.п.)
Разум когда-нибудь победит.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

John Doe wrote:
IgorZ wrote:это быстрее исполняется
В данном конкретном случае разницу заметить невозможно, т.к. время выполнения ничтожно мало.
А если в вашем варианте избавиться от построчного чтения из файла, то наверно никакой разницы и вовсе не будет.
Ради интереса попробовал заменить io.line на чтение всего файла целиком и затем лущение полученной строки с помощью gmatch. io.line работает даже чуть быстрее (примерно на 10%). Издержки интерпретации, однако...
Smitis wrote:
IgorZ wrote:Потому что во втором мы имеем исполняемый файл, который условно назвали файлом данных. Так что фактически идёт разделение одного исполняемого файла на две исполняемые части. Это проще, это легче, это быстрее исполняется, но мне такой код не особо нравится, это "низкий класс" согласно моим привычкам.
А если закрыть глаза и представить, что это действительно файл данных... но просто очень продвинутый (с поддержкой выражений, условных операторов, циклов и др.)? :)
В конце концов, макросы ФАРа когда-то тоже были "конфигурационными" и представляли просто последовательность нажимаемых клавиш + некоторые параметры (область действия и т.п.)
К сожалению, моё воображение тоже разбирается в программировании и разделяет мои взгляды на "хороший стиль программирования". :) С нашей общей точки зрения данные должны быть пассивны, ну, в крайнем случае, восклицать: "Ещё! Прочитай меня ещё! Да! Да!! А теперь запиши!" ;)
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

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

Post by Smitis »

IgorZ wrote:
John Doe wrote:К сожалению, моё воображение тоже разбирается в программировании и разделяет мои взгляды на "хороший стиль программирования". :)
Богатое у тебя воображение :)
И придётся изобретать очередной велосипед (точно такой же, как все, но другой) ;)
Разум когда-нибудь победит.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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

А разницу во времени выполнения dofile и вашей новой функции вы измеряли?
Post Reply

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