Editor.CurLine
number
Editor.CurPos
number
Editor.FileName
string
Editor.Lines
number
Editor.RealPos
number
Editor.SelValue
string
crlf
в конце строк).
Editor.State
number
различные состояния текущего редактора — набор битовых флагов:
0x00000001
0x00000002
0x00000004
0x00000008
*
’)
0x00000010
Editor.Sel(0,4)
)
0x00000020
Editor.Sel(0,4)
)
0x00000040
0x00000080
0x00000100
0x00000200
0x00000400
0x00000800
0x08000000
/e
Например,
Editor.Value
string
содержимое текущей строки в редакторе под курсором. Например, показать текущий символ под курсором:
N=Editor.DelLine([Line])
Line
. Если Line
не указан или меньше 1
, то удаляется текущая строка. Возвращает 1
для успешно выполненной операции или 0
— если редактор не в фокусе/редактор залочен/нет строки с запрашиваемым номером.
S=Editor.GetStr([Line])
Line
. Если Line
не указан или меньше 1
, то возвращается текущая строка. Возвращает строку с запрашиваемым номером.
N=Editor.InsStr([S[,Line]])
S
после строки с номером Line
. Если S
не указан, то вставляется пустая строка. Если Line
не указан или меньше 1
, то вставляется в текущую строку. Возвращает 1
для успешно выполненной операции или 0
— если редактор не в фокусе/редактор залочен/нет строки с запрашиваемым номером.
N=Editor.Pos(Action,Object[,Value])
Получение/установка позиций в редакторе.
Параметр Action
задаёт поведение функции:
0
1
1
/0
— успешно/неуспешно выполнена установка
Функция возвращает -1
в случае прочих ошибок (например, неверные параметры, или функция вызвана не из редактора).
Параметр Object
— над чем выполняется операция:
1
2
3
4
5
6
Пример см. в разделе Примеры.
V=Editor.Sel(Action[,Opt])
Функция позволяет производить некоторые операции с блоками в тексте (в редакторе, в строках ввода в диалогах, в командной строке).
Action
:
0
получить параметры текущего блока Opt
:
0
1
2
3
4
вернуть тип выделенного блока:
0
— блок не выделен, 1
— обычный блок, 2
— вертикальный блок
(альтернативный вариант — свойство Editor.State
)
1
позиционировать курсор внутри текущего блока
Opt
:
0
1
2
установка позиций блока
Opt
:
0
1
Позицией начала/конца блока считается текущая позиция курсора.
Блок помечается только после указания конечной позиции (Opt=1
), с ранее выделенного блока пометка снимается.
Если позиция начала и конца блока совпадают, то эта операция равносильна снятию пометки блока.
3
установка позиций вертикального блока
Opt
:
0
1
Позицией начала/конца блока считается текущая позиция курсора.
Блок помечается только после указания конечной позиции (Opt=1
), с ранее выделенного блока пометка снимается.
Если позиция начала и конца блока совпадают, то эта операция равносильна снятию пометки блока.
4
снять выделение с блока.
Параметр Opt
игнорируется.
Всегда возвращается 1
.
В случае ошибки (в т. ч. функция вызвана не из “редактора”) возвращаемое значение равно 0
, иначе 1
.
Для Action=0
возвращается запрошенное значение.
Например, повторим некоторые сочетания клавиш из Turbo-сред (Ctrl+K+B, Ctrl+K+K, Ctrl+K+C, Ctrl+K+Y):
local SET = 2
local START,END = 0,1
Macro {
description="повторим некоторые сочетания клавиш из Turbo-сред";
area="Editor"; key="CtrlK";
action=function()
local k = mf.waitkey():lower()
local function KeyIs(key)
return k==key or k=="ctrl"..key
end
if KeyIs("b") then
Editor.Sel(SET,START) -- пометить начало блока
elseif KeyIs("k") then
Editor.Sel(SET,END) -- пометить конец блока
elseif KeyIs("c") then
Keys(Object.Selected and "CtrlC") -- копировать
elseif KeyIs("y") then
Keys(Object.Selected and "CtrlD") -- удалить
else
Keys("F1")
end
end;
}
V=Editor.Set(Option[,Value])
Получить/изменить настройки текущей копии редактора.
Option
:
0
number
1
number
0
— не преобразовывать табуляцию 1
— преобразовывать все символы табуляции в пробелы 2
— преобразовывать новые символы табуляции в пробелы
2
number
3
number
4
number
5
number
7
number
8
number
Editor.BSLikeDel
(far:config
). Задаёт поведение клавиши BackSpace в редакторе, когда выделен вертикальный блок. Если значение отлично от 0
, то BackSpace удаляет вертикальный блок подобно клавише Delete.
9
number
Editor.CharCodeBase
(far:config
). Представление кода символа под курсором в статусной строке. Может принимать следующие значения: 0
— восьмеричное значение (3 символа с ведущим нулями) 1
— десятеричное значение (3 символа с ведущими пробелами) 2
— шестнадцатеричное значение (2 символа под цифру + символ ‘h
’)
10
number
11
number
12
string
System.WordDiv
(far:config
). Символы разделители слов. По умолчанию: ~!%^&*()+|{}:"<>?`-=\[];',./
14
number
Editor.AllowEmptySpaceAfterEof
(far:config
) Окончание файла в редакторе всегда находится внизу экрана, если строк в файле больше чем строк экрана. При построчном скроллировании вниз (например, с помощью Ctrl+Down), скроллирование прекращается, когда показывается последняя строка.
Value
может принимать следующие значения:
0
— прекратить скроллинг, если последняя строка внизу экрана1
— продолжать скроллинг, при этом:
15
number
16
number
17
number
18
number
19
number
20
number
Значение Value
может быть опущено или равно -1
, в этом случае функция ничего не изменит, а вернёт текущее значение настройки.
Возвращает предыдущее значение опций или -1
, если данные указаны некорректно, или функция вызвана не из редактора.
Значения опции 16
изменить нельзя.
Например, макрос, перемещающий выделенный фрагмент на одну строку (сохраняет выделение вне зависимости от настроек постоянных блоков):
local PERSISTENT = 2
Macro {
description="перемещение выделенного фрагмента на одну строку вниз/вверх";
area="Editor"; key="CtrlShiftDown CtrlShiftUp"; flags="NoSendKeysToPlugins";
action=function()
if not Object.Selected then
Keys("Home CtrlIns")
end
local key = mf.akey(1,1):match("Down") or "Up"
mf.clip(5)
local a = Editor.Set(PERSISTENT,1) -- включить постоянные блоки
Keys("CtrlX",key,"CtrlV")
Editor.Set(PERSISTENT,a) -- вернуть предыдущий режим
end;
}
N=Editor.SetStr([S[,Line]])
Line
на значение S
. Если S
не указан, то строка будет пустой. Если Line
не указан или меньше 1
, то заменяется текущая строка. Позиция курсора в редакторе не меняется. Возвращает 1
для успешно выполненной операции или 0
— если редактор не в фокусе/редактор залочен/нет строки с запрашиваемым номером.
E=Editor.SetTitle([Title])
Установка заголовка в статусной строке редактора.
Если параметр Title
отсутствует или равен пустой строке, то восстанавливается предыдущее значение статусной строки.
При показе заголовок будет усечён до размера, не затрагивающего служебную информацию (кодировка, позиция, etc.)
Возвращает 1
для успешно выполненной операции или 0
— редактор не в фокусе.
E=Editor.Undo(Action)
Работа с Undo/Redo. Здесь N
— одно из:
0
1
2
3
Возвращает 1
для успешно выполненной операции или 0
в случае ошибки.
Удаление пустых строк:
local GET = 0
local START_LINE, END_LINE = 0, 2
local BEGIN,END = 0,1
Macro {
description="Удаление пустых строк";
area="Editor"; key="CtrlShiftX";
action=function()
local StartLine, EndLine = 1, Editor.Lines
if Object.Selected then
StartLine = Editor.Sel(GET,START_LINE)
EndLine = Editor.Sel(GET,END_LINE)
end
Editor.Undo(BEGIN)
for i=EndLine,StartLine,-1 do
if Editor.GetStr(i):match"^%s*$" then
Editor.DelLine(i)
end
end
Editor.Undo(END)
end;
}
E=BM.Push()
E=BM.Pop()
E=BM.Add()
E=BM.Del([Idx])
Удалить закладку с указанным индексом Idx
.
Если параметр Idx
не указан или равен 0
— удаляется текущая закладка.
E=BM.Clear()
E=BM.Next()
E=BM.Prev()
E=BM.Back()
Перейти на предыдущую закладку.
Если непосредственно перед ней была вызвана BM.Add
— добавить перед переходом закладку с текущими параметрами.
N=BM.Goto([Idx])
Перейти на закладку с указанным индексом Idx
.
Если параметр Idx
не указан или равен 0
— переход на текущую закладку.
N=BM.Get(Idx,Param)
Получить параметры закладки с индексом Idx
. Idx=0
— текущая закладка.
Параметр Param
может быть одним из следующих:
0
1
2
3
N=BM.Stat([Param])
Получить информацию о закладках.
Параметр Param
может быть одним из следующих:
0
1
0
если закладок нет)
Пример работы с закладками:
Для редактируемого файла newarc.ModuleManager.cpp
вставляет в начало
в конец
при наличии строки “#pragma once
” в начале файла, строки вставляются после неё.
local ptnNameExt = "[^\\/]$"
local ptnTrim = "^%s*(.-)%s*$"
Macro {
description="Пример работы с закладками";
area="Editor"; key="CtrlShiftV";
filemask="newarc.ModuleManager.cpp";
action=function()
local d = ("__%s__\n"):format(Editor.FileName:match(ptnNameExt):upper():gsub("%.","_"))
BM.Add()
Keys("CtrlHome")
if Editor.Value:lower():match(ptnTrim)=="#pragma once" then
Keys("Down")
end
mf.print(("#ifndef %s\tdefine %s"):format(d,d))
Keys("CtrlEnd Enter Home")
mf.print("#endif //! "..d)
BM.Next()
BM.Del()
end;
}
1
.1
.1
.Смотрите также: