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

Здесь обсуждается всё, что касается макросов.
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 »

Latest post of the previous page:

zg wrote:копипаста — плохо.
Подыму вопрос снова.
Как лучше?
    1. Macro {
    2.  
    3.   description="Scroll text in internal viewer";
    4.  
    5.   area="Viewer"; key="CtrlUp CtrlDown";
    6.  
    7.   action=function()
    8.  
    9.     Keys(akey(1):match(".%l+$"))
    10.  
    11.   end;
    12.  
    13. }
    1. Macro {
    2.  
    3.   description="Scroll Down text in internal viewer";
    4.  
    5.   area="Viewer"; key="CtrlDown";
    6.  
    7.   action=function()
    8.  
    9.     Keys"Down"
    10.  
    11.   end;
    12.  
    13. }
    14.  
    15.  
    16.  
    17. Macro {
    18.  
    19.   description="Scroll Up text in internal viewer";
    20.  
    21.   area="Viewer"; key="CtrlUp";
    22.  
    23.   action=function()
    24.  
    25.     Keys"Up"
    26.  
    27.   end;
    28.  
    29. }
Другой пример:
Третий:
Четвёртый: Panel.CtrlShiftPgUpDn.lua — хождение по папкам одного уровня
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

John Doe wrote:Я в начале темы пытался отовсюду исключить копипасту, но не всем понравилось.
исключение копипасты — это не только слитие всех макросов в один. в луа, внезапно, есть функции.
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 »

Ok.
На четырёх приведённых выше примерах, где вы считаете целесообразным ввести какую-то общую функцию?
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

насколько я понимаю, единственная претензия к сливанию макросов была:
tstr wrote:Вы поаккуратнее с изменениями в поставке - такой способ (вызов ф-ции на многие клавиши) не срабатывает в автоматическом добавлении описания и шорткатов в помощь.
сейчас всё добавляется, судя по всему замечание просто устарело.
что касается конкретных примеров:
1. дело вкуса. по мне так лучше вообще:

Code: Select all

Macro
  description:"Scroll text in internal viewer"
  area:"Viewer"
  key:"CtrlUp CtrlDown"
  action:->Keys(akey(1):match(".%l+$"))
2. описание в первом варианте исправить на что-то типа "Change current drive". что в макробровсере, что в хелпе, что при просто просмотре — сами кнопки уже есть, зачем их дублировать?
3. не очень понимаю, зачем вообще второй вариант?
макрос ходения по папкам: вот тут можно выделить в отдельную функцию, ради красоты в хелпе. хотя

Code: Select all

CtrlShiftPgUp CtrlShiftPgDn  Jump to the previous/next folder on the same level
тоже вполне приемлимо.
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 »

zg wrote:насколько я понимаю, единственная претензия к сливанию макросов была:
[...]
Поискал, претензия была в другой теме: Panel.JumpToSelectedFile.lua
zg wrote:3. не очень понимаю, зачем вообще второй вариант?
Второй вариант это исходный.
Вопрос в том, стоит ли в этом случае 2 макроса объединять в один?
Минус объединения в том, что добавляется condition.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

John Doe wrote:Поискал, претензия была в другой теме: Panel.JumpToSelectedFile.lua
ни о чём.
siberia-man
Posts: 131
Joined: Sat 28 Jun, 2014 23:07
Has thanked: 2 times
Been thanked: 9 times

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

Post by siberia-man »

https://github.com/FarGroup/FarManager/ ... w.PgDn.lua

Первоначальный макрос требует лишнего нажатия клавиши при достижении конца файла. Добавил область действия в описание.
  1. Macro {
  2.  
  3.     area = "Viewer";
  4.  
  5.     key = "PgDn";
  6.  
  7.     description = "Viewer: PgDn at the end of file works as in Far Manager 1.70 beta 4 and earlier";
  8.  
  9.     action = function()
  10.  
  11.         Keys("PgDn");
  12.  
  13.         if Object.Eof then
  14.  
  15.             Keys('End')
  16.  
  17.         end
  18.  
  19.     end;
  20.  
  21. }
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 »

Описание надо понятнее. Кто там уже помнит поведение 1.65
siberia-man
Posts: 131
Joined: Sat 28 Jun, 2014 23:07
Has thanked: 2 times
Been thanked: 9 times

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

Post by siberia-man »

John Doe wrote:Описание надо понятнее. Кто там уже помнит поведение 1.65
И то верно. Код исправил, а описание оставил оригинальное. Исправляемся.
  1. -- Modification of the original script taken from:
  2.  
  3. -- https://code.google.com/p/farmanager/source/browse/trunk/addons/Macros/View.PgDn.lua
  4.  
  5.  
  6.  
  7. --[[
  8.  
  9.  
  10.  
  11. "Умная" прокрутка с помощью PgDn. При прокрутке клавишей PgDn по
  12.  
  13. достижении конца файла на экране отображаются все последние строки файла в
  14.  
  15. соответствии с текущей высотой окна Far Manager.
  16.  
  17.  
  18.  
  19. ]]
  20.  
  21.  
  22.  
  23. Macro {
  24.  
  25.     area = "Viewer";
  26.  
  27.     key = "PgDn";
  28.  
  29.     description = "Viewer: Smart scrolling using PgDn";
  30.  
  31.     action = function()
  32.  
  33.         Keys("PgDn");
  34.  
  35.         if Object.Eof then
  36.  
  37.             Keys('End')
  38.  
  39.         end
  40.  
  41.     end;
  42.  
  43. }
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 »

Исправление совершенно правильное, но описание понятнее не стало.
Может PgDn: never go beyond the end of file (like in FAR 1.70 beta 4 and earlier)?
Или PgDn: never scroll beyond EOF (like in FAR 1.70 beta 4 and earlier)

P.S.
Порылся в WhatsNew.Rus.txt беты 5 и нескольких соседних версий, и ни слова не нашёл об этом изменении.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

John Doe wrote:Порылся в WhatsNew.Rus.txt беты 5 и нескольких соседних версий, и ни слова не нашёл об этом изменении.
значит не попало в список изменений.
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 »

https://github.com/FarGroup/FarManager/ ... Select.lua

Условие можно упростить (и лучше вынести в condition):

Code: Select all

Macro {
  description="Panel: Use Space to select files";
  area="Shell"; key="Space";
  condition=function() return CmdLine.Empty and APanel.Visible end;
  action=function()
    Keys"Ins"
  end;
}
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 »

Сюда же можно добавить 2 идеи отсюда: http://forum.farmanager.com/viewtopic.p ... 235#p69235
1. Выделять не сдвигая курсор к следующему элементу.
2. Вместо CmdLine.Empty проверять что курсор в начале строки.

Code: Select all

Macro {
  description="Panel: Use Space to select files";
  area="Shell"; key="Space";
  condition=function() return CmdLine.Bof and APanel.Visible end;
  action=function()
    Panel.Select(0,2,1)
  end;
}
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

John Doe wrote:1. Выделять не сдвигая курсор к следующему элементу.
Разве что в виде нового макроса.
2. Вместо CmdLine.Empty проверять что курсор в начале строки.
И как пробел в начале вводить?
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

DrKnS wrote: как пробел в начале вводить?
Зачем?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

Чтобы фар не обрабатывал команду, например.
Также мне смутно помнится, что какие-то хистори-плагины трактуют это как "не помещать в историю".
Post Reply

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