Editor.CurLinenumber
Editor.CurPosnumber
Editor.FileNamestring
Editor.Linesnumber
Editor.RealPosnumber
Editor.SelValuestring
crlf в конце строк).
Editor.Statenumber
различные состояния текущего редактора — набор битовых флагов:
0x000000010x000000020x000000040x00000008*’)
0x00000010Editor.Sel(0,4))
0x00000020Editor.Sel(0,4))
0x000000400x000000800x000001000x000002000x000004000x000008000x08000000/e
Например,
Editor.Valuestring
содержимое текущей строки в редакторе под курсором. Например, показать текущий символ под курсором:
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 задаёт поведение функции:
011/0 — успешно/неуспешно выполнена установка
Функция возвращает -1 в случае прочих ошибок (например, неверные параметры, или функция вызвана не из редактора).
Параметр Object — над чем выполняется операция:
123456Пример см. в разделе Примеры.
V=Editor.Sel(Action[,Opt])Функция позволяет производить некоторые операции с блоками в тексте (в редакторе, в строках ввода в диалогах, в командной строке).
Action:
0получить параметры текущего блока Opt:
01234вернуть тип выделенного блока:
0 — блок не выделен, 1 — обычный блок, 2 — вертикальный блок
(альтернативный вариант — свойство Editor.State)
1позиционировать курсор внутри текущего блока
Opt:
012установка позиций блока
Opt:
01Позицией начала/конца блока считается текущая позиция курсора.
Блок помечается только после указания конечной позиции (Opt=1), с ранее выделенного блока пометка снимается.
Если позиция начала и конца блока совпадают, то эта операция равносильна снятию пометки блока.
3установка позиций вертикального блока
Opt:
01Позицией начала/конца блока считается текущая позиция курсора.
Блок помечается только после указания конечной позиции (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:
0number
1number
0 — не преобразовывать табуляцию 1 — преобразовывать все символы табуляции в пробелы 2 — преобразовывать новые символы табуляции в пробелы
2number
3number
4number
5number
7number
8number
Editor.BSLikeDel (far:config). Задаёт поведение клавиши BackSpace в редакторе, когда выделен вертикальный блок. Если значение отлично от 0, то BackSpace удаляет вертикальный блок подобно клавише Delete.
9number
Editor.CharCodeBase (far:config). Представление кода символа под курсором в статусной строке. Может принимать следующие значения: 0 — восьмеричное значение (3 символа с ведущим нулями) 1 — десятеричное значение (3 символа с ведущими пробелами) 2 — шестнадцатеричное значение (2 символа под цифру + символ ‘h’)
10number
11number
12string
System.WordDiv (far:config). Символы разделители слов. По умолчанию: ~!%^&*()+|{}:"<>?`-=\[];',./
14number
Editor.AllowEmptySpaceAfterEof (far:config) Окончание файла в редакторе всегда находится внизу экрана, если строк в файле больше чем строк экрана. При построчном скроллировании вниз (например, с помощью Ctrl+Down), скроллирование прекращается, когда показывается последняя строка.
Value может принимать следующие значения:
0 — прекратить скроллинг, если последняя строка внизу экрана1 — продолжать скроллинг, при этом:
15number
16number
17number
18number
19number
20number
Значение 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 — одно из:
0123Возвращает 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 может быть одним из следующих:
0123N=BM.Stat([Param])Получить информацию о закладках.
Параметр Param может быть одним из следующих:
010 если закладок нет)
Пример работы с закладками:
Для редактируемого файла 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.Смотрите также: