Page 1 of 1

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

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

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

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

Posted: Wed 23 May, 2018 14:33
by zg
плагины вы тоже складываете в одну папку?

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

Posted: Wed 23 May, 2018 14:40
by 2useven10
Плагины нельзя.
Потому как с языковыми файлами тоже бардак демократия.

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

Posted: Wed 23 May, 2018 14:44
by zg
а скрипты чем в этом плане лучше? я понимаю, когда скрипт полностью в одном файле. а если в нескольких, в чём неудобство класть в отдельную папку?

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

Posted: Wed 23 May, 2018 14:51
by zg
кстати:

Code: Select all

--[[
.Language=English,English

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

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

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

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

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

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

Posted: Wed 23 May, 2018 17:21
by HaRT
@zg @DrKnS Точка зрения разработчиков мне ясна. Я не удивлён. Не вижу больше смысла тратить своё и чужое время на обсуждение данного вопроса.
P.S. Искренне желаю вам, господа, почаще оказываться в ситуации, когда программы вынуждают вас самих делать действия, которые легко могут быть автоматизированы.

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

Posted: Wed 23 May, 2018 17:28
by Shmuel
Эта дискуссия немного напоминает другую, давнишнюю, о желательности помещения Far x86 и x64 в одну папку.

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

Posted: Wed 23 May, 2018 18:41
by DrKnS
HaRT, не совсем понимаю, почему такая болезненная реакция.
Скрипты вроде бы никого не вынуждают складывать их в одну папку. Пользователь сам их откуда-то берет и раскладывает так, как считает нужным.

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

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

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

Posted: Wed 23 May, 2018 19:16
by HaRT
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
пинать их авторов и ждать обновлений
Да, но это ничем не хуже, чем нынешняя ситуация.

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

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

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

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

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

Posted: Thu 24 May, 2018 07:33
by IgorZ
Немного по существу дела.
В моих скриптах (не модуле 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 не работал, но подозреваю, что там такая же история. Так что, в принципе, метод можно было бы распространить и туда.

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

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

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

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