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

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

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

Post by John Doe »

Latest post of the previous page:

zg wrote:копипаста — плохо.
Подыму вопрос снова.
Как лучше?
    1. Macro {
    2.   description="Scroll text in internal viewer";
    3.   area="Viewer"; key="CtrlUp CtrlDown";
    4.   action=function()
    5.     Keys(akey(1):match(".%l+$"))
    6.   end;
    7. }
    1. Macro {
    2.   description="Scroll Down text in internal viewer";
    3.   area="Viewer"; key="CtrlDown";
    4.   action=function()
    5.     Keys"Down"
    6.   end;
    7. }
    8.  
    9. Macro {
    10.   description="Scroll Up text in internal viewer";
    11.   area="Viewer"; key="CtrlUp";
    12.   action=function()
    13.     Keys"Up"
    14.   end;
    15. }
Другой пример:
Третий:
Четвёртый: Panel.CtrlShiftPgUpDn.lua — хождение по папкам одного уровня

User avatar
zg
zero-gravity
Posts: 5844
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 153 times
Contact:

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

Post by zg »

John Doe wrote:Я в начале темы пытался отовсюду исключить копипасту, но не всем понравилось.
исключение копипасты — это не только слитие всех макросов в один. в луа, внезапно, есть функции.

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

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

Post by John Doe »

Ok.
На четырёх приведённых выше примерах, где вы считаете целесообразным ввести какую-то общую функцию?

User avatar
zg
zero-gravity
Posts: 5844
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 153 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: 12838
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 290 times

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

Post by John Doe »

zg wrote:насколько я понимаю, единственная претензия к сливанию макросов была:
[...]
Поискал, претензия была в другой теме: Panel.JumpToSelectedFile.lua
zg wrote:3. не очень понимаю, зачем вообще второй вариант?
Второй вариант это исходный.
Вопрос в том, стоит ли в этом случае 2 макроса объединять в один?
Минус объединения в том, что добавляется condition.

User avatar
zg
zero-gravity
Posts: 5844
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 153 times
Contact:

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

Post by zg »

John Doe wrote:Поискал, претензия была в другой теме: Panel.JumpToSelectedFile.lua
ни о чём.

siberia-man
Posts: 103
Joined: Sat 28 Jun, 2014 23:07
Has thanked: 1 time
Been thanked: 5 times

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

Post by siberia-man »

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

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

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

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

Post by John Doe »

Описание надо понятнее. Кто там уже помнит поведение 1.65

siberia-man
Posts: 103
Joined: Sat 28 Jun, 2014 23:07
Has thanked: 1 time
Been thanked: 5 times

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

Post by siberia-man »

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

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

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: 5844
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 153 times
Contact:

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

Post by zg »

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

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

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

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: 12838
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 290 times

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

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: 5647
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 9 times
Been thanked: 307 times

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

Post by DrKnS »

John Doe wrote:1. Выделять не сдвигая курсор к следующему элементу.
Разве что в виде нового макроса.
2. Вместо CmdLine.Empty проверять что курсор в начале строки.
И как пробел в начале вводить?

User avatar
HaRT
Moderator
Posts: 9486
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 226 times

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

Post by HaRT »

DrKnS wrote: как пробел в начале вводить?
Зачем?
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
DrKnS
Posts: 5647
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 9 times
Been thanked: 307 times

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

Post by DrKnS »

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

Post Reply

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