Насчёт управления макросами полностью согласится не могу, куча отдельных макросов это неудобно.
Но ваши доводы имеют смысл, поэтому
akey(1)=="CtrlShiftDown"
стоит записать как
akey(1):match("Down$")
, таким образом макрос не придётся править даже если вы решите использовать другие модификаторы.
А насчёт читабельности - полностью справедливое замечание.
Вот это вот точно не образец для подражания
akey(1):match("[e7]$") and 1 or -1
Я некоторое время назад предлагал решить эту проблему таким образом:
0002310: Передавать макросу полный разбор регэкспа - клавиши
Когда это будет реализовано, то макрос станет менее громоздким, как-то так:
Macro {description="Jump to the first/last selected file";
area="Shell"; key="/[LR]CtrlShift(Home|Num7)|(End|Num1)/"; flags="Selection";
action = function(key)
local dir = key[1] and 1 or -1
JumpToSelectedFile(dir,from_start)
end;
}
Здесь
key[1] обозначает группу (1), совпавшую в регэкспе
key="/[LR]CtrlShift(Home|Num7)|(End|Num1)/"
key() может быть функцией, а может быть таблицей - параметром action/condition.
P.S.
Но пока это пожелание не реализовано, пожалуй стоит разделить эти макросы, ради читабельности.