HlfViewer — просмотр файлов помощи

Здесь можно обсудить ваш любимый плагин.
Post Reply
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

HlfViewer — просмотр файлов помощи

Post by Skirda »

"Решаю" mantis#1413 по плагину HlfViewer (входит стандартную поставку).
Со следующего билда будет такое:
1. '@' - корректируем, если в топике первым символом идет собака. Это позволит так же писать "hlf:FarRus.hlf @About".
2. Учимся понимать переменные окружения.
3. Добавляется возможность указать вместо имени hlf-файла GUID-соответствующего плагина
4. Если указан "файл" без пути, то порядок следущий:
4.1 GUID
4.2 Текущий каталог
4.3 %FARHOME%
4.4 по путям плагинов, сидящих "в этой сессии" Far Manager
5. В редакторе не смотрим на маску файла *.hlf, только по признакам:
5.1 первая строка файла равна ".Language="
5.2 наличие любого вхождения последовательности "@букво-цифры", не содержащее символ "=". Т.е. теперь можно смотреть "Far*.hlf.m4" :-) правда некоторые темы будут некорректно отображаться из-за наличия m4-макросов.
6. Опция - доп.проверка по списку масок файлов

Теперь вопрос.
Чё делать с поддержкой макросов? (я про OPEN_FROMMACRO)
Будет какая-то спец.хотелка или тупо запустить плагин?
We are the Borg. You will be assimilated.
So Say We All!
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: HlfViewer - просмотр файлов помощи

Post by John Doe »

Skirda wrote:или как в Brackets и Editcase - в плагин передается номер пункта меню.
1. В плагине Brackets это не номер пункта
2. У HlfView нет меню.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: HlfViewer - просмотр файлов помощи

Post by Skirda »

Я знаю, что нет меню, потому и написал "Например" :-)
We are the Borg. You will be assimilated.
So Say We All!
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: HlfViewer - просмотр файлов помощи

Post by John Doe »

Даже не знаю.
Из макросов сейчас можно использовать функции LuaFAR API, поэтому сложно придумать специфичную для плагина спецхотелку.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: HlfViewer - просмотр файлов помощи

Post by Skirda »

Вот так? (т.е. в качестве параметра Topic)
Plugin.Call("1AF0754D-5020-49cb-9474-1F82691C84C1")
или
Plugin.Call("1AF0754D-5020-49cb-9474-1F82691C84C1","cmd")
We are the Borg. You will be assimilated.
So Say We All!
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: HlfViewer - просмотр файлов помощи

Post by John Doe »

Т.е. при вызове из редактора можно опционально задать топик? Нормально

Плагин может быть вызван из панелей, но для этого сойдёт Plugin.Command
Или же: дать Plugin.Command 2 параметра (не знаю надо ли, при доступном-то API)
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: HlfViewer - просмотр файлов помощи

Post by Skirda »

Так, ладно, раз АПИ есть, в морг эту тему. Кому надо на lua нарисует обвязку, не будем перегружать сабж.
We are the Borg. You will be assimilated.
So Say We All!
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: FarCmds (FAR Commands)

Post by AleXH »

Зачем для hlf:helpfile.hlf обязательно указывать расширение?
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: FarCmds (FAR Commands)

Post by Skirda »

AleXH wrote:Зачем для hlf:helpfile.hlf обязательно указывать расширение?
Наверное по той же причине, зачем редактору указывать полное имя файла.
Предложения какие?
We are the Borg. You will be assimilated.
So Say We All!
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: HlfViewer — просмотр файлов помощи

Post by AleXH »

Наверное по той же причине, зачем редактору указывать полное имя файла.
В редакторе открывается всё что угодно, а в hlf: *.hlf файлы. Или я не прав? Если прав, то зачем нужна тавтология? Имхо при отсутствии стандартного расширения добавлять его самостоятельно. Если же открываемый файл может быть и без расширения, то сначала открываем дословно то, что написано, а если такой файл отсутствует, то добавляем расширение и пробуем открыть снова.
Yegor
Posts: 1326
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

pushd

Post by Yegor »

DrKnS wrote: Thu 03 Nov, 2022 20:54hlf:OSCommands
Тут случайно нажал в корне диска и надолго завис.

В справке:

Code: Select all

filename - имя hlf-файла.
           Если имя файла содержит пробелы, то оно должно заключаться в кавычки.
           Если имя файла указано без пути, то порядок поиска следующий:
           - Текущий каталог
           - %FARHOME%
           - пути плагинов "в этой сессии" Far Manager

Судя по всему "Текущий каталог" имеется в виду с подкаталогами...
И hlf:filename имеет приоритет над hlf:topic?
Last edited by Yegor on Thu 03 Nov, 2022 21:36, edited 1 time in total.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

pushd

Post by DrKnS »

Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

pushd

Post by Shmuel »

DrKnS, причина "зависания" не в рекурсивном поиске как таковом.
Поскольку я портировал HlfViewer для Far2L, решил копнуть поглубже. И что оказалось:
  • плагин HlfViewer для получения путей всех плагинов вызывает PCTL_GETPLUGINS, а затем (в цикле) PCTL_GETPLUGININFORMATION
  • как и положено, для каждого плагина PCTL_GETPLUGININFORMATION вызывается дважды: 1-й раз для получения необходимого размера памяти, 2-й раз - для получения данных.
  • по какой-то пока непонятной причине, на 2-м вызове PCTL_GETPLUGININFORMATION для некоторых плагинов возвращается 0
  • HlfViewer на вторых вызовах PCTL_GETPLUGININFORMATION не проверяет, что вернул Фар, и использует незаполненную Фаром аллоцированную память, в которой находится мусор.
  • Иногда в этом мусоре в начале есть \ или / - вот тут-то и происходит "зависание"
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

pushd

Post by Shmuel »

Всё, причина нашлась.
Плагин не заполняет StructSize в структуре FarGetPluginInformation.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

pushd

Post by Shmuel »

Done: К админам просьба перенести сообщения, относящиеся к HlfViewer, в тему этого плагина.

А насчёт рекурсивного поиска HLF-файлов, начиная от папки плагина, это вообще не понятно зачем.
Ещё не видел ни одного плагина, у которого эти файлы находились бы не в самой папке плагина а где-то в подпапках.
Last edited by HaRT on Tue 08 Nov, 2022 19:59, edited 1 time in total.
Reason: Вычеркнуто исполненное
Post Reply

Return to “Обсуждение плагинов”