Latest post of the previous page:
Макросы из Энциклопедии, со страницы примеров:- Macro { description=[[
- Переход в меню выбора дисков на противоположной панели
- включение видимости панели в которой будет происходить смена диска, если её не было]];
- area="Disks"; key="Tab";
- action=function()
- Keys("Esc")
- if not PPanel.Visible then
- Keys("CtrlP")
- end
- Keys("Tab F9 Enter End Enter")
- end;
- }
- Macro { description="выделить/(снять выделение) слово(а) под курсором";
- area="Editor"; key="RAlt";
- action=function()
- Keys("RCtrl9 CtrlRight CtrlLeft")
- if not Object.Selected then
- Keys("CtrlShiftRight")
- else
- Keys("CtrlU")
- end
- Keys("Ctrl9")
- end;
- }
- Macro { description="создание папки с именем==текущей дате";
- area="Shell"; key="CtrlShiftF7"; flags="NoPluginPanels";
- action=function()
- local folder = mf.date("%d.%m0.%Y");
- if 0==Panel.FExist(0,folder) then
- Keys("F7 CtrlY")
- mf.print(folder)
- Keys("Enter")
- end
- end;
- }
- -- искать тот же файл на другой панели что и на активной
- Macro { description="искать тот же файл на другой панели что и на активной";
- area="Shell"; key="CtrlAltLeft CtrlAltRight";
- action=function()
- if (not APanel.Bof or APanel.Root) and PPanel.Visible then
- if 0~=Panel.SetPos(1,APanel.Current) then
- Keys("Tab")
- end
- end
- end;
- }
- local N = 30
- Macro { description="Выделение следующих нижних 30 файлов";
- area="Shell"; key="CtrlDown";
- action=function()
- for i=1,N do
- local eof = APanel.Eof
- Keys("Ins")
- if eof then break end
- end
- end;
- }
- Macro { description="Выделение следующих верхних 30 файлов";
- area="Shell"; key="CtrlUp";
- action=function()
- if APanel.Bof then return end
- Keys("Up")
- if APanel.Bof then
- if not APanel.Root then
- Keys("Down")
- end
- return
- end
- Keys("Down")
- local eof = APanel.Eof
- Keys("Ins")
- if not eof then Keys("Up") end
- for i=2,N do
- Keys("Up Ins Up")
- if APanel.Bof then
- if not APanel.Root then
- Keys("Down")
- end
- return
- end
- end
- Keys("Up")
- end;
- }
- Macro { description="сграбить весь экран в текстовый файл far-screen.out";
- area="Dialog"; key="AltP";
- action=function()
- mf.clip(5)
- Keys("AltIns CtrlHome ShiftEnd ShiftPgDn Enter")
- Keys("Esc")
- if not Area.Shell then Keys("Esc") end
- if Area.Shell and not APanel.Plugin then Keys("ShiftF4 CtrlY")
- mf.print("far-screen.out")
- Keys("Enter ShiftIns Enter Enter F2 Esc") end
- end;
- }
- -- удаление файла/папки по клавише Del
- -- если стояли на элементе .. то пытаемся удалить вышестоящую папку
- -- если не в конце ком строки то удаляем символы в ней
- Macro { description="удаление файла/папки по клавише Del";
- area="Shell"; key="Del";
- action=function()
- if not CmdLine.Eof then
- Keys("Del")
- else
- if not APanel.Selected and APanel.Bof and (not APanel.Root or APanel.Plugin) then
- Keys("CtrlPgUp")
- end
- Keys("F8")
- end
- end;
- }
- -- перед вызовом быстрого просмотра сделать пассивную панель
- -- максимально большего размера.
- -- для обратной операции восстановить панели.
- Macro { description="QView: максимизировать панель";
- area="Shell"; key="CtrlQ";
- action=function()
- Keys("Tab")
- if Area.QView then
- Keys("Tab Ctrl2 Tab CtrlClear")
- else
- Keys("Tab Ctrl6 Tab")
- local key = APanel.Left and "CtrlRight" or "CtrlLeft"
- Keys(("%i*%s"):format(APanel.Width,key))
- end
- Keys("Tab CtrlQ")
- end;
- }
- local FSPLIT_EXT = 8
- local FSPLIT_NAME = 4
- local ACTIVEPANEL = 0
- local PANELITEM_SELECTED = 8
- -- При непустой командной строке макрос не вызывается чтобы можно пользоваться первоначальной
- -- функцией сочетания CtrlShiftIns - Поместить помеченные имена в Буфер Обмена
- Macro { description="Пометить вместе с htm-файлом и парную ему папку";
- area="Shell"; key="CtrlShiftIns"; flags="EmptyCommandLine";
- action=function()
- local Current=APanel.Current;
- local Ext = Current:sub(-6)
- local Name
- if Ext=="_files" then
- Name = Current:sub(1,-6)
- else
- Ext = mf.fsplit(Current,FSPLIT_EXT);
- Name = mf.fsplit(Current,FSPLIT_NAME);
- end
- if Ext==".htm" or Ext==".html" then
- Panel.SetPos(ACTIVEPANEL,Name..".files")
- Panel.SetPos(ACTIVEPANEL,Name.."_files")
- elseif Ext==".files" or Ext=="_files" then
- Panel.SetPos(ACTIVEPANEL,Name..".htm")
- Panel.SetPos(ACTIVEPANEL,Name..".html")
- end
- if APanel.Current~=Current then
- local function Select()
- if not Panel.Item(ACTIVEPANEL,0,PANELITEM_SELECTED) then Keys("Ins") end
- end
- Select()
- Panel.SetPos(ACTIVEPANEL,Current)
- Select()
- end
- end;
- }
- -- Скроллинг текста по горизонтали:
- Macro { description="ScrollLock: Скроллинг текста по горизонтали";
- area="Editor"; key="Left Right";
- condition=function() return band(1,mf.flock(2,-1))~=0 end;
- action=function()
- local dir = mf.akey(1,1)=="Right" and 1 or -1
- Editor.Pos(1,5,Editor.Pos(0,5)+dir)
- end;
- }
GeSHi © Codebox Plus Extension
Если вдруг кому-то не всё равно, то проверьте.
P.S.
Макрос призванный проиллюстрировать использование eval сейчас абсолютно не актуален.
Полагаю он не нужен там вообще, но если угодно то так (без eval)
Code: Select all
-- Требуется по F10 запускать окно проводника для папки на активной панели,
-- содержимое командной строки должно сохраняться.
local Flg_Cmd,CmdCurPos,CmdVal
local function CmdSave()
Flg_Cmd = not CmdLine.Empty
if Flg_Cmd then
CmdCurPos = CmdLine.ItemCount-CmdLine.CurPos+1;
CmdVal = CmdLine.Value
Keys("Esc")
end
end
local function CmdRestore()
if Flg_Cmd then
mf.print(CmdVal)
Keys(CmdCurPos.."*CtrlS")
Flg_Cmd = false
end
end
Macro { description="запускать окно проводника для папки на активной панели";
area="Shell"; key="F10";
condition=function()
return APanel.Folder
and (not APanel.Plugin
or (not APanel.Bof and (band(APanel.OPIFlags,0x20))))
end;
action=function()
CmdSave()
if APanel.Current==".." then
Keys(".")
end
Keys("ShiftEnter")
CmdRestore()
end;
}