int WINAPI EditorControl( int Command, void* Param );
| Команда | Описание |
|---|---|
| ECTL_ADDCOLOR | Задать цвет части строки. Эта команда может быть вызвана несколько раз для одной и той же строки для задания нескольких цветных областей. Param указывает на структуру EditorColor. Если указанная строка отсутствует, то возвращается FALSE, иначе TRUE. |
| ECTL_ADDSTACKBOOKMARK | Добавить позицию навигации ("стековую закладку") в текущую позицию редактора. При добавлении удаляются все позиции навигации с индексом выше индекса текущей позиции навигации. Param должен быть равен NULL. Команда возвращает TRUE в случае успешного выполнения. |
| ECTL_CLEARSTACKBOOKMARKS | Удалить все позиции навигации. Param должен быть равен NULL.
|
| ECTL_DELETEBLOCK | Удалить блок в редакторе. Функция вернет
TRUE в случае удачного удаления блока и FALSE,
если редактор заблокирован (пользователь нажал Ctrl-L) или
нет выделенного блока. Param должен быть равен NULL.
|
| ECTL_DELETECHAR | Удалить символ под курсором. Param должен быть NULL. |
| ECTL_DELETESTACKBOOKMARK | Удалить указанную позицию навигации.
Param должен быть равен индексу удаляемой позиции навигации (0 и более) или -1 для удаления текущей позиции навигации.
Количество позиций навигации можна получить, вызвав ECTL_GETSTACKBOOKMARKS c Param
равным значению NULL.Команда возвращает TRUE в случае успешного выполнения. |
| ECTL_DELETESTRING | Удалить текущую строку. Param должен быть NULL. |
| ECTL_EDITORTOOEM | Конвертировать текст из кодировки редактора в OEM-кодировку. Param указывает на структуру EditorConvertText. |
| ECTL_EXPANDTABS | Заменить все символы табуляции в строке пробелами. Param указывает на целую переменную, содержащую номер обрабатываемой строки или -1 для обработки текущей строки. |
| ECTL_GETBOOKMARKS | Получить информацию о закладках для текущего
редактируемого файла.
Param указывает на структуру EditorBookMarks.
Команда возвращает FALSE в случае, если:
|
| ECTL_GETSTACKBOOKMARKS | Получить информацию о позициях навигации ("стековых закладках") для текущего
редактируемого файла.
Param указывает на структуру EditorBookMarks или равен значению NULL.Команда возвращает количество позиций навигации, информация о которых была передана (или общее количество позиций навигации, если в качестве Param было передано значение NULL).
|
| ECTL_GETCOLOR | Получить цвет части строки. Param указывает на структуру EditorColor. Если указанная строка или часть строки отсутствует, то возвращается FALSE, иначе TRUE. |
| ECTL_GETINFO | Получить информацию о редакторе. Param указывает на структуру EditorInfo. |
| ECTL_GETSTRING | Получить информацию о строке. Param
указывает на структуру EditorGetString.
Полученная строка будет в кодировке редактора.
// получить первую строку редактируемого файла struct EditorGetString egs; egs.StringNumber=0; Info.EditorControl(ECTL_GETSTRING,&egs); |
| ECTL_INSERTSTRING |
Вставить новую строку (разорвать строку) с текущей позиции
курсора и переместить курсор либо на первую позицию новой
строки, либо на позицию с учетом отступа.
Если Param указывает на целочисленную переменную, равную 1,
то при выполнении данной команды будет использоваться отступ.
Для его отключения установите Param в NULL
или установите целую переменную в 0.
Поведение при отступе из плагина точно такое же, как и при нажатии
<Enter> пользователем в редакторе, например, в
новую строку пробелы (или табуляция) не вставляются, если после
нового положения курсора строка не содержит никаких символов.
// вставить пустую строку без отступа Info.EditorControl(ECTL_INSERTSTRING,0); |
| ECTL_INSERTTEXT | Вставить текст, начиная с позиции курсора. Param
указывает на строку в OEM кодировке, оканчивающуюся нулем (ASCIIZ). Команда корректно
обрабатывает символ(ы) перевода строки (CR). Команда
ECTL_INSERTTEXT работает так, как будто текст вводится с
клавиатуры.
// вставить строку "Text" в текущую позицию курсора Info.EditorControl(ECTL_INSERTTEXT,"Text"); |
| ECTL_NEXTSTACKBOOKMARK | Перейти на следующую позицию навигации.
Param должен быть равен NULL.Команда возвращает TRUE в случае успешного выполнения. |
| ECTL_OEMTOEDITOR | Конвертировать текст из OEM-кодировки в кодировку редактора. Param указывает на структуру EditorConvertText. |
| ECTL_PREVSTACKBOOKMARK | Перейти на предыдущую позицию навигации.
Если после предыдущего вызова команды ECTL_ADDSTACKBOOKMARK не выполнялось операций
с позициями навигации, то перед переходом запоминается текущая позиция редактора в качестве новой позиции навигации.
Param должен быть равен NULL. Команда возвращает TRUE в случае успешного выполнения.
|
| ECTL_PROCESSINPUT | Передает структуру INPUT_RECORD,
указатель на которую передается в Param, внутреннему редактору
FAR для обработки. Учтите, что если ваш плагин экспортирует функцию ProcessEditorInput, то данные из Param сразу же будут переданы в ProcessEditorInput. Схема проста: case ECTL_PROCESSINPUT:
if (ProcessEditorInput(Param))
return(TRUE);
...
Поэтому используя EditorControl(ECTL_PROCESSINPUT) в функции ProcessEditorInput следите
за тем, чтобы не впасть в бесконечную рекурсию.
|
| ECTL_PROCESSKEY | Функция позволяющая "нажимать" в редакторе
различные клавиши, коды которых передаются в Param. Используются внутренние коды клавиш FAR Manager (см. farkeys.hpp) Эта команда всегда возвращает TRUE. // перейти в конец редактируемого файла Info.EditorControl(ECTL_PROCESSKEY,(void*)KEY_CTRLEND); |
| ECTL_QUIT | Закрыть редактор. Любая несохраненная информация будет потеряна. Param должен быть равен NULL. Эта команда всегда возвращает TRUE. |
| ECTL_READINPUT | Заполняет структуру INPUT_RECORD читая данные со стандартного устройства ввода. Param указывает на структуру INPUT_RECORD (она определена в Win32 API и используется в функции ReadConsoleInput). |
| ECTL_REALTOTAB | Конвертировать реальную строковую позицию курсора в экранную позицию. Если строка не содержит символов табуляции, входная и получаемая позиция будут равными. Param указывает на структуру EditorConvertPos. |
| ECTL_REDRAW | Перерисовать окно редактора. Param должен быть NULL. |
| ECTL_SAVEFILE | Позволяет плагину сохранить редактируемый файл. Param указывает на структуру EditorSaveFile. Если Param равен NULL, то будут использованы имя редактируемого файла и текущий формат сохранения (DOS-формат - перевод строки заменяется на "\r\n", Unix-формат - "\n"). При успешном сохранении файла функция вернет TRUE. |
| ECTL_SELECT | Выделить или снять выделение с блока. Param указывает на структуру EditorSelect. |
| ECTL_SETKEYBAR | Функция, позволяющая управлять поведением
строки функциональных клавиш в редакторе: Param = NULL - восстановить, предыдущее значение Param = -1 - обновить полосу (перерисовать) Param = указатель на структуру KeyBarTitles.
Вызывать данную команду в событии EE_READ
не имеет смысла, т.к. строки функциональных клавиш, как объекта, в момент
загрузки файла в редактор еще не существует. |
| ECTL_SETPARAM | Изменение настроек текущего редактора.
Param указывает на структуру EditorSetParameter.
Команда возвращает TRUE в случае успешного изменения параметров. |
| ECTL_SETPOSITION | Установить позицию курсора. Param указывает на структуру EditorSetPosition. |
| ECTL_SETSTRING | Поместить текст в строку. Param указывает на структуру EditorSetString. Помещаемая строка должна быть в кодировке редактора. |
| ECTL_SETTITLE | Установить заголовок редактора (верхняя статусная панель).
Стандартный заголовок будет восстановлен после отработки плагина.
Param указывает на строку, оканчивающуюся нулем, которая
содержит текст заголовка.// DrawLine\DrawLine.cpp: функция SetTitle Info.EditorControl(ECTL_SETTITLE,(char *)GetMsg(IDTitle)); |
| ECTL_TABTOREAL | Конвертировать экранную позицию курсора в реальную строковую позицию. Если строка не содержит символов табуляции, входная и получаемая позиция будут равными. Param указывает на структуру EditorConvertPos. |
| ECTL_TURNOFFMARKINGBLOCK | Убрать флаг редактора, который устанавливается всегда,
когда пользователь осуществляет выделение вертикального или
поточного блока. Этот флаг существует только для внутренних нужд
FAR Manager и плагинами не используется, но пользователь может заметить
негативные (в основном косметические) дефекты, когда он начал выделять
блок и запустил (или это произошло автоматически) ваш плагин, который,
например, изменил позицию курсора, поэтому вы почти всегда должны
использовать данную команды перед передачей управления FAR, если ваш
плагин изменил файл в редакторе или положение курсора. Param должен быть NULL. |