Page 1 of 2

OpeningLastFile.lua

Posted: Tue 23 Apr, 2013 22:29
by John Doe
Кто может объяснить что делает OpeningLastFile.lua?
Я не имею ввиду ошибку в наименовании клавиши (key="Ctrl""), а хочу понять цель.

Для чего может понадобиться макрос, открывающий предпоследний файл истории?

Связанные темы:

Re: Улучшение макросов из поставки фара

Posted: Tue 23 Apr, 2013 22:54
by t-rex
вроде раньше в истории последняя строка была пустой.

Re: Улучшение макросов из поставки фара

Posted: Wed 24 Apr, 2013 08:21
by HaRT
t-rex wrote:вроде раньше в истории последняя строка была пустой.
Ни в 1.75 (build 2634), ни в 2.0 (build 1694) пустой строки в истории нет.
John Doe wrote:Для чего может понадобиться макрос, открывающий предпоследний файл истории?
Чтобы в самом деле открыть предпоследний файл. Я регулярно подобным пользуюсь, когда надо по очереди менять пару файлов и что-то вне фара перепроверять.

Re: Улучшение макросов из поставки фара

Posted: Wed 24 Apr, 2013 09:02
by John Doe
HaRT wrote:Чтобы в самом деле открыть предпоследний файл. Я регулярно подобным пользуюсь, когда надо по очереди менять пару файлов и что-то вне фара перепроверять.
Не возражаю против того, чтобы пользоваться "подобным", но как пользоваться именно "этим" я не понял, хотя поставил, и честно пытался применять.
Поведение не очень предсказуемо, а мануал не прилагается.

Предлагаю убрать из поставки, или заменить на подобное, если у кого есть.

P.S.
Во втором посте другие претенденты на удаление.

Re: Улучшение макросов из поставки фара

Posted: Wed 24 Apr, 2013 09:06
by DrKnS
HaRT wrote:
t-rex wrote:вроде раньше в истории последняя строка была пустой.
Ни в 1.75 (build 2634), ни в 2.0 (build 1694) пустой строки в истории нет.
Потому что она была убрана гораздо раньше, в 2562/850 соответственно.

Улучшение макросов из поставки фара

Posted: Wed 24 Apr, 2013 09:50
by Skirda
John Doe wrote:Смысла View.CtrlUpDown.lua я вообще не понял.
В редакторе Ctrl-Down что делает? Правильно, скроллирует текст вверх, оставляя позицию курсора на месте относительно лево-верха консольного окна.
Во вьювере руки машинально сами тянуться нажать ту же комбинацию, но результат иной.
Собственно это ради таких "криворучек", как я :crazy:
John Doe wrote:Предлагаю убрать из поставки, или заменить на подобное, если у кого есть.
Ну что за мания всё удалять... предложи замену, а не удаление.

Re: Улучшение макросов из поставки фара

Posted: Wed 24 Apr, 2013 09:59
by John Doe
Skirda wrote:Во вьювере руки машинально сами тянуться нажать ту же комбинацию, но результат иной.
Тогда другое дело, но в таком случае надо описание подправить, и имя файла, чтобы не возникало вопросов о назначении.
Skirda wrote:Ну что за мания всё удалять... предложи замену, а не удаление.
Замену "чего"? Поставьте задачу.
Сейчас выяснили, что Up просто лишний. Значит макрос служит для открытия последнего закрытого файла.
Имеет право быть, наверно...

Или давайте желаемое поведение - предложим замену.

Re: Улучшение макросов из поставки фара

Posted: Wed 24 Apr, 2013 10:08
by Skirda
John Doe wrote:
Skirda wrote:Во вьювере руки машинально сами тянуться нажать ту же комбинацию, но результат иной.
Тогда другое дело, но в таком случае надо описание подправить, и имя файла, чтобы не возникало вопросов о назначении.
Предложения?
"Скроллинг на одну строку, как в редакторе...."
John Doe wrote:Сейчас выяснили, что Up просто лишний. Значит макрос служит для открытия последнего закрытого файла.
Имеет право быть, наверно...
В те далекие лихие годы, когда земля была горячей... Изначально, когда была пустая строка в историях, макрос исполнял свою задачу - открывал последний файл. Потом просто забыли его поправить - бывает же такое :-)
John Doe wrote:Или давайте желаемое поведение - предложим замену.
Up убери и получишь нужное поведение (Opening last...).
С Up`ом, как писали выше, мы получаем поведение "открыть предпоследний файл".

Re: Улучшение макросов из поставки фара

Posted: Wed 24 Apr, 2013 10:13
by John Doe
Skirda wrote:Предложения?
"Скроллинг на одну строку, как в редакторе...."
Учитывая, что правки нужны всем дистрибутивным макросам я это сам поправлю, главное было понять цель.

Улучшение макросов из поставки фара

Posted: Tue 04 Sep, 2018 09:04
by John Doe
HaRT wrote: Wed 24 Apr, 2013 08:21
t-rex wrote:вроде раньше в истории последняя строка была пустой.
Ни в 1.75 (build 2634), ни в 2.0 (build 1694) пустой строки в истории нет.
John Doe wrote:Для чего может понадобиться макрос, открывающий предпоследний файл истории?
Чтобы в самом деле открыть предпоследний файл. Я регулярно подобным пользуюсь, когда надо по очереди менять пару файлов и что-то вне фара перепроверять.
OpeningLastFile.lua

Code: Select all

Macro {
  description="Opening previous view/edit (from history)";
  area="Viewer Editor Shell QView Tree Info Search"; key="Ctrl'";
  flags="NoSendKeysToPlugins";
  action=function()
    Far.DisableHistory(0x4)
    Keys"AltF11"
    local pos = 0
    repeat
      for i=1,pos do Keys"Up" end
      Keys"Enter"
      if Area.Dialog then --already opened
        Keys"Esc AltF11"
        pos = pos+1
      end
    until Menu.Id~=far.Guids.HistoryEditViewId
  end;
}
Предлагаю такой макрос взамен малофункциональному текущему (AltF11 Up Enter)

С каждым нажатием будет открываться следующий файл из истории.

Улучшение макросов из поставки фара

Posted: Tue 04 Sep, 2018 09:45
by John Doe
John Doe wrote: Tue 04 Sep, 2018 09:04 взамен малофункциональному текущему (AltF11 Up Enter)
Эксперименты показали, что текущий тоже становится более осмысленным, если добавить в его начало Far.DisableHistory().
После этого он ведёт себя идентично моему, за исключением того, что нижняя строка пропускается всегда (что было правильным только пока она была пустой).

Но я хотел бы акцентировать внимание на другом, на том что Far.DisableHistory() в данном случае открывает перед нами фичу, в других случаях не проявляющуюся: если файл открыт из истории, то порядок истории не меняется, причём повторно история открывается с курсором, установленным на только что открытый файл.
Определённо это не случайно, когда-то было намеренно реализованно именно так, а впоследствии поломалось.
Предлагаю рассмотреть возможность исправления.


Впрочем, не факт, фича вроде бы доступна по Shift+Enter.

Улучшение макросов из поставки фара

Posted: Tue 04 Sep, 2018 10:02
by John Doe
С учётом выясненного, исправить исходный макрос можно проще:

Code: Select all

local lastitem
Macro {
  description="Opening previous file from view/edit history";
  area="Viewer Editor Shell QView Tree Info Search"; key="Ctrl'";
  flags="NoSendKeysToPlugins";
  action=function()
    Keys"AltF11"
    if Menu.Value==lastitem then
      Keys"Up"
    end
    lastitem = Menu.Value
    Keys"ShiftEnter"
  end;
}

Улучшение макросов из поставки фара

Posted: Tue 04 Sep, 2018 10:50
by Shmuel
Общее соображение по поводу макросов из поставки - у них 2 цели: (1) собственно возможное полезное применение и (2) как наглядное пособие для юзеров-неспециалистов в макросах. 2-я цель мне представляется не менее важной, чем 1-я. Ясно, что если там будут навороченные макросы (как правило, с недостаточным количеством комментариев), то 2-я цель не достигается. Поэтому я не уверен в том, что стоит эти макросы сильно совершенствовать.

Улучшение макросов из поставки фара

Posted: Tue 04 Sep, 2018 11:06
by John Doe
Абсолютно согласен, что слишком наворачивать не стоит (хотя в поставке есть и сложные).
Сам стараюсь упрощать (пусть и в ущерб универсальности), но ведь в любом случае, макрос прежде всего должен выполнять заявленную функцию, поэтому тут всегда будет некий компромисс.
John Doe wrote: Tue 04 Sep, 2018 10:02 С учётом выясненного, исправить исходный макрос можно проще:
Упростил ещё немного:
Проще можно было бы сделать только если в фаре вернётся пустая нижняя строка историй (чего я уверен не случится).

P.S.
Что до комментариев, то кое-где можно было бы добавить ссылки на форум.
Но не уверен что надо.

OpeningLastFile.lua

Posted: Wed 05 Sep, 2018 08:48
by John Doe
  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. }
Такой макрос конечно сложнее чем , но и удобнее на порядок.