# Editor

Функция `Editor` позволяет открыть внутренний редактор Far Manager.

    intptr_t WINAPI Editor(
      const wchar_t *FileName,
      const wchar_t *Title,
      intptr_t X1,
      intptr_t Y1,
      intptr_t X2,
      intptr_t Y2,
      EDITOR_FLAGS Flags,
      intptr_t StartLine,
      intptr_t StartChar,
      uintptr_t CodePage
    );

### Параметры

FileName
Файл для редактирования. Если не указан флаг `EF_CREATENEW`, то `FileName` должен содержать имя существующего файла.
Title
Текстовая строка, которая будет показана вверху окна редактора. Если этот параметр равен `NULL`, то используется имя файла.
X1, Y1, X2, Y2
Координаты окна редактора. Если координата `X2` или `Y2` равна `-1`, то она будет замещена соответственно шириной или высотой экрана. Если координата `X1` или `Y1` меньше нуля, то считается, что она равна нулю.
Flags
Флаги редактора. Может быть комбинацией следующих значений (тип EDITOR_FLAGS):

Флаг | Описание
--- | ---
EF_NONMODAL | Создать немодальное окно редактора. Если этот флаг присутствует, пользователь сможет переключаться между редактором и другими окнами Far Manager. Плагин получит управление только после закрытия или ухода из открытого редактора (например, пользователь нажал `Ctrl`+`Tab`). Если вам нужно, чтобы плагин получал управление сразу же после открытия редактора, то используйте флаг `EF_IMMEDIATERETURN`.
EF_IMMEDIATERETURN | Позволяет плагину получать управление сразу же после открытия редактора. Открываемый редактор становится активным. Выставлять этот флаг имеет смысл только в паре с флагом `EF_NONMODAL`.
EF_DELETEONCLOSE | Поручает Far Manager'у удалить редактируемый файл после закрытия редактора. Если в директории, содержащей редактируемый файл, нет других файлов, она также будет удалена. Если требуется удаление только файла, то используйте `EF_DELETEONLYFILEONCLOSE`. Файл не удаляется: если было произведено переключение по `F6` и если существуют другие открытые вьюеры/редакторы с этим же файлом. если файл был сохранён из редактора.
EF_DELETEONLYFILEONCLOSE | Аналог `EF_DELETEONCLOSE`, но удаляется только файл. Этот флаг имеет более низкий приоритет при обработке, чем `EF_DELETEONCLOSE`.
EF_CREATENEW | Создать новый файл на диске. Вызов редактора с этим флагом аналогичен вызову редактора по `Shift`+`F4` в панелях.
EF_ENABLE_F6 | Разрешает переключение по `F6` из редактора во вьюер.
EF_DISABLEHISTORY | Запретить добавление имени файла в историю редактирования (`Alt`+`F11`). По умолчанию имя в историю добавляется.
EF_LOCKED | При открытии файла запретить редактирование. Пользователь сможет снять блокировку с помощью клавиш `Ctrl`+`L`.
EF_DISABLESAVEPOS | Не сохранять позицию в редактируемом файле.
EN_NONE | Нулевой флаг.
EF_OPENMODE_MASK | Маска для EF_OPENMODE_*
EF_OPENMODE_QUERY | Режим открытия. Если файл открыт в редакторе, пользователю будет показан диалог дальнейших действий (GUID: {AFDAD388-494C-41E8-BAC6-BBE9115E1CC0})
EF_OPENMODE_NEWIFOPEN | Режим открытия. Открыть файл в новом редакторе, если файл уже открыт в редакторе
EF_OPENMODE_USEEXISTING | Режим открытия. Переключиться на открытый в редакторе файл.
EF_OPENMODE_BREAKIFOPEN | Режим открытия. Прервать выполнение функции, если файл открыт в редакторе
EF_OPENMODE_RELOADIFOPEN | Режим открытия. Переоткрыть, если файл открыт в редакторе.

StartLine
Начальная строка, в которую помещаем курсор. Нумерация строк начинается с `1`.
StartChar
Позиция курсора в строке. Нумерация позиции начинается с `1`.
CodePage
Номер кодовой страницы, в которой будет открыт редактор. Можете установить значение в `CP_DEFAULT`. Помимо этого можно использовать следующие определения.

Определение | Описание
--- | ---
CP_UNICODE | кодовая страница 1200
CP_REVERSEBOM | кодовая страница 1201
CP_DEFAULT | автоматически определить номер кодовой страницы
CP_REDETECT | переопределить номер кодовой страницы

### Возвращаемое значение

Эта функция возвращает следующие значения (перечисление EDITOR_EXITCODE):

Возвращаемое значение | Описание
--- | ---
EEC_OPEN_ERROR | Ошибка открытия файла. Ошибка возникает в случаях, если: Far Manager не смог выделить достаточно памяти при создании редактора (как объекта); в качестве параметра `FileName` передали пустую строку; в качестве параметра `FileName` было передано имя каталога; редактируемый файл имеет RO-атрибут и пользователь в диалоге подтверждения открытия такого файла отказался от дальнейшего редактирования.
EEC_MODIFIED | Успешное завершение. Файл был изменён. Функция `Editor` также возвращает этот код возврата при использовании флага `EF_NONMODAL`.
EEC_NOT_MODIFIED | Успешное завершение. Файл не был изменён.
EEC_LOADING_INTERRUPTED | Загрузка файла прервана пользователем.

### Замечания

Если `StartLine` и `StartChar` равны `-1`, то при открытии редактора будет восстановлена предварительно сохранённая позиция в файле (если это включено в настройках).
Смотрите также:
Viewer