ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Здесь обсуждается всё, что касается макросов.
buniak_a_h
Posts: 905
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Post by buniak_a_h » Sun 29 Sep, 2019 07:51

Макрос навеян этим:
PieApple wrote:
Thu 23 Jan, 2014 12:57
Еще хотел бы поделиться идеей, реализованной в Проводнике с Windows 7, Total Commander, что если нажать мышкой на имя папки в адресной строке сверху, то происходит переход вверх на эту папку.
На самом деле получилось прикольно и, возможно, полезно (если Вы любите настольных грызунов).
Суть:
Клик мышой на заголовке панели, содержащей имя папки, вызывает переход (как в проводнике). А если клик приходится на разделитель (бэкслэш), то предоставляется выбор, в какую папку перейти.
Первоначальный макрос сваян «на коленке» за полчасика, потому не судите строго. Если будут отзывы и замечания — попробую «докрутить».

Начиная с этой версии я перестал выкладывать текст скрипта в сообщении (уж больно трудоёмко стало, т.к. он вырос). Тем более что “Select all” на сайте опять перестал работать. Теперь только во вложении в виде 7z-архива.


Так как проект несколько разросся, то теперь вместе с файлом самого скрипта поставляются языковой файл ClickToTitleDirRus.lng и файл помощи ClickToTitleDirRus.hlf.

ClickToTitleDir-1.2.11.7z
(16.11 KiB) Downloaded 1 time
Last edited by buniak_a_h on Mon 21 Oct, 2019 01:22, edited 36 times in total.

User avatar
HaRT
Moderator
Posts: 8947
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 88 times
Been thanked: 155 times

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Post by HaRT » Thu 10 Oct, 2019 20:31

Latest post of the previous page:

Taciturn wrote:
Thu 10 Oct, 2019 08:32
ClickToTitleDir.1.2.2.lua.7z в scripts
Не поделитесь архивом версии?
Фар есть инструмент, а не нянька. © 2009 DrKnS

buniak_a_h
Posts: 905
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Post by buniak_a_h » Thu 10 Oct, 2019 21:39

HaRT wrote:
Thu 10 Oct, 2019 18:42
Вопрос: не приведёт ли это к некорректной работе, если путь содержит один из символов -, +, =? (Код пока не смотрел.)
Приведёт. Минус и равенство - может и имеют значение, но плюс (также как и верт.черточка) - служебные символы. Надеюсь, что не встречающиеся в имени каталога.
На самом деле - да, есть ограничения в применении. Ну, если юзер такой умный, что использует символы псевдографики в имени папки, то ему не судьба пользоваться этим сервисом. Не уверен, что стоит предпринимать какие-то меры по проверке.
Впрочем, я сейчас переделываю. Возможно, это перестанет быть проблемой.

buniak_a_h
Posts: 905
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Post by buniak_a_h » Thu 10 Oct, 2019 21:44

HaRT wrote:
Thu 10 Oct, 2019 19:48
Это я тупой/слепой, или в заглавном сообщении и впрямь нет ни вложения, ни ссылки для скачивания?
HaRT wrote:
Thu 10 Oct, 2019 20:31
Не поделитесь архивом версии?
Я не знаю, что случилось... При "Отправить" вылезла какая-то красная надпись (большими буквами). Я не стал разбираться, а отправил снова. В тексте надпись типа [Attachment] была. А куда девался сам архив - не знаю. Перезалил...

User avatar
HaRT
Moderator
Posts: 8947
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 88 times
Been thanked: 155 times

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Post by HaRT » Thu 10 Oct, 2019 22:25

buniak_a_h wrote:
Thu 10 Oct, 2019 21:39
Приведёт. Минус и равенство - может и имеют значение, но плюс (также как и верт.черточка) - служебные символы. Надеюсь, что не встречающиеся в имени каталога.
Ни плюс, ни минус, ни знак равенства не являются символами, запрещёнными в именах директорий или файлов. Более того, минус довольно популярен в качестве дефиса. Вообще одна из распространённых конвенций — это использовать минус, чтобы отделять номер версии от имени продукта. Например, прямо сейчас у меня в одной отдельно взятой папке есть , а . Т.ч. это ограничение гораздо серьёзнее, чем кажется, и оставлять его по умолчанию — это, на мой взгляд, неправильное решение. Учитывая долю пользователей, которым недоступна нормальная псевдографика, более разумно было бы написать для них, где что исправить, чтобы и у них заработало, а не ограничивать всех пользователей.
buniak_a_h wrote:
Thu 10 Oct, 2019 21:39
если юзер такой умный, что использует символы псевдографики в имени папки
Плюс, минус, равно, трубопровод — это ни в коем разе не псевдографика. Да и вообще подобные проблемы лишний раз указывают на основополагающий недостаток выбранного подхода для сопоставления позиции щелчка мыши и целевого действия.
buniak_a_h wrote:
Thu 10 Oct, 2019 21:39
Возможно, это перестанет быть проблемой.
Очень на это надеюсь, а то придётся патчить под себя каждую версию.
buniak_a_h wrote:
Thu 10 Oct, 2019 21:44
Перезалил
Спасибо
Фар есть инструмент, а не нянька. © 2009 DrKnS

buniak_a_h
Posts: 905
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Post by buniak_a_h » Thu 10 Oct, 2019 22:51

HaRT, насчёт минуса и равенства - согласен. Плюс между файлами указывает на append этих файлов; пайп, а также перенаправление '<' и '>' - это уже какая-то экзотика.
На самом деле я сам прекрасно вижу ограниченность и некорректность подхода. Увы, я не нашёл способа получить Panel.Title кроме как вычленив псевдографику (точнее, BoxSymbols из far:config). Конечно, если б была такая возможность, возможно было бы и проще, и надёжнее. Но если нет - приходится работать с тем, что есть.
Ещё можно было бы попробовать читать с экрана, используя API консоли (кто-то тут писал). Но я не в курсе. Сделаете - флаг в руки.

User avatar
HaRT
Moderator
Posts: 8947
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 88 times
Been thanked: 155 times

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Post by HaRT » Thu 10 Oct, 2019 23:00

buniak_a_h wrote:
Thu 10 Oct, 2019 22:51
Плюс между файлами указывает на append этих файлов
Это всего лишь особенность синтаксиса досовой команды copy, решается использованием кавычек: copy "a+b"+"c+d" "e+f". Вон, в командах cmd тоже есть много специальных символов: %^= и др. — но это же не означает, что надо запрещать использовать их в именах файлов. Запрещённые символы у Майкрософта задокументированы (и Проводник их перечисляет при попытке использования в переименовании), всё остальное разрешено.
buniak_a_h wrote:
Thu 10 Oct, 2019 22:51
если б была такая возможность, возможно было бы и проще, и надёжнее.
Я уже предлагал подход, но вы его отвергли, судя по всему, без серьёзного рассмотрения. О чём тут ещё спорить…
buniak_a_h wrote:
Thu 10 Oct, 2019 22:51
Сделаете - флаг в руки.
Или кто-нибудь другой…
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
HaRT
Moderator
Posts: 8947
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 88 times
Been thanked: 155 times

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Post by HaRT » Thu 10 Oct, 2019 23:13

buniak_a_h wrote:
Thu 10 Oct, 2019 21:44
Перезалил
Кстати, скажите, а для чего вы так настаиваете на наличии там у поля ввода флага DIF_CENTERGROUP? Ведь, судя по его документации и по моему пользовательскому опыту, он там ровно ничего не меняет, только код засоряет впустую да лишнее предупреждение от LuaCheck порождает из-за длинной строки.
Фар есть инструмент, а не нянька. © 2009 DrKnS

buniak_a_h
Posts: 905
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Post by buniak_a_h » Thu 10 Oct, 2019 23:18

HaRT wrote:
Thu 10 Oct, 2019 23:00
Я уже предлагал подход, но вы его отвергли, судя по всему, без серьёзного рассмотрения.
1. Повторить логику ФАРа я не смогу. Исходники ворошить не буду точно.
2.
HaRT wrote:
Wed 09 Oct, 2019 04:31
исходя из ширины панели и длины пути (
Вот самое смешное начинается когда путь не помещается. А для плагиновых панелей - совсем тоска: перед путём разные плагины разное пихают. Поэтому исходить надо нет от "длины пути", а от Panel.Title (которой, увы, нету). Например, в архиве перед путём вставляется кроме типа архива ещё и имя, а оно тоже может быть разной длины. Поэтому на длину пути завязываться никак нельзя.
Упрёк в том, что замечание проигнорировал, не принимается. Просто не знаю, как сделать.

buniak_a_h
Posts: 905
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Post by buniak_a_h » Thu 10 Oct, 2019 23:22

HaRT wrote:
Thu 10 Oct, 2019 23:13
Кстати, скажите, а для чего вы так настаиваете на наличии там у поля ввода флага DIF_CENTERGROUP?
По лени. Чтоб не рассчитывать положения радиобутонов в зависимости от длины их капшенов и текста-заголовка. Которые, кстати, берутся из lng-файла. Т.е. без этого флага сначала прочитать, потом посчитать, потом внести в DlgItems...
HaRT wrote:
Thu 10 Oct, 2019 23:13
лишнее предупреждение от LuaCheck порождает из-за длинной строки.
У меня нет ни предупреждений, ни ошибок. Просто всё чисто.
Last edited by buniak_a_h on Thu 10 Oct, 2019 23:24, edited 1 time in total.

User avatar
HaRT
Moderator
Posts: 8947
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 88 times
Been thanked: 155 times

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Post by HaRT » Thu 10 Oct, 2019 23:51

buniak_a_h wrote:
Wed 09 Oct, 2019 05:30
Глюк с кликом на последнем символе имени каталога у меня не повторяется. Возможно, у меня он уже был исправлен...
Увы, не исправлен (версия 1.2.2).
Как проверяю:
1. Запускаю Фар: start "" "C:\Program Files (x86)\Far Manager\far.exe" /p"%FarHome%\Plugins\LuaMacro" -s %TEMP%\farprofile\%RANDOM%.
2. Для определённости выставляю там размер консоли: mode con cols=120 lines=30.
3. Подкладываю ему в профиль в Macros\scripts файлы ClickToTitleDir, перезагружаю там макросы: lm:load.
4. Перехожу в директорию C:\Program Files (x86)\Far Manager\Addons (неважно, на какой панели).
5. Вхожу в диалоговый режим, там щёлкаю ЛКМ по ) (закрывающей скобке).
Ожидаю: переход в C:\Program Files (x86).
Получаю: переход в C:\Program Files (x86)\Far Manager.
С другими путями аналогично.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
HaRT
Moderator
Posts: 8947
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 88 times
Been thanked: 155 times

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Post by HaRT » Thu 10 Oct, 2019 23:57

buniak_a_h wrote:
Thu 10 Oct, 2019 23:18
Повторить логику ФАРа я не смогу
Она совсем не сложная, было бы желание.
buniak_a_h wrote:
Thu 10 Oct, 2019 23:18
для плагиновых панелей - совсем тоска
Вариант был отвергнут ещё до объявления функциональности для плагиновых панелей.
buniak_a_h wrote:
Thu 10 Oct, 2019 23:22
Чтоб не рассчитывать положения радиобутонов в зависимости от длины их капшенов и текста-заголовка.
Речь про основной диалог, а не про настройки: я в версии 1.1.2 этот флаг убрал и позже пояснил, почему, а вы его снова вернули. Вот я и спрашиваю: зачем он там?
buniak_a_h wrote:
Thu 10 Oct, 2019 23:22
У меня нет ни предупреждений, ни ошибок. Просто всё чисто.
У меня с настройками по умолчанию
Фар есть инструмент, а не нянька. © 2009 DrKnS

buniak_a_h
Posts: 905
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Post by buniak_a_h » Fri 11 Oct, 2019 00:39

HaRT wrote:
Thu 10 Oct, 2019 23:51
buniak_a_h wrote:
Wed 09 Oct, 2019 05:30
Глюк с кликом на последнем символе имени каталога у меня не повторяется. Возможно, у меня он уже был исправлен...
Увы, не исправлен (версия 1.2.2)
Видимо, я не заметил, что глюк касается только диалогового режима. Во всяком случае, у меня в диалоговом воспроизвелось, в непосредственном - нет.
Гляну...
HaRT wrote:
Thu 10 Oct, 2019 23:57
buniak_a_h wrote:
Thu 10 Oct, 2019 23:22
Чтоб не рассчитывать положения радиобутонов в зависимости от длины их капшенов и текста-заголовка.
Речь про основной диалог, а не про настройки: я в версии 1.1.2 этот флаг убрал и позже пояснил, почему, а вы его снова вернули. Вот я и спрашиваю: зачем он там?
Не нужен. Убрал, спасибо.
В первый раз не стал брать этот кусок от Вас, т.к. не понял, зачем мне DI_DOUBLRBOX. Вы пояснили, я добавил, а остальное забыл взять - думал, что уже и так взято.
Хотя про слишком длинные строки я всё равно не понял. 123 символа - это слишком длинная строка?
HaRT wrote:
Thu 10 Oct, 2019 23:57
buniak_a_h wrote:
Thu 10 Oct, 2019 23:22
У меня нет ни предупреждений, ни ошибок. Просто всё чисто.
У меня с настройками по умолчанию
Я сразу запретил сообщение о слишком длинной строке. В конфигурационном файле вставил строку
max_line_length=false; -- BAX Иначе я на любой свой текст получал кучу незначащих сообщений, которые ни на что не влияют. Я так и не понял, зачем нужен контроль длины строки, если интерпретатор LUA позволяет длиннее, чем проверяется.

User avatar
HaRT
Moderator
Posts: 8947
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 88 times
Been thanked: 155 times

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Post by HaRT » Fri 11 Oct, 2019 00:46

buniak_a_h wrote:
Fri 11 Oct, 2019 00:39
зачем нужен контроль длины строки, если интерпретатор LUA позволяет длиннее, чем проверяется
Это не для интерпретатора, а для людей, читающих код. Индивидуальное восприятие различается, да, но для каждого человека есть предельная длина строки, после которой читаемость кода резко падает. И лично для меня это как раз где-то 120 символов (то же, что по умолчанию в LuaCheck).

И обратите внимание, что там есть и два предупреждения другого типа.
Фар есть инструмент, а не нянька. © 2009 DrKnS

buniak_a_h
Posts: 905
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Post by buniak_a_h » Fri 11 Oct, 2019 03:28

HaRT wrote:
Fri 11 Oct, 2019 00:46
И обратите внимание, что там есть и два предупреждения другого типа.
Про sDeb я уже исправил.
Про unused_args у меня тоже заблокировано сообщение; у меня привычка (полезная) если интерфейсом предусмотрен параметр, то он должен присутствовать в списке. А если в теле процедуры он не потребовался, то (а) это не ошибка и (б) не приводит к излишнему расходованию ресурсов. К счастью, в LUA ненужный параметр можно указать подчёрком, но если потом потребуется, то гимор будет больше, чем если предусмотреть сразу. Поэтому считаю более стилистически оправданным перечислять все параметры, а сообщение о неиспользованном параметре просто игнорировать.
Вот прикрутить скрипт к стабильной версии - это было бы здорово. Но... Что-то не удаётся пока :-(

User avatar
HaRT
Moderator
Posts: 8947
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 88 times
Been thanked: 155 times

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Post by HaRT » Fri 11 Oct, 2019 03:42

buniak_a_h wrote:
Fri 11 Oct, 2019 03:28
это не ошибка
Нередко такие ситуации свидетельствуют именно об ошибке: либо опечатка, либо копипасту не исправил, либо ещё что-то не сделал, что собирался.
buniak_a_h wrote:
Fri 11 Oct, 2019 03:28
ненужный параметр можно указать подчёрком
Можно просто вынести в комментарий.
buniak_a_h wrote:
Fri 11 Oct, 2019 03:28
сообщение о неиспользованном параметре просто игнорировать
Я выше написал, чем это может быть чревато.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
Taciturn
Posts: 384
Joined: Thu 26 May, 2005 17:14
Location: Санкт-Петербург
Has thanked: 19 times
Been thanked: 7 times
Contact:

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Post by Taciturn » Fri 11 Oct, 2019 08:30

HaRT wrote:
Thu 10 Oct, 2019 20:31
Taciturn wrote:
Thu 10 Oct, 2019 08:32
ClickToTitleDir.1.2.2.lua.7z в scripts
Не поделитесь архивом версии?
HaRT, так ведь он в шапке есть. Но без проблем:
https://taciturn-shadow.spb.ru/far/ClickToTitleDir.1.2.2.lua.7z
Last edited by Taciturn on Fri 11 Oct, 2019 08:31, edited 2 times in total.

buniak_a_h
Posts: 905
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Post by buniak_a_h » Fri 11 Oct, 2019 14:32

Вышла версия 1.2.3 Что там:
1. Исправлена ошибка диалогового режима, проявлявшаяся при клике на последний символ имени каталога.
2. Переделана организация работы в диалоговом режиме. В результате стало возможным зациклить выбор вложенных папок из МЕНЮ.
3. В непосредственном режиме для плагиновой панели реализована возможность как перехода в корневую папку (по клику на имени хост-файла), так и выхода из архива (по клику по префиксу).
4. В диалоговом режиме для плагиновой панели в элемент (редактор) пути добавляется префикс плагина и имя хост-файла (если есть). В результате реализован как переход в корневую папку, так и выход из архива по клику по имени хост-файла и по префиксу соответственно.
Last edited by buniak_a_h on Fri 11 Oct, 2019 14:32, edited 1 time in total.

Post Reply

Return to “Обсуждение макросов”