Page 1 of 6

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

Posted: Thu 21 Mar, 2013 13:16
by John Doe
Тема служит для обсуждения штатных макросов из Addons\Macros.

Привёл макросы в соответствие с актуальными возможностями LuaMacro.
Прежде всего пообъединял где можно, пользуясь возможностью назначения макросу нескольких макрообластей и клавиш.

Конечно, многие макросы стоит вообще переработать, простор для улучшения есть, предлагайте.

Примечание: из обсуждения выделены следующие темы: Связанные темы:

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

Posted: Thu 21 Mar, 2013 13:20
by John Doe
Макрос ShiftF1.lua давно неактуален, рассчитан на MultiArc
Смысла View.CtrlUpDown.lua я вообще не понял.
Объясните кто знает

Edit: кусок обсуждения уплыл в отделённую тему.

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

Posted: Thu 21 Mar, 2013 15:14
by John Doe
John Doe wrote:Прежде всего пообъединял где можно, пользуясь возможностью назначения макросу нескольких макрообластей и клавиш.
Больше всего изменился Edit.Notepad.lua, вместо 8 макросов 2

Code: Select all

local notepad={
  CtrlF = "F7",           --Find...
  F3    = "ShiftF7",      --Find Next
  CtrlH = "CtrlF7",       --Replace...
  CtrlG = "AltF8",        --Go To...
  CtrlN = "ShiftF4 Enter",--New File
  CtrlO = "ShiftF4",      --Open...
  CtrlS = "F2",           --Save File
}

Macro {description="Editor: like Notepad";
  area="Editor"; key="/([LR]Ctrl[FHGNOS])|F3/"; flags=""; action = function()
Keys(notepad[akey(1)])
  end;
}

Macro {description="Editor: Paste Time/Date";
  area="Editor"; key="F5"; flags=""; action = function()
mf.print(mf.date('%R %x'))
  end;
}
...
В архиве этого нет, но макросы Panel.CtrlLeft.lua и Panel.CtrlRight.lua можно объединить в Panel.CtrlLeftRight.lua


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

Posted: Thu 21 Mar, 2013 15:22
by tstr
Вы поаккуратнее с изменениями в поставке - такой способ (вызов ф-ции на многие клавиши) не срабатывает в автоматическом добавлении описания и шорткатов в помощь.

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

Posted: Thu 21 Mar, 2013 15:27
by John Doe
Но способ-то правильный.
Если с помощью что-то не так, то пишите на мантис.

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

Posted: Thu 21 Mar, 2013 15:50
by tstr
И как таким правильным способом в помощь попадут комментарии из функции, напр. "--Find Next"?

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

Posted: Thu 21 Mar, 2013 15:51
by Shmuel
John Doe wrote:

Code: Select all

  local d = akey(1) == "CtrlLeft" and "Up" or "Down")
  Keys('F9 Enter Up Enter'..d..'Enter Esc')
Неплохо бы вам проверять, что получилось. Это всё-таки программирование.

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

Posted: Thu 21 Mar, 2013 15:54
by John Doe

Code: Select all

local dir = {CtrlLeft="Up", CtrlRight="Down"}
Macro {
  description="Change current drive";
  area="Shell"; key="CtrlLeft CtrlRight"; flags="EmptyCommandLine";
  action=function()
    Keys("F9 Enter Up Enter",dir[akey(1)],"Enter Esc")
  end;
}
Update:
Тут продолжение: http://forum.farmanager.com/viewtopic.php?f=15&t=9172

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

Posted: Fri 22 Mar, 2013 16:40
by John Doe
Замена для Panel.Numpad.lua

Code: Select all

local Numpad={Multiply="*", Add="+", Subtract="-", Divide="/"}
local key="Multiply Add Subtract Divide"

Macro {description="Use numpad keys in command line"; 
  area="Shell ShellAutoCompletion"; key=key; flags="NotEmptyCommandLine"; 
  action = function() Keys(Numpad[akey(1)]) end;
}
Macro {description="Use numpad keys in command line"; 
  area="Search"; key=key;
  action = function() Keys(Numpad[akey(1)]) end;
}
Или

Code: Select all

Numpad={Multiply="*", Add="+", Subtract="-", Divide="/"}
Macro {description="Use numpad keys in command line"; 
  area="Shell ShellAutoCompletion Search"; key="Multiply Add Subtract Divide"; 
  condition=function() return not CmdLine.Empty or Area.Search end; 
  action = function() Keys(Numpad[akey(1)]) end;
}

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

Posted: Sat 23 Mar, 2013 18:26
by John Doe
Замена для Panel.JumpToSelectedFile.lua
(обсуждение тут)


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

Posted: Wed 24 Apr, 2013 17:48
by Smitis
Давно хочу спросить, а чем вызвано такое странное форматирование макросов (даже не знаю, как его назвать)?

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

Posted: Wed 24 Apr, 2013 17:51
by John Doe
Очевидно стремлением автора избежать "лишних" отступов.

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

Posted: Wed 24 Apr, 2013 18:13
by Smitis
John Doe wrote:Очевидно стремлением автора избежать "лишних" отступов.
Чем же они лишние?

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

Posted: Mon 11 Nov, 2013 08:08
by den po
shmuel 14.07.2013 00:25:05 +0200 - build 3518

1. Макросы: флаги "Selection" и "NoSelection" больше не применяются для областей редактора/вьювера/диалога.
Для этих областей следует использовать соответственно "EVSelection" и "NoEVSelection".
а тем временем с фаром до сих пор идут CtrlDel.lua и WindowsGUI.lua, в которых используется старый вариант flags="Selection"

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

Posted: Mon 11 Nov, 2013 08:21
by Shmuel
den po wrote:а тем временем с фаром до сих пор идут CtrlDel.lua и WindowsGUI.lua, в которых используется старый вариант flags="Selection"
Большое спасибо за репорт. Исправлено.

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

Posted: Fri 30 May, 2014 12:49
by John Doe
Addons\Macros\F3.lua
  1. Macro { description="Use internal editor as viewer";
  2.   area="Shell"; key="F3"; flags="NoPluginPanels NoFolders";
  3.   action = function()
  4.     Keys('F4')
  5.     if Area.Dialog then Keys('Enter') end
  6.     if Area.Editor and bit64.band(Editor.State,0x200)~=0x200 then Keys('CtrlL') end
  7.   end;
  8. }
Кто знает, для чего служит строка 5?
(Вероятно, она задумана чтобы согласиться с каким-то подтверждением, но соглашаться со всем подряд это не есть хорошо)

Update:
  1. В области добавлена Search (https://bugs.farmanager.com/view.php?id=2853)
  2. Разрешена работа на плагиновых панелях
  3. Добавлен ряд условий срабатывания (condition)
  1. local LOCKED = 0x200
  2. Macro {
  3.   description="Use internal editor as viewer";
  4.   area="Shell Search"; key="F3";
  5.   flags="NoSendKeysToPlugins";
  6.   condition=function()
  7.     return APanel.Visible
  8.        and not APanel.Empty
  9.        and not APanel.Folder
  10.        and (not APanel.Plugin or band(APanel.OPIFlags,far.Flags.OPIF_REALNAMES)~=0)
  11.   end;
  12.   action=function()
  13.     Keys"F4"
  14.     if Dlg.Id==far.Guids.EditorOpenRSHId then Keys"Enter" end
  15.     if Area.Editor and band(Editor.State,LOCKED)==0 then Keys"CtrlL" end
  16.   end;
  17. }