LuaFAR Search

Здесь можно обсудить ваш любимый плагин.
Shmuel
Posts: 5577
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 186 times

LuaFAR Search

Post by Shmuel » Fri 13 Nov, 2009 07:29

Здесь можно обсуждать плагин LuaFAR Search. (Анонс).

User avatar
sToLp
Posts: 844
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 80 times
Been thanked: 7 times

LuaFAR Search

Post by sToLp » Wed 07 Nov, 2018 12:21

Latest post of the previous page:

Shmuel wrote:
Wed 07 Nov, 2018 11:55
Чтобы работало, курсор должен стоять на любой строчке из результатов поиска, тогда произойдёт переход в правильный файл и именно на то место, где стоял курсор.
Увы. В том то и дело, что и так с самого начала я тоже пробовал. И ни чего...
А переход примитивным макросом я привёл только для того, чтобы показать, что сам то греп плагином весьма удачно формируется.

User avatar
HaRT
Moderator
Posts: 8508
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 74 times
Been thanked: 136 times

LuaFAR Search

Post by HaRT » Wed 07 Nov, 2018 12:26

Shmuel wrote:
Wed 07 Nov, 2018 11:55
Это не должно работать, так не задумано.
Предложение: в случае перехода из строки с именем файла переходить в самое начало этого файла.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5577
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 186 times

LuaFAR Search

Post by Shmuel » Wed 07 Nov, 2018 13:42

sToLp, может быть дело в том, что вы нажимаете CtrlShiftQ, а оригинальный макрос повешен на CtrlShiftG ?

HaRT, да, уже подумал об этом, может быть сделаю, хотя это не типичный сценарий работы.

User avatar
sToLp
Posts: 844
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 80 times
Been thanked: 7 times

LuaFAR Search

Post by sToLp » Wed 07 Nov, 2018 14:02

Shmuel wrote:
Wed 07 Nov, 2018 13:42
может быть дело в том, что вы нажимаете CtrlShiftQ, а оригинальный макрос повешен на CtrlShiftG ?
Нет. Я каждый раз пробую вызывать макрос и через CtrlShiftG, и через Macro Browser.

Сейчас перешёл на другую машину. Там тоже Win10x64, но более свежая версия — LTSC. Попытаю удачи на ней и о результатах сообщу.

Shmuel
Posts: 5577
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 186 times

LuaFAR Search

Post by Shmuel » Wed 07 Nov, 2018 14:26

sToLp, поскольку это макрос, 10-15 строк всего, то вы можете легко определить, что у вас происходит, вставив в разные места макроса вывод на экран, например, far.Show(1),far.Show(2),far.Show(3) и т.д. для начала. Будет видно как проходит исполнение. Макрос такого размера отладить не то что легко, а очень легко.
Last edited by Shmuel on Wed 07 Nov, 2018 14:26, edited 1 time in total.

User avatar
sToLp
Posts: 844
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 80 times
Been thanked: 7 times

LuaFAR Search

Post by sToLp » Wed 07 Nov, 2018 14:27

В Win10x64 LTSC Ru попробовал запускать макрос и в Far30b5267.x86.20180915, и в Far30b5298.x86.20181027.
К сожалению, результат тот же.

А нельзя ли этот макрос разложить на эпизоды и потом попытаться отловить момент, на котором он застопорится?

User avatar
sToLp
Posts: 844
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 80 times
Been thanked: 7 times

LuaFAR Search

Post by sToLp » Wed 07 Nov, 2018 14:55

Макрос разложил следующим образом:

Code: Select all

Macro {
  description="Jump from Grep results to file and position under cursor";
  area="Editor"; key="CtrlShiftG";
  			action=function()
far.Show(0)
    		  local lnum = editor.GetString(nil,nil,3):match("^(%d+)[:%-]")
far.Show(1)
    		  if not lnum then return end
far.Show(2)
    		  local EI = editor.GetInfo()
far.Show(3)
    		  for n = EI.CurLine-1,1,-1 do
far.Show(4)
    		    local fname = editor.GetString(nil,n,3):match("^%[%d+%]%s+(.+)")
far.Show(5)
    		    if fname then
    		      editor.Editor(fname,nil,nil,nil,nil,nil,
    		        {EF_NONMODAL=1,EF_IMMEDIATERETURN=1,EF_ENABLE_F6=1,EF_OPENMODE_USEEXISTING=1},
    		        lnum, math.max(1, EI.CurPos-lnum:len()-1))
far.Show(6)
    		      break
    		    end
far.Show(7)
    		  end
far.Show(8)
  		    end;
}
Появляются номер 0 и 1, а 2 уже не появляется.

Shmuel
Posts: 5577
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 186 times

LuaFAR Search

Post by Shmuel » Wed 07 Nov, 2018 15:08

Теперь вместо far.Show(0) поставьте far.Show(editor.GetString(nil,nil,3)).

User avatar
sToLp
Posts: 844
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 80 times
Been thanked: 7 times

LuaFAR Search

Post by sToLp » Wed 07 Nov, 2018 15:15

Code: Select all

╔════════════════╗
║  1│ "Cancel"   ║
║  2│ ♪          ║
║   │            ║
╚═ 2 arguments ══╝

Shmuel
Posts: 5577
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 186 times

LuaFAR Search

Post by Shmuel » Wed 07 Nov, 2018 15:22

У вас курсор во время вызова макроса стоял на строке редактора с содержимым "Cancel" ?

User avatar
sToLp
Posts: 844
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 80 times
Been thanked: 7 times

LuaFAR Search

Post by sToLp » Wed 07 Nov, 2018 15:22

Да.

Shmuel
Posts: 5577
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 186 times

LuaFAR Search

Post by Shmuel » Wed 07 Nov, 2018 15:27

Всё, я понял в чём дело. Действительно, проблема в макросе. Макрос не учитывает, что опция "Показывать номера строк" может быть выключена. Спасибо за репорт, сегодня исправлю. Но если эта опция выключена, переход будет происходить на начало файла.

User avatar
sToLp
Posts: 844
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 80 times
Been thanked: 7 times

LuaFAR Search

Post by sToLp » Wed 07 Nov, 2018 15:32

Shmuel wrote:
Wed 07 Nov, 2018 15:27
Но если эта опция выключена, переход будет происходить на начало файла.
Как считаете нужным. Только надо будет об этом указать в инструкции.

Shmuel
Posts: 5577
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 186 times

LuaFAR Search

Post by Shmuel » Wed 07 Nov, 2018 15:38

В инструкции к макросу? Можно поставить там комментарий в 1 строчку.
При выключенной опции "Показывать номера строк" макросу неоткуда брать номер строки для точного перехода.
Можно, правда, организовать поиск по всему содержимому строки, но это уже костыль, делать не буду.

User avatar
sToLp
Posts: 844
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 80 times
Been thanked: 7 times

LuaFAR Search

Post by sToLp » Wed 07 Nov, 2018 15:51

Shmuel wrote:
Wed 07 Nov, 2018 15:38
Можно поставить там комментарий в 1 строчку.
Да, что-то в этом роде. А ещё бы хорошо было бы при переходе в файл в случае выключенной опции также выдавать предварительное сообщение о желательности её включения. Типа того сообщения как когда макросы обновляются. Что если включите опцию, то переход будет более конкретным, что ли.

User avatar
sToLp
Posts: 844
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 80 times
Been thanked: 7 times

LuaFAR Search

Post by sToLp » Wed 07 Nov, 2018 16:30

Кстати, а не правильнее ли было бы в плагине опцию "Показывать номера строк" для результатов Grep сделать по умолчанию включённой?

Shmuel
Posts: 5577
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 186 times

LuaFAR Search

Post by Shmuel » Wed 07 Nov, 2018 16:38

Трудно сказать, что правильнее, для этого надо знать предпочтения пользователей.
Но поскольку значение этой опции сохраняется в базе данных плагина, то достаточно сделать один поиск с включённой опцией, и она останется включённой на постоянной основе (пока пользователь не сбросит).

Post Reply

Return to “Обсуждение плагинов”