Page 1 of 2
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
искать файл справки в следующем порядке:
- имя является расширением имени вызывающего файла (наподобие
<имя файла без расширения>Ru.hlf
), язык совпадает с языком справки Far;
- имя является расширением имени вызывающего файла (наподобие
<имя файла без расширения>Ru.hlf
), язык английский;
- имя является расширением имени вызывающего файла (наподобие
<имя файла без расширения>Ru.hlf
), язык хоть какой-то;
- имя любое, язык совпадает с языком справки Far;
- имя любое, язык английский;
- имя любое, язык хоть какой-то;
При этом никакого нового флага не нужно.
Таким образом, старые плагины и скрипты будут работать, как и раньше, но появится возможность выделять нужные файлы справки с помощью имён.
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) гуидами.