Как читать far:config из макроса/плагина?

Здесь обсуждается всё, что касается макросов.
Acerbic
Posts: 80
Joined: Wed 07 Apr, 2010 12:30
Been thanked: 2 times

Как читать far:config из макроса/плагина?

Post by Acerbic »

Нашёл только одну тему, там через LuaJIT -> sqlite3.dll -> generalconfig.db
http://forum.farmanager.com/viewtopic.p ... 41#p110141

Всё бы хорошо, но таким образом можно читать только сохранённые настройки, а не текущие.
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Как читать far:config из макроса/плагина?

Post by Shmuel »

Из макроса: Far.Cfg_Get.
Причём без гарантии, что завтра какая-либо из настроек не исчезнет, или её смысл не изменится.

Из плагина: вроде никак.
Можно использовать Settings Control, передавая GUID Фара, но:
-- во-первых это будет тоже чтение из базы, а не текущих настроек,
-- во-вторых так можно прочитать ограниченное количество настроек (что-то порядка 26).
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Как читать far:config из макроса/плагина?

Post by zg »

а что именно надо читать и для каких целей?
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Как читать far:config из макроса/плагина?

Post by zg »

Shmuel wrote:-- во-первых это будет тоже чтение из базы, а не текущих настроек,
там FARConfigItem.Value возвращается, так что как раз текущие настройки, а не из базы.
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Как читать far:config из макроса/плагина?

Post by Shmuel »

zg wrote:
Shmuel wrote:-- во-первых это будет тоже чтение из базы, а не текущих настроек,
там FARConfigItem.Value возвращается, так что как раз текущие настройки, а не из базы.
Не проверял, охотно верю. Но это не стыкуется с писанием:
Писание wrote:Функция SettingsControl позволяет управлять загрузкой настроек из базы данных плагина или Far Manager, а также сохранением настроек в базу данных плагина.
Acerbic
Posts: 80
Joined: Wed 07 Apr, 2010 12:30
Been thanked: 2 times

Re: Как читать far:config из макроса/плагина?

Post by Acerbic »

Спасибо за наводку.
Хотел прочитать "Panel.Layout.ColumnTitles". Разобрался, нашёл, заработало, но скажу я вам... нет, я не скажу - вы и сами догадливые.
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Как читать far:config из макроса/плагина?

Post by Shmuel »

Acerbic wrote:но скажу я вам... нет, я не скажу - вы и сами догадливые.
Вы, конечно, правы по поводу документации (её недостатков или же отсутствия).
Могу сказать только одно: подключайтесь и вместе сделаем её лучше.
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Как читать far:config из макроса/плагина?

Post by zg »

опыт показывает, что документацию никто не читает, поэтому мотивации тратить на неё какие-то большие силы — нет.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Как читать far:config из макроса/плагина?

Post by John Doe »

Acerbic wrote:Разобрался, нашёл, заработало, но скажу я вам... нет, я не скажу - вы и сами догадливые.
Мы может и догадливые, но почему бы вам действительно не описать доходчиво, глядишь и в документацию вошло бы.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Как читать far:config из макроса/плагина?

Post by John Doe »

Ну раз вам лень, то расскажу я.

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

В отличии от плагинов, в базе фара хранятся элементы 2х типов (это кстати не отражено в мануале LuaFAR).
- FarSettingsItem
- FarSettingsHistory

Но получить весь список через Enum не получится: запрещено, и для корня, и для элементов типа FarSettingsItem.
Использовать Enum можно только для элементов FarSettingsHistory, например
Вот константы (far.Flags) для всех фаровских историй:
Кроме собственно историй, так же хранятся и ссылки на папки

Теперь что касается непосредственно темы заявленной в заголовке.
Эти настройки хранятся как FarSettingsItem, Enum запрещён, получить значения (Get) можно по имени параметра,
При работе с настроками фара тип параметра можно не указывать (с настройками плагинов иначе, тип там обязателен, доступен он через Enum)
В качестве корня можно указывать следующие константы: .

Как уже замечено, далеко не все настройки far:config доступны таким образом.
Список доступных можно узнать из исходников (config.cpp).
Вот пример кода, получаещего из config.cpp доступные параметры:

P.S.

Информация во многом добыта методом тыка, если что поправьте.

В примерах используется модуль Lua Explorer

Update
Пример работы с историями: http://forum.farmanager.com/viewtopic.php?f=15&t=8289
http://bugs.farmanager.com/view.php?id=2942
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Как читать far:config из макроса/плагина?

Post by Shmuel »

Ссылки не все работают (проверял только первые две).
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Как читать far:config из макроса/плагина?

Post by John Doe »

Спасибо, ссылки на Энциклопедию поправил.
Собственно тут должны были быть ссылки на LuaFAR manual, но он в данной части слишком минималистичен.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Как читать far:config из макроса/плагина?

Post by John Doe »

Да, кстати вот какая неправда есть в Энциклопедии по поводу SCTL_OPENSUBKEY/SCTL_CREATESUBKEY
Функция возвращает уровень вложенности ключа (!! требуется уточнение !!).

На самом деле эти функции возвращают значение Root для заданного подключа.
Тот самый Root, который принимают в качестве первого параметра все методы obj.

http://bugs.farmanager.com/view.php?id=2941

P.S.
Manual LuaFAR тут тоже ясности не добавляет:

Code: Select all

subkey = obj:OpenSubkey (Root, Name)

Parameters:
  Root:        integer
  Name:        string

Returns:
  subkey:      integer, or nil
Возможно стоит записать хотя бы так:
Root = obj:OpenSubkey (Root, Name)
или
newRoot = obj:OpenSubkey (Root, Name)
2useven10
Posts: 5226
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 314 times

Re: Как читать far:config из макроса/плагина?

Post by 2useven10 »

всё описано правильно. тот кто хоть немного работал с ф-ми виндового реестра, всё поймёт из одной строки.
то что вы предлагаете кроме путаницы ничего не даст.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Как читать far:config из макроса/плагина?

Post by John Doe »

Чуть помедленнее.
Где это правильно?

FarEncyclopedia.ru.chm: что такое "уровень вложенности", что такое "требуется уточнение"?
luafar_manual.chm: как понять что такое 'subkey'
Locked

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