Макрос, реализующий функции плагина Active-Help

Здесь обсуждается всё, что касается макросов.
buniak_a_h
Posts: 352
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 37 times
Been thanked: 5 times
Contact:

Макрос, реализующий функции плагина Active-Help

Post by buniak_a_h » Tue 05 Sep, 2017 23:54

Latest post of the previous page:

John Doe wrote:
Tue 05 Sep, 2017 10:45
Возможно вам проще будет воспользоваться keyhh.
Лично мне - да. Я даже могу сделать маленькую утилитку (увы, на дельфях; просто другого не осталось), ищущую по имени файла и ключевому слову. Просто хотелось сделать всё в макросе. В частности, чтоб не зависеть от версии ОС.

User avatar
bigvax
Posts: 18
Joined: Fri 02 Jun, 2006 17:18
Location: где-то во времени
Has thanked: 1 time
Contact:

Макрос, реализующий функции плагина Active-Help

Post by bigvax » Wed 06 Sep, 2017 06:56

buniak_a_h wrote:
Tue 05 Sep, 2017 23:54
Я даже могу сделать маленькую утилитку (увы, на дельфях; просто другого не осталось), ищущую по имени файла и ключевому слову. Просто хотелось сделать всё в макросе. В частности, чтоб не зависеть от версии ОС.
Возможно это и правильное решение, не зря-же сам ActiveHelp - имел субплагины для собственно отображения тех или иных форматов.
Т.е. возможен вариант - выхлоп из плагина/макроса одинаковый, а субплагины/модули его уже обрабатывают каждый по своему.
Всегда виртуально Ваш, BigVax

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

Макрос, реализующий функции плагина Active-Help

Post by John Doe » Wed 06 Sep, 2017 07:13

buniak_a_h wrote:
Tue 05 Sep, 2017 23:42
через io.lines
Вот и супер.
buniak_a_h wrote:
Tue 05 Sep, 2017 23:42
требуется место для распаковки
Попробуйте io.popen + 7z с ключом -so
buniak_a_h wrote:
Tue 05 Sep, 2017 23:42
Я спрашивал, можно ли плагином arclite "вытащить" файл из архива.
Почему бы не создать тикет на мантисе.
buniak_a_h wrote:
Tue 05 Sep, 2017 23:42
Хотя мне кажется, что это - плохой стиль.
Это не стиль, а отсутствие функциональности.
Кто-то должен её реализовать, прежде чем мы с вами сможем пользоваться.

buniak_a_h
Posts: 352
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 37 times
Been thanked: 5 times
Contact:

Макрос, реализующий функции плагина Active-Help

Post by buniak_a_h » Wed 06 Sep, 2017 11:24

John Doe wrote:
Wed 06 Sep, 2017 07:13
buniak_a_h писал(а): ↑Ср 06 сен, 2017 01:42
через io.lines
Вот и супер.
И чем это лучше? как я выяснил, даже после нахождения нужной строки цикл надо провести до конца, иначе файл остаётся открытым, а доступа к дескриптору нет (он где-то в недрах io.lines).

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

Макрос, реализующий функции плагина Active-Help

Post by John Doe » Wed 06 Sep, 2017 12:19

buniak_a_h wrote:
Wed 06 Sep, 2017 11:24
И чем это лучше?
Позволяет не заботится о временных файлах.
buniak_a_h wrote:
Wed 06 Sep, 2017 11:24
(он где-то в недрах io.lines).
Вы не разобрались.

P.S.
Если бы я писал такой плагин, то создавал бы для каждого chm свой индекс, чтобы не перечитывать по многу раз.
И поскольку индекс создаётся однократно, то не беспокоился бы о затратах на распаковку файла.
Можно обойтись без 7zip, одним только hh.exe, который есть на каждой системе.

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

Макрос, реализующий функции плагина Active-Help

Post by John Doe » Wed 06 Sep, 2017 13:07

buniak_a_h wrote:
Sat 05 Aug, 2017 05:51
при необходимости поменять порядок можно было бы использовать индексы (Object pascal: %2:s -k %1:s; позиционная Visual C++ Printf_p - %2$s -k %1$s), но, насколько я понял, lua их не поддерживает :-(
Функция format не поддерживает, но никто не мешает реализовать это самостоятельно: http://lua-users.org/wiki/StringInterpolation.
Last edited by John Doe on Wed 06 Sep, 2017 13:11, edited 1 time in total.

buniak_a_h
Posts: 352
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 37 times
Been thanked: 5 times
Contact:

Макрос, реализующий функции плагина Active-Help

Post by buniak_a_h » Wed 06 Sep, 2017 23:30

John Doe wrote:
Wed 06 Sep, 2017 12:19
buniak_a_h wrote:
Wed 06 Sep, 2017 11:24
И чем это лучше?
Позволяет не заботится о временных файлах.
Вот как раз временный файл придётся делать и по окончании убивать. Это - если использовать форму io.lines(<имя_файла>). Т.е. нужно же куда-то распаковать файл, чтоб потом в нём искать!
Использование 7z -so я не рассматривал (не изучал я 7z специально) Да и что с этим stdout-ом делать потом? Я не умею перенаправлять вывод внешней программы на вход функции - части макроса ФАРа. Догадываюсь (теперь!), что io.lines() должен быть без параметров. НО! Я каждый такой файл просматриваю трижды. Сможет это организовать io.lines? Или придётся вручную перегонять файл в начало (io.input():seek)?
Будет время - поэкспериментирую.
John Doe wrote:
Wed 06 Sep, 2017 12:19
buniak_a_h wrote:
Wed 06 Sep, 2017 11:24
(он где-то в недрах io.lines).
Вы не разобрались.
Читаю описание io.lines:
io.lines
Открывает файл с данным именем в режиме чтения<...>При обнаружении функцией-итератором конца файла, она возвратит nil (для окончания цикла) и автоматически закроет файл.
Т.е. дескриптор явно внутри функции и наружу не передаётся. Правда, это не относится к вызову без параметров. Видимо, Вы мели в виду именно такой вариант использования: 7z -so , как-то перенаправить вывод на вход ФАРу и вызов io.lines без параметров. Поэкспериментирую ещё.
НО!!! В любом случае даже у нас в офисе далеко не всех установлен 7-zip. Использование необязательных программных средств сторонних разработчиков считаю плохим стилем (недопустимо для анонимно распространяемого софта). Выход был бы если б arclite умел распаковывать (вы рекомендовали в какую-то мантиссу тикет записать). Но (а) в обсуждении плагина таких просьб много; полагаю, там есть и те, кто писал на мантиссу; и (б) для меня мантисса - дробная часть, а тикет - билет. Терминология на этой мантиссе мне совершенно незнакома, разъяснений я не нашёл (впрочем, и не особо искал).
Вообще, в обсуждении arclite хотелки пол-экрана занимают... Смысл добавлять?
А вообще - у Вас авторитет выше, если считаете не лишним - напишите Вы. С Вами быстрее согласятся.

User avatar
HaRT
Moderator
Posts: 8075
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

Макрос, реализующий функции плагина Active-Help

Post by HaRT » Wed 06 Sep, 2017 23:53

buniak_a_h wrote:
Wed 06 Sep, 2017 23:30
в какую-то мантиссу тикет записать
Mantis — это название системы управления запросами на изменение ПО (а попросту — багтрекера), используемой для Фара, — см. ссылку “Bugs” вверху каждой страницы форума (вход туда форумной учёткой).
Фар есть инструмент, а не нянька. © 2009 DrKnS

2useven10
Posts: 3010
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 82 times

Макрос, реализующий функции плагина Active-Help

Post by 2useven10 » Thu 07 Sep, 2017 00:16

buniak_a_h wrote:
Wed 06 Sep, 2017 23:30
(б) для меня мантисса - дробная часть, а тикет - билет.
1) с дробной частью тоже мимо кассы.
2) а насчёт билета - хорошее попадание, особенно если вспомнить анекдот о рабиновиче, который хотел 'волгу'

buniak_a_h
Posts: 352
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 37 times
Been thanked: 5 times
Contact:

Макрос, реализующий функции плагина Active-Help

Post by buniak_a_h » Thu 07 Sep, 2017 00:37

HaRT wrote:
Wed 06 Sep, 2017 23:53
buniak_a_h wrote:
Wed 06 Sep, 2017 23:30
в какую-то мантиссу тикет записать
Mantis — это название системы управления запросами на изменение ПО (а попросту — багтрекера), используемой для Фара, — см. ссылку “Bugs” вверху каждой страницы форума (вход туда форумной учёткой).
Я вспомнил, почему не смог ничего туда добавить. Я не нашёл ни слова add, ни слова new в контексте добавления пожелания. И никакого описания, как добавить (слова help я тоже не нашёл). И в FAQ-е форума про мантису тоже нет слов. Может, нынче в институтах и обучают системам управления запросами, но 45 лет назад этого не было точно.
2useven10 wrote:
Thu 07 Sep, 2017 00:16
с дробной частью тоже мимо кассы.


А если серьёзно. Похоже, Вы (2useven10) - один из авторов arclite. Если это так, и есть возможность - подумайте над реализацией естественного желания вытащить один файл из архива (из командной строки или через вызовы CallPlugin).

User avatar
HaRT
Moderator
Posts: 8075
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

Макрос, реализующий функции плагина Active-Help

Post by HaRT » Thu 07 Sep, 2017 00:50

Фар есть инструмент, а не нянька. © 2009 DrKnS

buniak_a_h
Posts: 352
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 37 times
Been thanked: 5 times
Contact:

Макрос, реализующий функции плагина Active-Help

Post by buniak_a_h » Thu 07 Sep, 2017 01:29

HaRT wrote:
Thu 07 Sep, 2017 00:50
воспользоваться ссылкой “Report Issue”
Спасибо. Неправильно перевёл. Не "отчёт о проблеме", а "сообщить об ошибке". Кроме этого всё понятно.

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

Макрос, реализующий функции плагина Active-Help

Post by John Doe » Thu 07 Sep, 2017 07:21

buniak_a_h wrote:
Wed 06 Sep, 2017 23:30
Это - если использовать форму io.lines(<имя_файла>)
Вот именно, если.
С помощью file:read"*l" можно организовать такой цикл самостоятельно, или вообще прочитать сразу весь файл, и далее работать со строкой.
buniak_a_h wrote:
Wed 06 Sep, 2017 23:30
Да и что с этим stdout-ом делать потом?
Вы его получите из popen.
buniak_a_h wrote:
Wed 06 Sep, 2017 23:30
Я каждый такой файл просматриваю трижды.
Можно и так, хоть и не необязательно.
buniak_a_h wrote:
Wed 06 Sep, 2017 23:30
В любом случае даже у нас в офисе далеко не всех установлен 7-zip
hh.exe у всех есть.
buniak_a_h wrote:
Wed 06 Sep, 2017 23:30
Выход был бы если б arclite умел распаковывать
Да.

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Макрос, реализующий функции плагина Active-Help

Post by Shmuel » Thu 07 Sep, 2017 07:37

John Doe wrote:
Thu 07 Sep, 2017 07:21
С помощью file:read"*l" можно организовать такой цикл самостоятельно
Зачем, можно просто использовать file:lines().

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

Макрос, реализующий функции плагина Active-Help

Post by John Doe » Thu 07 Sep, 2017 08:26

Действительно)

buniak_a_h
Posts: 352
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 37 times
Been thanked: 5 times
Contact:

Макрос, реализующий функции плагина Active-Help

Post by buniak_a_h » Thu 07 Sep, 2017 09:36

John Doe wrote:
Thu 07 Sep, 2017 07:21
hh.exe у всех есть.
Да, вы уже писали. Только я, видимо, не понял...
Единственный найденный мной сайт описывает командную строку для hh.exe, что в ней надо указывать имя html. Т.е. ни распаковать индекс или оглавление, ни искать по ключевому слову hh не умеет - надо самому. Тогда объясните мне, при чём тут hh и как им пользоваться. Возможно, я нашёл какой-то древний сайт, не учитывающий новые параметры.
Так-то после поиска по индексу я найденное имя html вставляю в командную чтроку вызова hh через "::/". Ну не нашёл я другого способа найти топик по ключевому слову! Знаете - подскажите.

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

Макрос, реализующий функции плагина Active-Help

Post by John Doe » Thu 07 Sep, 2017 11:34

buniak_a_h wrote:
Thu 07 Sep, 2017 09:36
распаковать индекс или оглавление
Выборочно нет, только всё содержимое
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
buniak_a_h wrote:
Thu 07 Sep, 2017 09:36
искать по ключевому слову
Искать может KeyHH или ffi код из моего примера выше.
Но ищет громко сказано, скорее открывает вкладку Index и вписывает ключевое слово в поиск.
Т.е. как минимум Enter придётся нажать. Баг в API, который уже фича.
Поэтому ваш подход с поиском по hhk/hhc оправдан.

Post Reply

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