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

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
lost
Posts: 149
Joined: Mon 31 Oct, 2005 09:42
Has thanked: 12 times
Been thanked: 6 times

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

Post by lost »

Коллеги, помогите советом, как в Far3(b5105) реализовать поиск слова под курсором. Такой, как был в старом-добром плагине S&R.
По-быстрому набросал такой макрос
  1. Macro {
  2.  
  3.   description="Поиск слова под курсором";
  4.  
  5.   area="Editor"; key="CtrlAltDown";
  6.  
  7.   flags="";
  8.  
  9.   code="Keys(\"CtrlRight CtrlLeft F7 AltC Enter ShiftF7\")";
  10.  
  11. }
но у него есть существенный минус, он ищет не слово целиком, т.е. зависит от опции
[x] Только целые слова
в диалоге поиска.
Можно ли как-то принудительно её установить в настройках или узнать её состояние?
Вчера полдня потратил на поиски по форуму, но так ничего и не получилось.
Пробовал так:
  1. Macro {
  2.  
  3.   area="Editor";
  4.  
  5.   key="CtrlAltDown";
  6.  
  7.   description="Поиск слова под курсором";
  8.  
  9.   action = function()
  10.  
  11.     local F=far.Flags
  12.  
  13.     local obj = far.CreateSettings("far", "PSL_ROAMING")
  14.  
  15.     local vvv = obj:Get(F.FSSF_EDITOR, "SearchRegexp", F.FST_STRING)
  16.  
  17.     obj:Free()
  18.  
  19.     msgbox(vvv)
  20.  
  21.   end;
  22.  
  23. }
всегда рисует пустоту
  1.  
  2.  
  3.    ╔════════╗
  4.  
  5.    ╟────────╢
  6.  
  7.    ║ { OK } ║
  8.  
  9.    ╚════════╝
  10.  
  11.  
2useven10
Posts: 5210
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

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

Post by 2useven10 »

lost, А поиск слова в стандартном диалоге вы осознанно игнорируете?
lost
Posts: 149
Joined: Mon 31 Oct, 2005 09:42
Has thanked: 12 times
Been thanked: 6 times

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

Post by lost »

2useven10 wrote: Thu 11 Jan, 2018 14:35lost, А поиск слова в стандартном диалоге вы осознанно игнорируете?
AltC в скрипте - это я то самое типа "игнорирую"?
или всё-таки не осознанно? Можно подробнее, какой поиск слова?
Last edited by lost on Thu 11 Jan, 2018 14:41, edited 1 time in total.
2useven10
Posts: 5210
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

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

Post by 2useven10 »

lost
Posts: 149
Joined: Mon 31 Oct, 2005 09:42
Has thanked: 12 times
Been thanked: 6 times

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

Post by lost »

2useven10, не игнорирую. Ответил выше. Просто у меня "русский" Far.
2useven10
Posts: 5210
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

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

Post by 2useven10 »

Add в чекбоксе включает его Subtract выключает.
Это серые + -
Keys("Add") Keys("Subtract")
Last edited by 2useven10 on Thu 11 Jan, 2018 15:03, edited 1 time in total.
lost
Posts: 149
Joined: Mon 31 Oct, 2005 09:42
Has thanked: 12 times
Been thanked: 6 times

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

Post by lost »

2useven10, Опа! Не знал. Или забыл. Спасибо огромное!
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

lost wrote: Thu 11 Jan, 2018 13:09 Вчера полдня потратил на поиски по форуму, но так ничего и не получилось.
Пробовал так:

Code: Select all

Macro {
  area="Editor";
  key="CtrlAltDown";
  description="Поиск слова под курсором";
  action = function()
    local F=far.Flags
    local obj = far.CreateSettings("far", "PSL_ROAMING")
    local vvv = obj:Get(F.FSSF_EDITOR, "SearchRegexp", F.FST_STRING)
    obj:Free()
    msgbox(vvv)
  end;
}
всегда рисует пустоту

а все же, может кто-нибудь подскажет как вытащить данные по поиску из редактора,
не прибегая к вызовам диалога поиска через бого-противные эмуляции нажатий?
должно же быть где-то в settings..
Last edited by citRiks on Sun 31 Jan, 2021 15:39, 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 »

citRiks wrote: Sun 31 Jan, 2021 15:38 как вытащить данные по поиску из редактора
Что имеется в виду под "данные по поиску"?
В любом случае если эти данные есть в диалоге (то ли поиска то ли результатов поиска), то из этого диалога вытащить можно всё.
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 wrote: Sun 31 Jan, 2021 16:44 Что имеется в виду под "данные по поиску"?
что искалось, и в каком режиме (регексп или простой)
поскольку регекспом ищу мало, то это требование про режим можно опустить
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 15:38 как вытащить данные по поиску
Тогда всё просто. Я Вам когда-то посылал скрипт AreaInfo, который выдаёт ВСЕ данные диалога. В т.ч. и Item[6] - Checked для чекбоксов. Повесьте ивент на DN_CLOSE и получите всё, что надо. Без всяких эмуляций. Делов минут на 20…
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 »

P/S. Или я не понял задачи и не прочувствовал её сложности…
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 »

Если имеется в виду вытащить данные, которые были использованы при последнем поиске без вызова диалога поиска, то:
Что искать - легко вытащить из истории поиска (если она ведётся, но это, скорее, теоретическая оговорка). Пример получения последней искомой строки можно подсмотреть в моём скрипте, который искомую строку выводит в заголовок окна результатов поиска файлов . Состояние чекбоксов - прочитать из far:config (Far.GetConfig('Editor.SearchRegexp')).
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 wrote: Sun 31 Jan, 2021 18:26 Если имеется в виду вытащить данные, которые были использованы при последнем поиске без вызова диалога поиска, то:
да, именно, а еще лучше задать критерии поиска без вызова диалога,
чтобы можно было сделать Alt/ShiftF7 не открывая диалог.
это можно реализовать?
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 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.
Post Reply

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