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

Здесь выкладываются готовые к использованию макросы и скрипты.
IgorZ
Posts: 448
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 5 times
Been thanked: 8 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.4.1.7z
(18.3 KiB) Downloaded 42 times

IgorZ
Posts: 448
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 5 times
Been thanked: 8 times

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

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

Latest post of the previous page:

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

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

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

Post by John Doe » Tue 04 Feb, 2014 11:16

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

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: 448
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 5 times
Been thanked: 8 times

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

Post by IgorZ » Wed 05 Feb, 2014 04:21

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

P. S. Одна ошибка таки нашлась. При переключении языка в Far-е язык в скрипте не переключается. Перезалил, версию не правил. Кто успел скачать - перекачайте.

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

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

Post by John Doe » Wed 05 Feb, 2014 15:13

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

Вообще собственная процедура загрузки lng это прежде всего головная боль для самого автора (написать, отладить, поддерживать).
Может в вашем случае всё просто, но я лично не возьмусь протестировать на всех возможных некорректных данных.

IgorZ
Posts: 448
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 5 times
Been thanked: 8 times

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

Post by IgorZ » Fri 07 Feb, 2014 04:03

John Doe wrote:
IgorZ wrote:Экспериментально: изменён принцип хранания и загрузки языковых данных. Просьба отписаться в теме, который вариант лучше на Ваш взгляд.
А как мы должны оценивать этот эксперимент?
1. Новый вариант, возможно, будет у кого-то подтормаживать - кода-то больше.
2. В идеале, хорошо бы, чтоб кто-то попробовал локализовать скрипт на какой-либо язык (мечты, мечты...) и определить, который вариант в этом плане удобнее.
3. Не я один делаю скрипты с локализацией. Взгляд коллег, обладающих аналогичным опытом, тоже интересен. Возможно, в итоге получится какой-то единый стандарт локализации скриптов.

Smitis
Posts: 1452
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 12 times
Been thanked: 23 times
Contact:

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

Post by Smitis » Fri 07 Feb, 2014 06:55

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

Загружать через loadfile
Разум когда-нибудь победит.

IgorZ
Posts: 448
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 5 times
Been thanked: 8 times

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

Post by IgorZ » Fri 07 Feb, 2014 09:37

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

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

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

Post by John Doe » Fri 07 Feb, 2014 09:52

IgorZ wrote:ради соблюдения правил хорошего тона, которые рекомендуют разделять код и данные
Напрасно, в lua такая загрузка данных идиоматична.
IgorZ wrote:К слову, я использовал не loadfile(), а dofile() - удобней.
dofile работает с глобальной средой, что в общем случае нежелательно.

Smitis
Posts: 1452
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 12 times
Been thanked: 23 times
Contact:

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

Post by Smitis » Fri 07 Feb, 2014 10:02

IgorZ wrote:ради соблюдения правил хорошего тона, которые рекомендуют разделять код и данные) решил попробовать другой способ.
Так данные и код разделены, просто формат записи данных получается другой.
Сравнить diEdit_Folder="Folder:" и langs.english.diEdit_Folder="Folder:"
Только в первом случае надо писать свой загрузчик, а во втором всё сделает сам lua
Разум когда-нибудь победит.

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

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

Post by John Doe » Fri 07 Feb, 2014 10:21

Smitis wrote:langs.english.diEdit_Folder="Folder:"
Можно без langs.: viewtopic.php?p=116434#p116434

IgorZ
Posts: 448
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 5 times
Been thanked: 8 times

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

Post by IgorZ » Fri 07 Feb, 2014 10:23

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: 11095
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 66 times

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

Post by John Doe » Fri 07 Feb, 2014 10:50

IgorZ wrote:это быстрее исполняется
В данном конкретном случае разницу заметить невозможно, т.к. время выполнения ничтожно мало.
А если в вашем варианте избавиться от построчного чтения из файла, то наверно никакой разницы и вовсе не будет.

Smitis
Posts: 1452
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 12 times
Been thanked: 23 times
Contact:

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

Post by Smitis » Fri 07 Feb, 2014 13:25

IgorZ wrote:Потому что во втором мы имеем исполняемый файл, который условно назвали файлом данных. Так что фактически идёт разделение одного исполняемого файла на две исполняемые части. Это проще, это легче, это быстрее исполняется, но мне такой код не особо нравится, это "низкий класс" согласно моим привычкам.
А если закрыть глаза и представить, что это действительно файл данных... но просто очень продвинутый (с поддержкой выражений, условных операторов, циклов и др.)? :)
В конце концов, макросы ФАРа когда-то тоже были "конфигурационными" и представляли просто последовательность нажимаемых клавиш + некоторые параметры (область действия и т.п.)
Разум когда-нибудь победит.

IgorZ
Posts: 448
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 5 times
Been thanked: 8 times

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

Post by IgorZ » Mon 10 Feb, 2014 05:20

John Doe wrote:
IgorZ wrote:это быстрее исполняется
В данном конкретном случае разницу заметить невозможно, т.к. время выполнения ничтожно мало.
А если в вашем варианте избавиться от построчного чтения из файла, то наверно никакой разницы и вовсе не будет.
Ради интереса попробовал заменить io.line на чтение всего файла целиком и затем лущение полученной строки с помощью gmatch. io.line работает даже чуть быстрее (примерно на 10%). Издержки интерпретации, однако...
Smitis wrote:
IgorZ wrote:Потому что во втором мы имеем исполняемый файл, который условно назвали файлом данных. Так что фактически идёт разделение одного исполняемого файла на две исполняемые части. Это проще, это легче, это быстрее исполняется, но мне такой код не особо нравится, это "низкий класс" согласно моим привычкам.
А если закрыть глаза и представить, что это действительно файл данных... но просто очень продвинутый (с поддержкой выражений, условных операторов, циклов и др.)? :)
В конце концов, макросы ФАРа когда-то тоже были "конфигурационными" и представляли просто последовательность нажимаемых клавиш + некоторые параметры (область действия и т.п.)
К сожалению, моё воображение тоже разбирается в программировании и разделяет мои взгляды на "хороший стиль программирования". :) С нашей общей точки зрения данные должны быть пассивны, ну, в крайнем случае, восклицать: "Ещё! Прочитай меня ещё! Да! Да!! А теперь запиши!" ;)

Smitis
Posts: 1452
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 12 times
Been thanked: 23 times
Contact:

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

Post by Smitis » Mon 10 Feb, 2014 06:42

IgorZ wrote:
John Doe wrote:К сожалению, моё воображение тоже разбирается в программировании и разделяет мои взгляды на "хороший стиль программирования". :)
Богатое у тебя воображение :)
И придётся изобретать очередной велосипед (точно такой же, как все, но другой) ;)
Разум когда-нибудь победит.

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

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

Post by John Doe » Mon 10 Feb, 2014 10:26

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

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

IgorZ
Posts: 448
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 5 times
Been thanked: 8 times

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

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

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

Post Reply

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