OpeningLastFile.lua

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

OpeningLastFile.lua

Post by John Doe »

Кто может объяснить что делает OpeningLastFile.lua?
Я не имею ввиду ошибку в наименовании клавиши (key="Ctrl""), а хочу понять цель.

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

Связанные темы:
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

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

Post by t-rex »

вроде раньше в истории последняя строка была пустой.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

t-rex wrote:вроде раньше в истории последняя строка была пустой.
Ни в 1.75 (build 2634), ни в 2.0 (build 1694) пустой строки в истории нет.
John Doe wrote:Для чего может понадобиться макрос, открывающий предпоследний файл истории?
Чтобы в самом деле открыть предпоследний файл. Я регулярно подобным пользуюсь, когда надо по очереди менять пару файлов и что-то вне фара перепроверять.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

HaRT wrote:Чтобы в самом деле открыть предпоследний файл. Я регулярно подобным пользуюсь, когда надо по очереди менять пару файлов и что-то вне фара перепроверять.
Не возражаю против того, чтобы пользоваться "подобным", но как пользоваться именно "этим" я не понял, хотя поставил, и честно пытался применять.
Поведение не очень предсказуемо, а мануал не прилагается.

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

P.S.
Во втором посте другие претенденты на удаление.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

HaRT wrote:
t-rex wrote:вроде раньше в истории последняя строка была пустой.
Ни в 1.75 (build 2634), ни в 2.0 (build 1694) пустой строки в истории нет.
Потому что она была убрана гораздо раньше, в 2562/850 соответственно.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

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

Post by Skirda »

John Doe wrote:Смысла View.CtrlUpDown.lua я вообще не понял.
В редакторе Ctrl-Down что делает? Правильно, скроллирует текст вверх, оставляя позицию курсора на месте относительно лево-верха консольного окна.
Во вьювере руки машинально сами тянуться нажать ту же комбинацию, но результат иной.
Собственно это ради таких "криворучек", как я :crazy:
John Doe wrote:Предлагаю убрать из поставки, или заменить на подобное, если у кого есть.
Ну что за мания всё удалять... предложи замену, а не удаление.
We are the Borg. You will be assimilated.
So Say We All!
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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

Или давайте желаемое поведение - предложим замену.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

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

Post by Skirda »

John Doe wrote:
Skirda wrote:Во вьювере руки машинально сами тянуться нажать ту же комбинацию, но результат иной.
Тогда другое дело, но в таком случае надо описание подправить, и имя файла, чтобы не возникало вопросов о назначении.
Предложения?
"Скроллинг на одну строку, как в редакторе...."
John Doe wrote:Сейчас выяснили, что Up просто лишний. Значит макрос служит для открытия последнего закрытого файла.
Имеет право быть, наверно...
В те далекие лихие годы, когда земля была горячей... Изначально, когда была пустая строка в историях, макрос исполнял свою задачу - открывал последний файл. Потом просто забыли его поправить - бывает же такое :-)
John Doe wrote:Или давайте желаемое поведение - предложим замену.
Up убери и получишь нужное поведение (Opening last...).
С Up`ом, как писали выше, мы получаем поведение "открыть предпоследний файл".
We are the Borg. You will be assimilated.
So Say We All!
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Skirda wrote:Предложения?
"Скроллинг на одну строку, как в редакторе...."
Учитывая, что правки нужны всем дистрибутивным макросам я это сам поправлю, главное было понять цель.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post 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)

С каждым нажатием будет открываться следующий файл из истории.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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

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


Впрочем, не факт, фича вроде бы доступна по Shift+Enter.
Last edited by John Doe on Tue 04 Sep, 2018 10:14, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post 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;
}
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

Общее соображение по поводу макросов из поставки - у них 2 цели: (1) собственно возможное полезное применение и (2) как наглядное пособие для юзеров-неспециалистов в макросах. 2-я цель мне представляется не менее важной, чем 1-я. Ясно, что если там будут навороченные макросы (как правило, с недостаточным количеством комментариев), то 2-я цель не достигается. Поэтому я не уверен в том, что стоит эти макросы сильно совершенствовать.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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

P.S.
Что до комментариев, то кое-где можно было бы добавить ссылки на форум.
Но не уверен что надо.
Last edited by John Doe on Tue 04 Sep, 2018 11:10, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

OpeningLastFile.lua

Post 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. }
Такой макрос конечно сложнее чем , но и удобнее на порядок.
Post Reply

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