ShowHelp с FHELP_CUSTOMPATH в скриптах

Вам не хватает чего-то в Far? Вы считаете, что вашу идею стоит услышать? Пишите сюда.
Post Reply
User avatar
HaRT
Moderator
Posts: 8751
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 81 times
Been thanked: 148 times

ShowHelp с FHELP_CUSTOMPATH в скриптах

Post by HaRT » Wed 23 May, 2018 14:07

При использовании far.ShowHelp с флагом FHELP_CUSTOMPATH в скриптах порой возникают ошибки из-за того, что Фар пытается/открывает «не тот» файл. Это происходит потому, что скрипты (и их файлы Справки) часто складываются в общую директорию (Profile\Macros\scripts), т.ч. у Фара недостаточно данных для выбора правильного файла.

Хочется скорректировать данную ситуацию, чтобы этот ИИ приводил к желательным результатам. Мне тут видится два решения:
1. В рамках варианта FHELP_CUSTOMPATH проверять, содержит ли параметр ModuleName глоб (маску) в имени файла, и если да, то автоматически выбирать файл только среди подходящих под эту маску.
2. Добавить новый флаг (например, FHELP_FILENAME_MASK), который, будучи скомбинирован с FHELP_CUSTOMPATH (или даже с FHELP_CUSTOMFILE), означал бы, что надо применить логику ограничения выбираемого файла маской.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
zg
zero-gravity
Posts: 5549
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 87 times
Contact:

ShowHelp с FHELP_CUSTOMPATH в скриптах

Post by zg » Wed 23 May, 2018 14:33

плагины вы тоже складываете в одну папку?

2useven10
Posts: 3838
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 4 times
Been thanked: 159 times

ShowHelp с FHELP_CUSTOMPATH в скриптах

Post by 2useven10 » Wed 23 May, 2018 14:40

Плагины нельзя.
Потому как с языковыми файлами тоже бардак демократия.

User avatar
zg
zero-gravity
Posts: 5549
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 87 times
Contact:

ShowHelp с FHELP_CUSTOMPATH в скриптах

Post by zg » Wed 23 May, 2018 14:44

а скрипты чем в этом плане лучше? я понимаю, когда скрипт полностью в одном файле. а если в нескольких, в чём неудобство класть в отдельную папку?

User avatar
zg
zero-gravity
Posts: 5549
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 87 times
Contact:

ShowHelp с FHELP_CUSTOMPATH в скриптах

Post by zg » Wed 23 May, 2018 14:51

кстати:

Code: Select all

--[[
.Language=English,English

@test
test
@Skip
]]
local F=far.Flags
far.ShowHelp(...,'test',F.FHELP_CUSTOMFILE)

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

ShowHelp с FHELP_CUSTOMPATH в скриптах

Post by HaRT » Wed 23 May, 2018 16:48

zg wrote:
Wed 23 May, 2018 14:44
в чём неудобство класть в отдельную папку?
В том, что это ещё одна вещь, о которой необходимо помнить и которую необходимо делать. Не для того ли созданы персональные компьютеры, чтобы избавлять человека от подобных вещей?
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
DrKnS
Posts: 5280
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 202 times

ShowHelp с FHELP_CUSTOMPATH в скриптах

Post by DrKnS » Wed 23 May, 2018 17:09

HaRT wrote:
Wed 23 May, 2018 16:48
Не для того ли созданы персональные компьютеры, чтобы избавлять человека от подобных вещей?
Не для того ли создана иерархия каталогов, чтобы избавлять человека от изобретения костылей для разрешения конфликтов?

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

ShowHelp с FHELP_CUSTOMPATH в скриптах

Post by HaRT » Wed 23 May, 2018 17:21

@zg @DrKnS Точка зрения разработчиков мне ясна. Я не удивлён. Не вижу больше смысла тратить своё и чужое время на обсуждение данного вопроса.
P.S. Искренне желаю вам, господа, почаще оказываться в ситуации, когда программы вынуждают вас самих делать действия, которые легко могут быть автоматизированы.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5789
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 22 times
Been thanked: 210 times

ShowHelp с FHELP_CUSTOMPATH в скриптах

Post by Shmuel » Wed 23 May, 2018 17:28

Эта дискуссия немного напоминает другую, давнишнюю, о желательности помещения Far x86 и x64 в одну папку.

User avatar
DrKnS
Posts: 5280
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 202 times

ShowHelp с FHELP_CUSTOMPATH в скриптах

Post by DrKnS » Wed 23 May, 2018 18:41

HaRT, не совсем понимаю, почему такая болезненная реакция.
Скрипты вроде бы никого не вынуждают складывать их в одну папку. Пользователь сам их откуда-то берет и раскладывает так, как считает нужным.

Как справедливо отмечено выше, ситуация ничем не отличается от плагинов - если в дистрибутиве присутствует более одного файла, то, сваливая всё в кучу, вы рано или поздно наживете себе проблемы. Или с конфликтами, как здесь, или когда надумаете удалить ненужный скрипт и будете по одному выуживать из этой кучи его зависимости.

Подкаталоги решают обе проблемы, доступны с начала времён и могут быть применены вами без особых усилий вот прямо сейчас.
Опциональный AI на флажках, который вы предлагаете, сам по себе в ваших скриптах не возникнет - вам надо будет или править их лично, или пинать их авторов и ждать обновлений когда-нибудь потом.

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

ShowHelp с FHELP_CUSTOMPATH в скриптах

Post by HaRT » Wed 23 May, 2018 19:16

DrKnS wrote:
Wed 23 May, 2018 18:41
почему такая болезненная реакция
Потому что я внёс конструктивное предложение по существу, призванное решить конкретную проблему с заведомо неоптимальной юзабилити, а обсуждающие вместо содержательных ответов принялись обесценивать сам посыл эту юзабилити повышать.
DrKnS wrote:
Wed 23 May, 2018 18:41
Скрипты вроде бы никого не вынуждают складывать их в одну папку.
Так ведь и требование раскладывать их по разным папкам вроде ни из каких принципиальных соображений не вытекает.
DrKnS wrote:
Wed 23 May, 2018 18:41
раскладывает так, как считает нужным
Я как пользователь считаю нужным складывать их в одну папку, заодно исправляя имена так, чтобы мне было хорошо понятно, где что искать.
DrKnS wrote:
Wed 23 May, 2018 18:41
ситуация ничем не отличается от плагинов
Отличается исторической статистикой: подавляющее большинство плагинов содержат много файлов, в т.ч. с довольно общими названиями (всяческие readme, changelog, File_Id.diz, COPYING, etc), а подавляющее большинство скриптов — единственный файл.
DrKnS wrote:
Wed 23 May, 2018 18:41
вы рано или поздно наживете себе проблемы
Я придерживаюсь такого подхода десятилетиями, притом не только со скриптами для Фара — а проблема вылезла только сейчас, притом с ИИ вызова справки.
DrKnS wrote:
Wed 23 May, 2018 18:41
Подкаталоги решают обе проблемы
Подкаталоги — это способ обойти проблему, в то время как реализация моего предложения позволит предотвратить само её возникновение.
DrKnS wrote:
Wed 23 May, 2018 18:41
пинать их авторов и ждать обновлений
Да, но это ничем не хуже, чем нынешняя ситуация.

Ну и я прогнозирую, что количество скриптов с собственной справкой будет только расти, поэтому более умный механизм открытия справки пойдёт только на пользу экосистеме (как это сейчас модно называть).
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
DrKnS
Posts: 5280
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 202 times

ShowHelp с FHELP_CUSTOMPATH в скриптах

Post by DrKnS » Wed 23 May, 2018 21:01

HaRT wrote:
Wed 23 May, 2018 19:16
Потому что я внёс конструктивное предложение по существу, призванное решить конкретную проблему с заведомо неоптимальной юзабилити, а обсуждающие вместо содержательных ответов принялись обесценивать сам посыл эту юзабилити повышать.
Вы видите проблему, и это замечательно. Обсуждающие, однако, вполне могут считать, что проблема надумана, а "складывать в одну папку, заодно исправляя имена" - это стоя и в гамаке.

Давайте приводить аргументы и придерживаться делового подхода, как нам рекомендуют Правила, а обсудить участников и выразить искренние пожелания господам мы всегда успеем.

IgorZ
Posts: 604
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 9 times
Been thanked: 38 times

ShowHelp с FHELP_CUSTOMPATH в скриптах

Post by IgorZ » Thu 24 May, 2018 07:33

Немного по существу дела.
В моих скриптах (не модуле LuaManager, тот по конструкции обязан лежать в отдельном каталоге, и соответственно, там проще) есть функция ShowHelp:

Code: Select all

local PathName = debug.getinfo(function()end).source:match("^@?([^@].*)%.lua$") -- полное имя без расширения
--...
function ShowHelp(text) --[[Вывести справку]]
local HL = Far.GetConfig("Language.Help"):sub(1,3) -- язык (первые 3 буквы)
far.ShowHelp(PathName..(win.GetFileAttr(PathName..HL..".hlf") and HL or "Eng")..".hlf",text,F.FHELP_CUSTOMFILE) -- выведем
end -- ShowHelp
--...
ShowHelp("Main")
На PathName завязаны имена файлов справки и языковых. Довольно удобно и требует от автора минимальных действий.

По поводу предложений ТС:
Если уж автоматизировать, то до конца: при указании FHELP_CUSTOMPATH искать файл справки в следующем порядке:
  1. имя является расширением имени вызывающего файла (наподобие <имя файла без расширения>Ru.hlf), язык совпадает с языком справки Far;
  2. имя является расширением имени вызывающего файла (наподобие <имя файла без расширения>Ru.hlf), язык английский;
  3. имя является расширением имени вызывающего файла (наподобие <имя файла без расширения>Ru.hlf), язык хоть какой-то;
  4. имя любое, язык совпадает с языком справки Far;
  5. имя любое, язык английский;
  6. имя любое, язык хоть какой-то;
При этом никакого нового флага не нужно.
Таким образом, старые плагины и скрипты будут работать, как и раньше, но появится возможность выделять нужные файлы справки с помощью имён.

P. S. С языковыми файлами стандартными средствами Far не работал, но подозреваю, что там такая же история. Так что, в принципе, метод можно было бы распространить и туда.

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

ShowHelp с FHELP_CUSTOMPATH в скриптах

Post by HaRT » Thu 24 May, 2018 11:20

IgorZ wrote:
Thu 24 May, 2018 07:33
По поводу предложений ТС
Моё предложение было призвано покрыть случай, когда скрипты из разных файлов хотят открывать одни и те же файлы справки, — поэтому и я предлагаю задание маски оставить на откуп автору скриптов. При этом в варианте 1 (где проверяется, задана ли маска) никакой новый флаг не требуется. Более того, ваши предложения логически вполне совместимы с моими, т.ч. при желании можно непротиворечиво реализовать и то, и другое.
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

ShowHelp с FHELP_CUSTOMPATH в скриптах

Post by John Doe » Thu 24 May, 2018 11:57

Добавлю ещё пару вариантов.
1. https://bugs.farmanager.com/view.php?id=3301
2. А вообще в духе фара было бы снабдить сами файлы (hlf/lng) гуидами.

Post Reply

Return to “Предложения и идеи”