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

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

Latest post of the previous page:

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: 10822
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 »

Чтобы фар не обрабатывал команду, например.
Также мне смутно помнится, что какие-то хистори-плагины трактуют это как "не помещать в историю".
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

DrKnS, лично мне такие сценарии нужны очень редко, поэтому и не проблема временно отключить или панели, или макросы.
Фар есть инструмент, а не нянька. © 2009 DrKnS
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 »

DrKnS wrote: Разве что в виде нового макроса.
При желании можно было бы и в одном объединить.
DrKnS wrote: Также мне смутно помнится, что какие-то хистори-плагины трактуют это как "не помещать в историю".
Это для того чтобы не засорять историю командами ассоциаций и т.п., а не для ручного запуска.
Также мне смутно помнится что в какой-то момент фар начал обрезать эти пробелы, и соответственно фича отвалилась.
Post Reply

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