OpeningLastFile.lua

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

OpeningLastFile.lua

Post by John Doe »

Latest post of the previous page:

  1. local initial
  2. Macro {
  3.   description="Opening previous file from view/edit history";
  4.   area="Viewer Editor Shell QView Tree Info Search"; key="Ctrl'";
  5.   flags="NoSendKeysToPlugins";
  6.   action=function()
  7.     Keys"AltF11"
  8.     if not Area.Menu then return end -- modal editor/viewer
  9.     if Object.Eof then
  10.       -- ensure that initial (bottom) item opened only once
  11.       initial = initial~=Menu.Value and Menu.Value or false
  12.     end
  13.     if not initial then Keys"Up" end -- step up in history
  14.     Keys"ShiftEnter"
  15.   end;
  16. }
Такой макрос конечно сложнее чем , но и удобнее на порядок.

User avatar
John Doe
Бюрократ
Posts: 12833
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 290 times

OpeningLastFile.lua

Post by John Doe »

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

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

Post Reply

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