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

Здесь обсуждается всё, что касается макросов.
buniak_a_h
Posts: 3211
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 469 times
Contact:

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

Post by buniak_a_h »

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

Начиная с этой версии я перестал выкладывать текст скрипта в сообщении (уж больно трудоёмко стало, т.к. он вырос). Тем более что “Select all” на сайте опять перестал работать. Теперь только во вложении в виде 7z-архива.
Сведения о версии:
Версия 1.4.11.
  1. Исправлена ошибка процедуры настройки, в результате которой не сохранялась «горячая клавиша» вызова диалогового окна.
  2. В настроечном диалоге вызов сервиса ввода «горячей клавиши» теперь вызывается по Ctrl+↓ в поле текстового ввода
ClickToTitleDir-1.4.11.7z
(25.03 KiB) Downloaded 60 times

Вместе с файлом самого скрипта поставляются языковые файлы ClickToTitleDirRus.lng и ClickToTitleDirEng.lng и файл помощи ClickToTitleDirRus.hlf.
Last edited by buniak_a_h on Tue 19 Jan, 2021 23:50, edited 68 times in total.
User avatar
John Doe
Бюрократ
Posts: 13387
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 54 times
Been thanked: 350 times

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

Post by John Doe »

Latest post of the previous page:

buniak_a_h wrote: Mon 04 May, 2020 10:59 чтение с консоли текста и цвета.
Пример чтения текста (но не цвета) есть в скрипте BufferScroll.
https://t.me/FarManager — Telegram чат
buniak_a_h
Posts: 3211
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 469 times
Contact:

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

Post by buniak_a_h »

John Doe wrote: Mon 04 May, 2020 11:05 Пример чтения текста (но не цвета) есть в скрипте BufferScroll.
Спасибо, конечно, но… Есть и в ClickToTiltleDir-е. Я же читаю с консоли! Разве не Вы назвали мой первый вариант (через граббер) "варварским"?
buniak_a_h
Posts: 3211
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 469 times
Contact:

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

Post by buniak_a_h »

Версия 1.4.10:
Изменён алгоритм синтаксического разбора строки заголовка для корректной обработки времени, заданного в американском формате (2:10 AM) при клике по правой панели
User avatar
citRiks
Posts: 1612
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 502 times
Been thanked: 95 times

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

Post by citRiks »

спасибо за скрипт.
незаменим в некотрых ситуациях, у меня это когда работа в терминале и надо скопиpовать путь директории
а в терминалах всякие ctrl-alt-.. работают криво, и ctrl-alt-insert ничего не скопирует.

И у меня еще кстати начала случаться такая ошибка:

Code: Select all

╔═════════════════════════════════════════════════════════════════════════ Error [used: 6392 KB] ═════════════════════════════════════════════════════════════════════════╗
║ [?]:...cros\scripts\ClickToTitleDir\ClickToTitleDir_v1-4-10.lua:312: bad argument #2 to 'ReadConsoleOutputCharacterW' (cannot convert 'unsigned short [?]' to 'char *') ║
║ stack traceback:                                                                                                                                                        ║
║ [C]: at 0x6ab5b130                                                                                                                                                      ║
║ [C]: in function 'ReadConsoleOutputCharacterW'                                                                                                                          ║
║ [?]:...cros\scripts\ClickToTitleDir\ClickToTitleDir_v1-4-10.lua:312: in function 'ReadConsoleLine'                                                                      ║
║ [?]:...cros\scripts\ClickToTitleDir\ClickToTitleDir_v1-4-10.lua:684: in function 'condition'                                                                            ║
║ [J1]:...ogram Files (x86)\Far Manager\Plugins\LuaMacro\utils.lua:1065:                                                                                                 ║
║ in function 'GetMacro'                                                                                                                                                  ║
║ [J2]:...am Files (x86)\Far Manager\Plugins\LuaMacro\keymacro.lua:344:                                                                                                  ║
║ in function <...am Files (x86)\Far Manager\Plugins\LuaMacro\keymacro.lua:343>                                                                                           ║
║ ===ADDITIONAL=== C func 'function: 0x07944698'                                                                                                                          ║
║ 2#==field C func 'ReadConsoleOutputCharacterW'                                                                                                                          ║
║ 3#==field 'ReadConsoleLine' at <%FARPROFILE%\Macros\scripts\ClickToTitleDir\ClickToTitleDir_v1-4-10.lua$312>                                                            ║
║ 3#312:local res = C.ReadConsoleOutputCharacterW(hConsoleOutput,lpCharacter,nLength-1,dwReadCoord,lpNumberOfCharsRead)                                                   ║
║ 3|x = NUM:0                                                                                                                                                             ║
║ 3|y = NUM:0                                                                                                                                                             ║
║ 3|nLength = NUM:209                                                                                                                                                     ║
║ 3|info = TBL:0x07945310{MaximumWindowSizeX:208,WindowBottom:4999,WindowTop:4936,CursorPositionY:4998,SizeX:208,WindowLeft:0, (more..)}                                  ║
║ 3|InInterval = func 'InInterval' def at 297-300 of chunk <...cros\scripts\ClickToTitleDir\ClickToTitleDir_v1-4-10.lua>                                                  ║
║ 4#==field 'condition' at <%FARPROFILE%\Macros\scripts\ClickToTitleDir\ClickToTitleDir_v1-4-10.lua$684>                                                                  ║
║ 4#684:local Line = TrimBrClock(BAX.ReadConsole.ReadConsoleLine(nil, Y0()))                                                                                              ║
║ 4|key = STR:"AltD"                                                                                                                                                      ║
║ 4|Ainfo = TBL:0x07944df8{ViewMode:4,SortMode:15,PanelType:0,PanelRect:TBL:0x07944fa8,TopPanelItem:1,ItemsNumber:7,Flags:12583, (more..)}                                ║
║ 4|(*temporary) = func 'TrimBrClock' def at 598-610 of chunk <...cros\scripts\ClickToTitleDir\ClickToTitleDir_v1-4-10.lua>                                               ║
║ 5#==field 'GetMacro' at <C:\Program Files (x86)\Far Manager\Plugins\LuaMacro\utils.lua$1065>                                                                            ║
║ 5#1065:local pr = m.condition(argKey, m.data) -- unprotected call                                                                                                       ║
║ 5|argMode = NUM:1                                                                                                                                                       ║
║ 5|argKey = STR:"AltD"                                                                                                                                                   ║
║ 5|argUseCommon = BIN:true                                                                                                                                               ║
║ 5|argCheckOnly = BIN:false                                                                                                                                              ║
║ 5|area = STR:"shell"                                                                                                                                                    ║
║ 5|key = STR:"laltd"                                                                                                                                                     ║
║ 5|Names = TBL:0x079446b8{1:shell,2:common}                                                                                                                              ║
║ 5|Collector = TBL:0x079446f8{table: 0x081c1ee0:1,table: 0x076416a8:3}                                                                                                   ║
║ 5|CInfo = TBL:0x07944720{1:50,2:shell,3:50,4:shell}                                                                                                                     ║
║ 5|filename = BIN:false                                                                                                                                                  ║
║ 5|ExamineMacro = func 'ExamineMacro' def at 1022-1032 of chunk <...ogram Files (x86)\Far Manager\Plugins\LuaMacro\utils.lua>                                            ║
║ 5|max_priority = NUM:-1                                                                                                                                                 ║
║ 5|nummacros = NUM:0                                                                                                                                                     ║
║ 5|(for generator) = C function:next                                                                                                                                     ║
║ 5|(for state) = TBL:0x079446f8{table: 0x081c1ee0:1,table: 0x076416a8:3}                                                                                                 ║
║ 5|(for control) = NUM:nan                                                                                                                                               ║
║ 5|m = TBL:0x081c1ee0{area:Shell,id:EB3566AE-1046-4DEE-97C0-E2BAD78F3AA5,index:881, (more..)}                                                                            ║
║ 5|p = NUM:1                                                                                                                                                             ║
║ 6#==FNC 'TryToPostMacro' at <C:\Program Files (x86)\Far Manager\Plugins\LuaMacro\keymacro.lua$344> (best guess)                                                         ║
║ 6#344:local m = utils.GetMacro(Mode, TextKey, true, false)                                                                                                              ║
║ 6|Mode = NUM:1                                                                                                                                                          ║
║ 6|TextKey = STR:"AltD"                                                                                                                                                  ║
║ 6|IntKey = NUM:3.35545e+07                                                                                                                                              ║
║                                                                                                                                                                         ║
╟─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢
║                                                                           { OK } [ 1 ] [ 2 ]                                                                            ║
╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
User avatar
citRiks
Posts: 1612
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 502 times
Been thanked: 95 times

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

Post by citRiks »

Одинаково падает на таких версиях ФАРа:
Far Manager, version 3.0.5718.0 x64
Far Manager, version 3.0.5675.0 x86
Far Manager, version 3.0.5687.0 x86
Far Manager, version 3.0.5730.0 x86 ("latest night build")
Windows 7 SP1, х86/х64, Хоме/Проф.

Проверял на двух компах - одно и то же
некоторые проверенные версии ФАРа не самые новые,
и я что-то не совсем понимаю почему я раньше не падало,
вроде совсем не давно ведь пользовался
Last edited by citRiks on Tue 19 Jan, 2021 20:01, edited 1 time in total.
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
buniak_a_h
Posts: 3211
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 469 times
Contact:

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

Post by buniak_a_h »

citRiks wrote: Tue 19 Jan, 2021 19:51 И у меня еще кстати начала случаться такая ошибка:
Это вылет в C-шной программе или оболочке к ней (ffi, что ли). Я стибрил этот код уж не помню откуда. Ну, чуть-чуть переделал.
Посмотрите, вот что я нашёл. Похоже, вопрос к мелкомягким… Ну, или я не знаю. Этот параметр - адрес буфера для чтения с консоли. Может, у Вас изменились настройки консоли?
User avatar
citRiks
Posts: 1612
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 502 times
Been thanked: 95 times

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

Post by citRiks »

забыл сказать, случается эта беда когда я делаю "Alt-D",
это переход в режим как-бы редактривание вашей строки адреса

какая-то сложная заморочка, перестала работать ReadConsoleOutputCharacterW:
ReadConsoleOutputCharacterW' (cannot convert 'unsigned short [?]' to 'char *')
С этим не знаю можете ли вы помочь, но полезно знать повторяется это у других или нет
Скрипт последний ваш 1-4-10, без каких либо модификаций.
может виноват плугин какой..
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
User avatar
citRiks
Posts: 1612
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 502 times
Been thanked: 95 times

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

Post by citRiks »

buniak_a_h,
ничего не пменял в последние месяцы, и точно что не на двух компах, хотя может что и было
Visual Studio Code устанавливал, может она чего меняет в консоли, но вряд ли же
Нипонятна ..
..
убрал все плугина добавленные за прошедший год, не помогло это
ладно, потом придется экспериментривоать,
но подтвердите что у вас работает?
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
buniak_a_h
Posts: 3211
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 469 times
Contact:

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

Post by buniak_a_h »

P/S. Есть что-то лишнее в моем скрипте. Там, похоже, переменной lpCharacter присваивается одно значение, а затем - другое. Строку 304 можно, наверно, закомментировать. Функция скопирована из моего же модуля, но более общая. Поэтому там есть "лишние" аргументы. Можно бы оптимизировать, но неохота. Ну не повторяется у меня!
buniak_a_h
Posts: 3211
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 469 times
Contact:

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

Post by buniak_a_h »

citRiks, P/S. Вы не сказали, что беда в диалоговом режиме. Сейчас проверю.
buniak_a_h
Posts: 3211
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 469 times
Contact:

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

Post by buniak_a_h »

citRiks, на всякий случай укажите параметры консоли (ширина, высота буфера, экрана) и размер ФАРа (lua:=Far.Width, Far.Height). Там пересчёт координат. Хотя размер буфера всяко ни от чего не зависит…
buniak_a_h
Posts: 3211
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 469 times
Contact:

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

Post by buniak_a_h »

Версия 1.4.11.
  1. Исправлена ошибка процедуры настройки, в результате которой не сохранялась «горячая клавиша» вызова диалогового окна.
  2. В настроечном диалоге вызов сервиса ввода «горячей клавиши» теперь вызывается по Ctrl+↓ в поле текстового ввода
Last edited by buniak_a_h on Tue 19 Jan, 2021 23:47, edited 2 times in total.
buniak_a_h
Posts: 3211
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 469 times
Contact:

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

Post by buniak_a_h »

citRiks wrote: Tue 19 Jan, 2021 20:34 но подтвердите что у вас работает?
Как из пушки! Ну, т.е. всё как заявлено.
Я немного упростил функцию чтения с консоли. Попробуйте взять версию 1.4.11 . Хотя я не думаю, что изменения могут как-то повлиять.
User avatar
citRiks
Posts: 1612
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 502 times
Been thanked: 95 times

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

Post by citRiks »

buniak_a_h,
спосиба, взял
там помогает замена wchar_t[?] на char[?]
но надо тогда пересчитать wsize, и еще какие-то путаницы возникают.
были после этого вылеты, но уже не на этой функции, вроде вылеты победил.
пока просто получается кривое расположение, но думаю что порпавимо
Хотелось бы комментарии/консультации местных сишников (в идеале @DrkNs) но не смею надеятся
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
buniak_a_h
Posts: 3211
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 469 times
Contact:

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

Post by buniak_a_h »

citRiks wrote: Wed 20 Jan, 2021 09:57 помогает замена wchar_t[?] на char[?]
Ну вот видите! Я даже не знаю, что такое wchar_t …
User avatar
John Doe
Бюрократ
Posts: 13387
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 54 times
Been thanked: 350 times

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

Post by John Doe »

citRiks wrote: Wed 20 Jan, 2021 09:57 но не смею надеятся
И правильно делаете.
Чтобы иметь надежду надо предоставить минимальный пример, вызывающий проблему.

А сама функция насколько я понимаю изначально скопирована из BufferScroll.lua.
Поскольку там с ней проблем нет, предполагаю что проблема в неправильном её использовании.
https://t.me/FarManager — Telegram чат
Post Reply

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