Вопросы по Settings

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Вопросы по Settings

Post by buniak_a_h »

Здравствуйте!
У меня есть вопросы по использованию Settings.
Я понял, как получить историю сохранений из диалогов:

Code: Select all

local sett = far.CreateSettings"far"
local hist = sett:OpenSubkey(F.FSSF_ROOT, "имя_истории")
local list = sett:Enum(hist)
Логично было бы предположить, что историю папок можно получить аналогично, указав вместо FSSF_ROOT флаг FSSF_HISTORY_FOLDER; историю команд - FSSF_HISTORY_CMD, историю редакторов - FSSF_HISTORY_EDIT, а историю просмотрщиков - FSSF_HISTORY_VIEW; при этом указать пустое имя истории. Увы, это оказалось не так. Найти подробную информацию я не нашёл. Помогите, пожалуйста, прочитать историю папок! На всякий случай: как получить историю с помощью SQLite, я знаю. А можно ли получить эти истории только используя систему Settings?
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Вопросы по Settings

Post by John Doe »

buniak_a_h wrote: Tue 25 May, 2021 09:31 Увы, это оказалось не так.

Code: Select all

local obj = far.CreateSettings('far')
local enum = obj:Enum(far.Flags.FSSF_HISTORY_VIEW)
require'le'(enum)
buniak_a_h wrote: Tue 25 May, 2021 09:31 Найти подробную информацию я не нашёл.
viewtopic.php?p=110695#p110695
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Вопросы по Settings

Post by Shmuel »

buniak_a_h, вы можете глянуть файл lfhistory.lua у меня на гитхабе, там это реализовано (и вроде бы работает).
MasterLogic
Posts: 13
Joined: Wed 15 Aug, 2018 12:17
Has thanked: 2 times

Вопросы по Settings

Post by MasterLogic »

John Doe, а вот как можно получить список всех этих имен историй "имя_истории"?
buniak_a_h wrote: Tue 25 May, 2021 09:31 local hist = sett:OpenSubkey(F.FSSF_ROOT, "имя_истории")
Ну, т.е., не базовых VIEW, CMD, а те что входят в основную history, там calc, newedit, uservar и т.д., их там много.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Вопросы по Settings

Post by buniak_a_h »

MasterLogic, я бы даже сказал, что не много, а бесконечно много. Делаете свой диалог, указываете произвольное имя истории для поля ввода (7-й элемент таблицы) - вот и новое имя_истории образовалось.
Если Вы имеете в виду список уже имеющихся в history.db ключей, то проанализировать базу можно при помощи SQLite. Был у меня когда-то такой скрипт…
Last edited by buniak_a_h on Tue 25 May, 2021 23:28, edited 1 time in total.
MasterLogic
Posts: 13
Joined: Wed 15 Aug, 2018 12:17
Has thanked: 2 times

Вопросы по Settings

Post by MasterLogic »

buniak_a_h, я надеюсь можно как-то с помощью Enum или OpenSubKey или типа того получить список их имен. Через SQLite не очень хочется. Может John Doe подскажет или Shmuel
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Вопросы по Settings

Post by buniak_a_h »

MasterLogic, ну если не ответят:
  1. package.nounload.ljsqlite3 = true
  2.  
  3. local sql = require"ljsqlite3"
  4.  
  5. local fname = win.GetEnv("farlocalprofile").."\\history.db"
  6.  
  7. local conn = assert(sql.open(fname, "ro"))
  8.  
  9. local tt=conn:exec([[SELECT DISTINCT key FROM history WHERE key <> "" ORDER BY key ]]).key
  10.  
  11. far.Show(table.concat(tt, '\n'))
Такой скрипт у меня выдаёт список ключей…
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Вопросы по Settings

Post by John Doe »

buniak_a_h wrote: Wed 26 May, 2021 00:20 а вот как можно получить список всех этих имен историй "имя_истории"?
Штатного способа не предусмотрено.
А для чего нужен весь список?
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Вопросы по Settings

Post by buniak_a_h »

John Doe, не-не, это не я спрашивал, это - MasterLogic. Я тоже не могу себе представить ситуацию, когда бы это было полезно. Тем более, что с новым макросом этот список может пополниться.
О! Пока писал, в голову пришла причина: если нужно сделать новый ключ, заведомо не использованный ранее. Но в таком случае я бы использовал ключ, включающий имя автора (напр. BAX.Copy).
Скорее было бы интересно узнать, какие ключи в конкретном диалоге указаны. Для этого есть куча макросов (в т.ч. и написанный мною AreaInfo).
Last edited by buniak_a_h on Wed 26 May, 2021 07:18, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Вопросы по Settings

Post by John Doe »

buniak_a_h wrote: Wed 26 May, 2021 07:15 не-не, это не я спрашивал
Глюк phpbb, постоянно напарываюсь отвечая с телефона.
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Вопросы по Settings

Post by HaRT »

Фар есть инструмент, а не нянька. © 2009 DrKnS
MasterLogic
Posts: 13
Joined: Wed 15 Aug, 2018 12:17
Has thanked: 2 times

Вопросы по Settings

Post by MasterLogic »

John Doe wrote: Wed 26 May, 2021 06:54 А для чего нужен весь список?
Для того, чтобы просматривать содержимое этих историй, ну как дополнение к стандартным историям. У меня скрипт их выводит, но имена пришлось задавать жестко, не знаю как получить их списком. Думал можно.
gotar
Posts: 412
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

Вопросы по Settings

Post by gotar »

Может кто подскажет как с помощью far.CreateSettings добраться до сохранных позициях курсора редактора Фар. Я помню что подобная тема уже обсуждалась на этом форуме, но не смог ее найти.
Post Reply

Return to “Нужна помощь”