Открыть "закрытые" настройки Фара.

Разработка Far.
Locked

<t>Надо ли дать плагинам доступ на чтение/запись всех настроек far:config</t>

НЕТ! И те, что есть сейчас для чтения - тоже закрыть совсем.
2
33%
Считаю текущую ситуацию идеальной.
0
No votes
Открыть всё для чтения, почти всё для записи.
1
17%
Открыть всё. Мы взрослые люди и можем принимать ответственные решения.
3
50%
 
Total votes: 6

Acerbic
Posts: 80
Joined: Wed 07 Apr, 2010 12:30
Been thanked: 2 times

Открыть "закрытые" настройки Фара.

Post by Acerbic »

Создавал тему на Мантисе, но идею зарубили. Пока писал ответ по возражениям, успели закрыть, так что выскажусь здесь. Это как-бы продолжение беседы начатой там.
Заодно опрос - один ли я такой чудак, которому это нужно, или комьюнити тоже желает.

А вот этот пост объясняет, зачем всё это пригодится, на личном примере одного потенциального плагина.

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

Ну, во-первых, именно пользователь ставит плагин. Никто не ставит плагин из принципа "я не знаю, что плаг делает, поставлю по приколу, мне название нравится". Изменение настроек - часть функционала плагина. Таким образом "за спиной" - не верная оценка. Точнее будет сказать, что настройка Фара происходит автоматизированно, посредством плагина. Если мы доверяем плагу запускаться вообще, включая WinAPI, то нет причин не доверять ему работать с настройками.

Во-вторых, не всем плагинам требуется радикально менять конфигурацию Фар, многим будет достаточно просто читать из закрытых сегодня настроек. Другие же (как плагин, который я планировал написать) будут менять настройки только на текущую сессию и могут откатывать их в дефолт / предыдущее состояние на onFarExit(). Те же из плагинов, которым требуется радикально и "на постоянно" изменять настройки, могут сделать пункт "Нажми меня перед удалением плагина" в меню конфигурации, чтобы вернуть всё "как было".

В-третьих, в самом крайнем случае (если плагинописатель безответственен) все настройки можно вернуть в дефолт через far:config руками - там отклонения от умолчаний обозначаются. Не говоря уже про /export и /import. В конце концов, затрагиваемые настройки можно описать в readme.

В общем, не надо считать мудаками ни плагинописателей, ни пользователей.

DrKnS
"Колхоз"? Давайте не брать друг друга на понты. Тем более что текущий API работы с настройками использует терминологию адаптированную от рееста ("подключи"), хотя и хранит их в реляционной базе данных, притом скрещивает ежа с ужом предлагая работать одновременно с иерархическим древом настроек плагинов и набором плоских островков списков "простых настроек" Фара, историй и шорткатов.

По существу же, есть плагины, которые работают "наружу" - сообщают Фар с внешним миром - просмотрщики, проигрыватели, и прочие, а есть те, которые работают "внутри" - улучшают функционал самого Фара. И вот вторым бы чтение/запись настроек пригодились.

Насколько облегчилась бы жизнь при написании AltHistory / MoreHistory если бы можно было не писать сборщики данных, а редактировать собственную историю Фара, создавая улучшенный интерфейс, а не дублирующий функционал? Не говоря уже о прозрачной поддержке автодополнения. Наверняка многие смогут привести свои примеры.

Насчёт того, что закрытые настройки не является текущим API и могут быть без предупреждения изменены. Я согласен. Пусть. Я лучше напишу и буду иметь плагин, который проработает год, а потом потребует исправления, чем не иметь никакого. В конце-концов я ведь не знаю, может через год-два вы ВЕСЬ API сломаете ради Far4 (а вдруг?), это не повод вообще не писать.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Открыть "закрытые" настройки Фара.

Post by DrKnS »

zg опасается, что плагин меняет настройки "за спиной" пользователя, и что пользователи побегут в непонятках на форум плакаться по этому поводу.
zg не опасается, а озвучивает вам голые факты: плагины меняли, пользователи прибегали.
Если мы доверяем плагу запускаться вообще, включая WinAPI
Не доверяем, это вынужденная мера из-за обратной совместимости. Но мы работаем над этим.
то нет причин не доверять ему работать с настройками.
Всем windows-программам доступен winapi, расскажите, как поменять через него расположение иконок на рабочем столе, например?
Насчёт того, что закрытые настройки не является текущим API и могут быть без предупреждения изменены. Я согласен. Пусть. Я лучше напишу и буду иметь плагин, который проработает год, а потом потребует исправления, чем не иметь никакого.
Ежу понятно, что вы согласны. Не согласны будут пользователи вашего плагина, когда вам надоест его поддерживать, а нам захочется что-то поменять. Тогда они придут и будут называть нас мудаками, т. к. их очень мало будет интересовать, с чем там был согласен автор.
"Колхоз"? Давайте не брать друг друга на понты.
Это именно колхоз. Вам хочется здесь и сейчас, притом наиболее конским способом.

Обратите внимание - вам надо всего-лишь "усекать".

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

Вариант получше:
Предложить какой-нибудь FCTL_SETPROMPTMAXSIZE, плагин будет просто вызывать его с нужным параметром, а фар будет просто учитывать его при выводе на экран.

Правильный вариант:
Осознать, что плагинам вообще не приходят события о наборе команды и проблема совсем не в отсутствии доступа к настройкам.
Acerbic
Posts: 80
Joined: Wed 07 Apr, 2010 12:30
Been thanked: 2 times

Re: Открыть "закрытые" настройки Фара.

Post by Acerbic »

Т.е. лучше совсем не иметь плагина, чем иметь (надеюсь) полезный и популярный настолько, что толпы разгневанных пользователей засрут жалобами форум в неопределённо далёком будущем, когда вы может быть что-то поменяете (а может и не поменяете никогда, это бабка на двое сказала ещё)? Вам не кажется, что эта логика в чём-то ошибочна? Да уж, "Фар не для пользователей".

Я не знаю, как через WinAPI перемещать иконки по рабочему столу. Исходя из вашего тона, подозреваю, что сложно, но т.к. я видел программы, которые это делают (видел даже одну шуточную, которая выстраивала иконки в виде часов со стрелками), то очевидно, что не невозможно - где-то там для этого функционал есть. Но как вообще всё это соотносится с топиком?
Если мы доверяем плагу запускаться вообще, включая WinAPI
Не доверяем, это вынужденная мера из-за обратной совместимости. Но мы работаем над этим.
Ссылку на тему про адаптеры не понял тоже - что, плагин запущенный через адаптер будет от WinAPI полностью изолирован, что ли? Я считал, что адаптеры дадут возможность создавать более прямые интерфейсы к другим языкам, нежели сборка/компиляция в dll, а вовсе не для изоляции плагинов внутри Фара. Или вы меня не поняли, или я - вас.
Обратите внимание - вам надо всего-лишь "усекать".
Что мне надо усекать? Я наоборот - за повышение свободы для плагинов.
Пожалуй, да, это не колхоз. Это цирк с конями.
Пожалуй, это некрасивый костыль. И, пожалуй, это просто идея, слепленная "на скорую руку", чтобы показать zg, что непреодолимых препятствий нет, даже если придётся идти крюком за неимением более прямых путей. И ещё пожалуй, я бы конечно поискал более элегантные варианты решения - но только когда этот вопрос станет актуальным для реализации. Но что совсем точно, так это то, что не стоило цитировать данный оффтопик ради личного выпада. Пусть вам даже и не нравится моё предложение по "открытию" настроек, но демонстрация мне, какой я ужасно неквалифицированный программист, не является доводом против предложения в топике. :sarcastic_hand
Правильный вариант:
Осознать, что плагинам вообще не приходят события о наборе команды и проблема совсем не в отсутствии доступа к настройкам.
Как странно, а мне приходят - ProcessConsoleInput . Оно, конечно, *перед* набором, но я не буду рассказывать вам о том костыле, который у меня на уме, чтобы решить этот вопрос, дабы не разжигать.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Открыть "закрытые" настройки Фара.

Post by DrKnS »

Т.е. лучше совсем не иметь плагина, чем иметь (надеюсь) полезный и популярный настолько, что толпы разгневанных пользователей засрут жалобами форум в неопределённо далёком будущем, когда вы может быть что-то поменяете (а может и не поменяете никогда, это бабка на двое сказала ещё)? Вам не кажется, что эта логика в чём-то ошибочна?
Лучше иметь адекватный плагин, чем иметь неадекватный плагин.
Чтобы не иметь неадекватных плагинов, надо не предоставлять им заведомо неадекватный api (коим является программное изменение настроек без каких-либо гарантий работоспособности), а продумывать нормальные интерфейсы.
Но как вообще всё это соотносится с топиком?
Отсутствие программного доступа ко всем или некоторым настройкам - общепринятая практика.
Ссылку на тему про адаптеры не понял тоже
Это лирическое отступление на тему того, что если бы все плагины были написаны только на управляемых языках и крутились в своих песочницах как какие-нибудь расширения в браузерах, а не в одном адресном пространстве с far.exe - жить было бы куда проще.
Что мне надо усекать?
Приглашение же.
И ещё пожалуй, я бы конечно поискал более элегантные варианты решения - но только когда этот вопрос станет актуальным для реализации.
Для вашего потенциального плагина недоступность настроек - ничтожнейшая из проблем. Скачайте исходники, соберите свой лунапарк с доступом для чтения и для записи и пробуйте поискать эти более элегантные варианты. Если оно вам не надоест, всё получится и недоступность настройки станет единственным препятствием - будет что обсуждать, а пока мы имеем то, что я писал на мантисе: "а давайте вы разрешите делать что попало и будете это до скончания веков поддерживать, а я потом плагин напишу, может быть".
Но что совсем точно, так это то, что не стоило цитировать данный оффтопик ради личного выпада.
Почему оффтопик? Вы сами дали на него ссылку как на личный пример использования.
демонстрация мне, какой я ужасно неквалифицированный программист, не является доводом против предложения в топике
Это не демонстрация вам, какой вы программист, а демонстрация того, что манипуляции с настройками - не та сторона, в которую надо копать.
Как странно, а мне приходят - ProcessConsoleInput . Оно, конечно, *перед* набором, но я не буду рассказывать вам о том костыле, который у меня на уме, чтобы решить этот вопрос, дабы не разжигать.
См. выше: видите перспективу - "svn co" и действуйте.
Acerbic
Posts: 80
Joined: Wed 07 Apr, 2010 12:30
Been thanked: 2 times

Re: Открыть "закрытые" настройки Фара.

Post by Acerbic »

Я вижу, вы... устойчивы в своих убеждениях, а значит смысла распинаться мало. Можно было бы возразить на многие пункты - хотя бы сравнение настроек far:config и глубинных настроек Windows типа политик безопасности - вот уж натяжка, так натяяяяяжка. Но факт в том, нам нужна третья сторона - собственно ради кого и открыта эта тема и опрос - практики плагинописания. Будем ждать, пока народ выскажется.

П.С.
В отличие от некоторых выдающихся товарищей, я не настолько хорош, чтобы выпускать "bis" версии Фара с фичами, которые мне нужны. И с моей колокольни пожелание ""svn co" и действуйте" выглядит как грубый посыл, но я переживу.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Открыть "закрытые" настройки Фара.

Post by Shmuel »

На случай, если не все знают: читать все настройки можно и сейчас.
  1. -- чтение из макроса
  2.  
  3. local val = Far.Cfg_Get("CmdLine","PromptFormat")
  4.  
  5. far.Message(val, type(val))
  6.  
  7.  
  8.  
  9. -- чтение из LuaFAR-плагина
  10.  
  11. local val = far.MacroExecute[[ return Far.Cfg_Get("CmdLine","PromptFormat") ]]
  12.  
  13. far.Message(val[1], type(val[1]))
Чтение из не-LuaFAR плагинов: см. документацию на MacroControl (MCTL_EXECSTRING).
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Открыть "закрытые" настройки Фара.

Post by DrKnS »

Acerbic wrote:В отличие от некоторых выдающихся товарищей, я не настолько хорош, чтобы выпускать "bis" версии Фара с фичами, которые мне нужны. И с моей колокольни пожелание ""svn co" и действуйте" выглядит как грубый посыл, но я переживу
Если вы до сих пор не поняли, я не предалгаю вам форкать фар, запиливать фичи и поддерживать их, и уж тем более не грубо посылаю.
Я предлагаю вам взять код, закомментировать существующие проверки и попробовать написать ваш плагин так, как будто эти настройки доступны.

Почему я это предлагаю? Потому что считаю, что ваша задача в принципе не решается одним редактированием настроек, и столкнувшись с проблемами, описанными выше, вы либо очень скоро плюнете и бросите эту затею, либо смените подход.
Acerbic
Posts: 80
Joined: Wed 07 Apr, 2010 12:30
Been thanked: 2 times

Re: Открыть "закрытые" настройки Фара.

Post by Acerbic »

DrKnS wrote:Почему я это предлагаю? Потому что считаю, что ваша задача в принципе не решается одним редактированием настроек, и столкнувшись с проблемами, описанными выше, вы либо очень скоро плюнете и бросите эту затею, либо смените подход.
Я считаю, что настройки надо открыть безотносительно того, "взлетит" или нет данный конкретный проект плагина. Пока что я не видел "железных" аргументов почему этого делать нельзя ни в коем случае, тогда как потенциальная полезность велика.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Открыть "закрытые" настройки Фара.

Post by DrKnS »

Acerbic wrote:Я считаю, что настройки надо открыть безотносительно того, "взлетит" или нет данный конкретный проект плагина. Пока что я не видел "железных" аргументов почему этого делать нельзя ни в коем случае, тогда как потенциальная полезность велика.
Ну если в ход пошли аргументы "а давайте сделаем просто чтобы было" - обсуждать больше нечего, увы.
Locked

Return to “Development”