Поиск слова под курсором в редакторе Far3

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

Поиск слова под курсором в редакторе Far3

Post by buniak_a_h »

Latest post of the previous page:

Последнее значение из истории поиска:

Code: Select all

local sRes
local settings=far.CreateSettings"far"
if settings then
  local history=settings:OpenSubkey(far.Flags.FSSF_ROOT,"SearchText")
  if history then
    local items=settings:Enum(history, -1)
    if items and #items > 0 then sRes=items[1].Name end
  end
  settings:Free()
end
return sRes
Значение чекбокса RegEx - я написал
Это - если ведение истории включено. Иначе придётся вешать ивент на закрытие диалога поиска и там запоминать на будущее. В теме по ссылке есть пост John Doe-а; там пример, как запомнить искомую строку. Единственно - заменить GUID диалога с 8C9EAD29-910F-4B24-A669-EDAFBA6ED964 на 5D3CBA90-F32D-433C-B016-9BB4AF96FACC (far.Guids.EditorSearchId) и номер элемента с 6 на 5.
Last edited by buniak_a_h on Sun 31 Jan, 2021 19:17, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Поиск слова под курсором в редакторе Far3

Post by citRiks »

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

Поиск слова под курсором в редакторе Far3

Post by buniak_a_h »

citRiks wrote: Sun 31 Jan, 2021 22:39 а как записать, это возможно?
Когда есть hDlg, можно почти всё. Нельзя только добавлять итемы и менять их тип.
hDlg:send(F.DM_SETTEXT, <номер итема>, <новое значение>
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Поиск слова под курсором в редакторе Far3

Post by buniak_a_h »

Или Вы имели в виду записать в историю? Тогда
hDlg:send(F.DM_ADDHISTORY, …). Без диалога, полагаю, геморройно делать.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Поиск слова под курсором в редакторе Far3

Post by buniak_a_h »

citRiks wrote: Mon 01 Feb, 2021 08:42 buniak_a_h, да, вопрос был про "без диалога"
1. Что Вам мешает сделать "пустой диалог", который в DN_INITDIALOG сделает запоминание и выход из диалога (юзер даже не увидит)
2. Без диалога, видимо, я уже просил помощи. Увы, не дали.
Last edited by buniak_a_h on Mon 01 Feb, 2021 09:15, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Поиск слова под курсором в редакторе Far3

Post by buniak_a_h »

Вот такая функция добавляет в историю:

Code: Select all

local F = far.Flags
local function AddToHist(str,name)
 local function pDlg(hDlg, Msg)
  if Msg == F.DN_INITDIALOG then
   hDlg:send(F.DM_ADDHISTORY, 1, str)
   hDlg:send(F.DM_CLOSE, 0)
  end
 end
 far.Dialog('',-1,-1,1,1,nil,{{F.DI_EDIT,0,0,0,0, 0,name,0, bor(F.DIF_HISTORY, F.DIF_MANUALADDHISTORY)}},nil,pDlg)
end
Вызов:

Code: Select all

AddToHist('Проба2', 'Copy')
-- 1-й параметр - что добавлять
-- 2-й параметр - имя истории
Post Reply

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