Класс FarEd

Класс FarEd представляет собой обертку вокруг функции FAR EditorControl() и предназначен для выполнения различных операций с редактором FAR. Все методы этого класса реализованы как статические, и создание экземпляров этого класса невозможно.

Функции, возвращающие значение типа int, если не указано иного, возвращают TRUE при успешном завершении операции и FALSE в случае ошибки. Все методы, модифицирующие текст, возвращают FALSE, если текущий экземпляр редактора находится в режиме "только для чтения" (переключается нажатием Ctrl-L).

Методы

1. Получение информации о тексте

static int GetString (int StringNumber, EditorGetString *egs)

Возвращает полную информацию о строке редактируемого текста с указанным номером. Возвращаемая информация записывается в стандартную структуру FAR API EditorGetString, адрес которой передается в качестве параметра функции. В случае, если передано значение StringNumber=-1, возвращается информация о текущей строке. Функция возвращает TRUE при успешном завершении операции или FALSE в случае, если передан неверный индекс строки.

static int GetStringText (int StringNumber, char *StringText, int MaxLength)

static FarString GetStringText (int StringNumber)

Возвращают текст строки с указанным номером. Первый вариант функции копирует символы строки в буфер фиксированной длины, второй вариант возвращает текст строки в виде экземпляра класса FarString.

static int GetCurStringText (char *StringText, int MaxLength)

static FarString GetCurStringText()

Возвращают текст текущей строки. В остальном аналогичны функциям GetStringText().

static int GetStringLength (int StringNumber);

static int GetCurStringLength();

Возвращают информацию о длине строки, либо для строки с указанным номером, либо для текущей строки.

static int GetStringSel (int StringNumber, int *SelStart, int *SelEnd)

Возвращает информацию о пересечении выделенного блока со строкой с указанным номером. В SelStart записывается начальная позиция выделения в строке, либо -1, если указанная строка не входит в выделенный блок. В SelEnd записывается конечная позиция выделения, либо -1, если выделенный блок продолжается дальше конца строки. Для StringNumber=-1 возвращается информация о текущей строке.

2. Управление текущей позицией в тексте

static int SetPos (int CurLine, int CurPos)

Устанавливает курсор в редакторе в указанную позицию. CurLine содержит номер строки, куда устанавливается курсор, CurPos - индекс символа в строке, на который устанавливается курсор (то есть, каждый символ табуляции считается как один символ).

static int SetTabPos (int CurLine, int CurTabPos)

Устанавливает курсор в редакторе в указанную позицию. CurLine содержит номер строки, куда устанавливается курсор, CurPos - номер колонки (то есть, каждый символ табуляции считается как один или несколько символов, в зависимости от размера табуляции).

static int SetViewPos (int TopScreenLine, int LeftPos)

Устанавливает координаты видимой области в редакторе. TopScreenLine содержит номер первой строки, видимой на экране, LeftPos - номер самой левой видимой колонки.

static int SetOvertype (BOOL Overtype)

Переключает между режимами вставки и замены. Overtype=FALSE включает режим вставки, Overtype=TRUE - замены.

int SelectBlock (int BlockType, int BlockStartLine, int BlockStartPos, int BlockWidth, int BlockHeight)

Выделяет блок в редакторе. BlockType указывает тип блока (BTYPE_STREAM для поточного блока или BTYPE_COLUMN для вертикального), BlockStartLine и BlockStartPos - начальные координаты блока, BlockWidth и BlockHeight - ширина и высота блока. BlockHeight всегда должна быть больше или равна единице, BlockHeight может быть отрицательной только для поточных блоков.

static int UnselectBlock()

Снимает выделение в редакторе.

3. Модификация текста

static int InsertString (bool Indent=false)

Разбивает строку в текущей позиции курсора и ставит курсор в начало новой строки. Если параметр Indent равен true, для новой строки используется автоматический отступ; в противном случае, курсор всегда ставится в первую позицию строки.

static int InsertText (const char *Text)

Вставляет указанную последовательность символов начиная с текущей позиции курсора в редакторе, как если бы она была введена с клавиатуры. Последовательность должна быть в кодировке OEM и может содержать символы перевода строки.

static int DeleteString()

Удаляет текущую строку в редакторе.

static int DeleteChar()

Удаляет символ под курсором в редакторе.

static int ExpandTabs (int StringNumber)

Заменяет все символы табуляции в строке с указанным номером на пробелы, в соответствии с размером табуляции, указанным в настройках редактора. Если StringNumber равен -1, замена осуществляется для текущей строки.

4. Сервисные функции

static int Redraw()

Полностью перерисовывает окно редактора.

int EditorToOem (char *Text, int TextLength)

int EditorToOem (FarString &Text)

Преобразует указанную текстовую строку из текущей кодировки редактора в кодировку OEM.

static int OemToEditor (char *Text, int TextLength)

static int OemToEditor (FarString &Text)

Преобразует указанную текстовую строку из кодировки OEM в текущую кодировку редактора.

static int TabToReal (int StringNumber, int SrcPos)

Преобразует экранную координату для указанной строки в индекс символа. Возвращает результат преобразования или -1 в случае ошибки. StringNumber указывает номер строки, для которой осуществляется преобразование, или -1 для текущей строки. Для строки, не содержащей символов табуляции, результат преобразования равен значению, переданному на входе.

static int RealToTab (int StringNumber, int SrcPos)

Преобразует индекс символа в указанной строке в экранную координату. В остальном аналогична TabToReal().

static int SetTitle (const char *Title)

Устанавливает заголовок окна редактора.

static int ReadInput (INPUT_RECORD *pRec)

Читает следующее событие из входного потока и записывает его в структуру INPUT_RECORD, адрес которой передается в качестве параметра.

static int ProcessInput (const INPUT_RECORD *pRec)

Передает указанную структуру INPUT_RECORD на обработку в редактор FAR.

static int AddColor (int StringNumber, int StartPos, int EndPos, int Color)

Добавляет область раскраски для строки. Параметр StringNumber указывает номер строки, для которой добавляется область (-1 для текущей строки), StartPos и EndPos - начальная и конечная позиция фрагмента строки, раскрашиваемого указанным цветом, Color - цвет для этого фрагмента.

static int DeleteColor (int StringNumber, int StartPos=-1)

Удаляет области раскраски для указанной строки. Если параметр StartPos равен -1, удаляются все области раскраски, в противном случае - области начиная с указанного номера.

static int GetColor (int StringNumber, int ColorItem, int *StartPos, int *EndPos, int *Color)

Возвращает информацию о цветовой области в строке. Параметр StringNumber указывает номер строки, для которой получается информация, ColorItem - номер области, информация о которой получается. Функция записывает в параметры StartPos и EndPos начальную и конечную координаты области с указанным номером, а в параметр Color - цвет этой области.

static int SaveFile (const char *FileName = NULL, const char *StringEOL = NULL)

Сохраняет файл, открытый в редакторе. Параметр FileName указывает имя, под которым должен быть сохранен файл (включая полный путь), или NULL, если должно быть использовано текущее имя. Параметр StringEOL указывает последовательность символов, которая будет использоваться для переводов строки ('\n' либо '\r\n'), или NULL, если должна быть использована текущая последовательность.

static void Quit()

Закрывает редактор без вывода подтверждений и без сохранения редактируемого файла.