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

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

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

Post by buniak_a_h »

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

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


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

ClickToTitleDir-1.4.7.7z
(22.83 KiB) Downloaded 74 times
Last edited by HaRT on Wed 06 Nov, 2019 20:42, edited 62 times in total.

Yegor
Posts: 1054
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 10 times
Been thanked: 24 times

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

Post by Yegor »

Latest post of the previous page:

HaRT wrote:
Thu 07 Nov, 2019 22:10
Это у вас версия 1.4.6, в версии 1.4.7 не так.
Моя ошибка, версию проверил (1.4.7), но видимо не перегрузил Фар после последнего обновления.
HaRT wrote:
Thu 07 Nov, 2019 22:10
А если путь длинный и не влезает в заголовок панели?
В два клика. Это у меня получается все равно быстрее, чем с режимом редактирования.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин

citRiks
Posts: 450
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 135 times
Been thanked: 40 times

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

Post by citRiks »

пользуюсь с удовольствием
если это возможно, то предложил бы добавить управление с клавиатуры,
т.е. например при нажатии Ctrl-D (как в бразузерах) активизиуется строка адреса,
а дальше то же самое как и сейчас, только на по кликам а по нажатиям, Альт+<Стрелки> например
Last edited by citRiks on Fri 13 Mar, 2020 14:37, edited 1 time in total.

buniak_a_h
Posts: 1598
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 times
Contact:

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

Post by buniak_a_h »

citRiks wrote:
Fri 13 Mar, 2020 14:37
<…>предложил бы добавить управление с клавиатуры,
т.е. например при нажатии Ctrl-D (как в бразузерах) активизиуется строка адреса,
а дальше то же самое как и сейчас, только на по кликам а по нажатиям, Альт+<Стрелки> например
Ну, горячая клавиша может быть любой. Лично у меня на CtrlD "висит" на диалоге перехода по BookMark-ам (заменитель NamedFolders, немного подработанный для себя).
Вообще-то, это уже было реализовано. Я не знаю, по умолчанию ли это, но у меня вызов диалогового режима настроен на AltQ:double. Правда, по Enter-у, почему-то, переход не происходит. Что-то сломалось, видимо …

citRiks
Posts: 450
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 135 times
Been thanked: 40 times

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

Post by citRiks »

buniak_a_h, в хелпе не вижу обьянений на эту тему, в самом скрипте есть "мышиные" макросы, клавиатуpных "AltQ:double" там кажется что нет.. может починить-добавить?
Last edited by citRiks on Fri 13 Mar, 2020 15:03, edited 1 time in total.

buniak_a_h
Posts: 1598
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 times
Contact:

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

Post by buniak_a_h »


Обратите внимание на строку Keyboard shortcut for the “dialog” mode: (и ниже).
Модификатор :double (и :hold) - доступны только при наличии скрипта MacroEx
В истории изменений это приписывается версии 1.4.6:

Code: Select all

 Версия 1.4.6 от 05.11.2019
  1. Реализован вызов диалогового режима комбинацией клавиш. По умолчанию вызывается по AltT:Double. Для таких возможностей требуется
     скрипт MacroEx.
  2. Реализована настройка сочетания клавиш, вызывающего «диалоговый» режим.

citRiks
Posts: 450
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 135 times
Been thanked: 40 times

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

Post by citRiks »

Так как у меня Alt<что-нибудь> нужны для модуля ПанельАутоФильтер(от ДжонДое), то АльтТ:double не работает, я поменял на CtrD:double.
Все круто, кроме того что у меня теперь рушиться модуль "rebind" (viewtopic.php?t=10376)

Code: Select all

╔════════════════════════════════════════════════════════════════════ Error ════════════════════════════════════════════════════════════════════╗
║ C:\Program Files\Far Manager\Plugins\LuaMacro\LuaMacro.dll:                                                                                   ║
║ ...ta\Roaming\Far Manager\Profile\Macros\modules\rebind.lua:47: attempt to index local 'file' (a nil value)                                   ║
║ Stack Traceback                                                                                                                               ║
║ ===============                                                                                                                               ║
║ (2) metamethod C function '__index'                                                                                                           ║
║ (3) Lua upvalue 'MakeUid' at file 'C:\Users\xxxxxx\AppData\Roaming\Far Manager\Profile\Macros\modules\rebind.lua:47'                           ║
║    Local variables:                                                                                                                           ║
║     file = nil                                                                                                                                ║
║     descr = string: ""                                                                                                                        ║
║     (*temporary) = C function: 0x01d78630                                                                                                     ║
║     (*temporary) = string: "≈%s: %s"                                                                                                          ║
║     (*temporary) = nil                                                                                                                        ║
║     (*temporary) = nil                                                                                                                        ║
║     (*temporary) = userdata: 0x03bd8588                                                                                                       ║
║     (*temporary) = string: "attempt to index local 'file' (a nil value)"                                                                      ║
║ (4) Lua upvalue 'AddRegularMacro' at file 'C:\Users\xxxxxx\AppData\Roaming\Far Manager\Profile\Macros\modules\rebind.lua:69'                   ║
║    Local variables:                                                                                                                           ║
║     m = table: 0x03bc0f78  {callbackId:userdata: 0x03bd8588, code:return, callback:userdata: 0x07feee44fc40 (more...)}                        ║
║     filename = nil                                                                                                                            ║
║     currentline = number: -1                                                                                                                  ║
║ (5) Lua function 'AddMacroFromFAR' at file 'C:\Program Files\Far Manager\Plugins\LuaMacro\utils.lua:1149' (best guess)                        ║
║    Local variables:                                                                                                                           ║
║     mode = number: 4                                                                                                                          ║
║     key = string: "MsWheelDown"                                                                                                               ║
║     lang = string: "lua"                                                                                                                      ║
║     code = string: "return"                                                                                                                   ║
║     flags = number: 0                                                                                                                         ║
║     description = string: ""                                                                                                                  ║
║     guid = table: 0x02eb2940  {1:��N� ⌂K��i,�6�M}                                                                                             ║
║     callback = userdata: 0x07feee44fc40                                                                                                       ║
║     callbackId = userdata: 0x03bd8588                                                                                                         ║
║     priority = number: 100                                                                                                                    ║
║     area = string: "Dialog"                                                                                                                   ║
║ (6) upvalue C function 'co_resume'                                                                                                            ║
║ (7) Lua upvalue 'MacroStep' at file 'C:\Program Files\Far Manager\Plugins\LuaMacro\LuaMacro.lua:246'                                          ║
║    Local variables:                                                                                                                           ║
║     handle = table: 0x03d17568  {coro:thread: 0x03a3d928}                                                                                     ║
║     status = string: "suspended"                                                                                                              ║
║     params = table: 0x04700070  {defline:1172, area:Shell, condition:function: 0x046ff2c0, id:EB3566AE-1046-4DEE-97C0-E2BAD78F3AA5 (more...)} ║
║     tp = string: "table"                                                                                                                      ║
║     (*temporary) = Lua function 'FixReturn' (defined at line 211 of chunk C:\Program Files\Far Manager\Plugins\LuaMacro\LuaMacro.lua)         ║
║     (*temporary) = table: 0x03d17568  {coro:thread: 0x03a3d928}                                                                               ║
║ (8) Lua function 'GetInputFromMacro' at file 'C:\Program Files\Far Manager\Plugins\LuaMacro\keymacro.lua:286' (best guess)                    ║
║    Local variables:                                                                                                                           ║
║     macro = table: 0x0312b4f0  {m_id:table: 0x04700010, m_area:1, m_flags:0, m_textkey:CtrlD, m_handle:table: 0x03d17568 (more...)}           ║
║     OldCurState = table: 0x03a39658  {MacroQueue:table: 0x03a396b8, HistoryDisableMask:0, IntKey:16777284}                                    ║
║     value = nil                                                                                                                               ║
╟───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢
║                                                                    { OK }                                                                     ║
╚═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
Но наверное это проблема больше самого rebind-a, напишу и туда
Last edited by citRiks on Fri 13 Mar, 2020 16:15, edited 1 time in total.

buniak_a_h
Posts: 1598
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 times
Contact:

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

Post by buniak_a_h »

citRiks wrote:
Fri 13 Mar, 2020 16:14
Так как у меня Alt<что-нибудь> нужны для модуля ПанельАутоФильтер
Вот потому и сделана настройка.
citRiks wrote:
Fri 13 Mar, 2020 16:14
теперь рушиться модуль "rebind"
От назначенного хоткея зависит? Может, назначить что-нить абсолютно экзотическое?

citRiks
Posts: 450
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 135 times
Been thanked: 40 times

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

Post by citRiks »

buniak_a_h wrote:
Fri 13 Mar, 2020 16:55
От назначенного хоткея зависит? Может, назначить что-нить абсолютно экзотическое?
Я вначале тоже так думал, что может он не любит одинарные нажатия, или двойные нажатия,
попробовал разное, и похоже что падает и будет падать на всех нажатиях :(
я даже порылся в самом rebind-e, но слишком сложно понять.
по идее, rebind все макросы пропускает через себя что-ли,
так как его цель блокировать макросы, или переназначать им нажатия,
и ни на каком другом макросе из уже пары сотен он у меня не падал.
думаю что JohnDoe все же скоро починит этот rebind.
И интересно, как все же вы смогли создать такой макрос,
который рушит стойкий ко всему остальному rebind? :)

buniak_a_h
Posts: 1598
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 times
Contact:

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

Post by buniak_a_h »

citRiks, позырил я rebind - у Вас, видимо, или уже переделанный, или наоборот - версия не 1.1.7 . Обоснование: в строке 47 ничего нету, а переменная file используется в функции MakeUid в строке 45. Судя по Вашему протоколу, сам MakeUid вызывается из функции AddRegularMacro, а я не нашёл её в скачанном rebind.lua. Возможно, требуется дополнительная настройка _macroinit.lia .
На самом деле проблему понять можно: при настройке хоткея я динамически (в процессе загрузки макросов) вызываю Macro с новым хоткеем. Возможно, как раз это и конфликтует с rebind.lua .
1. Перед строкой return ("≈%s: %s"):format(file:match"[^\\]+$",descr or 'nil') -- ±≠≡∞ƒ≈ в функции MakeUid добавьте строчку win.OutputDebugString('MakeUid: file='..tostring(file)) и посмотрите каким-нть DbgView что там приходит (вообще, не только для моего модуля)
2. Для "безопасной" работы замените в указанной строке file на (file or ''). Падать не будет, но, видимо, настройка ClickToTitleDir при помощи именно этого скрипта будет невозможна.

buniak_a_h
Posts: 1598
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 times
Contact:

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

Post by buniak_a_h »

citRiks, добавочка.
Судя по моему варианту rebind есть ещё несколько мест, в которых file==nil приведёт к краху. В частности, два вызова в функции editBadUid.

citRiks
Posts: 450
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 135 times
Been thanked: 40 times

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

Post by citRiks »

buniak_a_h,
rebind.lua.7z
(3.62 KiB) Downloaded 2 times
приаттачиваю свой ребинд, там вначале как и во многих других скриптх, я пишу так:

Code: Select all

-- if true then return end
-- (Строчка выше это нейтрaлизация скрипта)
поэтому и строка ошибки ниже на две позиции получается
и сейчас посмотрел, версия актуальная это "1.1",
"1.1.7" это видимо прилепившееся ".7Z" ?
у меня вроде актуальная
Last edited by citRiks on Fri 13 Mar, 2020 18:11, edited 1 time in total.

buniak_a_h
Posts: 1598
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 times
Contact:

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

Post by buniak_a_h »

Ну, как подстраховаться - Вы поняли. У себя устанавливать я пока не хочу. На реальной машине, во всяком случае.
Две добавленные строки не объясняют ссылку на отсутствующую функцию. Впрочем, это не имеет значения.

citRiks
Posts: 450
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 135 times
Been thanked: 40 times

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

Post by citRiks »

buniak_a_h wrote:
Fri 13 Mar, 2020 17:47
и посмотрите каким-нть DbgView что там приходит (вообще, не только для моего модуля)
для вашего скрипта получается :
[8744] MakeUid: file=nil
для других, цчто-то вроде:
[8744] MakeUid: file=<..>\Macros\scripts\MacroEx_test.lua

citRiks
Posts: 450
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 135 times
Been thanked: 40 times

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

Post by citRiks »

buniak_a_h wrote:
Fri 13 Mar, 2020 17:59
Судя по моему варианту rebind есть ещё несколько мест, в которых file==nil приведёт к краху. В частности, два вызова в функции editBadUid.
там тоже добавил (file or ''), перезагружался, почему-то ничего не поменялось
думаю пока оставим это, думаю ДжонДое починит лучше нас
Last edited by citRiks on Fri 13 Mar, 2020 18:38, edited 1 time in total.

Post Reply

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