OpeningLastFile.lua

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 13867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

OpeningLastFile.lua

Post by John Doe »

Latest post of the previous page:

  1. local initial
  2.  
  3. Macro {
  4.  
  5.   description="Opening previous file from view/edit history";
  6.  
  7.   area="Viewer Editor Shell QView Tree Info Search"; key="Ctrl'";
  8.  
  9.   flags="NoSendKeysToPlugins";
  10.  
  11.   action=function()
  12.  
  13.     Keys"AltF11"
  14.  
  15.     if not Area.Menu then return end -- modal editor/viewer
  16.  
  17.     if Object.Eof then
  18.  
  19.       -- ensure that initial (bottom) item opened only once
  20.  
  21.       initial = initial~=Menu.Value and Menu.Value or false
  22.  
  23.     end
  24.  
  25.     if not initial then Keys"Up" end -- step up in history
  26.  
  27.     Keys"ShiftEnter"
  28.  
  29.   end;
  30.  
  31. }
Такой макрос конечно сложнее чем , но и удобнее на порядок.
User avatar
John Doe
Бюрократ
Posts: 13867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

OpeningLastFile.lua

Post by John Doe »

Альтернативная реализация:
  1. Macro {
  2.  
  3.   description="Opening previous file from view/edit history";
  4.  
  5.   area="Viewer Editor Shell QView Tree Info Search"; key="Ctrl'";
  6.  
  7.   flags="NoSendKeysToPlugins";
  8.  
  9.   action=function()
  10.  
  11.     local cur = Area.Viewer and Viewer.FileName
  12.  
  13.              or Area.Editor and Editor.FileName
  14.  
  15.     Keys"AltF11"
  16.  
  17.     if not Area.Menu then return end -- modal editor/viewer
  18.  
  19.     if not Object.Eof or cur==Menu.Value:match": (.*)$" then
  20.  
  21.       Keys"Up"
  22.  
  23.     end
  24.  
  25.     Keys"ShiftEnter"
  26.  
  27.   end;
  28.  
  29. }
Оба варианта решают одну и ту же задачу: когда курсор на самом нижнем пункте неясно, то ли надо открывать именно его, то ли следующий по списку.
  • Прошлый вариант: ориентируется на имя пункта меню, чтобы не открыть один и тот же пункт два раза подряд.
  • Этот вариант: ориентируется на имя файла, открытого в текущем редакторе/вьювере, чтобы не открыть пункт, совпадающий по имени с активным.
Какой лучше оставить?

P.S.
Проще всего было бы ориентироваться на количество элементов в списке истории, но это тоже не абсолютно надёжно, прежде всего потому, что если количество достигнет заданного предела, то перестанет изменяться. Есть же предел?
Post Reply

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