far.Host API

Здесь обсуждается всё, что касается макросов.
Post Reply
Shmuel
Posts: 6304
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 386 times

far.Host API

Post by Shmuel »

В LuaFAR появились несколько новых функций в таблице far.Host. Эти функции и сама таблица пока не документированы.
Данные функции внутри себя вызывают экспортируемые функции панельных плагинов (плагины не знают, что их вызывает не Фар).
Идея - восполнить недостающиее API для общения с панельными плагинами.

Приложенная утилита демонстрирует поиск из открытой плагиновой панели, например, панели Arclite, Observer, PortaDev.
Выкладываю с целью получить предложения/замечания и т.п. Сама утилита пока находится в статусе демо.
search_plugin_panel-20200907.7z
(8.35 KiB) Downloaded 42 times
User avatar
citRiks
Posts: 1426
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 435 times
Been thanked: 90 times

far.Host API

Post by citRiks »

я как сторонник открытости и интегрированности всего со всем, горячо одобряю.
мне выглядит очень разумным направлением развития.
Наблюдаю следующие фунцкии:
1. FreeUserData
2. GetFiles
3. GetFindData
4. PutFiles
5. SetDirectory

то что стало можно писать в плагин (PutFiles) очень хорошо.
что можно теперь искать - GetFiles, GetFindData - очевидно, здорово, правильно.
Буняк недавно и безуспешно хотел получать список файлов из Обсервера,
теперь проблем с этим не будет ни в каком плагине я так понимаю.
SetDirectory - вроде и раньше можно было гулять по плагину через АПИ, но это я думаю будет способ попрямее.

Начал думать как это может помочь получить историю файлов открытых из плагинов (ArcLite) пока не придумывается,
планируется ли расширение АПИ и интеграции под эту задачу,
или это никак не связано ни сейчас, и не будет в будущем?

Довольно аналогичный вопрос - получать результаты "плагинового" поиска (АркЛайт) в панель (TmpPanel)?
Пока тоже не придумывается но наверное можно если подумать и подобавлять интеграции/АПИ

Заранее извиняюсь если чего-то неправильно понял
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
Shmuel
Posts: 6304
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 386 times

far.Host API

Post by Shmuel »

citRiks wrote: Tue 08 Sep, 2020 18:57 Начал думать как это может помочь получить историю файлов открытых из плагинов (ArcLite) пока не придумывается,
планируется ли расширение АПИ и интеграции под эту задачу,
или это никак не связано ни сейчас, и не будет в будущем?
Это не связано, но это возможно сделать в Фаре или в плагине/макросе. По-видимому эта фича до сих пор вызывала мало интереса у разработчиков.
citRiks wrote: Tue 08 Sep, 2020 18:57 Довольно аналогичный вопрос - получать результаты "плагинового" поиска (АркЛайт) в панель (TmpPanel)?
Тоже возможно, только для этого надо немножко расширить функциональность TmpPanel.
Есть правда отдельные вопросы, например, где открывать TmpPanel: если в активной панели, то закроется панель плагина, что не всегда желательно.
User avatar
DrKnS
Posts: 5889
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 11 times
Been thanked: 363 times

far.Host API

Post by DrKnS »

Shmuel wrote: Mon 07 Sep, 2020 15:19 Идея - восполнить недостающиее API для общения с панельными плагинами
А чего не достает? Можно же и добавить.
User avatar
zg
zero-gravity
Posts: 5878
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 158 times
Contact:

far.Host API

Post by zg »

DrKnS wrote: Wed 09 Sep, 2020 13:13А чего не достает? Можно же и добавить.
нормальной поддержки OPEN_SHORTCUT в хотя бы актуальных плагинах. можно бы было немодальное редактирование сделать на панельных плагинах, но да.
User avatar
citRiks
Posts: 1426
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 435 times
Been thanked: 90 times

far.Host API

Post by citRiks »

Shmuel wrote: Wed 09 Sep, 2020 07:36 Тоже возможно, только для этого надо немножко расширить функциональность TmpPanel.
Есть правда отдельные вопросы, например, где открывать TmpPanel: если в активной панели, то закроется панель плагина, что не всегда желательно.
для результатов файлкового поиска было бы разумным сделать две кнопки "В акт. панель" и "В пас. панель",
вместо одной "В панель" как сейчас.
и тогда народ пусть действительно поступает как хочет/как надо,
Как и некоторые плагины в кaких-то сценариях можно и свободно закрыть темп. панелью,
и наоборот может быть нужным не закрывать активную панель (даже если это не плагин),
а результаты поиска пихать в ненужную пассивную.
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
Shmuel
Posts: 6304
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 386 times

far.Host API

Post by Shmuel »

DrKnS wrote: Wed 09 Sep, 2020 13:13
Shmuel wrote: Mon 07 Sep, 2020 15:19 Идея - восполнить недостающиее API для общения с панельными плагинами
А чего не достает? Можно же и добавить.
1. Получение содержимого файлов.
2. Модификация (перезапись) файлов, добавление новых файлов, удаление файлов.
3. Создание папок, удаление папок.
4. API для поиска в архивах.
Возможно что-то ещё упустил.
buniak_a_h
Posts: 2827
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 153 times
Been thanked: 404 times
Contact:

far.Host API

Post by buniak_a_h »

Увы, видимо, с вопросом опоздал, но …
С плагином multiarc этот far.Host, вроде, не дружит. far.Host.GetFindData, во всяком случае, возвращает nil
buniak_a_h
Posts: 2827
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 153 times
Been thanked: 404 times
Contact:

far.Host API

Post by buniak_a_h »

Shmuel wrote: Mon 07 Sep, 2020 15:19 Эти функции и сама таблица пока не документированы.
Теперь «документированы», но…
Пример.
Функция far.Host.GetFiles
Второй параметр описан так:
Items: table (array of tPluginPanelItem)
На самом деле это:
(а) не совсем array of tPluginPanelItem (в каждом элементе массива должны быть (!) ещё два не описанных поля ExtUserData и FreeUserData)
(б) массив Items нельзя просто получить функциями panel.GetPanelItem и panel.GetCurrentPanelItem, которые возвращают массив (или одну) таблиц tPluginPanelItem, а обязательно требуется вызвать far.Host.GetFindData. Без этого выгрузить файлы из контейнера у меня не получилось. Возможно, я что-то делал не так, но если то, что я написал - верно, то это должно быть отражено в документации. Я на это потратил 2 дня, убирая лишнее из приводимого примера.
Last edited by buniak_a_h on Sat 10 Apr, 2021 18:25, edited 2 times in total.
Shmuel
Posts: 6304
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 386 times

far.Host API

Post by Shmuel »

buniak_a_h, far.Host - это была новая функциональность, которой я занимался немного больше одного месяца, и которая была прервана на полпути (в лучшем случае), когда я прекратил разработку. Сейчас не уверен, что этим кто-то занимается.
User avatar
John Doe
Бюрократ
Posts: 13199
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 45 times
Been thanked: 334 times

far.Host API

Post by John Doe »

Shmuel wrote: Sat 10 Apr, 2021 18:32 и которая была прервана на полпути
А не могли бы вы вкратце описать что ещё планировалось сделать?
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 6304
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 386 times

far.Host API

Post by Shmuel »

John Doe wrote: Sun 11 Apr, 2021 08:21 что ещё планировалось сделать?
Идея была получить полное управление панельными плагинами из LuaFAR-плагина.
Это означает возможность говорить с плагинами на языке Far API.
Была реализована коммуникация только в части экспортируемых функций, и то, что реализовано, не было достаточно испытано и отшлифовано.
В коде всё можно видеть и получить ответы на вопросы, а в данной ветке есть пример применения.
buniak_a_h
Posts: 2827
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 153 times
Been thanked: 404 times
Contact:

far.Host API

Post by buniak_a_h »

Shmuel, я это понимаю, и не в претензии. Просто получается, что в описании недосказанность.
P/S. Надеюсь, эту тему читают те, кто имеет возможность дополнить описание функции far.Host.GetFiles (%FarHome%\Encyclopedia\luafar_manual.chm::/85.html).
Shmuel
Posts: 6304
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 386 times

far.Host API

Post by Shmuel »

buniak_a_h, дело не в претензиях, я их не боюсь :)
Мой ответ вам был, обратите внимвние, совсем не техническим, а описывающим общее положение дел с подсистемой far.Host.
А оно таково, что данная подсистема недоделана и недо-документирована, а я ею больше не занимаюсь. Это касается и поддержки.
Post Reply

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