LuaTmpPanel plugin и его (ограниченная) поддержка

Место, где разработчики плагинов могут поделиться своим опытом.
citRiks
Posts: 249
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 87 times
Been thanked: 26 times

Хочу поучиться.

Post by citRiks »

Latest post of the previous page:

Отмечу еще вот что, LuaOnlyTmpPanel@IgorZ (назовем его так) ведет себя плохо в такой ситуации:

1.) Делаем на нем QuickView
2.) Двигаем размер панелей по Ctrl-<Left/Right>, или вручную, или макросом вроде этого: viewtopic.php?f=15&t=8710
3.) Получаем очень медленную реакцию, нa секунд 5-10, особенно заметную при использовании макроса,
но вполне заметную и ручным способом тоже

А вот в этом LuaDLLTmpPanel@ShmuZ (назовем его так) таких тормозов нет,
все происходит мгновенно, как и в нативной панели

И вот интересно, с чем это связано?
варианты могут быть такие:
* Сам Lua-Only плагин (или правильнее называть "модуль"?) кривовато написан (неэффективный код?)
* Сама природа Lua-Only плагинов подтормаживает? (в сравнении с Lua+DLL подходом)
* Какая-то другая причина?

LuaOnlyTmpPanel@IgorZ здесь: viewtopic.php?f=60&t=11605,
но требует патчей которые на последней (6-й) странице
(пока не интегрированы в заголовочный скрипт-модуль)
Last edited by citRiks on Sat 15 Feb, 2020 10:48, edited 7 times in total.

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

Хочу поучиться.

Post by John Doe »

citRiks wrote:
Sat 15 Feb, 2020 09:55
Т.е., то что вы предлагаете:
на диалоге результатов, (но еще не в панели результатов), нажимаем некое key-sequence,
и получем результаты в ЛуаТмпПанели?
Тоже об этом думал, но мало чего придумал, надо копать, когда докопаю - не знаю
Впрочем и сейчас, надо всего лишь нажать одну лишню клавишу в выборе
Нет, не это.
По умолчанию я хочу обходиться без выбора, т.е.
1. Параметры-> Параметры менеджера плагинов -> [ ] Результаты поиска
А когда нужно я хочу иметь возможность эту опцию активировать.
В произвольный момент, не покидая текущий контекст.
А на основе этой возможности уже совсем несложно реализовать что угодно, включая и то что пытаетесь вы.
John Doe wrote:
Sat 15 Feb, 2020 11:10
По умолчанию я хочу обходиться без выбора
Объясню почему.
Выбор возможно и автоматизировать. Проблема в другом: в этом режиме открытие происходит намного дольше.
Впрочем, я имею ввиду общий случай, а в поиске может и нечему тормозить.
Last edited by John Doe on Sat 15 Feb, 2020 11:13, edited 1 time in total.
https://t.me/FarManager — Telegram чат

citRiks
Posts: 249
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 87 times
Been thanked: 26 times

Хочу поучиться.

Post by citRiks »

John Doe,
ну я так и понял, а вы меня перфразировали, но более удачно и визуальнее :)

В общем случае - может быть, а в поиске вроде не должен тормозить,
он кажется что просто получает результаты поиска а не ищет заново, и не роется особо в аттрибутах.
А результаты кажется что передавать по времени все равно,
штатному ли ТмпПанели, или ЛуаТмпПанели, по крайней мере это было бы логично (?)
Хотя тут я возможно недопонял опять, несмотря на ваши усилия обьяснить? извиняюсь коли так..
Last edited by citRiks on Sat 15 Feb, 2020 11:24, edited 1 time in total.

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

Хочу поучиться.

Post by John Doe »

citRiks wrote:
Sat 15 Feb, 2020 11:23
штатному ли ТмпПанели, или ЛуаТмпПанели, по крайней мере это было бы логично (?)
Хотя тут я возможно недопонял опять, несмотря на ваши усилия обьяснить? извиняюсь коли так..
Именно так, для поиска думаю можно было бы просто включить выбор.
И добавить скрипт, перехватывающий событие открытия меню выбора.
https://t.me/FarManager — Telegram чат

citRiks
Posts: 249
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 87 times
Been thanked: 26 times

Хочу поучиться.

Post by citRiks »

Shmuel, Сделаю такой репорт пожалуй
Mне не к спеху, но если и когда найдете время - буду благодарен.
Использую ФАР как отдельный Viewer/Editor, вот так например: far -e changelog -m
и вот такая беда происходит:

Из идей как чинить - наверное, можно предусмотреть на стадии загрузке Плагина в Луа-Коде проверить параметры запуска ФАРа,
и если там есть "-e/-v", то выходим не загружаясь, наверное.
Но тут вопрос падает он доходя до кода Луа, или не доходя, или ему все равно что написать в Луа-инициаторе, все равно упадет?
Last edited by citRiks on Sat 15 Feb, 2020 15:35, edited 1 time in total.

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

Хочу поучиться.

Post by John Doe »

citRiks wrote:
Sat 15 Feb, 2020 15:30
Сделаю такой репорт пожалуй
Репорт хороший, но не в той теме
https://t.me/FarManager — Telegram чат

Shmuel
Posts: 6031
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 27 times
Been thanked: 294 times

Хочу поучиться.

Post by Shmuel »

citRiks wrote:
Sat 15 Feb, 2020 15:30
Сделаю такой репорт пожалуй
Не воспроизводится с чистым профилем ни на x86 ни на x64 (правда номера билдов Фара немного отличаются от вашего).
P.S. И на 5555 x64 (то есть как у вас) не воспроизводится. Windows 10, если что.
Last edited by Shmuel on Sat 15 Feb, 2020 16:14, edited 1 time in total.

citRiks
Posts: 249
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 87 times
Been thanked: 26 times

Хочу поучиться.

Post by citRiks »

John Doe,
И в какой надо теме?
Shmuel,
С чистым у меня тоже Ок, я же грешным делом думал что параметр -М и -clearcache решают проблему чистого профиля.
прошу прощения, и больше так не буду.
Оказывается, даже без макросов грузится LuaFAr_init.Lua, а там у меня есть некое такое:

Code: Select all

panel.GetUserScreen()
print('"'..win.Uuid(win.Uuid()):upper()..'"')
panel.SetUserScreen()
и вот на эти SetUserScreen\GetUserScreen в LuaFAr_init.Lua и происходит такая реакция
T.e. спасибо, все теперь работает как надо!
PS
У меня Windows 7 x64 Professional SP1, в след. раз буду это тоже отмечать, сорри
Last edited by citRiks on Sat 15 Feb, 2020 17:06, edited 3 times in total.

Shmuel
Posts: 6031
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 27 times
Been thanked: 294 times

Хочу поучиться.

Post by Shmuel »

citRiks wrote:
Sat 15 Feb, 2020 17:01
и вот на эти SetUserScreen\GetUserScreen в LuaFAr_init.Lua и происходит такая реакция
Увы, у меня и с этим не падает. Гуиды на экране печатаются и запускается редактор или вьювер в зависимости от указанного ключа.

P.S. В принципе механизм падения более-менее понятен (хоть у меня и не воспроизводится). Вызываются функции panel.XX() что в переводе на Far API будет FCTL_XX, в то время, когда панели не созданы. Фар мог бы проверять ситуацию в функциях FCTL_XX.
Last edited by Shmuel on Sat 15 Feb, 2020 17:22, edited 1 time in total.

citRiks
Posts: 249
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 87 times
Been thanked: 26 times

Хочу поучиться.

Post by citRiks »

Shmuel,
Интересно.
Я теперь чищу и локальный профиль
После чистки локального и нелокального, первый раз запускается Ок
А на второй раз получается то же самое.
Но, иногда, далеко не всегда, при первом запуске выскакивает красное ообщение о том что не может найти и что-то сделать с каким-то неназванным файлом.
Последние десять раз я не могу поймать это сообщение.
Упс, теперь поймалось:

Code: Select all

      ╔══════════════════════════════ Error ══════════════════════════════╗
      ║                  Cannot update file descriptions                  ║
      ╟───────────────────────────────────────────────────────────────────╢
      ║ Can't replace the file: Unable to remove the file to be replaced. ║
      ╟───────────────────────────────────────────────────────────────────╢
      ║                              { OK }                               ║
      ╚═══════════════════════════════════════════════════════════════════╝


Far Manager, version 3.0.0.5555 x64
Copyright c 1996-2000 Eugene Roshal, Copyright c 2000-2020 Far Group

citRiks
Posts: 249
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 87 times
Been thanked: 26 times

Хочу поучиться.

Post by citRiks »

А проблемный luafar_init.lua у меня теперь такой:

Code: Select all

panel.GetUserScreen()
panel.SetUserScreen()
И стоит его лишь убрать, то все происходит гладко и всегда..
Last edited by citRiks on Sat 15 Feb, 2020 17:32, edited 1 time in total.

citRiks
Posts: 249
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 87 times
Been thanked: 26 times

Хочу поучиться.

Post by citRiks »

Позаимствовал y XeRoX'a такой скрипт, проверен, свою работу делает:
https://github.com/dr-dba/LUA-FAR-STUFF ... r_test.bat
https://github.com/dr-dba/LUA-FAR-STUFF ... params.bat
запускается так:

Code: Select all

far_test.bat 0 c:\temp\far-test-prof c:\temp\far-test-prof-local
Первый параметр - чистить или не чистить профайлы, далее пути к профайлам.
Если параметров нет, то создаем оба профайла в рандомных директориях в ТЕМПе.
Запускаю извне ФАРа, проблема всегда воспроизводится

Ну наверное какой-то из плагинов как-то "пакостит".
Их у меня много уже наставлено, видимо теперь нужен скрипт для загрузки берущий лишь какую-то часть плагинов, и далее инкрементально ..
Last edited by citRiks on Sat 15 Feb, 2020 18:16, edited 2 times in total.

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

Хочу поучиться.

Post by John Doe »

citRiks wrote:
Sat 15 Feb, 2020 17:01
И в какой надо теме?
В заголовке которой присутствует название плагина.
https://t.me/FarManager — Telegram чат

Shmuel
Posts: 6031
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 27 times
Been thanked: 294 times

Хочу поучиться.

Post by Shmuel »

citRiks, персонально для вас :) приложен плагин с родными DLL-ками. Они предпочтительней переименованной luamacro.dll в некоторых отношениях (не буду вдаваться в подробности).
--
lftmppanel.7z
(36.8 KiB) Downloaded 15 times

citRiks
Posts: 249
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 87 times
Been thanked: 26 times

Хочу поучиться.

Post by citRiks »

Shmuel,
Я еще вчера был тронут до глубины души вашей и и DrKns'a ответственностью и оперативностью! (viewtopic.php?p=159012) :)
И я довольно счастлив что обошлось без выяснения совместимостей с двадцаткой других плагинов.

citRiks
Posts: 249
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 87 times
Been thanked: 26 times

Хочу поучиться.

Post by citRiks »

Теперь ЛуаТмпПанель не падает при Get/SetUserScreen() в LuaFar_Init.Lua
Cледующий на очереди LFSearch, падает похожим образом,
при открытии ФАРа в режиме редактора\просмотра, на чистом профайле:

Code: Select all

╔══════════════════════════════ Exception occurred ══════════════════════════════╗
║ Exception:   0xC0000005 - EXCEPTION_ACCESS_VIOLATION                           ║
║ Details:     Memory at 0000000000000000 could not be read                      ║
║ errno:       0x00000000 - No error                                             ║
║ LastError:   0x00000057 - The parameter is incorrect.                          ║
║ NTSTATUS:    0xC0000034 - Object Name not found.                               ║
║ Address:     0x13FB86739 - Far.exe!<unknown> (get the pdb)                     ║
║ Source:                                                                        ║
║ Function:    SetStartupInfoW                                                   ║
║ Module:      C:\Program Files\Far Manager\Plugins\LFSearch\lfsearch_e-x64.dll  ║
║ Version:     3.0.0.5555 x64 (f63d6fa)                                          ║
║ OS:          6.1.7601.2.1.0.256.1                                              ║
╟────────────────────────────────────────────────────────────────────────────────╢
║              { Unload plugin } [ Stack ] [ Minidump ] [ Ignore ]               ║
╚════════════════════════════════════════════════════════════════════════════════╝
Last edited by citRiks on Mon 17 Feb, 2020 10:21, edited 1 time in total.

Post Reply

Return to “Разработка плагинов”