Editor

Programming Far Manager plugins

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.
Файл не удаляется:
  1. если было произведено переключение по F6 и если существуют другие открытые вьюеры/редакторы с этим же файлом.
  2. если файл был сохранён из редактора.
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, то при открытии редактора будет восстановлена предварительно сохранённая позиция в файле (если это включено в настройках).
Смотрите также: