Зависание и последующий вылет при поиске с регулярками по целым словам в редакторе

Здесь можно сообщить о найденных багах в Far.
User avatar
HaRT
Moderator
Posts: 11458
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

Зависание и последующий вылет при поиске с регулярками по целым словам в редакторе

Post by HaRT »

Latest post of the previous page:

zg wrote: Thu 18 Sep, 2025 22:36 это проблемы скрипта, а не фара. пишите в теме скрипта. там зачем-то для плагинового списка вызывается Menu.GetItemExtendedData
Странно, что-то я в RESearch.lua вообще не вижу ничего подобного.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
zg
zero-gravity
Posts: 6207
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 206 times
Contact:

Зависание и последующий вылет при поиске с регулярками по целым словам в редакторе

Post by zg »

HaRT wrote: Thu 18 Sep, 2025 23:07Странно, что-то я в RESearch.lua
речь про EditorFindAllList.lua.
Volodya
Posts: 324
Joined: Thu 31 Mar, 2005 19:41
Has thanked: 71 times
Been thanked: 2 times

Зависание и последующий вылет при поиске с регулярками по целым словам в редакторе

Post by Volodya »

Неожиданно вылетел с таким
Действия такие. Выбираем в резакторе слово. Вызываю по F7 поиск из ReSearch.lua (прилагается). Это просто переопределение клавиш. Выбираю Show All

Рискую навлечь на себя гнев администрации, но изначально тема была в viewtopic.php?t=11977
Attachments
RESearch.lua
(2.27 KiB) Downloaded 6 times
User avatar
zg
zero-gravity
Posts: 6207
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 206 times
Contact:

Зависание и последующий вылет при поиске с регулярками по целым словам в редакторе

Post by zg »

Volodya wrote: Fri 19 Sep, 2025 00:04Рискую навлечь на себя гнев администрации, но изначально тема была в
гнев уже есть. в изначальном вашем сообщении не было упоминания плагина.
User avatar
buniak_a_h
Posts: 4565
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 242 times
Been thanked: 674 times
Contact:

Зависание и последующий вылет при поиске с регулярками по целым словам в редакторе

Post by buniak_a_h »

Volodya wrote: Fri 19 Sep, 2025 00:04 … … … Действия такие. … … …
zg wrote: Fri 19 Sep, 2025 00:36 гнев уже есть. в изначальном вашем сообщении не было упоминания плагина
Вот тоже! Что ж Вы так неаккуратненько? Я ищу ошибку в скрипте, она не повторяется, а оказывается - проявляется только при поиске по RESearch !!!
Но зато нашли ошибку в стандартном поиске…
User avatar
zg
zero-gravity
Posts: 6207
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 206 times
Contact:

Зависание и последующий вылет при поиске с регулярками по целым словам в редакторе

Post by zg »

Kadaner wrote: Wed 17 Sep, 2025 04:36А которое из них устаревшее?
база plugin api. всё, что не является прямым или косвенным отражением plugin api — либо устаревшее, либо экспериментальное.
User avatar
Kadaner
Posts: 70
Joined: Sun 28 Jan, 2018 05:00
Has thanked: 7 times
Been thanked: 3 times

Зависание и последующий вылет при поиске с регулярками по целым словам в редакторе

Post by Kadaner »

zg wrote: Fri 19 Sep, 2025 20:26 база plugin api. всё, что не является прямым или косвенным отражением plugin api — либо устаревшее, либо экспериментальное.
Простите, уточню. То есть, надо добавлять месседжи в enum FARMESSAGE в plugin.hpp? Пара вопросов:
  1. Надо ли дублировать всё это в pluginold.hpp и PluginA.cpp?
  2. Всё, что происходит в macroopcode.hpp и macroapi.cpp — это отражение, устаревшее или экспериментальное?
С точки зрения использования в Lua, мне нравится функция Menu.GetItemExtendedData (кроме того факта, что она работает только когда меню видно). Как это сделать правильно? Добавить месседж в plugin.hpp, а потом реализовать MCODE_F_MENU_GETEXTENDEDDATA при помощи этого месседжа?
User avatar
zg
zero-gravity
Posts: 6207
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 206 times
Contact:

Зависание и последующий вылет при поиске с регулярками по целым словам в редакторе

Post by zg »

Kadaner wrote: Sat 20 Sep, 2025 01:37Надо ли дублировать всё это в pluginold.hpp и PluginA.cpp?
нет.
Kadaner wrote: Sat 20 Sep, 2025 01:37Всё, что происходит в macroopcode.hpp и macroapi.cpp — это отражение, устаревшее или экспериментальное?
устаревшее и экспериментальное. отражение происходит в luamacro, это ж плагин, ему всё апи доступно.
Kadaner wrote: Sat 20 Sep, 2025 01:37Как это сделать правильно?
сложный вопрос. моё личное мнение: апи по возможности должно быть универсальным и не закадываться на внутренности фара. по факту всё не так просто. GetItemExtendedData очень узкоспециализированная вещь и очень сомнительно, что кто-то будет писать на каком-нибудь си или паскале плагин, расширяющий функционал меню поиска. наверное, стоит рассматривать такие вещи, как расширенный вариант настройки. и возможно в принципе стоит развивать это направление.
Kadaner wrote: Sat 20 Sep, 2025 01:37кроме того факта, что она работает только когда меню видно
это не то чтобы какая-то реальная проблема, просто исторически все Menu/Panel/Dialog и т.д. они простые, без всех этих хендлов и т.д. и с одной стороны и с логичностью и консистентностью не очень хорошо. с другой стороны можно попробовать передавать опционально первым параметром hdlg. т.е. GetItemExtendedData(hdlg,1) и GetItemExtendedData(1) вполне ж различимы.
User avatar
Kadaner
Posts: 70
Joined: Sun 28 Jan, 2018 05:00
Has thanked: 7 times
Been thanked: 3 times

Зависание и последующий вылет при поиске с регулярками по целым словам в редакторе

Post by Kadaner »

zg wrote: Fri 26 Sep, 2025 21:48
Kadaner wrote: Sat 20 Sep, 2025 01:37 Как это сделать правильно?
сложный вопрос. моё личное мнение: апи по возможности должно быть универсальным и не закадываться на внутренности фара. по факту всё не так просто. GetItemExtendedData очень узкоспециализированная вещь и очень сомнительно, что кто-то будет писать на каком-нибудь си или паскале плагин, расширяющий функционал меню поиска. наверное, стоит рассматривать такие вещи, как расширенный вариант настройки. и возможно в принципе стоит развивать это направление.
Мне кажется, что GetItemExtendedDataSetItemExtendedData, которое я собираюсь приделать по просьбе rohitab), не так уж узкоспециальны. Это дополнительный контракт, предоставляемый хозяином меню скрипту, написанному на Lua. Здесь хозяин меню — это не диалог или VMenu контрол, а тот компонент, который создал меню и собирается что-то делать с пользовательским выбором. Детали этого контракта зависят от конкретного меню (и хозяина). Например, хозяин меню кодовых страниц мог бы непосредственно предоставить доступ к номеру кодовой страницы, чтобы скрипт не был вынужден выковыривать его из текста элемента меню. То, что на другой стороне этого контракта Lua скрипт, не случайно. Именно Lua с его динамическими типами очень подходит для обмена разнородными плохо типизированными данными. Конечно, любой плагин, написанный на C++, может разобрать или создать структуру данных, эквивалентную Lua таблице, но на Lua это так просто и естественно.

Поскольку GetItemExtendedData очень Lua-ориетировано, и не вполне ясно, стоит ли развивать это направление, я предлагаю оставить имплементацию как есть и не добавлять соответствующий плагин API, по крайней мере пока. Пусть оно (и SetItemExtendedData) побудет экспериментальным.
zg wrote: Fri 26 Sep, 2025 21:48 можно попробовать передавать опционально первым параметром hdlg.
Я думал об этом. Идея мне нравится, постараюсь её реализовать, когда будет время.
User avatar
zg
zero-gravity
Posts: 6207
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 206 times
Contact:

Зависание и последующий вылет при поиске с регулярками по целым словам в редакторе

Post by zg »

Kadaner wrote: Sun 28 Sep, 2025 19:12Это дополнительный контракт, предоставляемый хозяином меню скрипту, написанному на Lua.
это же речь исключительно про меню, создаваемые самим фаром. у плагина ж не получится так сделать.
Kadaner wrote: Sun 28 Sep, 2025 19:12я предлагаю оставить имплементацию как есть
я согласен.
Kadaner wrote: Sun 28 Sep, 2025 19:12Идея мне нравится, постараюсь её реализовать, когда будет время.
я сделал уже, слегка надо причесать и закомичу. я выше писал: исторически все Menu/Panel/Dialog и т.д. они простые, без всех этих хендлов. вот это не совсем правда. сейчас там в качестве параметров только числа и строки. поэтому, видимо, ничего другое особо и не использовалось.
User avatar
Kadaner
Posts: 70
Joined: Sun 28 Jan, 2018 05:00
Has thanked: 7 times
Been thanked: 3 times

Зависание и последующий вылет при поиске с регулярками по целым словам в редакторе

Post by Kadaner »

zg wrote: Sun 28 Sep, 2025 19:25 это же речь исключительно про меню, создаваемые самим фаром. у плагина ж не получится так сделать.
Дык, когда будет SetItemExtendedData, любой скрипт сможет добавлять дополнительные данные к меню, которое он создал. А другой скрипт сможет эти данные использовать. А корда (если) приделать плагин апи, то и плагины смогут участвовать.
User avatar
zg
zero-gravity
Posts: 6207
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 206 times
Contact:

Зависание и последующий вылет при поиске с регулярками по целым словам в редакторе

Post by zg »

Kadaner wrote: Sun 28 Sep, 2025 20:24Дык, когда будет SetItemExtendedData, любой скрипт сможет добавлять дополнительные данные к меню, которое он создал.
я про текущее состояние, когда это всё будет, очевидно, что специализация расширится.

с 6564/896 можно так писать: if FarDialogEvent.Msg == F.DN_INITDIALOG then Menu.GetItemExtendedData(FarDialogEvent.hDlg,1) end.
User avatar
Kadaner
Posts: 70
Joined: Sun 28 Jan, 2018 05:00
Has thanked: 7 times
Been thanked: 3 times

Зависание и последующий вылет при поиске с регулярками по целым словам в редакторе

Post by Kadaner »

zg wrote: Sun 28 Sep, 2025 21:20 с 6564/896 можно так писать: if FarDialogEvent.Msg == F.DN_INITDIALOG then Menu.GetItemExtendedData(FarDialogEvent.hDlg,1) end.
Спасибо. Я тут попробовал. К сожалению, Menu.GetItemExtendedData — это не единственная функция, в которую надо добавить опциональный параметр hDlg. В конкретном скрипте (Edit.SyncEditorAndFindAllMenu.lua) ещё нужен Object.ItemCount. А вообще, вероятно, надо добавить параметр hDlg в CurPos, Title, Height, Width и, возможно, в Bof, Eof, Empty, Selected и куда-то ещё.

Я не уверен, что оно того стоит, по крайней мере для этой экспериментальной фичи. Трюк с mf.postmacro вполне работает.
User avatar
zg
zero-gravity
Posts: 6207
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 206 times
Contact:

Зависание и последующий вылет при поиске с регулярками по целым словам в редакторе

Post by zg »

Kadaner wrote: Mon 29 Sep, 2025 01:24ещё нужен Object.ItemCount
не нужен. есть что-то типа FarDialogEvent.hDlg:send(F.DM_LISTINFO,1).ItemsNumber.
Kadaner wrote: Mon 29 Sep, 2025 01:24надо добавить параметр
всё можно получить через send.
User avatar
buniak_a_h
Posts: 4565
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 242 times
Been thanked: 674 times
Contact:

Зависание и последующий вылет при поиске с регулярками по целым словам в редакторе

Post by buniak_a_h »

Kadaner wrote: Sat 20 Sep, 2025 01:37 Как это сделать правильно?
КМК, правильнее всего было бы чтобы эта информация была доступна через вызов DM_LISTGETDATA.
А обращение к пропертям/методам из таблиц типа Dlg, Menu, Panel кажутся и устаревшими, и несколько "странными" - не всегда доступны
User avatar
zg
zero-gravity
Posts: 6207
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 206 times
Contact:

Зависание и последующий вылет при поиске с регулярками по целым словам в редакторе

Post by zg »

buniak_a_h wrote: Mon 29 Sep, 2025 04:15и несколько "странными" - не всегда доступны
я же даже в этом топике описал причины. никакой странности нет.
Post Reply

Return to “Глюки и баги”