Scintilla icon Scintilla

Scintilla документация

Последний раз редактировалось 6 июня 2018 г.

Обзор внутреннего устройства Scintilla.
Некоторые примечания по использованию Scintilla.
Как использовать элемент управления Scintilla в Windows.
Простой пример с использованием Scintilla на C++ на Windows.
Простой пример с использованием Scintilla на Visual Basic.
Замануха - крошечный образец, использующий Scintilla на GTK+.
Подробное описание того, как написать лексер, включая обсуждение сворачивания кода.
Как реализовать лексер в контейнере.
Как реализовать свертывание.
Руководство для начинающих по лексеру и сворачиванию кода.
Стиль кодирования, используемый в Scintilla и SciTE, заслуживает внимания, если вы хотите внести код в Scintilla, но не обязательно.

Введение

Windows-версия Scintilla - это оконный элемент управления. Поэтому его основной интерфейс программирования через сообщения Windows. Ранние версии Scintilla эмулировали большую часть API, определяемую стандартными элементами управления Windows Edit и RichEdit, но эти API теперь устарели в пользу собственного, более согласованного API Scintilla. Помимо сообщений, выполняющих действия обычного элемента управления Edit, Scintilla позволяет управлять стилем синтаксиса, свёртыванием, маркерами, автозавершением и вызываемыми подсказками..

Версия GTK+ также использует сообщения аналогично версии Windows. Это отличается от обычной практики GTK+, но облегчает ее быстрое внедрение.

Scintilla также работает с Cocoa на OS X и с Qt и следует за соглашениями этих платформ.

Scintilla предоставляет только ограниченную экспериментальную поддержку Windows для языков справа налево, таких как арабский и иврит. Хотя текст на этих языках может казаться правильным, взаимодействие с этим текстом может работать некорректно, как это происходит с другими редакторами.

В этой документации описываются отдельные сообщения и уведомления, используемые в Scintilla. Это не описывает их совместное взаимодействие, чтобы получить готовый удобный редактор. Лучший способ понять, как написать редактор с использованием Scintilla, - это увидеть, как использует его SciTE. SciTE задействет большую часть возможностей Scintilla.

В следующем описании сообщения описываются как вызовы функций с количеством параметров 0, 1 или 2. Следующие два параметра, знакомые программистам Windows, являются стандартными wParam и lParam. Эти параметры являются целыми числами, достаточно большими для хранения указателей, а возвращаемое значение также является целым числом, достаточно большим, для хранения указателей. Хотя команды используют только описанные параметры, поскольку все сообщения имеют два параметра независимо от того, использует ли их Scintilla, настоятельно рекомендуется, чтобы все неиспользуемые параметры имели значение 0. Это позволяет в будущем улучшать сообщения без риска нарушения существующего кода. Общие типы параметров следующие:

bool Параметры ожидают значения 0 для false и 1 для true.
int Параметры представляют собой 32-битные или 64-битные целые числа в зависимости от платформы. Эквивалентно intptr_t.
const char * Параметры указывают на текст, который передается в Scintilla, но не изменяется. Текст может быть оканчивающимся на нуль или другой параметр может указывать счетчик символов, описание делает это понятным.
char * Параметр является указателем на текстовый буфер, который Scintilla будет заполнять текстом. Иногда другой параметр задаст размер буфера Scintilla. В других случаях вы должны убедиться, что буфер достаточно велик для хранения запрошенного текста. Если передается NULL-указатель (0), то для вызовов SCI_ * возвращается длина, которая должна быть выделена, не включая какой-либо завершающий NUL. Некоторые вызовы (отмеченные «NUL-terminated») добавляют в результат NUL-символ, но в других вызовах не добавляется: для общего управления обоими типами выделяйте еще место на один байт в буфере, и установите его в NUL.
colour Цвета устанавливаются с использованием формата RGB (красный, зеленый, синий). Интенсивность каждого цвета задается в диапазоне от 0 до 255. Если у вас три таких интенсивности, они объединяются как: красный | (зеленый << 8) | (синий << 16). Если вы установите для всех интенсивностей значение 255, цвет будет белым. Если вы установите для всех интенсивностей значение 0, цвет будет черным. Когда вы устанавливаете цвет, вы делаете запрос. То, что вы получите, зависит от возможностей системы и текущего режима экрана.
alpha Полупрозрачность задается с использованием альфа-значения. Альфа варьируется от 0 (SC_ALPHA_TRANSPARENT), который полностью прозрачен до 255 (SC_ALPHA_OPAQUE), который непрозрачен. Значение 256 (SC_ALPHA_NOALPHA) непрозрачно и использует код, который не является альфа-уведомлением и может быть быстрее. Не все платформы поддерживают прозрачность, и только некоторые функции Scintilla реализуют прозрачность. Альфа-значение по умолчанию для большинства функций SC_ALPHA_NOALPHA.
<unused> Это неиспользуемый параметр. Установка его на 0 обеспечит совместимость с будущими улучшениями.

Содержание

Содержание таблицей

Извлечение и изменение текста Поиск и замена Ввод текста поверх
Вырезать, скопировать и вставить Обработка ошибок Отменить и повторить
Выделение текста и информация Множественное выделение текста
и виртуал. пространство
Прокрутка и авто-прокрутка
Пробельные символы Курсор Захват мыши
Конец строки Слова Стилирование
Определение стиля Стиль каретки, выделения, горячих строк Символьные представления
Поля Примечания Другие настройки
Подсветка скобок Руководства по табуляции и отступам Маркеры
Индикаторы Автозавершение Пользовательские списки
Вызванные подсказки Команды клавиатуры Связывание с сочетание клавиш
Всплывющее меню редактора Запись макроса Печать
Прямой доступ Множественный просмотр Фоновая загрузка и сохранение
Сворачивание Перенос строк Масштабирование
Длинная строка Доступность Лексер
Объекты лексера Уведомления Изображения
GTK+ Предварительные сообщения Устаревшие сообщения
Не поддерживаемые EM_ cообщения. Удаленные функции Компилирование Scintilla

Сообщения с именами формы SCI_SETxxxxx часто имеют спутника     SCI_GETxxxxx. Чтобы сохранить утомительное повторение, если сообщение SCI_GETxxxxx возвращает значение, заданное сообщением SCI_SETxxxxx, описывается процедура SET и GET остается в вашем воображении.

    

     Поиск и изменение текста

    

Каждый байт в документе Scintilla связан с байтом информации о стиле. Комбинация символьного байта и байт стиля называется ячейкой. Байт стиля интерпретируется индексом в массив стилей.

    

В этом документе «символ» обычно относится к байту, даже если используются многобайтовые символы. Длина измеряет количество байтов, а не количество символов в этих байтах.

    

Позиции в документе Scintilla относятся к символу или пробелу перед этим символом. Первый символ в документе - 0, второй - 1 и так далее. Если в документе содержатся символы nLen , последний символ пронумерован nLen -1. Каретка существует между позициями символов и может быть расположена от первого символа (0)     после последнего символа ( nLen ).

    

Есть места, где карет не может идти, где два символьных байта составляют один символ. Это происходит, когда символ DBCS с языка, такого как японский, включен в документ или когда конец строки помечен стандартом CP / M для возврата каретки, за которым следует строка. Константа INVALID_POSITION (-1) представляет недопустимую позицию в документе.

    

Все строки текста в Scintilla имеют одинаковую высоту, и эта высота рассчитывается из самого большого шрифта в любом текущем стиле. Это ограничение для производительности; если строки различаются по высоте, тогда вычисления, связанные с позиционированием текста, потребуют, чтобы текст был оформлен в первую очередь.

SCI_GETTEXT(int length, char *text) int
SCI_SETTEXT(<unused> , const char *text)
SCI_SETSAVEPOINT
SCI_GETLINE(int line, char *text) int
SCI_REPLACESEL(<unused> , const char *text)
SCI_SETREADONLY(bool readOnly)
SCI_GETREADONLY bool
SCI_GETTEXTRANGE(<unused> , Sci_TextRange *tr) int
SCI_ALLOCATE(int bytes)
SCI_ADDTEXT(int length, const char *text)
SCI_ADDSTYLEDTEXT(int length, cell *c)
SCI_APPENDTEXT(int length, const char *text)
SCI_INSERTTEXT(int pos, const char *text)
SCI_CHANGEINSERTION(int length, const char *text)
SCI_CLEARALL
SCI_DELETERANGE(int start, int lengthDelete)
SCI_CLEARDOCUMENTSTYLE
SCI_GETCHARAT(int pos) int
SCI_GETSTYLEAT(int pos) int
SCI_GETSTYLEDTEXT(<unused> , Sci_TextRange *tr) int
SCI_RELEASEALLEXTENDEDSTYLES
SCI_ALLOCATEEXTENDEDSTYLES(int numberStyles) int
SCI_TARGETASUTF8(<unused> , char *s) int
SCI_ENCODEDFROMUTF8(const char *utf8, char *encoded) int
SCI_SETLENGTHFORENCODE(int bytes)

SCI_GETTEXT(int length, char *text NUL-terminated) int
     Это возвращает length -1 символов текста с начала документа плюс один завершающий символ 0. Чтобы собрать весь текст в документе, используйте SCI_GETLENGTH     чтобы получить количество символов в документе ( nLen ), выделите буфер символов длиной nLen + 1 байтов, затем вызовите SCI_GETTEXT (nLen + 1, char *text) . Если текстовый аргумент равен 0, возвращается длина, которая должна быть выделена для хранения всего документа. Если вы сохраните текст, вы должны использовать SCI_SETSAVEPOINT, чтобы пометить текст как немодифицированный.

    

Смотрите также: SCI_GETSELTEXT,     SCI_GETCURLINE,     SCI_GETLINE,     SCI_GETSTYLEDTEXT,     SCI_GETTEXTRANGE

    

SCI_SETTEXT(<unused> , const char *text)
     Это заменяет весь текст в документе нулевой текстовой строкой, которую вы передаете.

    

SCI_SETSAVEPOINT
     Это сообщение сообщает Scintilla, что текущее состояние документа не изменено. Обычно это делается, когда файл сохраняется или загружается, поэтому имя «сохранить точку». Поскольку Scintilla выполняет операции отмены и повтора, он уведомляет контейнер, в который он ввел или оставил точку сохранения, с помощью SCN_SAVEPOINTREACHED и SCN_SAVEPOINTLEFT уведомления , позволяющие контейнеру знать, следует ли считать файл грязным или нет.

    

См. также: SCI_EMPTYUNDOBUFFER, SCI_GETMODIFY

    

SCI_GETLINE(int line, char *text) int
     Это заполняет буфер, определенный текстом, содержимым назначенной строки (строки начинаются с 0). Буфер не заканчивается символом 0. Вы должны убедиться, что буфер достаточно длинный для текста, используйте SCI_LINELENGTH(int line) . Возвращаемое значение - это количество символов, скопированных в буфер. Возвращенный текст включает любые символы конца строки. Если вы запрашиваете номер строки вне диапазона строк в документе, копируются 0 символов. Если текстовый аргумент равен 0, возвращается длина, которая должна быть выделена для хранения всей строки.

See also: SCI_GETCURLINE, SCI_GETSELTEXT, SCI_GETTEXTRANGE, SCI_GETSTYLEDTEXT, SCI_GETTEXT

SCI_REPLACESEL(<unused> , const char *text)
     Текущий выделенный текст между якорем и текущей позицией заменяется текстовой строкой с завершением 0. Если позиция привязки и тока одинакова, текст вставляется в положение каретки. Каретка расположена после вставленного текста, и каретка прокручивается в поле зрения.

    

SCI_SETREADONLY(bool readOnly)
SCI_GETREADONLY bool
     Эти сообщения устанавливаются и получают флаг только для чтения для документа. Если вы помечаете документ только как прочитанный, попытки изменить текст вызывают уведомление SCN_MODIFYATTEMPTRO .

    

SCI_GETTEXTRANGE(<unused>, Sci_TextRange * tr) int
     Это собирает текст между позициями cpMin и cpMax и копирует его в lpstrText (см. struct Sci_TextRange в      Scintilla.h ). Если cpMax равен -1, текст возвращается в конец документа. Текст заканчивается 0, поэтому вы должны предоставить буфер длиной не менее 1 символа, чем количество символов, которые вы хотите прочитать. Возвращаемое значение - это длина возвращаемого текста, не включая завершающий 0.

    

Смотрите также: SCI_GETSELTEXT,     SCI_GETLINE,     SCI_GETCURLINE,     SCI_GETSTYLEDTEXT,     SCI_GETTEXT

    

SCI_GETSTYLEDTEXT(<unused>, Sci_TextRange * tr) int
     Это собирает стилизованный текст в буфер, используя два байта для каждой ячейки, с символом на нижнем адресе каждой пары и баром стиля на верхнем адресе. Символы между позициями cpMin и cpMax копируются в lpstrText (см.      struct Sci_TextRange в Scintilla.h ). В конец текста добавляются два 0 байта, поэтому буфер, на который указывает lpstrText , должен быть как минимум      2 * (cpMax-cpMin) +2 байтов. Не проверяется разумные значения      cpMin или cpMax . Позиции вне кода возврата документа и байты стиля 0.

See also: SCI_GETSELTEXT, SCI_GETLINE, SCI_GETCURLINE, SCI_GETTEXTRANGE, SCI_GETTEXT

SCI_ALLOCATE(int bytes)
     Выделите буфер документа достаточно большим, чтобы сохранить заданное количество байтов. Документ не будет меньше его текущего содержимого.

    

SCI_ADDTEXT(int length, const char *text)
     Это вставляет первый символ length из строки       текст     на текущей позиции. Это будет включать любые 0 в строке, которые вы, возможно, ожидали, чтобы остановить операцию вставки. Текущая позиция устанавливается в конце вставленного текста, но она не прокручивается в представление.

    

SCI_ADDSTYLEDTEXT(int length, cell * c)
     Это ведет себя как SCI_ADDTEXT, но вставляет стилизованный текст.

    

SCI_APPENDTEXT(int length, const char *text)
     Это добавляет первый символ length из строки       text в конец документа. Это будет включать любые 0 в строке, которые вы могли бы ожидать, чтобы остановить операцию. Текущий выбор не изменяется, и новый текст не просматривается.

    

SCI_INSERTTEXT(int pos, const char *text)
     Это вставляет строку с нулевым завершением text в позиции pos или в текущей позиции, если pos равен -1. Если текущая позиция находится после точки вставки, она перемещается вместе с окружающим текстом, но прокрутка не выполняется.

    

SCI_CHANGEINSERTION(int length, const char *text)
     Это можно вызвать только из SC_MOD_INSERTCHECK      обработчик уведомлений и изменит текст, вставленный в предоставленный.

    

SCI_CLEARALL
     Если документ не доступен только для чтения, это приведет к удалению всего текста.

    

SCI_DELETERANGE(int start, int lengthDelete)
     Удаляет диапазон текста в документе.

    

SCI_CLEARDOCUMENTSTYLE
     Если вы хотите полностью восстановить документ, например, после выбора lexer,     SCI_CLEARDOCUMENTSTYLE можно использовать для очистки всей информации о стилизации и сброса состояния свёртывания.

    

SCI_GETCHARAT(int pos) int
     Это возвращает символ в pos в документе или 0, если pos отрицательный или находится за концом документа.

    

SCI_GETSTYLEAT(int pos) int
     Это возвращает стиль в pos в документе, или 0, если pos отрицательный или находится за концом документа.

    

SCI_RELEASEALLEXTENDEDSTYLES
SCI_ALLOCATEEXTENDEDSTYLES(int numberStyles) int
     Расширенные стили используются для таких функций, как текстовые поля и аннотации, а также внутренне с помощью Scintilla. Они находятся за пределами диапазона 0..255, используемого для байтов стилей, связанных с байтами документа. Эти функции управляют использованием расширенных стилей, чтобы гарантировать, что компоненты взаимодействуют в определении стилей.      SCI_RELEASEALLEXTENDEDSTYLES освобождает любые расширенные стили, выделенные контейнером.      SCI_ALLOCATEEXTENDEDSTYLES выделяет диапазон номеров стилей после значений стиля байта и возвращает номер первого выделенного стиля. Диапазоны для стилей полей и аннотаций должны быть выделены перед вызовом SCI_MARGINSETSTYLEOFFSET или SCI_ANNOTATIONSETSTYLEOFFSET.

Sci_TextRange и Sci_CharacterRange
     Эти структуры определены как те же формы, что и Win32 TEXTRANGE     и CHARRANGE , так что будет работать старый код, который обрабатывает Scintilla как RichEdit.

    

В будущей версии тип Sci_PositionCR будет переопределен, чтобы быть 64-битными, когда Scintilla построена для 64-разрядных версий на всех платформах.

 typedef long Sci_PositionCR;

struct Sci_CharacterRange {
Sci_PositionCR cpMin;
Sci_PositionCR cpMax;
};

struct Sci_TextRange {
struct Sci_CharacterRange chrg;
char *lpstrText;
};

Конкретно для GTK +, только для Cocoa и Windows: доступ к кодированному тексту

    

SCI_TARGETASUTF8(<unused> , char *s) int
     Этот метод извлекает значение целевого объекта, кодированного как UTF-8, которое является кодировкой по умолчанию GTK +, поэтому полезно для получения текста для использования в других частях пользовательского интерфейса, таких как поиск и замена диалогов. Возвращается длина закодированного текста в байтах. Cocoa использует UTF-16, который легко конвертируется из UTF-8, поэтому этот метод может использоваться для выполнения более сложной работы по транскодированию из поддерживаемых различных кодировок.

    

SCI_ENCODEDFROMUTF8(const char *utf8, char *encoded) int
SCI_SETLENGTHFORENCODE(int bytes)
     SCI_ENCODEDFROMUTF8 преобразует строку UTF-8 в кодировку документа, которая полезна, например, для получения результатов поиска, а также для получения строки байтов, которую можно найти в документе. Поскольку текст может содержать nul байты, метод SCI_SETLENGTHFORENCODE может использоваться для установки длины, которая будет преобразована. Если установлено значение -1, длина определяется путем поиска нулевого байта. Возвращается длина преобразованной строки.

    

   Поиск

    

    Существуют методы поиска текста и регулярных выражений. Большинство приложений должны использовать     SCI_SEARCHINTARGET     в качестве основы для их поисковых реализаций. Другие вызовы дополняют это или были реализованы до SCI_SEARCHINTARGET.

    

    Базовая поддержка регулярных выражений ограничена и должна использоваться только для простых случаев и начальной разработки. Среда выполнения C ++ < regex > библиотеку можно использовать, установив флаг поиска SCFIND_CXX11REGEX . C ++ 11 < regex > поддержка может быть отключена путем компиляции Scintilla с NO_CXX11_REGEX . Другая библиотека регулярных выражений может быть интегрирована в Scintilla     или может быть вызван из контейнера, используя прямой доступ к содержимому буфера через     SCI_GETCHARACTERPOINTER.

    

Поиск и замена с использованием целевого

    

Поиск может быть выполнен в целевом диапазоне с помощью SCI_SEARCHINTARGET, который использует подсчитанную строку, чтобы разрешить поиск нулевых символов. Он возвращает позицию начала соответствующего текстового диапазона или -1 для отказа, и в этом случае цель не перемещается. Флаги, используемые     SCI_SEARCHINTARGET, например SCFIND_MATCHCASE ,      SCFIND_WHOLEWORD , SCFIND_WORDSTART и SCFIND_REGEXP     можно установить с помощью SCI_SETSEARCHFLAGS.

SCI_SETTARGETSTART(int start)
SCI_GETTARGETSTART position
SCI_SETTARGETEND(int end)
SCI_GETTARGETEND position
SCI_SETTARGETRANGE(int start, int end)
SCI_TARGETFROMSELECTION
SCI_TARGETWHOLEDOCUMENT
SCI_SETSEARCHFLAGS(int searchFlags)
SCI_GETSEARCHFLAGS int
SCI_SEARCHINTARGET(int length, const char *text) int
SCI_GETTARGETTEXT(<unused> , char *text) int
SCI_REPLACETARGET(int length, const char *text) int
SCI_REPLACETARGETRE(int length, const char *text) int
SCI_GETTAG(int tagNumber, char *tagValue) int

SCI_SETTARGETSTART(int start)
SCI_GETTARGETSTART position
SCI_SETTARGETEND(int end)
SCI_GETTARGETEND position
SCI_SETTARGETRANGE(int start, int end)
Эти функции устанавливают и возвращают начало и конец цели. При поиске вы можете начать старт больше, чем конец, чтобы найти последний соответствующий текст в целевом, а не первый соответствующий текст. Цель также устанавливается успешным     SCI_SEARCHINTARGET.

     

SCI_TARGETFROMSELECTION
     Установите целевое начало и конец в начальное и конечное положения выделения.

     

SCI_TARGETWHOLEDOCUMENT
     Установите целевое начало в начало документа и конец цели в конец документа.

    

SCI_SETSEARCHFLAGS(int searchFlags)
SCI_GETSEARCHFLAGS int
     Они получают и устанавливают searchFlags , используемые     SCI_SEARCHINTARGET. Существует несколько флажков параметров, включая простой поиск регулярных выражений.

    

SCI_SEARCHINTARGET(int length, const char *text) int
     Это ищет первое вхождение текстовой строки в задаче, определяемой     SCI_SETTARGETSTART и SCI_SETTARGETEND. Текстовая строка не заканчивается нулем; размер устанавливается length . Поиск изменен флажками поиска, установленными SCI_SETSEARCHFLAGS. Если поиск преуспевает, цель устанавливается на найденный текст, а возвращаемое значение является позицией начала соответствующего текста. Если поиск не выполняется, результат равен -1.

    

SCI_GETTARGETTEXT(<unused> , char *text) int
     Получить значение в целевом объекте.

    

SCI_REPLACETARGET(int length, const char *text) int
     Если length равен -1, text - строка с нулевым завершением, иначе      length устанавливает количество символов для замены цели. После замены целевой диапазон относится к заменяющему тексту. Возвращаемое значение - это длина строки замены.
    Обратите внимание, что рекомендуемым способом удаления текста в документе является установка цели для текста, который нужно удалить, и для выполнения цели замещения с пустой строкой.

    

SCI_REPLACETARGETRE(int length, const char *text) int
     Это заменяет цель, используя регулярные выражения. Если length равен -1,      text - строка с нулевым завершением, в противном случае length - это количество символов для использования. Строка замены формируется из текстовой строки с любыми последовательностями      \ 1 через \ 9 заменен тегами совпадений из самого последнего поиска регулярных выражений. \ 0 заменяется всем совпадающим текстом из самого последнего поиска. После замены целевой диапазон относится к заменяющему тексту. Возвращаемое значение - это длина строки замены.

    

SCI_GETTAG(int tagNumber, char *tagValue NUL-terminated) int
     Узнайте, какой текст был сопоставлен с помощью тегов с метками в поиске регулярных выражений. Это полезно, если приложение хочет интерпретировать строку замены.

See also: SCI_FINDTEXT

searchFlags
В нескольких процедурах поиска используются параметры флагов, которые включают простой поиск регулярных выражений. Объедините опции флага, добавив их:

                                                                                                                                                                                                                                                                       
SCFIND_MATCHCASE Совпадение происходит только с текстом, который соответствует случаю строки поиска.
SCFIND_WHOLEWORD Совпадение происходит только в том случае, если символы до и после не являются символами слов, как определено SCI_SETWORDCHARS .
SCFIND_WORDSTART Совпадение происходит только в том случае, если символ before не является символом слова, как определено SCI_SETWORDCHARS .
SCFIND_REGEXP Строка поиска должна интерпретироваться как регулярное выражение. Использует базовую реализацию Scintilla, если она не объединена с SCFIND_CXX11REGEX .
SCFIND_POSIX Лечить регулярное выражение более совместимым с POSIX способом, интерпретируя bare (и) для помеченных разделов, а не \ (и \). Не действует, когда установлен SCFIND_CXX11REGEX .
SCFIND_CXX11REGEX Этот флаг может быть установлен для использования C ++ 11 < regex > вместо обычных регулярных выражений Сцинтиллы. Если регулярное выражение недействительно, возвращается -1, а статус -             SC_STATUS_WARN_REGEX. Флаг ECMAScript устанавливается в объект регулярного выражения, а документы UTF-8 будут демонстрировать поведение, совместимое с Unicode. Для MSVC, где wchar_t является 16-битным, выражение в виде «...» будет соответствовать одному символу астральной плоскости. Между компиляторами могут быть другие различия. Также должен быть установлен SCFIND_REGEXP .

В регулярном выражении, используя базовую реализацию Scintilla, интерпретируемые специальные символы:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
. Соответствует любому символу
\ ( Это знаменует начало области для пометки соответствия.
\) Это обозначает конец области с тегами.
\ п Где n от 1 до 9 относится к области с первой по девятую помеченные при замене. Например, если строка поиска была Fred \ ([1-9] \) XXX , а строка замены была Sam \ 1YYY , когда применяется к Fred2XXX , это сгенерирует Sam2YYY . \ 0 относится ко всему соответствующему тексту.
\ < Это соответствует началу слова с использованием определений слов Scintilla.
\ > Это соответствует концу слова, используя определение слов Scintilla.
\ х Это позволяет использовать символ x, который в противном случае имел бы особое значение. Например, \ [будет интерпретироваться как [а не как начало набора символов.
[...] Это указывает на набор символов, например, [abc] означает любой из символов a, b или c. Вы также можете использовать диапазоны, например [a-z] для любого строчного символа.
[^ ...] Дополнение символов в наборе. Например, [^ A-Za-z] означает любой символ, кроме алфавитного символа.
^ Это соответствует началу строки (если не используется внутри набора, см. выше).
$ Это соответствует концу строки.
* Это соответствует 0 или более раз. Например, Sa * m соответствует Sm ,            Sam , Saam , Saaam и т. д.
+ Это соответствует 1 или более раз. Например, соответствует Sa + m            Sam , Saam , Saaam и т. д.

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

    

При использовании SCFIND_CXX11REGEX доступны дополнительные функции, как правило, похожие на поддержку регулярных выражений в JavaScript. Подробнее о том, что поддерживается, см. Документацию о времени выполнения C ++.

     SCI_FINDTEXT(int searchFlags, Sci_TextToFind * ft) position
     SCI_SEARCHANCHOR
      SCI_SEARCHNEXT(int searchFlags, const char *text) int
      SCI_SEARCHPREV(int searchFlags, const char *text) int
    
    

SCI_FINDTEXT(int searchFlags, Sci_TextToFind * ft) position
     Это сообщение ищет текст в документе. Он не использует или не перемещает текущий выбор. Параметр searchFlags управляет типом поиска, который включает поиск регулярных выражений.

    

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

    

Структура Sci_TextToFind определена в Scintilla.h ; задавать      chrg.cpMin и chrg.cpMax с диапазоном позиций в документе для поиска. Вы можете выполнить поиск назад, установив chrg.cpMax меньше chrg.cpMin . Задайте элемент lpstrText Sci_TextToFind , чтобы указать строку с нулевым завершающим текстом, содержащую шаблон поиска. Если ваш язык использует Sci_TextToFind     сложно, вы должны использовать вместо этого SCI_SEARCHINTARGET.

    

Возвращаемое значение равно -1, если поиск завершается с ошибкой или позиция начала найденного текста, если он преуспевает. Члены chrgText.cpMin и chrgText.cpMax членов      Sci_TextToFind заполняются начальным и конечным позициями найденного текста.

    

Смотрите также: SCI_SEARCHINTARGET

    

Sci_TextToFind
     Эта структура имеет ту же форму, что и структура Win32      FINDTEXTEX для старого кода, который обрабатывал Scintilla как элемент управления RichEdit.

 struct Sci_TextToFind {
    struct  Sci_CharacterRange  chrg; // диапазон для поиска const char *lpstrText; // шаблон поиска (с нулевым завершением)
    struct Sci_CharacterRange chrgText; // возвращается как позиция совпадающего текста
};
    

SCI_SEARCHANCHOR
SCI_SEARCHNEXT(int searchFlags, const char *text) int
SCI_SEARCHPREV(int searchFlags, const char *text) int
     Эти сообщения обеспечивают перемещаемую поддержку поиска. Это позволяет записывать макросы в несколько инкрементных интерактивных поисков, сохраняя при этом выбор текста для поиска, чтобы операция поиска / выбора была автономной. Эти три сообщения отправляют SCN_MACRORECORD уведомления , если макросъемка включена.

SCI_SEARCHANCHOR задает начальную точку поиска, используемую     SCI_SEARCHNEXT и SCI_SEARCHPREV в начало текущего выбора, то есть конец выбора, который ближе к началу документа. Вы всегда должны вызывать это, прежде чем вызывать любой из SCI_SEARCHNEXT или     SCI_SEARCHPREV.

    

SCI_SEARCHNEXT и SCI_SEARCHPREV выполните поиск следующего и предыдущего вхождения строки поиска с нулевым завершением, на которую указывает текст. Поиск изменяется с помощью searchFlags .

    

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

    

См. также: SCI_SEARCHINTARGET ,      SCI_FINDTEXT

    

   Ввод текста поверх

     SCI_SETOVERTYPE(bool overType)
      SCI_GETOVERTYPE bool
    
    

SCI_SETOVERTYPE(bool overType)
SCI_GETOVERTYPE bool
     Когда overtype включен, каждый типизированный символ заменяет символ справа от текстового каретки. Когда overtype отключен, символы вводятся в карете.     SCI_GETOVERTYPE возвращает true (1), если overtyping активен, иначе      false (0) будет возвращен. Используйте SCI_SETOVERTYPE, чтобы установить режим надпечатки.

    

   Вырезать, скопировать и вставить

SCI_CUT
SCI_COPY
SCI_PASTE
SCI_CLEAR
SCI_CANPASTE bool
SCI_COPYRANGE(int start, int end)
SCI_COPYTEXT(int length, const char *text)
SCI_COPYALLOWLINE
SCI_SETPASTECONVERTENDINGS(bool convert)
SCI_GETPASTECONVERTENDINGS bool

SCI_CUT
SCI_COPY
SCI_PASTE
SCI_CLEAR
SCI_CANPASTE bool
SCI_COPYALLOWLINE
Эти команды выполняют стандартные задачи резания и копирования данных в буфер обмена, вставки из буфера обмена в документ и очистки документа.     SCI_CANPASTE возвращает ненулевое значение, если документ не доступен только для чтения, и если выбор не содержит защищенного текста. Если вам нужна «копировать» или «разрезать», используйте      SCI_GETSELECTIONEMPTY () , который будет равен нулю, если есть какие-либо непустые диапазоны выбора, подразумевающие, что копия или вырезание в буфер обмена должны работать.

    

GTK + на самом деле не поддерживает SCI_CANPASTE и всегда возвращает true     если документ не доступен только для чтения.

    

В X буфер обмена является асинхронным и может потребовать несколько сообщений между целевыми и исходными приложениями. Данные из SCI_PASTE не поступят в документ немедленно.

    

SCI_COPYALLOWLINE работает так же, как SCI_COPY, за исключением того, что если выбор пуст, то текущая строка копируется. В Windows дополнительный добавочный маркер «MSDEVLineSelect» добавляется в буфер обмена, который затем используется в SCI_PASTE, чтобы вставить всю строку до текущей строки.

SCI_COPYRANGE(int start, int end)
SCI_COPYTEXT(int length, const char *text)
    

SCI_COPYRANGE копирует диапазон текста из документа в системный буфер обмена, а SCI_COPYTEXT копирует предоставленный фрагмент текста в системный буфер обмена.

    

SCI_SETPASTECONVERTENDINGS(bool convert)
SCI_GETPASTECONVERTENDINGS bool
     Если это свойство установлено, то при вставке текста любые концы строк преобразуются в соответствии с режимом конца строки документа, как установлено с помощью      SCI_SETEOLMODE. По умолчанию используется значение true.

    

   Обработка ошибок

     SCI_SETSTATUS(int status)
      SCI_GETSTATUS int
    
    

SCI_SETSTATUS(int status)
SCI_GETSTATUS int
     Если возникает ошибка, Scintilla может установить внутренний номер ошибки, который можно получить с помощью     SCI_GETSTATUS. Чтобы очистить вызов состояния ошибки SCI_SETSTATUS (0) . Значения состояния от 1 до 999 - это ошибки и состояние SC_STATUS_WARN_START (1000)     и выше - предупреждения. В настоящее время определены статусы:

                                                                                                                                                        
SC_STATUS_OK 0 Без сбоев
SC_STATUS_FAILURE 1 Общий сбой
SC_STATUS_BADALLOC 2 Память исчерпана
SC_STATUS_WARN_REGEX 1001 Неверное регулярное выражение

   Отменить и повторить

Scintilla имеет несколько уровней отмены и повтора. Он будет продолжать собирать отмененные действия, пока не закончится память. Scintilla сохраняет действия, которые изменяют документ. Scintilla не сохраняет движения каретки и выделения, просматривает прокрутку и тому подобное. Последовательности ввода или удаления сжимаются в отдельные транзакции, чтобы упростить отмену и повторение на разумном уровне детализации. Последовательности действий могут быть объединены в транзакции, которые отменены как единое целое. Эти последовательности происходят между SCI_BEGINUNDOACTION и     SCI_ENDUNDOACTION. Эти транзакции могут быть вложенными, и только последовательности верхнего уровня будут отменены как единицы.

SCI_UNDO
SCI_CANUNDO bool
SCI_EMPTYUNDOBUFFER
SCI_REDO
SCI_CANREDO bool
SCI_SETUNDOCOLLECTION(bool collectUndo)
SCI_GETUNDOCOLLECTION bool
SCI_BEGINUNDOACTION
SCI_ENDUNDOACTION
SCI_ADDUNDOACTION(int token, int flags)

SCI_UNDO
SCI_CANUNDO bool
     SCI_UNDO отменяет одно действие или если буфер отмены был достигнут     SCI_ENDUNDOACTION, все действия возвращаются к соответствующему     SCI_BEGINUNDOACTION.

    

SCI_CANUNDO возвращает 0, если нечего отменить, и 1, если есть. Обычно вы использовали результат этого сообщения для включения / выключения команды «Отменить» команды «Отменить».

    

SCI_REDO
SCI_CANREDO bool
     SCI_REDO отменяет действие последней операции SCI_UNDO.

    

SCI_CANREDO возвращает 0, если нет действий для повтора и 1, если для отмены отменены действия. Обычно вы можете использовать результат этого сообщения, чтобы включить / отключить команду «Изменить» меню «Редактировать».

    

SCI_EMPTYUNDOBUFFER
     Эта команда сообщает Scintilla забыть любую сохраненную историю отмены или повтора. Он также устанавливает точку сохранения в начало буфера отмены, поэтому документ будет отображаться немодифицированным. Это не вызывает уведомление SCN_SAVEPOINTREACHED , которое будет отправлено в контейнер.

    

См. также: SCI_SETSAVEPOINT

    

SCI_SETUNDOCOLLECTION(bool collectUndo)
SCI_GETUNDOCOLLECTION bool
     Вы можете контролировать, собирается ли Scintilla отменять информацию с помощью     SCI_SETUNDOCOLLECTION. Перейдите в true (1) для сбора информации и      false (0), чтобы остановить сбор. Если вы прекратите сбор, вы также должны использовать     SCI_EMPTYUNDOBUFFER, чтобы избежать буфера отмены, несинхронизированного с данными в буфере.

Возможно, вы захотите отключить сохранение информации отмены, если вы используете Scintilla для хранения текста, сгенерированного программой (вид журнала) или в окне дисплея, где текст часто удаляется и регенерируется.

    

SCI_BEGINUNDOACTION
SCI_ENDUNDOACTION
     Отправьте эти два сообщения в Scintilla, чтобы отметить начало и конец набора операций, которые вы хотите отменить, как одну операцию, но вы должны сгенерировать несколько операций. В качестве альтернативы вы можете использовать их для обозначения набора операций, которые вы не хотите комбинировать с предыдущими или последующими операциями, если они отменены.

    

SCI_ADDUNDOACTION(int token, int flags)
     Контейнер может добавлять свои собственные действия в стек отмены, вызывая      SCI_ADDUNDOACTION и SCN_MODIFIED      уведомление будет отправлено в контейнер с       SC_MOD_CONTAINER      флаг, когда пришло время отменить (SC_PERFORMED_UNDO) или повторить (SC_PERFORMED_REDO) действие. Предоставленный аргумент токена возвращается в поле token уведомления.

     

Например, если контейнер хотел разрешить отмену и повтор команды «переключить закладку», тогда он может вызывать SCI_ADDUNDOACTION (line, 0) каждый раз, когда выполняется команда. Затем, когда он получает уведомление об отмене или повторении, он переключает закладку на строке, заданной полем токена. Если есть несколько типов команд или параметров, которые необходимо сохранить в стек отмены, то контейнер должен поддерживать собственный стек для документа и использовать текущую позицию в этом стеке в качестве аргумента для SCI_ADDUNDOACTION (line) .      Команды SCI_ADDUNDOACTION не объединены вместе в одну транзакцию отмены, если не сгруппированы с помощью SCI_BEGINUNDOACTION      и SCI_ENDUNDOACTION.

     

Аргумент flags может быть UNDO_MAY_COALESCE (1), если действие контейнера может быть объединено вместе с любыми действиями вставки и удаления в одно составное действие, в противном случае 0. Коалесценция рассматривает действия коалесцируемого контейнера как прозрачные, так что будут по-прежнему группировать только вставки, похожие на ввод или удаление, которые выглядят как многократное использование клавиш Backspace или Delete.

    

   Выделение текста и информация

    

Scintilla поддерживает выбор, который простирается между двумя точками, якорем и текущей позицией. Если якорь и текущее положение одинаковы, то не будет выделенного текста. Позиции в документе варьируются от 0 (до первого символа), до размера документа     (после последнего символа). Если вы используете сообщения, вам нечего останавливать настройку позиции, находящейся в середине пары CRLF, или в середине двухбайтового символа. Однако команды клавиатуры не будут перемещать курсор в такие положения.

SCI_GETTEXTLENGTH int
SCI_GETLENGTH int
SCI_GETLINECOUNT int
SCI_LINESONSCREEN int
SCI_GETMODIFY bool
SCI_SETSEL(int anchor, int caret)
SCI_GOTOPOS(int caret)
SCI_GOTOLINE(int line)
SCI_SETCURRENTPOS(int caret)
SCI_GETCURRENTPOS position
SCI_SETANCHOR(int anchor)
SCI_GETANCHOR position
SCI_SETSELECTIONSTART(int anchor)
SCI_GETSELECTIONSTART position
SCI_SETSELECTIONEND(int caret)
SCI_GETSELECTIONEND position
SCI_SETEMPTYSELECTION(int caret)
SCI_SELECTALL
SCI_LINEFROMPOSITION(int pos) int
SCI_POSITIONFROMLINE(int line) position
SCI_GETLINEENDPOSITION(int line) position
SCI_LINELENGTH(int line) int
SCI_GETCOLUMN(int pos) int
SCI_FINDCOLUMN(int line, int column) int
SCI_POSITIONFROMPOINT(int x, int y) position
SCI_POSITIONFROMPOINTCLOSE(int x, int y) position
SCI_CHARPOSITIONFROMPOINT(int x, int y) position
SCI_CHARPOSITIONFROMPOINTCLOSE(int x, int y) position
SCI_POINTXFROMPOSITION(<unused> , int pos) int
SCI_POINTYFROMPOSITION(<unused> , int pos) int
SCI_HIDESELECTION(bool hide)
SCI_GETSELTEXT(<unused> , char *text) int
SCI_GETCURLINE(int length, char *text) int
SCI_SELECTIONISRECTANGLE bool
SCI_SETSELECTIONMODE(int selectionMode)
SCI_GETSELECTIONMODE int
SCI_GETMOVEEXTENDSSELECTION bool
SCI_GETLINESELSTARTPOSITION(int line) position
SCI_GETLINESELENDPOSITION(int line) position
SCI_MOVECARETINSIDEVIEW
SCI_POSITIONBEFORE(int pos) position
SCI_POSITIONAFTER(int pos) position
SCI_POSITIONRELATIVE(int pos, int relative) position
SCI_COUNTCHARACTERS(int start, int end) int
SCI_TEXTWIDTH(int style, const char *text) int
SCI_TEXTHEIGHT(int line) int
SCI_CHOOSECARETX
SCI_MOVESELECTEDLINESUP
SCI_MOVESELECTEDLINESDOWN
SCI_SETMOUSESELECTIONRECTANGULARSWITCH(bool mouseSelectionRectangularSwitch)
SCI_GETMOUSESELECTIONRECTANGULARSWITCH bool

SCI_GETTEXTLENGTH int
SCI_GETLENGTH int
     Оба этих сообщения возвращают длину документа в байтах.

    

SCI_GETLINECOUNT int
     Это возвращает количество строк в документе. Пустой документ содержит 1 строку. Документ, содержащий только конец строки, имеет 2 строки.

    

SCI_LINESONSCREEN int
     Это возвращает количество полных линий, видимых на экране. При постоянной высоте линии это доступное вертикальное пространство, разделенное на разделение строк. Если вы не настроите размер своего окна на целое число строк, может быть частичная линия, видимая в нижней части представления.

    

SCI_GETMODIFY bool
     Это возвращает ненулевое значение, если документ изменен и 0, если он не изменен. Измененное состояние документа определяется положением отмены относительно точки сохранения. Точка сохранения устанавливается SCI_SETSAVEPOINT , как правило, когда вы сохранили данные в файл.

    

Если вам необходимо получить уведомление, когда документ будет изменен, Scintilla уведомляет контейнер, который он ввел, или оставил точку сохранения с помощью SCN_SAVEPOINTREACHED и SCN_SAVEPOINTLEFT уведомления .

    

SCI_SETSEL(int anchor, int caret)
     Это сообщение устанавливает как привязку, так и текущую позицию. Если cart отрицательный, это означает конец документа. Если anchor отрицательный, это означает удаление любого выбора (т. е. Привязать якорь к той же позиции, что и caret ). После этой операции каретка прокручивается в окно.

    

SCI_GOTOPOS(int caret)
     Это удаляет любой выбор, устанавливает каретку в caret и прокручивает представление, чтобы сделать видимым видимость, если это необходимо. Это эквивалентно      SCI_SETSEL (каретка, карет) . Положение привязки установлено так же, как и текущее положение.

    

SCI_GOTOLINE(int line)
     Это удаляет любой выбор и устанавливает каретку в начале номера строки line и прокручивает вид (если необходимо), чтобы сделать его видимым. Положение привязки устанавливается так же, как и текущее положение. Если line находится за пределами строк в документе (первая строка равна 0), набор строк является первым или последним.

    

SCI_SETCURRENTPOS(int caret)
     Это устанавливает текущую позицию и создает выбор между якорем и текущей позицией. Каретка не просматривается.

    

См. также: SCI_SCROLLARET

    

SCI_GETCURRENTPOS position
     Это возвращает текущую позицию.

    

SCI_SETANCHOR(int anchor)
     Это устанавливает положение привязки и создает выбор между положением привязки и текущей позицией. Каретка не просматривается.

    

См. также: SCI_SCROLLARET

    

SCI_GETANCHOR position
     Это возвращает текущую позицию привязки.

    

SCI_SETSELECTIONSTART(int anchor)
SCI_SETSELECTIONEND(int caret)
     Они устанавливают выбор на основе предположения о том, что положение якоря меньше текущего положения. Они не делают видимый вид. В таблице показаны позиции анкера и текущей позиции после использования этих сообщений.

Новое значение для anchor caret
SCI_SETSELECTIONSTART anchor Max(anchor, current)
SCI_SETSELECTIONEND Min(anchor, caret) caret

См. также: SCI_SCROLLARET

    

SCI_GETSELECTIONSTART position
SCI_GETSELECTIONEND position
     Они возвращают начало и конец выбора, независимо от того, на каком конце находится текущее положение и которое является якорем. SCI_GETSELECTIONSTART возвращает меньшую текущую позицию или позицию привязки. SCI_GETSELECTIONEND возвращает большее из двух значений.

    

SCI_SETEMPTYSELECTION(int caret)
     Это удаляет любой выбор и устанавливает каретку в caret . Каретка не просматривается.

    

SCI_SELECTALL
     Это выбирает весь текст в документе. Текущая позиция не прокручивается.

    

SCI_LINEFROMPOSITION(int pos) int
     Это сообщение возвращает строку, содержащую позицию pos в документе. Возвращаемое значение равно 0, если pos < = 0. Возвращаемое значение является последней строкой, если      pos находится за пределами документа.

    

SCI_POSITIONFROMLINE(int line) position
     Это возвращает позицию документа, соответствующую началу строки. Если      строка отрицательна, возвращается позиция строки, в которой начинается начало выбора. Если line больше, чем строки в документе, возвращаемое значение равно     -1. Если line равно количеству строк в документе (т. е. 1 строка за последней строкой), возвращаемое значение - это конец документа.

    

SCI_GETLINEENDPOSITION(int line) position
     Это возвращает позицию в конце строки перед символами конца строки. Если line является последней строкой в ??документе (которая не имеет конца символов строки) или больше, результатом является размер документа. Если line отрицательный, результат не определен.

    

SCI_LINELENGTH(int line) int
     Это возвращает длину строки, включая любые символы конца строки. Если line отрицательный или за пределами последней строки документа, результат равен 0. Если вы хотите, чтобы длина строки не включала символы конца строки, используйте SCI_GETLINEENDPOSITION(line) - SCI_POSITIONFROMLINE(line) .

SCI_GETSELTEXT(<unused> , char *text NUL-terminated) int
     Это копирует выделенный текст и завершает 0 байт в text буфер. Размер буфера должен определяться путем вызова с помощью указателя NULL для аргумента text SCI_GETSELTEXT (0,0) . Это позволяет использовать прямоугольные и несмежные выделения, а также простые варианты выбора. См. Множественный выбор для получения информации о том, как копируются множественные и прямоугольные выделения и виртуальное пространство.

    

Смотрите также: SCI_GETCURLINE,     SCI_GETLINE,     SCI_GETTEXT,     SCI_GETSTYLEDTEXT,     SCI_GETTEXTRANGE     

    

SCI_GETCURLINE(int length, char *text NUL-terminated) int
     Это извлекает текст строки, содержащей каретку, и возвращает позицию внутри строки каретки. Перейдите в char *text , указав на буфер, достаточно большой, чтобы сохранить текст, который вы хотите получить, и символ завершения 0. Установите length на длину буфера, которая должна быть не менее 1, чтобы удерживать символ завершения 0. Если текстовый аргумент равен 0, возвращается длина, которая должна быть выделена для хранения всей текущей строки.

    

Смотрите также: SCI_GETSELTEXT, SCI_GETLINE, SCI_GETTEXT, SCI_GETSTYLEDTEXT, SCI_GETTEXTRANGE

    

SCI_SELECTIONISRECTANGLE bool
     Это возвращает 1, если текущий выбор находится в режиме прямоугольника, 0, если нет.

    

SCI_SETSELECTIONMODE(int selectionMode)
SCI_GETSELECTIONMODE int
    Две функции задаются и получают режим выбора, который может быть потоком (SC_SEL_STREAM = 0) или прямоугольным (SC_SEL_RECTANGLE = 1) или строками (SC_SEL_LINES = 2)      или тонкий прямоугольник (SC_SEL_THIN = 3). При установке в этих режимах регулярные шаги каретки продлевают или уменьшают выбор, пока режим не будет отменен вызовом с таким же значением или с помощью SCI_CANCEL. Функция get возвращает текущий режим, даже если выделение было сделано с помощью мыши или с регулярными расширенными ходами.      SC_SEL_THIN - это режим после ввода прямоугольного выделения и гарантирует, что символы не будут выбраны.

    

SCI_GETMOVEEXTENDSSELECTION bool
     Это возвращает 1, если регулярные каретки перемещаются или уменьшают выбор, 0, если нет.      SCI_SETSELECTIONMODE переключает этот параметр между включением и выключением.

    

SCI_GETLINESELSTARTPOSITION(int line) position
SCI_GETLINESELENDPOSITION(int line) position
    Получить позицию начала и конца выделения в данной строке с помощью      INVALID_POSITION возвращается, если в этой строке нет выбора.

SCI_MOVECARETINSIDEVIEW
Если каретка находится сверху или снизу, она перемещается в ближайшую линию, которая видна в ее текущем положении. Любой выбор потерян.

    

SCI_POSITIONBEFORE(int pos) position
SCI_POSITIONAFTER(int pos) position
     Эти сообщения возвращают позицию до и после другой позиции в документе с учетом текущей кодовой страницы. Возвращаемое минимальное положение равно 0, а максимальная позиция - в последней позиции документа. Если вызов с позицией в многобайтовом символе вернет позицию начала / конца этого символа.

    

SCI_POSITIONRELATIVE(int pos, int relative) position
     Подсчитайте несколько целых символов до или после позиции аргумента и верните эту позицию. Возвращаемое минимальное положение равно 0, а максимальная позиция - в последней позиции документа. Если позиция проходит мимо конца документа, возвращается 0.

    

SCI_COUNTCHARACTERS(int start, int end) int
     Возвращает количество целых символов между двумя позициями.

    

SCI_TEXTWIDTH(int style, const char *text) int
     Это возвращает ширину пикселя строки, нарисованной в заданном style , который может использоваться, например, для определения того, насколько широким является маркер номера строки, чтобы отображать заданное число цифр.

    

SCI_TEXTHEIGHT(int line) int
     Это возвращает высоту в пикселях определенной строки. В настоящее время все линии имеют одинаковую высоту.

    

SCI_GETCOLUMN(int pos) int
     Это сообщение возвращает номер столбца позиции pos в документе, учитывающий ширину вкладок. Это возвращает номер столбца последней вкладки в строке до pos , плюс количество символов между последней вкладкой и      pos . Если в строке нет символов табуляции, возвращаемое значение - это количество символов до позиции на линии. В обоих случаях двубайтные символы считаются одиночным символом. Вероятно, это полезно только для моноширинных шрифтов.

    

SCI_FINDCOLUMN(int line, int column) int
     Это сообщение возвращает позицию column в line принимая во внимание ширину вкладок. Он обрабатывает многобайтовый символ как один столбец. Номера столбцов, например, строки начинаются с 0.

SCI_POSITIONFROMPOINT(int x, int y) position
SCI_POSITIONFROMPOINTCLOSE(int x, int y) position
     SCI_POSITIONFROMPOINT находит ближайшую позицию символа к точке и     SCI_POSITIONFROMPOINTCLOSE аналогичен, но возвращает -1, если точка находится за пределами окна или не близко к какому-либо символу.

    

SCI_CHARPOSITIONFROMPOINT(int x, int y) position
SCI_CHARPOSITIONFROMPOINTCLOSE(int x, int y) position
     SCI_CHARPOSITIONFROMPOINT находит ближайший символ к точке и     SCI_CHARPOSITIONFROMPOINTCLOSE аналогичен, но возвращает -1, если точка находится за окном или не близко к каким-либо символам. Это похоже на предыдущие методы, но находит символы, а не межсимвольные положения.

    

SCI_POINTXFROMPOSITION(<unused> , int pos) int
SCI_POINTYFROMPOSITION(<unused> , int pos) int
     Эти сообщения возвращают местоположение пикселя изображения x и y текста в позиции pos в документе.

    

SCI_HIDESELECTION(bool hide)
     Нормальное состояние состоит в том, чтобы сделать выбор видимым, нарисуя его как установленный SCI_SETSELFORE и SCI_SETSELBACK . Однако, если вы скрываете выделение, он отображается как обычный текст.

    

SCI_CHOOSECARETX
     Scintilla запоминает значение x последней позиции, горизонтально перемещенную пользователем пользователем, и это значение затем используется при перемещении по вертикали, например, с помощью клавиш вверх и вниз. Это сообщение устанавливает текущую позицию x каретки как запоминаемое значение.

    

SCI_MOVESELECTEDLINESUP
     Переместите выделенные строки на одну строку, сдвинув линию выше выбор. Выбор будет автоматически расширен до начала первая строка выбора и конец последней строки выбора. Если ничего не выбрано, строка, в которой находится текущий курсор выбирается.

SCI_MOVESELECTEDLINESDOWN
     Переместите выделенные строки на одну строку, сдвинув линию ниже перед выбором. Выбор будет автоматически расширен до начала первая строка выбора и конец последней строки выбора. Если ничего не выбрано, строка, в которой находится текущий курсор выбирается.

    

SCI_SETMOUSESELECTIONRECTANGULARSWITCH(bool mouseSelectionRectangularSwitch)
SCI_GETMOUSESELECTIONRECTANGULARSWITCH bool
     Включить или отключить возможность переключения в режим выбора прямоугольника при выборе с помощью мыши. Когда эта опция включена, выбор мыши в режиме потока может быть переключен в прямоугольный режим, нажав соответствующую клавишу модификатора. Затем они придерживаются прямоугольного режима, даже когда ключ-модификатор снова освобождается. Когда эта опция выключена, выбор мыши всегда будет придерживаться режима, в который был запущен выбор. По умолчанию он отключен.

    

   Множественный выбор и виртуальное пространство

SCI_SETMULTIPLESELECTION(bool multipleSelection)
SCI_GETMULTIPLESELECTION bool
SCI_SETADDITIONALSELECTIONTYPING(bool additionalSelectionTyping)
SCI_GETADDITIONALSELECTIONTYPING bool
SCI_SETMULTIPASTE(int multiPaste)
SCI_GETMULTIPASTE int
SCI_SETVIRTUALSPACEOPTIONS(int virtualSpaceOptions)
SCI_GETVIRTUALSPACEOPTIONS int
SCI_SETRECTANGULARSELECTIONMODIFIER(int modifier)
SCI_GETRECTANGULARSELECTIONMODIFIER int

SCI_GETSELECTIONS int
SCI_GETSELECTIONEMPTY bool
SCI_CLEARSELECTIONS
SCI_SETSELECTION(int caret, int anchor)
SCI_ADDSELECTION(int caret, int anchor)
SCI_DROPSELECTIONN(int selection)
SCI_SETMAINSELECTION(int selection)
SCI_GETMAINSELECTION int

SCI_SETSELECTIONNCARET(int selection, int caret)
SCI_GETSELECTIONNCARET(int selection) position
SCI_SETSELECTIONNCARETVIRTUALSPACE(int selection, int space)
SCI_GETSELECTIONNCARETVIRTUALSPACE(int selection) int
SCI_SETSELECTIONNANCHOR(int selection, int anchor)
SCI_GETSELECTIONNANCHOR(int selection) position
SCI_SETSELECTIONNANCHORVIRTUALSPACE(int selection, int space)
SCI_GETSELECTIONNANCHORVIRTUALSPACE(int selection) int
SCI_SETSELECTIONNSTART(int selection, int anchor)
SCI_GETSELECTIONNSTART(int selection) position
SCI_SETSELECTIONNEND(int selection, int caret)
SCI_GETSELECTIONNEND(int selection) position

SCI_SETRECTANGULARSELECTIONCARET(int caret)
SCI_GETRECTANGULARSELECTIONCARET position
SCI_SETRECTANGULARSELECTIONCARETVIRTUALSPACE(int space)
SCI_GETRECTANGULARSELECTIONCARETVIRTUALSPACE int
SCI_SETRECTANGULARSELECTIONANCHOR(int anchor)
SCI_GETRECTANGULARSELECTIONANCHOR position
SCI_SETRECTANGULARSELECTIONANCHORVIRTUALSPACE(int space)
SCI_GETRECTANGULARSELECTIONANCHORVIRTUALSPACE int

SCI_SETADDITIONALSELALPHA(alpha alpha)
SCI_GETADDITIONALSELALPHA int
SCI_SETADDITIONALSELFORE(colour fore)
SCI_SETADDITIONALSELBACK(colour back)
SCI_SETADDITIONALCARETFORE(colour fore)
SCI_GETADDITIONALCARETFORE colour
SCI_SETADDITIONALCARETSBLINK(bool additionalCaretsBlink)
SCI_GETADDITIONALCARETSBLINK bool
SCI_SETADDITIONALCARETSVISIBLE(bool additionalCaretsVisible)
SCI_GETADDITIONALCARETSVISIBLE bool

SCI_SWAPMAINANCHORCARET
SCI_ROTATESELECTION
SCI_MULTIPLESELECTADDNEXT
SCI_MULTIPLESELECTADDEACH

    Одновременно может быть несколько вариантов. Больше выбора производится, удерживая клавишу Ctrl при перетаскивании мышью. Самый последний выбор - это основной выбор и определяет, какая часть документа отображается автоматически. Любой выбор, кроме основного выбора, называется дополнительным выбором. Вызовы в предыдущем разделе работают с основным выбором. Всегда есть хотя бы один выбор. Выбор может быть упрощен вплоть до основного выбора      SCI_CANCEL     который обычно отображается на клавишу Esc.

    

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

    

    Виртуальное пространство - это пространство за пределами каждой строки. Каретку можно перенести в виртуальное пространство, но никакое реальное пространство не будет добавлено в документ до тех пор, пока не будет напечатан какой-либо текст или какая-либо другая команда вставки текста.

    

Если в буфер обмена скопированы несмежные выделения, каждый выбор добавляется в текст буфера обмена, без разделительных символов. Для прямоугольных выборов конец строки документа добавляется после текста каждой строки. Прямоугольные выделения всегда копируются из верхней строки в нижнюю, а не в порядке выбора. Виртуальное пространство не копируется.

SCI_SETMULTIPLESELECTION(bool multipleSelection)
SCI_GETMULTIPLESELECTION bool
Включить или отключить множественный выбор. Когда несколько вариантов отключены, невозможно выбрать несколько диапазонов, удерживая клавишу Ctrl при перетаскивании мышью.

SCI_SETADDITIONALSELECTIONTYPING(bool additionalSelectionTyping)
SCI_GETADDITIONALSELECTIONTYPING bool
Ввод текста, новая строка, курсор влево / вправо / вверх / вниз, backspace, delete, home и end работают с несколькими выборами одновременно. Также позволяет выбирать команды выбора слов и строк.

SCI_SETMULTIPASTE(int multiPaste)
SCI_GETMULTIPASTE int
При вставке в несколько вариантов вставной текст может попасть в основной выбор с помощью SC_MULTIPASTE_ONCE = 0 или в каждый выбор с помощью SC_MULTIPASTE_EACH = 1. SC_MULTIPASTE_ONCE по умолчанию.

SCI_SETVIRTUALSPACEOPTIONS(int virtualSpaceOptions)
SCI_GETVIRTUALSPACEOPTIONS int
Виртуальное пространство может быть включено или отключено для прямоугольных выборов или в других обстоятельствах или в обоих случаях. Есть три битовых флажка SCVS_RECTANGULARSELECTION=1, SCVS_USERACCESSIBLE=2, and SCVS_NOWRAPLINESTART=4 которые могут быть установлены независимо.       SCVS_NONE = 0, по умолчанию отключает все использование виртуального пространства.

     

SCVS_NOWRAPLINESTART предотвращает перемещение и выделение левой стрелки в предыдущую строку. Это наиболее желательно в сочетании с виртуальным пространством, но является независимым параметром, поэтому он работает без виртуального пространства.

    

SCI_SETRECTANGULARSELECTIONMODIFIER(int modifier)
SCI_GETRECTANGULARSELECTIONMODIFIER int
     На GTK + и Qt ключ используется для обозначения того, что прямоугольная выбор должен быть создан в сочетании с перетаскиванием мышью. Три возможных значения: SCMOD_CTRL = 2, SCMOD_ALT = 4 (по умолчанию) или SCMOD_SUPER = 8. Поскольку SCMOD_ALT , возможно, уже используется диспетчером окон, диспетчеру окна может потребоваться настройка, чтобы разрешить этот выбор.       SCMOD_SUPER часто является зависящим от системы ключом модификатора, таким как левый ключ Windows на клавиатуре Windows или клавишей Command на Mac.

    

SCI_GETSELECTIONS int
     Верните количество активных в данный момент вариантов. Всегда есть хотя бы один выбор.

    

SCI_GETSELECTIONEMPTY bool
     Возврат 1, если каждый выбранный диапазон пуст else 0.

    

SCI_CLEARSELECTIONS
     Установите единственный пустой выбор в качестве единственного выбора.

SCI_SETSELECTION(int caret, int anchor)
     Задайте единственный выбор из anchor в caret как единственный выбор.

    

SCI_ADDSELECTION(int caret, int anchor)
     Добавьте новый выбор из anchor в caret в качестве основного выбора, сохраняя все остальные выборы в качестве дополнительных выборов. Так как всегда есть хотя бы один выбор, чтобы установить список выборов, первый выбор должен быть добавлен с помощью SCI_SETSELECTION, а последующие варианты добавлены с помощью SCI_ADDSELECTION

    

SCI_DROPSELECTIONN(int selection)
     Если есть несколько вариантов, удалите указанный выбор. Если это был основной выбор, сделайте предыдущий выбор основным, и если он был первым, то последний выбор станет основным. Если есть только один выбор или нет выбора selection , то эффект не будет.

    

SCI_SETMAINSELECTION(int selection)
SCI_GETMAINSELECTION int
     Одним из вариантов является основной выбор, который используется для определения того, какой диапазон текста будет автоматически виден. Основной выбор может отображаться в разных цветах или с карандашом по-разному. Только основной выбор можно сделать главным.

SCI_SETSELECTIONNCARET(int selection, int caret)
SCI_GETSELECTIONNCARET(int selection) position
SCI_SETSELECTIONNCARETVIRTUALSPACE(int selection, int space)
SCI_GETSELECTIONNCARETVIRTUALSPACE(int selection) int
SCI_SETSELECTIONNANCHOR(int selection, int anchor)
SCI_GETSELECTIONNANCHOR(int selection) position
SCI_SETSELECTIONNANCHORVIRTUALSPACE(int selection, int space)
SCI_GETSELECTIONNANCHORVIRTUALSPACE(int selection) int
Set or query the position and amount of virtual space for the caret and anchor of each already existing selection.

SCI_SETSELECTIONNSTART(int selection, int anchor)
SCI_GETSELECTIONNSTART(int selection) position
SCI_SETSELECTIONNEND(int selection, int caret)
SCI_GETSELECTIONNEND(int selection) position
Set or query the start and end position of each already existing selection. Mostly of use to query each range for its text. The selection parameter is zero-based.

SCI_SETRECTANGULARSELECTIONCARET(int caret)
SCI_GETRECTANGULARSELECTIONCARET position
SCI_SETRECTANGULARSELECTIONCARETVIRTUALSPACE(int space)
SCI_GETRECTANGULARSELECTIONCARETVIRTUALSPACE int
SCI_SETRECTANGULARSELECTIONANCHOR(int anchor)
SCI_GETRECTANGULARSELECTIONANCHOR position
SCI_SETRECTANGULARSELECTIONANCHORVIRTUALSPACE(int space)
SCI_GETRECTANGULARSELECTIONANCHORVIRTUALSPACE int
Set or query the position and amount of virtual space for the caret and anchor of the rectangular selection. After setting the rectangular selection, this is broken down into multiple selections, one for each line.

SCI_SETADDITIONALSELALPHA(alpha alpha)
SCI_GETADDITIONALSELALPHA int
SCI_SETADDITIONALSELFORE(colour fore)
SCI_SETADDITIONALSELBACK(colour back)
Modify the appearance of additional selections so that they can be differentiated from the main selection which has its appearance set with SCI_SETSELALPHA, SCI_GETSELALPHA, SCI_SETSELFORE, and SCI_SETSELBACK. SCI_SETADDITIONALSELFORE and SCI_SETADDITIONALSELBACK calls have no effect until SCI_SETSELFORE and SCI_SETSELBACK are called with useSelection*Colour value set to true. Subsequent calls to SCI_SETSELFORE, and SCI_SETSELBACK will overwrite the values set by SCI_SETADDITIONALSEL* functions.

SCI_SETADDITIONALCARETFORE(colour fore)
SCI_GETADDITIONALCARETFORE colour
SCI_SETADDITIONALCARETSBLINK(bool additionalCaretsBlink)
SCI_GETADDITIONALCARETSBLINK bool
Modify the appearance of additional carets so that they can be differentiated from the main caret which has its appearance set with SCI_SETCARETFORE, SCI_GETCARETFORE, SCI_SETCARETPERIOD, and SCI_GETCARETPERIOD.

SCI_SETADDITIONALCARETSVISIBLE(bool additionalCaretsVisible)
SCI_GETADDITIONALCARETSVISIBLE bool
Determine whether to show additional carets (defaults to true).

SCI_SWAPMAINANCHORCARET
SCI_ROTATESELECTION
SCI_MULTIPLESELECTADDNEXT
SCI_MULTIPLESELECTADDEACH
Эти команды могут быть назначены клавишам, чтобы можно было манипулировать несколькими выборами.      SCI_SWAPMAINANCHORCARET перемещает курсор на противоположный конец основного выделения.      SCI_ROTATESELECTION делает следующий выбор основным выбором.
     SCI_MULTIPLESELECTADDNEXT добавляет следующее вхождение основного выбора в пределах цели к набору выборов в качестве основного. Если текущий выбор пуст, выберите слово вокруг каретки. Текущий searchFlags       , поэтому приложение может выбирать чувствительность к регистру и варианты поиска слов.
     SCI_MULTIPLESELECTADDEACH похож на      SCI_MULTIPLESELECTADDNEXT, но добавляет несколько вхождений вместо одного.

    

   Прокрутка и авто-прокрутка

     SCI_SETFIRSTVISIBLELINE(int displayLine)
SCI_GETFIRSTVISIBLELINE int
SCI_SETXOFFSET(int xOffset)
SCI_GETXOFFSET int
SCI_LINESCROLL(int columns, int lines)
SCI_SCROLLCARET
SCI_SCROLLRANGE(int secondary, int primary)
SCI_SETXCARETPOLICY(int caretPolicy, int caretSlop)
SCI_SETYCARETPOLICY(int caretPolicy, int caretSlop)
SCI_SETVISIBLEPOLICY(int visiblePolicy, int visibleSlop)
SCI_SETHSCROLLBAR(bool visible)
SCI_GETHSCROLLBAR bool
SCI_SETVSCROLLBAR(bool visible)
SCI_GETVSCROLLBAR bool
SCI_SETSCROLLWIDTH(int pixelWidth)
SCI_GETSCROLLWIDTH int
SCI_SETSCROLLWIDTHTRACKING(bool tracking)
SCI_GETSCROLLWIDTHTRACKING bool
SCI_SETENDATLASTLINE(bool endAtLastLine)
SCI_GETENDATLASTLINE bool

SCI_SETFIRSTVISIBLELINE(int displayLine)
SCI_GETFIRSTVISIBLELINE int
     Эти сообщения извлекают и устанавливают номер строки первой видимой строки в представлении Scintilla. Первая строка в документе пронумерована 0. Значение - это видимая строка, а не строка документа.

    

SCI_SETXOFFSET(int xOffset)
SCI_GETXOFFSET int
      xOffset - это положение горизонтальной прокрутки в пикселях начала текстового вида. Значение 0 - это нормальное положение с первым текстовым столбцом, видимым слева от представления.

    

SCI_LINESCROLL(int columns, int lines)
     Это попытается прокрутить дисплей по количеству указанных столбцов и строк. Положительные значения строк увеличивают номер строки в верхней части экрана (т. е. Перемещают текст вверх, насколько это касается пользователя), значения отрицательной строки делают обратное.

    

Значение столбца - это ширина пространства в стиле по умолчанию. Положительные значения увеличивают столбец в левом краю представления (т. е. Перемещают текст влево до уровня пользователя). Отрицательные значения делают обратное.

    

См. также: SCI_SETXOFFSET

    

SCI_SCROLLARET
     Если текущая позиция (это каретка, если нет выбора) не отображается, просмотр прокручивается, чтобы сделать ее видимой в соответствии с текущей политикой каретки.

    

SCI_SCROLLRANGE(int secondary, int primary)
     Прокрутите позиции аргументов и диапазон между ними в представлении, отдавая приоритет первичной позиции, а затем вторичной позиции. Поведение похоже на SCI_SCROLLCARET      с использованием первичной позиции вместо каретки. Затем прилагаются усилия для обеспечения видимости вторичного положения и диапазона между ними. Это можно использовать, чтобы сделать видимость соответствия видимой.

    

SCI_SETXCARETPOLICY(int caretPolicy, int caretSlop)
SCI_SETYCARETPOLICY(int caretPolicy, int caretSlop)
     Они устанавливают политику каретки. Значение caretPolicy представляет собой комбинацию      CARET_SLOP , CARET_STRICT , CARET_JUMPS и      CARET_EVEN .

                                                                                                                                                        
CARET_SLOP Если установлено, мы можем определить значение slop: caretSlop . Это значение определяет нежелательную зону (НЗ), где каретка ... нежелательна. Эта зона определяется как количество пикселей около вертикальных полей и в виде ряда линий вблизи горизонтальных полей. Удерживая каретку от краев, это видно в его контексте. Это делает вероятным, что идентификатор, в котором находится каретка, может быть полностью виден и что текущая строка видна с некоторыми из следующих за ней строк, которые часто зависят от этой строки.
CARET_STRICT Если установлено, политика, установленная CARET_SLOP , принудительно ... строго. Каретка находится на экране, если caretSlop не установлен и не может идти в НЗ, если установлен caretSlop .
CARET_JUMPS Если установлено, дисплей перемещается более энергично, поэтому каретка может перемещаться в том же направлении дольше, чем снова применяется политика. Обозначение "3НЗ" используется для обозначения трехкратного размера НЗ как расстояния до поля.
CARET_EVEN Если не задано, вместо симметричных НЗ, левая и нижняя НЗ расширяются вплоть до правого и верхнего НЗ соответственно. Таким образом, мы предпочитаем отображение полезной информации: начало строк, где находится большинство кода, и строки после каретки, например, тело функции.
    
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
отстойных строги подскакивает даже Caret может перейти на границу При достижении предела (выход из видимости
           или в НЗ) дисплей ...
0 0 0 0 Да перемещен, чтобы поместить курсор сверху / справа
0 0 0 1 Да перемещается на одну позицию
0 0 1 0 Да перемещен, чтобы поместить курсор сверху / справа
0 0 1 1 Да с центром в карете
0 1 - 0 Caret всегда сверху / справа от дисплея -
0 1 - 1 Нет, карет всегда центрирован -
1 0 0 0 Да перемещен, чтобы вывести каретку из асимметричного НЗ
1 0 0 1 Да переместился, чтобы вывести каретку из НЗ
1 0 1 0 Да перемещен, чтобы положить каретку на 3НЗ верхнего или правого края
1 0 1 1 Да переместился, чтобы положить каретку на 3U от поля
1 1 - 0 Caret всегда находится в НЗ верхнего / правого края -
1 1 0 1 Нет, сохранен из НЗ перемещается на одну позицию
1 1 1 0 Нет, сохранен из НЗ переместился, чтобы положить каретку на 3U от поля

SCI_SETVISIBLEPOLICY(int visiblePolicy, int visibleSlop)
Это определяет, как определяется вертикальное позиционирование при вызове SCI_ENSUREVISIBLEENFORCEPOLICY . Для параметра политики требуется VISIBLE_SLOP и VISIBLE_STRICT . Это похоже на операцию SCI_SETYCARETPOLICY(int caretPolicy, int caretSlop) .

    

SCI_SETHSCROLLBAR (отображается bool)
SCI_GETHSCROLLBAR bool
     Горизонтальная полоса прокрутки отображается только в том случае, если она необходима для предполагаемой ширины. Если вы никогда не хотели этого видеть, позвоните      SCI_SETHSCROLLBAR (0) . Используйте SCI_SETHSCROLLBAR (1) , чтобы снова включить его.     SCI_GETHSCROLLBAR возвращает текущее состояние. Состояние по умолчанию - отображать его при необходимости.

    

См. также: SCI_SETSCROLLWIDTH.

    

SCI_SETVSCROLLBAR (отображается bool)
SCI_GETVSCROLLBAR bool
     По умолчанию вертикальная полоса прокрутки всегда отображается, когда требуется. Вы можете скрыть или показать его с помощью SCI_SETVSCROLLBAR и получить текущее состояние с помощью     SCI_GETVSCROLLBAR.

    

См. также: SCI_LINESCROLL

    

SCI_SETSCROLLWIDTH(int pixelWidth)
SCI_GETSCROLLWIDTH int
     Для производительности Scintilla не измеряет ширину отображения документа для определения свойств горизонтальной полосы прокрутки. Вместо этого используется предполагаемая ширина. Эти сообщения устанавливаются и получают ширину документа в пикселях, принимаемых Scintilla. Значение по умолчанию - 2000. Чтобы обеспечить прокрутку ширины видимых в настоящее время строк, используйте       SCI_SETSCROLLWIDTHTRACKING

SCI_SETSCROLLWIDTHTRACKING(bool tracking)
SCI_GETSCROLLWIDTHTRACKING bool
Если отслеживание ширины прокрутки включено, ширина прокрутки настраивается для обеспечения полной прокрутки всех отображаемых в настоящее время строк. Этот режим никогда не регулирует ширину прокрутки, чтобы быть более узкой.

    

SCI_SETENDATLASTLINE(bool endAtLastLine)
SCI_GETENDATLASTLINE bool
     SCI_SETENDATLASTLINE устанавливает диапазон прокрутки таким образом, чтобы максимальная позиция прокрутки имела последнюю строку в нижней части представления (по умолчанию). Установка этого параметра в false позволяет прокручивать одну страницу ниже последней строки.

    

   Пробельные символы

SCI_SETVIEWWS(int viewWS)
SCI_GETVIEWWS int
SCI_SETWHITESPACEFORE(bool useSetting, colour fore)
SCI_SETWHITESPACEBACK(bool useSetting, colour back)
SCI_SETWHITESPACESIZE(int size)
SCI_GETWHITESPACESIZE int
SCI_SETTABDRAWMODE(int tabDrawMode)
SCI_GETTABDRAWMODE int
SCI_SETEXTRAASCENT(int extraAscent)
SCI_GETEXTRAASCENT int
SCI_SETEXTRADESCENT(int extraDescent)
SCI_GETEXTRADESCENT int

SCI_SETVIEWWS(int viewWS)
SCI_GETVIEWWS int
Белое пространство можно сделать видимым, что может быть полезно для языков, в которых значится пустое пространство, например Python. Символы пространства отображаются как маленькие центрированные точки и символы табуляции, как стрелки света, указывающие вправо. Существуют также способы управления отображением символов конца строки . Два сообщения установлены и получают режим отображения пробела. Аргумент viewWS может быть одним из следующих:

                                                                                                                                                                                                                                   
SCWS_INVISIBLE 0 Обычный режим отображения с пробелом отображается как пустой цвет фона.
SCWS_VISIBLEALWAYS 1 Символы пробела рисуются как точки и стрелки,
SCWS_VISIBLEAFTERINDENT 2 Белое пространство, используемое для отступов, отображается нормально, но после первого видимого символа оно отображается как точки и стрелки.
SCWS_VISIBLEONLYININDENT 3 Белое пространство, используемое для отступов, отображается как точки и стрелки.
    

Эффект использования любого другого значения viewWS не определен.

    

SCI_SETWHITESPACEFORE(bool useSetting, colour fore)
SCI_SETWHITESPACEBACK(bool useSetting, colour back)
     По умолчанию цвет видимого пробела определяется используемым лексером. Цвет переднего плана и / или фона всего видимого пробела можно установить глобально, переопределяя цвета лексера с помощью SCI_SETWHITESPACEFORE и     SCI_SETWHITESPACEBACK.

     

SCI_SETWHITESPACESIZE(int size)
SCI_GETWHITESPACESIZE int
     SCI_SETWHITESPACESIZE задает размер точек, используемых для символов пробела. Сообщение SCI_GETWHITESPACESIZE получает текущий размер.

SCI_SETTABDRAWMODE(int tabDrawMode)
SCI_GETTABDRAWMODE int
Эти два сообщения получают и устанавливают, как рисуются символы вкладки, когда видны пробелы. Аргумент tabDrawMode может быть одним из следующих:

                                                                                                                             
SCTD_LONGARROW 0 Режим по умолчанию стрелки, растянутой до табуляции.
SCTD_STRIKEOUT 1 Горизонтальная линия, растянутая до табуляции.
    

Эффект от использования любого другого параметра tabDrawMode не определен.

SCI_SETEXTRAASCENT(int extraAscent)
SCI_GETEXTRAASCENT int
SCI_SETEXTRADESCENT(int extraDescent)
SCI_GETEXTRADESCENT int
Текст рисуется базой каждого символа на «базовой линии». Высота линии найдена из максимума, что любой стиль простирается над базовой линией (ее «всплытие»), добавляется к максимуму, что любой стиль простирается ниже базовой линии (ее «спуск»). Пространство может быть добавлено к максимальному подъему (SCI_SETEXTRAASCENT) и максимальному спускам (SCI_SETEXTRADESCENT), чтобы обеспечить большее пространство между строками. Это может быть сделано для облегчения чтения текста или для размещения подчеркивания или подчеркивания.

    

   Курсор

     SCI_SETCURSOR(int cursorType)
      SCI_GETCURSOR int
    

SCI_SETCURSOR(int cursorType)
SCI_GETCURSOR int
     Курсор обычно выбирается контекстно-зависимым способом, поэтому он будет отличаться по краю, чем по тексту. При выполнении медленного действия вы можете изменить курсор ожидания. Вы устанавливаете тип курсора с помощью SCI_SETCURSOR. cursorType аргументом может быть:

                                                                                                                             
SC_CURSORNORMAL -1 Отображается нормальный курсор.
SC_CURSORWAIT & NBSP; 4 Курсор ожидания отображается, когда мышь закончилась или принадлежит окну Scintilla.
    

Значения курсора с 1 по 7 заданы курсорами, но только SC_CURSORWAIT полезно поддается контролю. Другие значения cursorType вызывают отображение указателя. Сообщение SCI_GETCURSOR возвращает последний тип курсора, который вы установили, или     SC_CURSORNORMAL (-1), если вы не задали тип курсора.

    

   Захват мыши

SCI_SETMOUSEDOWNCAPTURES(bool captures)
SCI_GETMOUSEDOWNCAPTURES bool
SCI_SETMOUSEWHEELCAPTURES(bool captures)
SCI_GETMOUSEWHEELCAPTURES bool

SCI_SETMOUSEDOWNCAPTURES(bool capture)
SCI_GETMOUSEDOWNCAPTURES bool
     Когда мышь нажата внутри Scintilla, она захватывается, поэтому будущие события перемещения мыши отправляются в Scintilla. Это поведение можно отключить с помощью      SCI_SETMOUSEDOWNCAPTURES (0) .

    

SCI_SETMOUSEWHEELCAPTURES(bool capture)
SCI_GETMOUSEWHEELCAPTURES bool
     В Windows Scintilla захватывает все сообщения WM_MOUSEWHEEL , если она имеет фокус, даже если указатель мыши нигде не находится возле окна редактора Scintilla. Это поведение можно изменить с помощью SCI_SETMOUSEWHEELCAPTURES (0) , чтобы Scintilla передавала сообщения WM_MOUSEWHEEL в родительское окно. Scintilla будет реагировать на колесико мыши, если указатель мыши находится над окном редактора.

    

   Конец строки

    

Scintilla может обрабатывать основные соглашения о конце строки и, в зависимости от настроек, и текущий лексер также поддерживает дополнительные строки Unicode.

    

Scintilla может интерпретировать любой из Macintosh (\r), Unix (\n) и Windows (\r\n)     конец линии. Когда пользователь нажимает клавишу Enter, одна из этих строк строки вставляется в буфер. По умолчанию это \r\n в Windows и \n в Unix, но это можно изменить с помощью сообщения SCI_SETEOLMODE. Вы также можете преобразовать весь документ в один из этих строк с помощью SCI_CONVERTEOLS. Наконец, вы можете выбрать отображение окончаний строки с помощью SCI_SETVIEWEOL.

    

Для кодировки UTF-8 три дополнительные строки Unicode заканчиваются, следующая строка ( NEL = U + 0085 ), разделитель строк ( LS = U + 2028 ), и разделитель абзаца ( PS = U + 2029 )     может опционально интерпретироваться, когда конец строки Unicode включен, а текущий лексер также поддерживает концы строк Unicode.

SCI_SETEOLMODE(int eolMode)
SCI_GETEOLMODE int
SCI_CONVERTEOLS(int eolMode)
SCI_SETVIEWEOL(bool visible)
SCI_GETVIEWEOL bool
SCI_GETLINEENDTYPESSUPPORTED int
SCI_SETLINEENDTYPESALLOWED(int lineEndBitSet)
SCI_GETLINEENDTYPESALLOWED int
SCI_GETLINEENDTYPESACTIVE int

SCI_SETEOLMODE(int eolMode)
SCI_GETEOLMODE int
SCI_SETEOLMODE устанавливает символы, которые добавляются в документ, когда пользователь нажимает клавишу Enter. Вы можете установить eolMode в один из SC_EOL_CRLF (0),     SC_EOL_CR (1) или SC_EOL_LF (2). SCI_GETEOLMODE     сообщение извлекает текущее состояние.

    

SCI_CONVERTEOLS(int eolMode)
     Это сообщение изменяет все символы конца строки в документе, чтобы они соответствовали      eolMode . Допустимые значения: SC_EOL_CRLF (0), SC_EOL_CR     (1) или SC_EOL_LF (2).

    

SCI_SETVIEWEOL(bool visible)
SCI_GETVIEWEOL bool
     Обычно символы конца строки скрыты, но SCI_SETVIEWEOL позволяет вам отображать (или скрывать) их, устанавливая visible true (или      ложь ). Видимая визуализация символов конца строки аналогична      (CR) , (LF) или (CR) (LF) . SCI_GETVIEWEOL     возвращает текущее состояние.

    

SCI_GETLINEENDTYPESSUPPORTED int
     SCI_GETLINEENDTYPESSUPPORTED сообщает о различных типах концов строк, поддерживаемых текущим лексером. Это бит, хотя в настоящее время существует только один вариант: SC_LINE_END_TYPE_DEFAULT (0) или SC_LINE_END_TYPE_UNICODE (1). Эти значения также используются другими сообщениями, касающимися конца строки Unicode.

    

SCI_SETLINEENDTYPESALLOWED(int lineEndBitSet)
SCI_GETLINEENDTYPESALLOWED int
     По умолчанию интерпретируются только строки ASCII. Концы строк Unicode могут запрашиваться с помощью       SCI_SETLINEENDTYPESALLOWED (SC_LINE_END_TYPE_UNICODE)      но это будет неэффективно, если лексер также не позволит вам заканчивать линию Unicode.     SCI_GETLINEENDTYPESALLOWED возвращает текущее состояние.

    

SCI_GETLINEENDTYPESACTIVE int
     SCI_GETLINEENDTYPESACTIVE сообщает набор строк, которые в настоящее время интерпретируются Scintilla. Это SCI_GETLINEENDTYPESSUPPORTED & SCI_GETLINEENDTYPESALLOWED .

    

   Слова

    

Существует поддержка выбора, навигации и поиска слов.

Слова являются непрерывными последовательностями символов из определенного набора символов. 4 категории определяют слова: слово, пробел, пунктуацию и строку заканчиваются с каждой категорией, имеющей роль в словарных функциях. Двойной щелчок выбирает слово в этой точке, которое может представлять собой последовательность слов, знаков препинания или пробелов. Концы строк не выбираются двойным щелчком, но действуют как разделители слов.

    

Слова определяются в терминах символов, а наборы символов в каждой категории могут быть настроены до определенной степени. Символ NUL (0) всегда является пространством, так как API-интерфейсы для определения категорий используют строки с нулевым завершением. Для однобайтовых кодировок категория может быть назначена любому символу (от 1 до 0xFF). Для многобайтовых кодировок категория может быть назначена символам от 1 до 0x7F со статическим поведением от 0x80. Для UTF-8 символы из 0x80 будут использовать категорию, основанную на общей категории Unicode. Для азиатских кодировок, кодовых страниц 932, 936, 949, 950 и 1361 символы от 0x80 рассматриваются как символы слов.

    

Идентификаторы в языках программирования часто являются последовательностями слов с капитализацией      (aCamelCaseIdentifier) ??или символы подчеркивания (an_under_bar_ident), используемые для обозначения границ слов. Команды SCI_WORDPART * используются для перемещения между частями слова: SCI_WORDPARTLEFT, SCI_WORDPARTLEFTEXTEND, SCI_WORDPARTRIGHT, and SCI_WORDPARTRIGHTEXTEND.

SCI_WORDENDPOSITION(int pos, bool onlyWordCharacters) int
SCI_WORDSTARTPOSITION(int pos, bool onlyWordCharacters) int
SCI_ISRANGEWORD(int start, int end) bool
SCI_SETWORDCHARS(<unused> , const char *characters)
SCI_GETWORDCHARS(<unused> , char *characters) int
SCI_SETWHITESPACECHARS(<unused> , const char *characters)
SCI_GETWHITESPACECHARS(<unused> , char *characters) int
SCI_SETPUNCTUATIONCHARS(<unused> , const char *characters)
SCI_GETPUNCTUATIONCHARS(<unused> , char *characters) int
SCI_SETCHARSDEFAULT

SCI_WORDENDPOSITION(int pos, bool onlyWordCharacters) int
SCI_WORDSTARTPOSITION(int pos, bool onlyWordCharacters) int
Эти сообщения возвращают начало и конец слов, используя то же определение слов, которое используется внутри внутри Scintilla. Вы можете установить собственный список символов, которые считаются словами с      SCI_SETWORDCHARS . Позиция устанавливает начало или поиск, который пересылается при поиске конца и назад при поиске начала.

    

SCI_ISRANGEWORD(int start, int end) bool
     Является ли начало диапазона .. слово или набор слов? Это сообщение проверяет, что начало происходит при переходе на начало слова, и этот конец находится на конце конца слова. Он не проверяет, есть ли какие-либо пробелы внутри диапазона.

      SCI_ISRANGEWORD(int start, int end) bool
    

Установите onlyWordCharacters в true (1), чтобы остановить поиск по первому неглавому символу в направлении поиска. Если onlyWordCharacters      false (0), первый символ в направлении поиска задает тип поиска как слово или не слово, а поиск останавливается на первом несогласованном символе. Иски также завершаются началом или концом документа.

    

Если «w» представляет символы слова и «.» представляет символы без слов и "|" представляет позицию и true или false - это состояние      onlyWordCharacters :

                                                                                    
Начальное состояние end, true end, false start, true start, false
..ww..|..ww.. ..ww..|..ww.. ..ww....|ww.. ..ww..|..ww.. ..ww|....ww..
....ww|ww.... ....wwww|.... ....wwww|.... ....|wwww.... ....|wwww....
..ww|....ww.. ..ww|....ww.. ..ww....|ww.. ..|ww....ww.. ..|ww....ww..
..ww....|ww.. ..ww....ww|.. ..ww....ww|.. ..ww....|ww.. ..ww|....ww..

SCI_SETWORDCHARS(<unused> , const char *characters)
     Это сообщение определяет, какие символы являются членами категории слов. Перед обработкой этой функции категории символов устанавливаются значения по умолчанию. Например, если вы не разрешаете '_' в вашем наборе символов использовать:
      SCI_SETWORDCHARS (0, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") ;

    

SCI_GETWORDCHARS(<unused> , char *characters) int
     Это заполняет параметр символов всеми символами, содержащимися в словах. Параметр символов должен быть достаточно большим, чтобы удерживать все символы. Если параметр символов равен 0, возвращается длина, которая должна быть назначена для хранения всего набора.

    

Для многобайтовых кодировок этот API не будет возвращать значимые значения для 0x80 и выше.

    

SCI_SETWHITESPACECHARS(<unused> , const char *characters)
SCI_GETWHITESPACECHARS(<unused> , char *characters) int
     Подобно SCI_SETWORDCHARS, это сообщение позволяет пользователю определить, какие символы Scintilla рассматривают как пробельные символы. Настройка символов пробелов позволяет пользователю точно настраивать поведение Сцинтиллы, делая такие вещи, как перемещение курсора к началу или концу слова; например, определяя символы пунктуации как пробелы, они будут пропущены, когда пользователь нажимает ctrl + left или ctrl + right. Эта функция должна вызываться после SCI_SETWORDCHARS, так как она сбрасывает символы пробелов до установленного по умолчанию. SCI_GETWHITESPACECHARS ведет себя аналогично SCI_GETWORDCHARS.

    

SCI_SETPUNCTUATIONCHARS(<unused> , const char *characters)
SCI_GETPUNCTUATIONCHARS(<unused> , char *characters) int
     Подобно SCI_SETWORDCHARS и SCI_SETWHITESPACECHARS, это сообщение позволяет пользователю определить, какие символы Scintilla рассматривают как пунктуацию. SCI_GETPUNCTUATIONCHARS ведет себя аналогично SCI_GETWORDCHARS.

    

SCI_SETCHARSDEFAULT
     Используйте стандартные слова и пробельные символы по умолчанию. Это устанавливает пробелы в пробелы, вкладки и другие символы с кодами, меньшими 0x20, с символами слова, установленными на буквенно-цифровые и «_».

    

Команды клавиатуры Word:

   Стилирование

    

Сообщения стилей позволяют назначать стили для текста. Если ваши требования к стилю могут быть удовлетворены одним из стандартных лексеров, или если вы можете написать свой собственный, то lexer, вероятно, самый простой способ для стилизации вашего документа. Если вы решите использовать контейнер для стилизации, вы можете использовать команду SCI_SETLEXER , чтобы выбрать      SCLEX_CONTAINER , и в этом случае контейнер отправляется SCN_STYLENEEDED уведомление каждый раз, когда текст требует стилизации для отображения. В качестве другой альтернативы вы можете использовать простой для стилизации документа. Даже если вы используете лексер, вы можете использовать команды моделирования для отметки ошибок, обнаруженных компилятором. Можно использовать следующие команды.

SCI_GETENDSTYLED position
SCI_STARTSTYLING(int start, int unused)
SCI_SETSTYLING(int length, int style)
SCI_SETSTYLINGEX(int length, const char *styles)
SCI_SETIDLESTYLING(int idleStyling)
SCI_GETIDLESTYLING int
SCI_SETLINESTATE(int line, int state)
SCI_GETLINESTATE(int line) int
SCI_GETMAXLINESTATE int

SCI_GETENDSTYLED position
     Scintilla хранит запись последнего символа, который, вероятно, будет создан правильно. Это перемещается вперед, когда символы после этого стилизованы и перемещаются назад, если перед текстом документа внесены изменения. Перед рисованием текста эта позиция проверяется, если требуется какой-либо стиль и, если это так, сообщение уведомления SCN_STYLENEEDED отправляется в контейнер. Контейнер может отправить SCI_GETENDSTYLED для разработки, где ему нужно начать стилизацию. Scintilla всегда будет запрашивать стиль целых строк.

    

SCI_STARTSTYLING(int start, int unused)
     Это готовит для стилизации, устанавливая позицию стиля start для начала. Неиспользуемый аргумент использовался в более ранних версиях, но теперь игнорируется. После     SCI_STARTSTYLING, отправить несколько сообщений SCI_SETSTYLING для каждого лексического объекта в стиле или отправить SCI_SETSTYLINGEX в стиль в блоках.

    

SCI_SETSTYLING(int length, int style)
     Это сообщение устанавливает стиль символов length , начиная с позиции стилизации, а затем увеличивает положение стиля length , готов к следующему вызов.     SCI_STARTSTYLING должен быть вызван до первого вызова.

    

SCI_SETSTYLINGEX(int length, const char *styles)
     В качестве альтернативы SCI_SETSTYLING, который применяет один и тот же стиль к каждому байту, вы можете использовать это сообщение, которое определяет стили для каждого из length bytes from а затем увеличивает положение стиля length , готовое к следующему вызову.     SCI_STARTSTYLING должен быть вызван до первого вызова.

    

SCI_SETIDLESTYLING(int idleStyling)
SCI_GETIDLESTYLING int
     По умолчанию, SC_IDLESTYLING_NONE (0), стиль синтаксиса выполняется для всего видимого в данный момент текста перед его отображением. В очень больших файлах это может замедлить прокрутку. С помощью SC_IDLESTYLING_TOVISIBLE (1) перед отображением выполняется небольшое количество стилей, а затем дополнительное стилирование выполняется в фоновом режиме в качестве задачи бездействия. Это может привести к тому, что текст изначально выглядит некрасивым, а затем, спустя некоторое время, он окрашен. Текст после видимой в настоящее время части может быть оформлен в фоновом режиме с помощью SC_IDLESTYLING_AFTERVISIBLE (2). Чтобы создать стиль перед и после видимого текста в фоновом режиме, используйте SC_IDLESTYLING_ALL (3).

    

     Поскольку упаковка также требует выполнения стиля, а также использует время простоя, этот параметр не действует, когда документ отображается на упаковке.

SCI_SETLINESTATE(int line, int state)
SCI_GETLINESTATE(int line) int
Помимо 8 бит лексического состояния, сохраненного для каждого символа, также сохраняется целое число для каждой строки. Это можно использовать для более длинных состояний синтаксического анализа, таких как язык сценариев на странице ASP. Используйте SCI_SETLINESTATE, чтобы установить значение integer и SCI_GETLINESTATE, чтобы получить значение. Изменение значения вызывает уведомление SC_MOD_CHANGELINESTATE .

    

SCI_GETMAXLINESTATE int
     Это возвращает последнюю строку с любым состоянием строки.

    

   Определение стиля

    

В то время как упомянутые выше сообщения о настройке стиля изменяют номера стилей, связанные с текстом, эти сообщения определяют, как эти номера стилей интерпретируются визуально. Есть 256 стилей lexer, которые можно установить, от 0 до STYLE_MAX (255). Существуют также некоторые предопределенные нумерованные стили, начинающиеся с 32, следующие константы STYLE _ *.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
STYLE_DEFAULT 32 Этот стиль определяет атрибуты, которые получают все стили, когда            используется сообщение SCI_STYLECLEARALL .
STYLE_LINENUMBER 33 Этот стиль устанавливает атрибуты текста, используемые для отображения номеров строк в поле номера строки. Фоновый цвет, установленный для этого стиля, также устанавливает цвет фона для всех полей, для которых нет установленных битов маскировки. То есть, любая маржа, для которой            mask & SC_MASK_FOLDERS равен 0. Подробнее о масках читайте SCI_SETMARGINMASKN .
STYLE_BRACELIGHT 34 Этот стиль устанавливает атрибуты, используемые при подсветке фигурных скобок с сообщением SCI_BRACEHIGHLIGHT и при подсвечивании соответствующего отступа с помощью SCI_SETHIGHLIGHTGUIDE .
STYLE_BRACEBAD 35 Этот стиль устанавливает атрибуты отображения, используемые при маркировке непревзойденной фигурной скобки с помощью            SCI_BRACEBADLIGHT           сообщение.
STYLE_CONTROLCHAR 36 Этот стиль устанавливает шрифт, используемый при рисовании управляющих символов. Используются только шрифты, размер, жирный шрифт, курсив и атрибуты набора символов, а не атрибуты цвета. См. Также: SCI_SETCONTROLCHARSYMBOL .
STYLE_INDENTGUIDE 37 Этот стиль устанавливает цвета переднего и заднего фона, используемые при рисовании направляющих отступа.
STYLE_CALLTIP 38 Обычно подсказки вызовов используют атрибуты шрифта, определенные STYLE_DEFAULT . Использование SCI_CALLTIPUSESTYLE             вызывает вызовы, чтобы использовать этот стиль вместо этого. Используются только имя лица шрифта, размер шрифта, цвета переднего плана и фона, а также атрибуты набора символов.
STYLE_FOLDDISPLAYTEXT 39 Это стиль, используемый для рисования текстовых тегов, прикрепленных к сложенному тексту.
STYLE_LASTPREDEFINED 39 Чтобы клиентский код упрощал поиск диапазона предопределенных стилей, он устанавливается на номер стиля последнего предопределенного стиля.
STYLE_MAX 255 Это не стиль, а число максимального стиля, который можно установить. Могут использоваться стили между STYLE_LASTPREDEFINED и STYLE_MAX .

Для каждого стиля вы можете установить имя, размер и использование шрифта жирным, курсивом и подчеркиванием, цветом переднего плана и фона и набором символов. Вы также можете скрыть текст с заданным стилем, отобразить все символы в верхнем или нижнем регистре и заполнить от последнего символа на линии до конца строки (для встроенных языков). Существует также экспериментальный атрибут, чтобы сделать текст доступным только для чтения.

    

Это зависит от вас, как вы используете стили. Если вы хотите использовать синтаксическую раскраску, вы можете использовать стиль 0 для пробела, стиль 1 для чисел, стиль 2 для ключевых слов, стиль 3 для строк, стиль 4 для препроцессора, стиль 5 для операторов и т. д.

SCI_STYLERESETDEFAULT
SCI_STYLECLEARALL
SCI_STYLESETFONT(int style, const char *fontName)
SCI_STYLEGETFONT(int style, char *fontName) int
SCI_STYLESETSIZE(int style, int sizePoints)
SCI_STYLEGETSIZE(int style) int
SCI_STYLESETSIZEFRACTIONAL(int style, int sizeHundredthPoints)
SCI_STYLEGETSIZEFRACTIONAL(int style) int
SCI_STYLESETBOLD(int style, bool bold)
SCI_STYLEGETBOLD(int style) bool
SCI_STYLESETWEIGHT(int style, int weight)
SCI_STYLEGETWEIGHT(int style) int
SCI_STYLESETITALIC(int style, bool italic)
SCI_STYLEGETITALIC(int style) bool
SCI_STYLESETUNDERLINE(int style, bool underline)
SCI_STYLEGETUNDERLINE(int style) bool
SCI_STYLESETFORE(int style, colour fore)
SCI_STYLEGETFORE(int style) colour
SCI_STYLESETBACK(int style, colour back)
SCI_STYLEGETBACK(int style) colour
SCI_STYLESETEOLFILLED(int style, bool eolFilled)
SCI_STYLEGETEOLFILLED(int style) bool
SCI_STYLESETCHARACTERSET(int style, int characterSet)
SCI_STYLEGETCHARACTERSET(int style) int
SCI_STYLESETCASE(int style, int caseVisible)
SCI_STYLEGETCASE(int style) int
SCI_STYLESETVISIBLE(int style, bool visible)
SCI_STYLEGETVISIBLE(int style) bool
SCI_STYLESETCHANGEABLE(int style, bool changeable)
SCI_STYLEGETCHANGEABLE(int style) bool
SCI_STYLESETHOTSPOT(int style, bool hotspot)
SCI_STYLEGETHOTSPOT(int style) bool

SCI_STYLERESETDEFAULT
Это сообщение сбрасывает STYLE_DEFAULT в свое состояние при инициализации Scintilla.

    

SCI_STYLECLEARALL
     Это сообщение устанавливает для всех стилей те же атрибуты, что и STYLE_DEFAULT . Если вы настраиваете Scintilla для раскраски синтаксиса, вполне вероятно, что установленные вами лексические стили будут очень похожими. Один из способов установить стили:      1. Установите STYLE_DEFAULT на общие функции всех стилей.
     2. Используйте SCI_STYLECLEARALL, чтобы скопировать это во все стили.
     3. Установите атрибуты стиля, которые делают ваши лексические стили разными.

SCI_STYLESETFONT(int style, const char *fontName)
SCI_STYLEGETFONT(int style, char *fontName NUL-terminated) int
SCI_STYLESETSIZE(int style, int sizePoints)
SCI_STYLEGETSIZE(int style) int
SCI_STYLESETSIZEFRACTIONAL(int style, int sizeHundredthPoints)
SCI_STYLEGETSIZEFRACTIONAL(int style) int
SCI_STYLESETBOLD(int style, bool bold)
SCI_STYLEGETBOLD(int style) bool
SCI_STYLESETWEIGHT(int style, int weight)
SCI_STYLEGETWEIGHT(int style) int
SCI_STYLESETITALIC(int style, bool italic)
SCI_STYLEGETITALIC(int style) bool
Эти сообщения (плюс SCI_STYLESETCHARACTERSET ) устанавливают атрибуты шрифта, которые используются для соответствия шрифтам, которые вы запрашиваете для доступных.

    

     fontName - строка с нулевым завершением, содержащая имя шрифта. В Windows используются только первые 32 символа имени, имя декодируется как UTF-8, и имя не чувствительно к регистру. Для внутреннего кэширования Scintilla отслеживает шрифты по имени и заботится о оболочке имен шрифтов, поэтому, пожалуйста, будьте последовательны. В GTK + Pango используется для отображения текста, и имя отправляется непосредственно в Pango без преобразования. В Qt имя декодируется как UTF-8. На какао имя декодируется как MacRoman.

    

Размеры могут быть заданы для целого числа точек с помощью SCI_STYLESETSIZE     или размер дробной точки в сотых долях точки с помощью SCI_STYLESETSIZEFRACTIONAL     путем умножения размера на 100 (SC_FONT_SIZE_MULTIPLIER). Например, размер текста 9,4 точек устанавливается с помощью SCI_STYLESETSIZEFRACTIONAL(<style>, 940) .

    

Вес или смелость шрифта можно установить с помощью SCI_STYLESETBOLD     или SCI_STYLESETWEIGHT. Вес - это число от 1 до 999 с 1 очень легким и 999 очень тяжелым. Хотя любое значение может быть использовано, шрифты часто поддерживают только от 2 до 4 весов с тремя весами, достаточно распространенными, чтобы иметь символические имена:     SC_WEIGHT_NORMAL (400),     SC_WEIGHT_SEMIBOLD (600) и     SC_WEIGHT_BOLD (700). Сообщение SCI_STYLESETBOLD принимает логический аргумент с 0, выбирая SC_WEIGHT_NORMAL     и 1 SC_WEIGHT_BOLD.

SCI_STYLESETUNDERLINE(int style, bool underline)
SCI_STYLEGETUNDERLINE(int style) bool
Вы можете установить стиль подчеркивания. Подчеркнутый подчеркивается цветом переднего плана. Все символы со стилем, который включает атрибут подчеркивания, подчеркнуты, даже если они являются пробелами.

    

SCI_STYLESETFORE (int style colour fore)
SCI_STYLEGETFORE(int style) colour
SCI_STYLESETBACK(int style, colour back)
SCI_STYLEGETBACK(int style) colour
    Текст рисуется в цветном переднем плане. Пространство в каждой ячейке символа, которое не занято символом, рисуется в фоновом цвете.

    

SCI_STYLESETEOLFILLED(int style, bool eolFilled)
SCI_STYLEGETEOLFILLED(int style) bool
    Если последний символ в строке имеет стиль с этим набором атрибутов, оставшаяся часть строки до правого края окна заполняется цветом фона, установленным для последнего символа. Это полезно, когда документ содержит встроенные разделы на другом языке, такие как HTML-страницы со встроенным JavaScript. Установив eolFilled в true     и согласованный цвет фона (отличный от цвета фона, установленного для стилей HTML) ко всем стилям JavaScript, тогда разделы JavaScript будут легко отличаться от HTML.

    

SCI_STYLESETCHARACTERSET(int style, int characterSet)
SCI_STYLEGETCHARACTERSET(int style) int
    Вы можете установить стиль для использования другого набора символов, кроме значения по умолчанию. Местами, где такие наборы символов могут быть полезны, являются комментарии и литералы. Например,      SCI_STYLESETCHARACTERSET (SCE_C_STRING, SC_CHARSET_RUSSIAN) гарантирует, что строки на русском языке будут корректно отображаться на C и C ++ ( SCE_C_STRING ) - это номер стиля, используемый лексрером C и C ++ для отображения литеральных строк , имеет значение 6). Эта функция работает по-разному в Windows и GTK +.
    Набор символов по умолчанию: SC_CHARSET_DEFAULT.

    

SC_CHARSET_ANSI и SC_CHARSET_DEFAULT укажите европейскую кодовую страницу Windows 1252, если не установлена ??кодовая страница.

                 >     
Набор символов Окна GTK + Какао
SC_CHARSET_ANSI ✓ (8859-1)
SC_CHARSET_ARABIC
SC_CHARSET_BALTIC
SC_CHARSET_CHINESEBIG5
SC_CHARSET_DEFAULT ✓ (8859-1) ✓ (8859-1)
SC_CHARSET_EASTEUROPE
SC_CHARSET_GB2312
SC_CHARSET_GREEK
SC_CHARSET_HANGUL
SC_CHARSET_HEBREW
SC_CHARSET_JOHAB
SC_CHARSET_MAC
SC_CHARSET_OEM
SC_CHARSET_RUSSIAN ✓ (cp1251) ✓ (koi8-r) ✓ (cp1251)
SC_CHARSET_SHIFTJIS
SC_CHARSET_SYMBOL
SC_CHARSET_THAI
SC_CHARSET_TURKISH
SC_CHARSET_VIETNAMESE
SC_CHARSET_OEM866 ✓ (cp866)
SC_CHARSET_CYRILLIC ✓ (cp1251) ✓ (cp1251)
SC_CHARSET_8859_15

SCI_STYLESETCASE(int style, int caseVisible)
SCI_STYLEGETCASE(int style) int
Значение caseVisible определяет способ отображения текста. Вы можете установить верхний регистр     (SC_CASE_UPPER, 1) или нижний регистр (SC_CASE_LOWER, 2) или случай верблюда (SC_CASE_CAMEL, 3)     или нормально отображаться (SC_CASE_MIXED, 0). Это не изменяет сохраненный текст, только как он отображается.

    

SCI_STYLESETVISIBLE(int style, bool visible)
SCI_STYLEGETVISIBLE(int style) bool
    Текст обычно отображается. Однако вы можете полностью скрыть это, придав ему стиль с помощью      visible установлен на 0. Это можно использовать для скрытия встроенных инструкций форматирования или гипертекстовых ключевых слов в HTML или XML. Невидимый текст не может быть удален действиями пользователя, но приложение может удалить невидимый текст, вызвав     SCI_DELETERANGE.

    

SCI_STYLESETCHANGEABLE(int style, bool changeable)
SCI_STYLEGETCHANGEABLE(int style) bool
    Это экспериментальный и неполностью реализованный атрибут стиля. Значение по умолчанию:      changeable set true , но при установке false он делает текст доступным только для чтения. Пользователь не может перемещать каретку в неизменяемом тексте, и текст, не подлежащий изменению, не может быть удален пользователем. Приложение может удалить не изменяемый текст, вызвав     SCI_DELETERANGE.

    

SCI_STYLESETHOTSPOT(int style, bool hotspot)
SCI_STYLEGETHOTSPOT(int style) bool
    Этот стиль используется для обозначения диапазонов текста, который может обнаруживать щелчки мыши. Курсор изменится на перенос горячих точек, а цвет переднего плана и фона может измениться, а подчеркивание - указать, что эти области чувствительны к щелчку. Это можно использовать для предоставления гиперссылок другим документам.

    

   Стиль каретки, выделения, горячих строк

    

Выбор показан путем изменения цветов переднего плана и / или фона. Если один из них не установлен, этот атрибут не изменяется для выбора. Значение по умолчанию - показать выбор, изменив фон на светло-серый и оставив передним планом то же самое, что и при его отсутствии. Когда нет выбора, текущая точка вставки отмечена курсором текста. Это вертикальная линия, которая обычно мигает и выключается, чтобы привлечь внимание пользователей.

SCI_SETSELFORE(bool useSetting, colour fore)
SCI_SETSELBACK(bool useSetting, colour back)
SCI_SETSELALPHA(alpha alpha)
SCI_GETSELALPHA int
SCI_SETSELEOLFILLED(bool filled)
SCI_GETSELEOLFILLED bool
SCI_SETCARETFORE(colour fore)
SCI_GETCARETFORE colour
SCI_SETCARETLINEVISIBLE(bool show)
SCI_GETCARETLINEVISIBLE bool
SCI_SETCARETLINEBACK(colour back)
SCI_GETCARETLINEBACK colour
SCI_SETCARETLINEBACKALPHA(alpha alpha)
SCI_GETCARETLINEBACKALPHA int
SCI_SETCARETLINEFRAME(int width)
SCI_GETCARETLINEFRAME int
SCI_SETCARETLINEVISIBLEALWAYS(bool alwaysVisible)
SCI_GETCARETLINEVISIBLEALWAYS bool
SCI_SETCARETPERIOD(int periodMilliseconds)
SCI_GETCARETPERIOD int
SCI_SETCARETSTYLE(int caretStyle)
SCI_GETCARETSTYLE int
SCI_SETCARETWIDTH(int pixelWidth)
SCI_GETCARETWIDTH int
SCI_SETHOTSPOTACTIVEFORE(bool useSetting, colour fore)
SCI_GETHOTSPOTACTIVEFORE colour
SCI_SETHOTSPOTACTIVEBACK(bool useSetting, colour back)
SCI_GETHOTSPOTACTIVEBACK colour
SCI_SETHOTSPOTACTIVEUNDERLINE(bool underline)
SCI_GETHOTSPOTACTIVEUNDERLINE bool
SCI_SETHOTSPOTSINGLELINE(bool singleLine)
SCI_GETHOTSPOTSINGLELINE bool
SCI_SETCARETSTICKY(int useCaretStickyBehaviour)
SCI_GETCARETSTICKY int
SCI_TOGGLECARETSTICKY

SCI_SETSELFORE(bool useSetting, colour fore)
SCI_SETSELBACK(bool useSetting, colour back)
Эти два сообщения можно выбрать, чтобы переопределить расцветку по умолчанию. Цвет, который вы предоставляете, используется, если вы установите useSelection * Color в true . Если он установлен в false , используется стандартная окраска по умолчанию, и      fore или back аргумент не влияет.

     

SCI_SETSELALPHA(alpha alpha)
SCI_GETSELALPHA int
     Выбор можно сделать полупрозрачно в цвете выбора выделения, установив альфа-значение.

     

SCI_SETSELEOLFILLED(bool filled)
SCI_GETSELEOLFILLED bool
     Выбор может быть составлен с правой стороны, установив это свойство.

    

SCI_SETCARETFORE (colour fore)
SCI_GETCARETFORE colour
     Цвет каретки можно установить с помощью SCI_SETCARETFORE и получить с помощью     SCI_GETCARETFORE.

SCI_SETCARETLINEVISIBLE(bool show)
SCI_GETCARETLINEVISIBLE bool
SCI_SETCARETLINEBACK(colour back)
SCI_GETCARETLINEBACK colour
SCI_SETCARETLINEBACKALPHA(alpha alpha)
SCI_GETCARETLINEBACKALPHA int
SCI_SETCARETLINEFRAME(int width)
SCI_GETCARETLINEFRAME int
Вы можете сделать так, чтобы цвет фона линии, содержащей карету, отличался от этих сообщений. Чтобы сделать это, установите желаемый цвет фона с помощью     SCI_SETCARETLINEBACK, затем используйте SCI_SETCARETLINEVISIBLE(true) , чтобы включить эффект. Вы можете отменить эффект с помощью SCI_SETCARETLINEVISIBLE(false) . Две функции SCI_GETCARET * возвращают состояние и цвет. Эта форма фоновой раскраски имеет наивысший приоритет, когда линия имеет маркеры, которые в противном случае изменяли бы цвет фона. Каретная линия также может быть нарисована полупрозрачно, что позволяет показывать другие цвета фона. Это делается путем установки значения альфа (прозрачности), вызывая SCI_SETCARETLINEBACKALPHA. Когда альфа не является SC_ALPHA_NOALPHA, линия каретки рисуется после того, как все остальные функции будут влиять на цвет всех других функций. В качестве альтернативы SCI_SETCARETLINEFRAME можно использовать для отображения рамки каретки, созданной вместо заполнения всего фона. Установите ширину! = 0, чтобы включить эту опцию и width = 0, чтобы отключить ее.

    

SCI_SETCARETLINEVISIBLEALWAYS(bool alwaysVisible)
SCI_GETCARETLINEVISIBLEALWAYS bool
     Выберите, чтобы линия каретки была всегда видна, даже если окно не находится в фокусе. Поведение по умолчанию SCI_SETCARETLINEVISIBLEALWAYS(false) строка каретки видна только тогда, когда окно находится в фокусе.

    

SCI_SETCARETPERIOD(int periodMilliseconds)
SCI_GETCARETPERIOD int
     Скорость, с которой мигает каретка, может быть установлена ??с помощью SCI_SETCARETPERIOD, которая определяет время в миллисекундах, когда каретка видима или невидима перед изменением состояния. Установка периода на 0 останавливает мигание каретки. Значение по умолчанию - 500 миллисекунд.     SCI_GETCARETPERIOD возвращает текущие настройки.

    

SCI_SETCARETSTYLE(int caretStyle)
SCI_GETCARETSTYLE int
     Стиль каретки можно установить с помощью SCI_SETCARETSTYLE, чтобы быть линейной кареткой     (CARETSTYLE_LINE = 1), каретки блока (CARETSTYLE_BLOCK = 2) или вообще не рисовать     (CARETSTYLE_INVISIBLE = 0). Значением по умолчанию является строка (CARETSTYLE_LINE = 1). Вы можете определить текущий стиль стиля каретки, используя SCI_GETCARETSTYLE.

Характер блока очень удачно сочетает последовательности комбинирования и многобайтовых символов, хотя иногда некоторые шрифты, такие как тайские шрифты (и, возможно, другие), иногда кажутся странными, когда курсор расположен на этих символах, что может привести только к отображению части последовательности символов курсора. Это наиболее заметно на платформах Windows.

    

SCI_SETCARETWIDTH(int pixelWidth)
SCI_GETCARETWIDTH int
     Ширина линейной каретки может быть задана с помощью SCI_SETCARETWIDTH до значения 0, 1, 2 или 3 пикселя. Ширина по умолчанию - 1 пиксель. Вы можете прочитать текущую ширину с помощью     SCI_GETCARETWIDTH. Ширина 0 делает невидимую каретку (добавляется в версии 1.50), аналогично установке стиля каретки на CARETSTYLE_INVISIBLE (хотя и не взаимозаменяемым). Этот параметр влияет только на ширину курсора, когда стиль курсора установлен на режим линейного каретки, он не влияет на ширину для каретки блока.

SCI_SETHOTSPOTACTIVEFORE(bool useSetting, colour fore)
SCI_GETHOTSPOTACTIVEFORE colour
SCI_SETHOTSPOTACTIVEBACK(bool useSetting, colour back)
SCI_GETHOTSPOTACTIVEBACK colour
SCI_SETHOTSPOTACTIVEUNDERLINE(bool underline)
SCI_GETHOTSPOTACTIVEUNDERLINE bool
SCI_SETHOTSPOTSINGLELINE(bool singleLine)
SCI_GETHOTSPOTSINGLELINE bool
Хотя курсор наводится на текст в стиле с установленным атрибутом hotspot, по умолчанию можно изменить окраску по умолчанию, а подчеркивание - с этими настройками. Режим одиночной линии останавливает точку доступа от упаковки на следующую строку.

SCI_SETCARETSTICKY(int useCaretStickyBehaviour)
SCI_GETCARETSTICKY int
SCI_TOGGLECARETSTICKY
Эти сообщения устанавливают, получают или переключают параметр caretSticky, который контролирует, когда сохраняется последняя позиция каретки на линии.

    

Если установлено значение SC_CARETSTICKY_OFF (0), флаг липника выключен; все изменения текста     (и все изменения позиции каретки) запомнят новое горизонтальное положение каретки при переходе на разные линии. Это значение по умолчанию.

    

Когда установлено значение SC_CARETSTICKY_ON (1), флаг sticky включен, и единственное, что заставит редактора запомнить горизонтальную позицию каретки, перемещает каретку с помощью мыши или клавиатуры (слева / клавиши со стрелками вправо, ключи дома / конца и т. д.).

    

Когда установлено значение SC_CARETSTICKY_WHITESPACE (2), каретка действует как режим 0 (липкий), за исключением одного особого случая; когда вставлены символы пробела или табуляции. (Включая вставку только пробел / вкладки - отмена, повтор и т. д. Не проявляют этого поведения ..).

    

SCI_TOGGLECARETSTICKY переключается с SC_CARETSTICKY_ON и SC_CARETSTICKY_WHITESPACE     к SC_CARETSTICKY_OFF и от SC_CARETSTICKY_OFF до SC_CARETSTICKY_ON.

    

   Представления символов

    

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

    

Управляющие символы (символы с кодами менее 32 или от 128 до 159 в некоторых кодировках)     отображаются Scintilla, используя их мнемонику, инвертированную в закругленном прямоугольнике. Эти мнемоники исходят из первых дней сигнализации, хотя некоторые из них все еще используются (LF = Line Feed, BS = Back Space, CR =     Возврат каретки, например).

    

Для низких значений "C0": "NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL", "BS", "HT", "LF", "VT", "FF", "CR", "SO", "SI", "DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB", "CAN", "EM", "SUB", "ESC", "FS", "GS", "RS", "US".

Для высоких значений "C1": "PAD", "HOP", "BPH", "NBH", "IND", "NEL", "SSA", "ESA", "HTS", "HTJ", "VTS", "PLD", "PLU", "RI", "SS2", "SS3", "DCS", "PU1", "PU2", "STS", "CCH", "MW", "SPA", "EPA", "SOS", "SGCI", "SCI", "CSI", "ST", "OSC", "PM", "APC".

Неверные байты показаны аналогичным образом с «x», за которым следует их значение в шестнадцатеричном виде, например «xFE».

SCI_SETREPRESENTATION(const char *encodedCharacter, const char *representation)
SCI_GETREPRESENTATION(const char *encodedCharacter, char *representation) int
SCI_CLEARREPRESENTATION(const char *encodedCharacter)
SCI_SETCONTROLCHARSYMBOL(int symbol)
SCI_GETCONTROLCHARSYMBOL int

SCI_SETREPRESENTATION(const char *encodedCharacter, const char *representation)
SCI_GETREPRESENTATION(const char *encodedCharacter, char *representation NUL-terminated) int
SCI_CLEARREPRESENTATION(const char *encodedCharacter)
Любой символ, включая те, которые обычно отображаются как мнемоники, может быть представлен строкой, инвертированной в округленном прямоугольнике.

    

Например, знак Ohm Ω U+2126 очень похож на греческий символ Omega Ω U+03C9, поэтому для кодировки UTF-8, чтобы отличить знак Ohm как "U+2126 Ω", этот вызов может быть сделал: SCI_SETREPRESENTATION("\xe2\x84\xa6", "U+2126 \xe2\x84\xa6")

    

Параметр encodedCharacter представляет собой строку с нулевым завершением байтов для одного символа в текущей кодировке. Это не может использоваться для установки представления для многосимвольных строк.

    

Символ NUL (0) является особым случаем, поскольку параметр encodedCharacter NUL завершен, символ NUL указан как пустая строка.

    

SCI_SETCONTROLCHARSYMBOL(int symbol)
SCI_GETCONTROLCHARSYMBOL int
    Мнемоника может быть заменена номинированным символом с кодом ASCII в диапазоне от 32 до 255. Если вы установите значение символа меньше 32, все управляющие символы отображаются как мнемоники. Выбранный вами символ отображается в шрифте стиля, установленного для символа. Вы можете прочитать текущий символ с сообщением SCI_GETCONTROLCHARSYMBOL. Значением по умолчанию является 0.

    

   Поля

    

В левой части текстового экрана может быть несколько полей и пробел в тексте. 5 полей первоначально нумеруются от 0 до SC_MAX_MARGIN (4)     но это может быть изменено путем вызова      SCI_SETMARGINS . Каждое поле может быть установлено для отображения только символов, номеров строк или текста с помощью      SCI_SETMARGINTYPEN . Текстовые поля также могут отображать символы. Маркеры, которые могут отображаться в каждом поле, устанавливаются с помощью SCI_SETMARGINMASKN . Любые маркеры, не связанные с видимым полем, будут отображаться как изменения цвета фона в тексте. Ширина в пикселях может быть установлена ??для каждого поля. Поля с нулевой шириной полностью игнорируются. Вы можете выбрать, будет ли щелчок мыши на полях отправляться SCN_MARGINCLICK или SCN_MARGINRIGHTCLICK в контейнер или выбирает строку текста.

Использование номера поля вне допустимого диапазона не влияет. По умолчанию маркер 0 установлен для отображения номеров строк, но ему задана ширина 0, поэтому он скрыт. Маржа 1 предназначена для отображения не складываемых символов и имеет ширину 16 пикселей, поэтому она видна. Маржа 2 предназначена для отображения сгибающих символов, но задана ширина 0, поэтому она скрыта. Конечно, вы можете установить поля как угодно.

    

Стилистые поля текста, используемые для отображения информации о ревизии и вине:

    

Стилистые поля текста, используемые для отображения информации о ревизии и вине

SCI_SETMARGINS(int margins)
SCI_GETMARGINS int
SCI_SETMARGINTYPEN(int margin, int marginType)
SCI_GETMARGINTYPEN(int margin) int
SCI_SETMARGINWIDTHN(int margin, int pixelWidth)
SCI_GETMARGINWIDTHN(int margin) int
SCI_SETMARGINMASKN(int margin, int mask)
SCI_GETMARGINMASKN(int margin) int
SCI_SETMARGINSENSITIVEN(int margin, bool sensitive)
SCI_GETMARGINSENSITIVEN(int margin) bool
SCI_SETMARGINCURSORN(int margin, int cursor)
SCI_GETMARGINCURSORN(int margin) int
SCI_SETMARGINBACKN(int margin, colour back)
SCI_GETMARGINBACKN(int margin) colour
SCI_SETMARGINLEFT(<unused> , int pixelWidth)
SCI_GETMARGINLEFT int
SCI_SETMARGINRIGHT(<unused> , int pixelWidth)
SCI_GETMARGINRIGHT int
SCI_SETFOLDMARGINCOLOUR(bool useSetting, colour back)
SCI_SETFOLDMARGINHICOLOUR(bool useSetting, colour fore)
SCI_MARGINSETTEXT(int line, const char *text)
SCI_MARGINGETTEXT(int line, char *text) int
SCI_MARGINSETSTYLE(int line, int style)
SCI_MARGINGETSTYLE(int line) int
SCI_MARGINSETSTYLES(int line, const char *styles)
SCI_MARGINGETSTYLES(int line, char *styles) int
SCI_MARGINTEXTCLEARALL
SCI_MARGINSETSTYLEOFFSET(int style)
SCI_MARGINGETSTYLEOFFSET int
SCI_SETMARGINOPTIONS(int marginOptions)
SCI_GETMARGINOPTIONS int

SCI_SETMARGINS(int margins)
SCI_GETMARGINS int
Выделите количество полей или найдите количество выделенных в настоящее время полей.

    

SCI_SETMARGINTYPEN(int margin, int marginType)
SCI_GETMARGINTYPEN(int margin) int
     Эти две процедуры устанавливают и получают тип поля. Аргумент margin должен быть 0, 1, 2, 3 или 4. Вы можете использовать предопределенные константы SC_MARGIN_SYMBOL (0) и     SC_MARGIN_NUMBER (1), чтобы установить маржу в качестве номера строки или поля символа. Маржа с определенным текстом приложения может использовать SC_MARGIN_TEXT (4) или     SC_MARGIN_RTEXT (5) для выравнивания текста вправо. По соглашению, поле 0 используется для номеров строк, а следующие два используются для символов. Вы также можете использовать константы SC_MARGIN_BACK (2), SC_MARGIN_FORE (3) и SC_MARGIN_COLOUR (6) для полей символов, которые задают их цвет фона в соответствии с цветами STYLE_DEFAULT и цветами переднего плана или указанным цветом.

    

SCI_SETMARGINWIDTHN(int margin, int pixelWidth)
SCI_GETMARGINWIDTHN(int margin) int
     Эти подпрограммы устанавливают и получают ширину поля в пикселях. Поля с нулевой шириной невидимы. По умолчанию Scintilla устанавливает маркер 1 для символов шириной 16 пикселей, поэтому это разумное предположение, если вы не уверены, что будет уместно. Ширины полей номера строки должны учитывать количество строк в документе и стиль номера строки. Вы можете использовать что-то вроде SCI_TEXTWIDTH (STYLE_LINENUMBER, "_99999") , чтобы получить подходящую ширину.

    

SCI_SETMARGINMASKN(int margin, int mask)
SCI_GETMARGINMASKN(int margin) int
     Маска представляет собой 32-битное значение. Каждый бит соответствует одному из 32 логических символов, которые могут отображаться в поле, которое включено для символов. Существует полезная константа,     SC_MASK_FOLDERS (0xFE000000 или -33554432), то есть маска для 7 логических символов, используемых для обозначения свертывания. Вы можете назначить широкий диапазон символов и цветов для каждого из 32 логических символов, см. Маркеры для получения дополнительной информации. Если (маска     & Амп; SC_MASK_FOLDERS) == 0 , цвет фона поля управляется стилем 33 ( STYLE_LINENUMBER ).

Вы добавляете логические маркеры в строку с SCI_MARKERADD . Если в строке есть связанный маркер, который не отображается в маске любого поля с ненулевой шириной, маркер меняет цвет фона линии. Например, предположим, что вы решили использовать логический маркер 10 для отметки строк с синтаксической ошибкой, и вы хотите показать такие строки, изменив цвет фона. Маска для этого маркера 1 сдвинута влево 10 раз (1 < 10), которая равна 0x400. Если вы убедитесь, что в маске нет поля символа 0x400, любая строка с маркером изменяет цвет фона.

    

Чтобы установить не сворачивающийся край 1, используйте SCI_SETMARGINMASKN (1, ~ SC_MASK_FOLDERS)     который по умолчанию установлен Scintilla. Чтобы установить запас сгиба 2, используйте SCI_SETMARGINMASKN (2, SC_MASK_FOLDERS) .      ~ SC_MASK_FOLDERS равен 0x1FFFFFF в шестнадцатеричном или 33554431 десятичном значении. Конечно, вам может потребоваться отобразить все 32 символа в поле, в этом случае используйте      SCI_SETMARGINMASKN (margin, -1) .

    

SCI_SETMARGINSENSITIVEN(int margin, bool sensitive)
SCI_GETMARGINSENSITIVEN(int margin) bool
     Каждый из пяти полей может быть установлен чувствительным или нечувствительным к щелчкам мыши. Щелчок в чувствительном поле посылает SCN_MARGINCLICK или SCN_MARGINRIGHTCLICK уведомление в контейнер. Поля, которые не чувствительны, действуют как поля выбора, которые позволяют легко выбирать диапазоны строк. По умолчанию все поля нечувствительны.

SCI_SETMARGINCURSORN(int margin, int cursor)
SCI_GETMARGINCURSORN(int margin) int
Обратный стрелка курсора обычно отображается по всем полям. Это может быть изменено на нормальную стрелку с помощью SCI_SETMARGINCURSORN(margin, SC_CURSORARROW) или восстанавливается в обратную стрелку с помощью SCI_SETMARGINCURSORN(margin, SC_CURSORREVERSEARROW).

SCI_SETMARGINBACKN(int margin, colour back)
SCI_GETMARGINBACKN(int margin) colour
Поля типа SC_MARGIN_COLOUR      может иметь свой цвет с SCI_SETMARGINBACKN.

SCI_SETMARGINLEFT(<unused> , int pixelWidth)
SCI_GETMARGINLEFT int
SCI_SETMARGINRIGHT(<unused> , int pixelWidth)
SCI_GETMARGINRIGHT int
Эти сообщения устанавливаются и получают ширину пробела с обеих сторон текста в пикселях. По умолчанию используется один пиксель с каждой стороны.

    

SCI_SETFOLDMARGINCOLOUR(bool useSetting, colour back)
SCI_SETFOLDMARGINHICOLOUR(bool useSetting, colour fore)
     Эти сообщения позволяют изменить цвет поля разметки и выделить границу поля. В Windows по умолчанию размер поля разметки: :: GetSysColor (COLOR_3DFACE), а цвет выделения - на: GetSysColor (COLOR_3DHIGHLIGHT).

SCI_MARGINSETTEXT(int line, const char *text)
SCI_MARGINGETTEXT(int line, char *text) int
SCI_MARGINSETSTYLE(int line, int style)
SCI_MARGINGETSTYLE(int line) int
SCI_MARGINSETSTYLES(int line, const char *styles)
SCI_MARGINGETSTYLES(int line, char *styles) int
SCI_MARGINTEXTCLEARALL
Текстовые поля создаются с типом SC_MARGIN_TEXT или SC_MARGIN_RTEXT. Для каждой строки с помощью SCI_MARGINSETTEXT может быть задана другая строка. Вся область текста в строке может отображаться в определенном стиле с помощью      SCI_MARGINSETSTYLE или каждый символ может быть индивидуально оформлен      SCI_MARGINSETSTYLES, который использует массив байтов с каждым байтом, устанавливая стиль соответствующего текстового байта, подобный SCI_SETSTYLINGEX. Установка поля текста приведет к       SC_MOD_CHANGEMARGIN      уведомление отправляется.

    

    Только атрибуты стиля активны в полях текста: шрифт, size / sizeFractional, жирный / вес, курсив, передний, задний и characterSet.

    

SCI_MARGINSETSTYLEOFFSET(int style)
SCI_MARGINGETSTYLEOFFSET int
    Стили стиля могут быть полностью отделены от стандартных стилей текста, установив смещение стиля. Например,      SCI_MARGINSETSTYLEOFFSET (256) позволяет пронумеровать стили полей с 256 до 511, чтобы они не перекрывали стили, заданные лексерами. Каждый номер стиля, заданный с помощью SCI_MARGINSETSTYLE     или SCI_MARGINSETSTYLES имеет смещение, добавленное перед тем, как искать стиль.

    

    Всегда вызывайте SCI_ALLOCATEEXTENDEDSTYLES     перед SCI_MARGINSETSTYLEOFFSET и использовать результат в качестве аргумента для SCI_MARGINSETSTYLEOFFSET.

SCI_SETMARGINOPTIONS(int marginOptions)
SCI_GETMARGINOPTIONS int
Определите параметры полей, включив соответствующие битовые флаги. На данный момент доступен только один флаг     SC_MARGINOPTION_SUBLINESELECT = 1, который определяет, как завернутые строки выбираются при нажатии на маржу перед ними. Если параметр SC_MARGINOPTION_SUBLINESELECT установлен, выбирается только подстрока завернутой строки, в противном случае выбирается целая завернутая строка. Параметры маржи установлены на     SC_MARGINOPTION_NONE = 0 по умолчанию.

    

   Примечания

    

Аннотации - это строки только для текста под каждой строкой редактируемого текста. Аннотации могут состоять из нескольких строк, разделенных символом «\n». Аннотации могут использоваться для отображения версии ассемблера кода для отладки или для отображения диагностических сообщений в строке или для выравнивания различных версий текста в средстве слияния.

    

Аннотации считаются линиями отображения для методов      SCI_VISIBLEFROMDOCLINE и      SCI_DOCLINEFROMVISIBLE

    

Аннотации, используемые для встроенной диагностики:

    

Аннотации, используемые для встроенной диагностики

SCI_ANNOTATIONSETTEXT(int line, const char *text)
SCI_ANNOTATIONGETTEXT(int line, char *text) int
SCI_ANNOTATIONSETSTYLE(int line, int style)
SCI_ANNOTATIONGETSTYLE(int line) int
SCI_ANNOTATIONSETSTYLES(int line, const char *styles)
SCI_ANNOTATIONGETSTYLES(int line, char *styles) int
SCI_ANNOTATIONGETLINES(int line) int
SCI_ANNOTATIONCLEARALL
SCI_ANNOTATIONSETVISIBLE(int visible)
SCI_ANNOTATIONGETVISIBLE int
SCI_ANNOTATIONSETSTYLEOFFSET(int style)
SCI_ANNOTATIONGETSTYLEOFFSET int

SCI_ANNOTATIONSETTEXT(int line, const char *text)
SCI_ANNOTATIONGETTEXT(int line, char *text) int
SCI_ANNOTATIONSETSTYLE(int line, int style)
SCI_ANNOTATIONGETSTYLE(int line) int
SCI_ANNOTATIONSETSTYLES(int line, const char *styles)
SCI_ANNOTATIONGETSTYLES(int line, char *styles) int
SCI_ANNOTATIONGETLINES(int line) int
SCI_ANNOTATIONCLEARALL
Для каждой строки с помощью SCI_ANNOTATIONSETTEXT может быть задана другая строка. Чтобы очистить аннотации, вызовите SCI_ANNOTATIONSETTEXT с помощью указателя NULL. Весь текст ANNOTATION в строке может отображаться в определенном стиле с помощью      SCI_ANNOTATIONSETSTYLE или каждый символ может быть индивидуально оформлен      SCI_ANNOTATIONSETSTYLES, который использует массив байтов с каждым байтом, устанавливая стиль соответствующего текстового байта, подобный SCI_SETSTYLINGEX. Текст должен быть установлен первым, так как он определяет, сколько времени аннотации так, сколько байтов стилизации нужно читать. Установка аннотации приведет к       SC_MOD_CHANGEANNOTATION      уведомление отправляется.

    

    Количество строк, аннотирующих строку, можно получить с помощью SCI_ANNOTATIONGETLINES. Все строки могут быть удалены из аннотаций с помощью SCI_ANNOTATIONCLEARALL     что эквивалентно очистке каждой строки (установка до 0), а затем удаление другой памяти, используемой для этой функции.

    

    В аннотациях активны только некоторые атрибуты стиля: шрифт, size / sizeFractional, жирный / вес, курсив, передний, задний и characterSet.

    

SCI_ANNOTATIONSETVISIBLE(int visible)
SCI_ANNOTATIONGETVISIBLE int
     Аннотации можно сделать видимыми в представлении, и при видимости можно выбрать стиль отображения. Эти два сообщения установлены и получают режим отображения аннотаций. visible аргумент может быть одним из:

                                                                                                                                                                                                   
ANNOTATION_HIDDEN 0 Аннотации не отображаются.
ANNOTATION_STANDARD 1 Аннотации рисуются в левом верхнем углу без украшений.
ANNOTATION_BOXED 2 Аннотации имеют отступы, соответствующие тексту и окруженные прямоугольником.
ANNOTATION_INDENTED 3 Аннотации с отступом соответствуют тексту.

SCI_ANNOTATIONSETSTYLEOFFSET(int style)
SCI_ANNOTATIONGETSTYLEOFFSET int
Стили аннотаций можно полностью отделить от стандартных стилей текста, установив смещение стиля. Например,      SCI_ANNOTATIONSETSTYLEOFFSET (512) позволит стилям аннотации пронумеровать от 512 до 767, чтобы они не перекрывали стили, заданные лексерами (или полями, если смещение полей равно 256). Каждый номер стиля, установленный с помощью SCI_ANNOTATIONSETSTYLE     или SCI_ANNOTATIONSETSTYLES имеет смещение, добавленное перед тем, как искать стиль.

    

    Всегда вызывайте SCI_ALLOCATEEXTENDEDSTYLES     перед SCI_ANNOTATIONSETSTYLEOFFSET и использовать результат в качестве аргумента для SCI_ANNOTATIONSETSTYLEOFFSET.

   Другие настройки

SCI_SETBUFFEREDDRAW(bool buffered)
SCI_GETBUFFEREDDRAW bool
SCI_SETPHASESDRAW(int phases)
SCI_GETPHASESDRAW int
SCI_SETTECHNOLOGY(int technology)
SCI_GETTECHNOLOGY int
SCI_SETFONTQUALITY(int fontQuality)
SCI_GETFONTQUALITY int
SCI_SETCODEPAGE(int codePage)
SCI_GETCODEPAGE int
SCI_SETIMEINTERACTION(int imeInteraction)
SCI_GETIMEINTERACTION int
SCI_SETBIDIRECTIONAL(int bidirectional)
SCI_GETBIDIRECTIONAL int
SCI_GRABFOCUS
SCI_SETFOCUS(bool focus)
SCI_GETFOCUS bool

Чтобы отправить Scintilla сообщение (WM_XXXX, WPARAM, LPARAM) , вы можете использовать      SendMessage (hScintilla, WM_XXXX, WPARAM, LPARAM) , где hScintilla - это дескриптор окна Scintilla, созданного вами в качестве вашего редактора.

    

Пока мы говорим о пересылке сообщений в Windows, окно верхнего уровня должно пересылать любые сообщения WM_SETTINGCHANGE в Scintilla (это в настоящее время используется для сбора изменений в настройках мыши, но может использоваться для другие элементы пользовательского интерфейса в будущем).

    

SCI_SETBUFFEREDDRAW(bool buffered)
SCI_GETBUFFEREDDRAW bool
     Эти сообщения включаются и выключаются буферизированным рисунком и сообщают о состоянии буферизованного чертежа. Буферизованный рисунок рисует каждую строку в растровое изображение, а не непосредственно на экран, а затем копирует растровое изображение на экран. Это позволяет избежать мерцания, хотя это занимает больше времени. По умолчанию используется для буферизации на Win32 и GTK +, а не для буферизации на Cocoa и Qt. Буквенный рисунок не поддерживается на какао.

    

Текущие платформы выполняют буферизацию окна, поэтому почти всегда лучше отключать эту опцию. Для Win32 и GTK + код клиента должен отключать буферизацию при инициализации. Есть несколько старых платформ и необычных режимов, в которых буферизация может быть полезной.

    

SCI_SETPHASESDRAW(int phase)
SCI_GETPHASESDRAW int
     Существует несколько заказов, в которые может быть нарисована текстовая область, предлагающая компромисс между скоростью и позволяющий видеть все пиксели текста, даже если они перекрывают другие элементы.

     

В однофазном чертеже (SC_PHASES_ONE) каждый пробег символов в одном стиле рисуется вместе с его фоном. Если символ нависает над завершением прогона, например, в « V _», где      « V » находится в другом стиле от «_», то это может привести к тому, что правая сторона « V » будет перегружена на фоне " _ ", который отсекает его.

     

     Однофазный чертеж устарел и не должен использоваться приложениями.

Двухфазный чертеж (SC_PHASES_TWO)      исправляет это, сначала рисуя все фоны строки, а затем рисуя текст в прозрачном режиме. Линии рисуются отдельно, и никакая линия не будет перекрывать другую, поэтому любые пиксели, которые перекрываются в другую линию, такие как крайние восходящие линии и дескрипторы на символах, будут обрезаны. Двухфазный чертеж может мерцать больше, чем одна фаза, если буферизированный чертеж не включен или платформа буферизована естественным образом. По умолчанию используется для двухэтапного рисования.

     

Многофазный чертеж (SC_PHASES_MULTIPLE)      рисует всю область несколько раз, один раз для каждой функции, создавая внешний вид в слоях или фазах. Цветные фоны для всех строк рисуются перед любым текстом, а затем весь текст рисуется в прозрачном режиме над этим объединенным фоном без обрезки текста на границах линии. Это позволяет экстремальным восходящим потокам и спускателям переходить в соседние линии. Этот режим несовместим с буферизированным рисунком и будет действовать как SC_PHASES_TWO      если буферизованный чертеж включен. Многофазный чертеж медленнее, чем двухфазный. Настройка кеша макета с помощью            SCI_SETLAYOUTCACHE (SC_CACHE_PAGE)      или выше может гарантировать, что многофазный рисунок не будет значительно медленнее.

    

SCI_SETTECHNOLOGY(int technology)
SCI_GETTECHNOLOGY int
    Свойство технологии позволяет выбирать между различными API-интерфейсами чертежей и опциями. На большинстве платформ единственным выбором является SC_TECHNOLOGY_DEFAULT (0). В Windows Vista или более поздней версии, SC_TECHNOLOGY_DIRECTWRITE (1), SC_TECHNOLOGY_DIRECTWRITERETAIN (2), or SC_TECHNOLOGY_DIRECTWRITEDC (3) могут быть выбраны для использования API Direct2D и DirectWrite для более высокого качества сглаживания чертежа.     SC_TECHNOLOGY_DIRECTWRITERETAIN отличается от     SC_TECHNOLOGY_DIRECTWRITE, запросив, что кадр сохранен после его представления, что может помешать сбоям чертежа на некоторых картах и ??драйверах.     SC_TECHNOLOGY_DIRECTWRITEDC отличается от     SC_TECHNOLOGY_DIRECTWRITE, используя DirectWrite для рисования в DC GDI. Так как буфера Direct2D буферизует, буферизация Scintilla может быть отключена с помощью      SCI_SETBUFFEREDDRAW (0) .

    

SCI_SETFONTQUALITY(int fontQuality)
SCI_GETFONTQUALITY int
     Управление качеством шрифта (метод сглаживания). В настоящее время в Windows доступны следующие значения: SC_EFF_QUALITY_DEFAULT (обратная совместимость), SC_EFF_QUALITY_NON_ANTIALIASED, SC_EFF_QUALITY_ANTIALIASED, SC_EFF_QUALITY_LCD_OPTIMIZED.

В случае, если в это свойство необходимо сжать больше опций, для получения определенного ограниченного количества бит, определенных SC_EFF_QUALITY_MASK (0xf).

SCI_SETCODEPAGE(int codePage)
SCI_GETCODEPAGE> int
Scintilla поддерживает UTF-8, японский, китайский и корейский DBCS вместе с однобайтовыми кодировками, такими как Latin-1. UTF-8 (SC_CP_UTF8) является значением по умолчанию. Использовать это сообщение с codePage установлен на номер кодовой страницы, чтобы установить Scintilla для использования информации о кодовой странице, чтобы убедиться, что несколько байтовых символов рассматриваются как один символ, а не несколько. Это также останавливает перемещение курсора между байтами в многобайтовом символе. Не использовать это сообщение для выбора между разными однобайтовыми наборами-символами     SCI_STYLESETCHARACTERSET. Позвонить      codePage установлен на ноль, чтобы отключить поддержку нескольких байтов.

    

Кодовая страница SC_CP_UTF8 (65001) устанавливает Scintilla в режим Unicode, при этом документ обрабатывается как последовательность символов, выраженная в UTF-8. Текст преобразуется в обычную кодировку Unicode в платформу до того, как будет нарисован ОС, и таким образом может отображать символы на иврите, арабском, кириллице и хан. Языки, которые могут использовать два символа, уложенных вертикально в одном горизонтальном пространстве, например, в тайском, будут работать в основном, но есть некоторые проблемы, когда символы рисуются отдельно, что приводит к визуальным сбоям. Двунаправленный текст не поддерживается.

    

Кодовая страница может быть установлена ??на 65001 (UTF-8), 932 (японский Shift-JIS), 936 (упрощенный китайский GBK), 949 (Корейский унифицированный код Хангула), 950 (традиционный китайский Big5) или 1361 (корейский Johab).

    

SCI_SETIMEINTERACTION(int imeInteraction)
SCI_GETIMEINTERACTION int
     При вводе текста на китайском, японском или корейском языках может отображаться редактор методов ввода (IME). IME может быть дополнительным окном, появляющимся над Scintilla или может отображаться самим Scintilla в виде текста. На некоторых платформах существует выбор между двумя методами. Окно IME SC_IME_WINDOWED (0) может быть более похожим по внешнему виду и поведению IME в других приложениях. Встроенный IME SC_IME_INLINE (1) может работать лучше с некоторыми функциями Scintilla, такими как прямоугольный и множественный выбор.

     

Поведение в окне можно выбрать с помощью SCI_SETIMEINTERACTION (SC_IME_WINDOWED)      и встроенное поведение с помощью SCI_SETIMEINTERACTION (SC_IME_INLINE) . В некоторых случаях Scintilla может игнорировать этот вызов. Например, встроенное поведение может поддерживаться только для некоторых языков.

Эти двунаправленные функции являются экспериментальными и неполными.
    

SCI_SETBIDIRECTIONAL(int bidirectional)
SCI_GETBIDIRECTIONAL int
     Некоторые языки, такие как арабский и иврит, записываются справа налево, а не слева направо, как на английском. Документы, которые используют несколько языков, могут содержать оба направления, и это называется «двунаправленным». По умолчанию текстовое направление может быть справа налево или слева направо. Scintilla корректно отображает двунаправленный текст на некоторых платформах. В настоящее время существует экспериментальная поддержка двунаправленного текста на Win32 с использованием DirectWrite и macOS с использованием Cocoa. Только документы UTF-8 будут показывать двунаправленное поведение и только в режиме SC_BIDIRECTIONAL_L2R. Некоторые функции, такие как виртуальное пространство, могут не работать с двунаправленным текстом или могут работать только в некоторых случаях.

     

Существуют дополнительные затраты на обработку и хранение двунаправленного текста. Поскольку некоторые приложения могут не захотеть оплачивать расходы, двунаправленная поддержка должна быть явно разрешена путем вызова       SCI_SETBIDIRECTIONAL (SC_BIDIRECTIONAL_L2R) (1), который выбирает слева направо в качестве направления по умолчанию или       SCI_SETBIDIRECTIONAL (SC_BIDIRECTIONAL_R2L) (2) по умолчанию справа налево. В Win32 это должно быть сделано после настройки технологии на SC_TECHNOLOGY_DIRECTWRITE,      SC_TECHNOLOGY_DIRECTWRITERETAIN, или      SC_TECHNOLOGY_DIRECTWRITEDC.

     

Если успешный вызов SCI_GETBIDIRECTIONAL вернет то же значение в противном случае      SC_BIDIRECTIONAL_DISABLED (0).

SCI_GRABFOCUS
SCI_SETFOCUS(bool focus)
SCI_GETFOCUS bool
Сцинтил можно сказать, чтобы захватить фокус с этим сообщением. Это необходимо больше для GTK +, где обработка фокуса сложнее, чем в Windows.

    

Флаг внутренней фокусировки можно установить с помощью SCI_SETFOCUS. Это используется клиентами, которые имеют сложные требования к фокусу, такие как наличие собственного окна, которое получает реальный фокус, но с необходимостью указать, что Scintilla имеет логический фокус.

    

   Подсветка скобок

     SCI_BRACEHIGHLIGHT(int posA, int posB)
      SCI_BRACEBADLIGHT(int pos)
      SCI_BRACEHIGHLIGHTINDICATOR(bool useSetting, int indicator)
      SCI_BRACEBADLIGHTINDICATOR(bool useSetting, int indicator)
      SCI_BRACEMATCH(int pos, int maxReStyle) position
    
    

SCI_BRACEHIGHLIGHT(int posA, int posB)
     В «стиле подсветки скобок» может быть выделено до двух символов, который определяется как номер стиля STYLE_BRACELIGHT (34) , Если вы включили направляющие отступов, вы также можете выделить отступ, который соответствует скобе. Вы можете найти столбец с SCI_GETCOLUMN и выделить отступ с сообщением SCI_SETHIGHLIGHTGUIDE .

    

SCI_BRACEBADLIGHT(int pos)
     Если нет подходящей фигурной скобки, то стиль подсветки брекета , стиль STYLE_BRACEBAD (35), может использоваться для отображения скобки это не имеет себе равных. Использование позиции INVALID_POSITION (-1) удаляет выделение.

    

SCI_BRACEHIGHLIGHTINDICATOR(bool useSetting, int indicator)
     Используйте указанный индикатор, чтобы выделить соответствующие фигурные скобки, а не менять их стиль.

    

SCI_BRACEBADLIGHTINDICATOR(bool useSetting, int indicator)
     Используйте указанный индикатор, чтобы выделить неподходящую скобу вместо изменения ее стиля.

    

SCI_BRACEMATCH(int pos, int maxReStyle) position
     Сообщение SCI_BRACEMATCH находит соответствующую соответствующую фигуру      pos , позиция одной фигурной скобки. Обработанными символами скобки являются «(',') ',' [',     ']', '{', '}', '<' и '>'. Поиск осуществляется вперед от открытой скобки и назад от закрывающей скобки. Если символ в позиции не является символом скобки или не может быть найдена соответствующая скобка, возвращаемое значение равно -1. В противном случае возвращаемое значение будет позицией согласованной фигурной скобки.

Совпадение происходит только в том случае, если стиль согласованной фигурной скобки такой же, как и начальная скобка или подходящая фигурная скобка, которая находится за гранью стиля. Вложенные фигурные скобки обрабатываются правильно.      maxReStyle должен быть в данный момент 0 - он может использоваться в будущем для ограничения продолжительности поиска в скобках.

    

   Руководства по табуляции и отступам

    

Отступы (пробел в начале строки) часто используются программистами для уточнения структуры программы, а на некоторых языках, например Python, это может быть частью синтаксиса языка. Вкладки обычно используются в редакторах для вставки символа табуляции или для ввода текста с пробелами до следующей вкладки.

    

Когда Scintilla выкладывает раздел текста, текст после символа табуляции обычно отображается на следующем кратном столбцам TABWIDTH слева. Тем не менее, также можно явно указать tabstops в пикселях для каждой строки.

    

Scintilla может быть настроена на обращение к вкладке и обратному пространству в белом пространстве в начале строки особым образом: вставка вкладки отступает от линии до следующей позиции отступа, а не просто вставляет вкладку в текущую позицию символа и backspace удаляет строку, а не удаляет символ. Scintilla также может отображать направляющие отступов (вертикальные линии), которые помогут вам генерировать код.

SCI_SETTABWIDTH(int tabWidth)
SCI_GETTABWIDTH int
SCI_CLEARTABSTOPS(int line)
SCI_ADDTABSTOP(int line, int x)
SCI_GETNEXTTABSTOP(int line, int x) int
SCI_SETUSETABS(bool useTabs)
SCI_GETUSETABS bool
SCI_SETINDENT(int indentSize)
SCI_GETINDENT int
SCI_SETTABINDENTS(bool tabIndents)
SCI_GETTABINDENTS bool
SCI_SETBACKSPACEUNINDENTS(bool bsUnIndents)
SCI_GETBACKSPACEUNINDENTS bool
SCI_SETLINEINDENTATION(int line, int indentation)
SCI_GETLINEINDENTATION(int line) int
SCI_GETLINEINDENTPOSITION(int line) position
SCI_SETINDENTATIONGUIDES(int indentView)
SCI_GETINDENTATIONGUIDES int
SCI_SETHIGHLIGHTGUIDE(int column)
SCI_GETHIGHLIGHTGUIDE int

SCI_SETTABWIDTH(int tabWidth)
SCI_GETTABWIDTH int
SCI_SETTABWIDTH задает размер вкладки как кратную размеру пробела в STYLE_DEFAULT . Ширина закладки по умолчанию - 8 символов. Ограничений на размеры вкладок не существует, но значения менее 1 или больших значений могут иметь нежелательные эффекты.

    

SCI_CLEARTABSTOPS(int line)
SCI_ADDTABSTOP(int line, int x)
SCI_GETNEXTTABSTOP(int line, int x) int
     SCI_CLEARTABSTOPS очищает явные tabstops в строке. SCI_ADDTABSTOP     добавляет явный tabstop на указанном расстоянии слева (в пикселях) и     SCI_GETNEXTTABSTOP получает следующую явную позицию табуста, установленную после заданной позиции x, или ноль, если таковых нет. Изменение настроек табуляции приводит к сообщению SC_MOD_CHANGETABSTOPS .

    

SCI_SETUSETABS(bool useTabs)
SCI_GETUSETABS bool
     SCI_SETUSETABS определяет, следует ли создавать отступы из смеси вкладок и пробелов или основываться только на пробелах. Установите useTabs в false     (0), чтобы создать все вкладки и отступы из пробелов. По умолчанию используется true . Вы можете использовать      SCI_GETCOLUMN , чтобы получить столбец позиции с учетом ширины вкладки.

    

SCI_SETINDENT(int indentSize)
SCI_GETINDENT int
     SCI_SETINDENT устанавливает размер отступа в терминах ширины пробела в STYLE_DEFAULT . Если вы установите ширину 0, размер отступа будет таким же, как размер вкладки. Не существует ограничений на размеры отступов, но значения, меньшие 0 или большие значения, могут иметь нежелательные последствия.

SCI_SETTABINDENTS(bool tabIndents)
SCI_GETTABINDENTS bool
SCI_SETBACKSPACEUNINDENTS(bool bsUnIndents)
SCI_GETBACKSPACEUNINDENTS bool

Внутри пробела с отступом, вкладка и клавиши возврата могут быть сделаны с отступом и unindent, а не вставлять символ табуляции или удалять символ с помощью     SCI_SETTABINDENTS и SCI_SETBACKSPACEUNINDENTS.

    

SCI_SETLINEINDENTATION(int line, int indentation)
SCI_GETLINEINDENTATION(int line) int
     Количество отступов на линии можно обнаружить и установить с помощью     SCI_GETLINEINDENTATION и SCI_SETLINEINDENTATION. Отступ измеряется в столбцах символов, которые соответствуют ширине пробелов.

    

SCI_GETLINEINDENTPOSITION(int line) position
     Это возвращает позицию в конце отступа строки.

    

SCI_SETINDENTATIONGUIDES(int indentView)
SCI_GETINDENTATIONGUIDES int
     Направляющие отступов представляют собой точечные вертикальные линии, которые появляются в прописном пробеле в каждом столбце размера отступа. Они позволяют легко увидеть, какие конструкции выстраиваются в линию, особенно когда они распространяются на несколько страниц. Стиль STYLE_INDENTGUIDE (37) используется для указания цвета переднего плана и фона в направляющих отступа.

    

Существует 4 вида направляющих вставки. SC_IV_NONE отключает эту функцию, а остальные 3 состояния определяют, как далеко отображаются направляющие на пустых линиях.

                                                                                                                                               
SC_IV_NONE Нет указателей отступа.
SC_IV_REAL Указатели отступов отображаются внутри реального пробела в отступе.
SC_IV_LOOKFORWARD Указатели отступов отображаются за пределами фактического отступа до уровня следующей непустой строки. Если предыдущая непустая строка была заголовком сгиба, тогда указатели отступов отображаются для еще одного уровня отступа, чем эта строка. Этот параметр подходит для Python.
SC_IV_LOOKBOTH Указатели отступов отображаются за пределами фактического отступа до уровня следующей непустой строки или предыдущей непустой строки в зависимости от того, что больше. Этот параметр подходит для большинства языков.
    

SCI_SETHIGHLIGHTGUIDE(int column)
SCI_GETHIGHLIGHTGUIDE int
     Когда происходит выделение фигурной скобки, направляющая отступа, соответствующая фигурным скобкам, может быть выделена стилем подсветки фигурной скобки, STYLE_BRACELIGHT (34) , Установите column на 0, чтобы отменить это выделение.

    

   Маркеры

    

Есть 32 маркера, от 0 до MARKER_MAX (31), и вы можете назначить любую комбинацию из них в каждой строке документа. Маркеры отображаются в поле выбора слева от текста. Если для поля выбора задана нулевая ширина, вместо этого изменяется цвет фона всей строки. Маркерные номера от 25 до 31 используются Scintilla в сворачивающихся границах и имеют символические имена формы SC_MARKNUM _ *, например SC_MARKNUM_FOLDEROPEN.

    

Номера маркеров от 0 до 24 не имеют предопределенной функции; вы можете использовать их для отметки синтаксических ошибок или текущей точки выполнения, точек разрыва или того, что вам нужно для маркировки. Если вам не нужно свёртывать, вы можете использовать все 32 для любых целей.

    

Каждый номер маркера имеет ассоциированный с ним символ. Вы также можете установить цвет переднего и заднего фона для каждого номера маркера, чтобы вы могли использовать один и тот же символ более одного раза с разной окраской для разных целей. У Scintilla есть набор символов, которые вы можете назначить     ( SC_MARK _ *), или вы можете использовать символы. По умолчанию все 32 маркера настроены на     SC_MARK_CIRCLE с черным передним планом и на белом фоне.

    

Маркеры рисуются в порядке их номеров, поэтому более высокие нумерованные маркеры отображаются поверх нижних пронумерованных. Маркеры пытаются перемещаться со своим текстом, отслеживая, где начинается начало их движения. Когда строка удаляется, ее маркеры объединяются с помощью OR     с маркерами следующей строки.

SCI_MARKERDEFINE(int markerNumber, int markerSymbol)
SCI_MARKERDEFINEPIXMAP(int markerNumber, const char *pixmap)
SCI_RGBAIMAGESETWIDTH(int width)
SCI_RGBAIMAGESETHEIGHT(int height)
SCI_RGBAIMAGESETSCALE(int scalePercent)
SCI_MARKERDEFINERGBAIMAGE(int markerNumber, const char *pixels)
SCI_MARKERSYMBOLDEFINED(int markerNumber) int
SCI_MARKERSETFORE(int markerNumber, colour fore)
SCI_MARKERSETBACK(int markerNumber, colour back)
SCI_MARKERSETBACKSELECTED(int markerNumber, colour back)
SCI_MARKERENABLEHIGHLIGHT(bool enabled)
SCI_MARKERSETALPHA(int markerNumber, alpha alpha)
SCI_MARKERADD(int line, int markerNumber) int
SCI_MARKERADDSET(int line, int markerSet)
SCI_MARKERDELETE(int line, int markerNumber)
SCI_MARKERDELETEALL(int markerNumber)
SCI_MARKERGET(int line) int
SCI_MARKERNEXT(int lineStart, int markerMask) int
SCI_MARKERPREVIOUS(int lineStart, int markerMask) int
SCI_MARKERLINEFROMHANDLE(int markerHandle) int
SCI_MARKERDELETEHANDLE(int markerHandle)

SCI_MARKERDEFINE(int markerNumber, int markerSymbol)
Это сообщение связывает номер маркера в диапазоне от 0 до 31 с одним из символов маркера или символом ASCII. В настоящее время доступны общедоступные маркерные символы:
SC_MARK_CIRCLE, SC_MARK_ROUNDRECT, SC_MARK_ARROW, SC_MARK_SMALLRECT, SC_MARK_SHORTARROW, SC_MARK_EMPTY, SC_MARK_ARROWDOWN, SC_MARK_MINUS, SC_MARK_PLUS, SC_MARK_ARROWS, SC_MARK_DOTDOTDOT, SC_MARK_BACKGROUND, SC_MARK_LEFTRECT, SC_MARK_FULLRECT, SC_MARK_BOOKMARK, and SC_MARK_UNDERLINE.

Маркер SC_MARK_BACKGROUND изменяет только цвет фона линии. Символ SC_MARK_FULLRECT отражает это, изменяя только цвет фона поля.           SC_MARK_UNDERLINE рисует подчеркивание по тексту. Символ SC_MARK_EMPTY невидим, позволяя клиентскому коду отслеживать движение линий. Вы также использовали бы его, если бы вы изменили стиль свёртываемости и хотели, чтобы один или несколько      SC_FOLDERNUM _ *, чтобы не иметь ассоциированного символа.

    

Приложения могут использовать символ маркера SC_MARK_AVAILABLE, чтобы указать, что плагины могут выделять этот номер маркера.

    

Существуют также маркерные символы, предназначенные для использования в свёртываемом крае в стиле сплющенного дерева.
SC_MARK_BOXMINUS, SC_MARK_BOXMINUSCONNECTED, SC_MARK_BOXPLUS, SC_MARK_BOXPLUSCONNECTED, SC_MARK_CIRCLEMINUS, SC_MARK_CIRCLEMINUSCONNECTED, SC_MARK_CIRCLEPLUS, SC_MARK_CIRCLEPLUSCONNECTED, SC_MARK_LCORNER, SC_MARK_LCORNERCURVE, SC_MARK_TCORNER, SC_MARK_TCORNERCURVE, и SC_MARK_VLINE.

Символы могут использоваться в качестве маркеров, добавляя значение ASCII символа в     SC_MARK_CHARACTER (10000). Например, для использования «A» (код ASCII 65) в качестве маркера номер 1 используйте:
     SCI_MARKERDEFINE (1, SC_MARK_CHARACTER + 65) .
    

Номера маркеров SC_MARKNUM_FOLDER и SC_MARKNUM_FOLDEROPEN используются для отображения того, что свёртка присутствует и открыта или закрыта. Любые символы могут быть назначены для этой цели, хотя пара (SC_MARK_PLUS, SC_MARK_MINUS) или     (SC_MARK_ARROW, SC_MARK_ARROWDOWN) пара - хороший выбор. Как и эти два, требуется больше заданий для сплющенного дерева:     SC_MARKNUM_FOLDEREND, SC_MARKNUM_FOLDERMIDTAIL,     SC_MARKNUM_FOLDEROPENMID, SC_MARKNUM_FOLDERSUB и     SC_MARKNUM_FOLDERTAIL. Биты, используемые для свёртывания, определяются     SC_MASK_FOLDERS, который обычно используется в качестве аргумента для     SCI_SETMARGINMASKN при определении поля, используемого для свёртывания.

    

В этой таблице показано, какие символы SC_MARK _ * должны быть присвоены      SC_MARKNUM _ *, чтобы получить четыре стиля сгиба: Arrow (имитирует Macintosh), плюс / минус показывает свернутые строки как «+» и открытые свёртки как «-», «Дерево круга», «Дерево ящиков».

                                                                           
SC_MARKNUM _ * Стрелок Плюс / минус Дерево круга Дерево ящиков
FOLDEROPEN ARROWDOWN MINUS CIRCLEMINUS BOXMINUS
FOLDER ARROW PLUS CIRCLEPLUS BOXPLUS
FOLDERSUB EMPTY EMPTY VLINE VLINE
FOLDERTAIL EMPTY EMPTY LCORNERCURVE LCORNER
FOLDEREND EMPTY EMPTY CIRCLEPLUSCONNECTED BOXPLUSCONNECTED
FOLDEROPENMID EMPTY EMPTY CIRCLEMINUSCONNECTED BOXMINUSCONNECTED
FOLDERMIDTAIL EMPTY EMPTY TCORNERCURVE TCORNER

Marker samples

SCI_MARKERDEFINEPIXMAP(int markerNumber, const char *pixmap)
Маркер может быть настроен на pixmaps с этим сообщением.       формат XPM используется для pixmap. В Pixmaps используется символ маркера SC_MARK_PIXMAP.

SCI_RGBAIMAGESETWIDTH(int width)
SCI_RGBAIMAGESETHEIGHT(int height)
SCI_RGBAIMAGESETSCALE(int scalePercent)
SCI_MARKERDEFINERGBAIMAGE(int markerNumber, const char *pixels)
Маркеры могут быть настроены на полупрозрачные pixmaps с этим сообщением.       Формат RGBA используется для pixmap. Ширина и высота должны быть предварительно установлены с помощью SCI_RGBAIMAGESETWIDTH и      SCI_RGBAIMAGESETHEIGHT.

     

Масштабный коэффициент в процентах может быть установлен с помощью SCI_RGBAIMAGESETSCALE. Это полезно для OS X с дисплеем сетчатки, где каждый дисплей имеет 2 пикселя: используйте коэффициент 200, чтобы каждый пиксель изображения отображался с использованием пикселя экрана. Шкала по умолчанию, 100, растянет каждый пиксель изображения до 4 пикселей экрана на экране сетчатки.

    

В Pixmaps используется символ маркера SC_MARK_RGBAIMAGE.

    

SCI_MARKERSYMBOLDEFINED(int markerNumber) int
     Возвращает символ, определенный для маркераNumber с помощью SCI_MARKERDEFINE      или SC_MARK_PIXMAP, если определено с помощью SCI_MARKERDEFINEPIXMAP      или SC_MARK_RGBAIMAGE, если он определен с помощью SCI_MARKERDEFINERGBAIMAGE.

    

SCI_MARKERSETFORE(int markerNumber, colour fore)
SCI_MARKERSETBACK(int markerNumber, colour back)
     Эти два сообщения задают цвет переднего и заднего фона номера маркера.
SCI_MARKERSETBACKSELECTED(int markerNumber, colour back)
     Это сообщение устанавливает цвет фона подсветки маркера номер, когда выбран его свёртываемый блок. Цвет по умолчанию: #FF0000.

SCI_MARKERENABLEHIGHLIGHT(bool enabled)
Это сообщение позволяет включать / отключать блок фокуса выделения, когда он выбран. (т. е. блок, содержащий каретку)

     

SCI_MARKERSETALPHA(int markerNumber,  alpha alpha)
     Когда маркеры рисуются в области содержимого, либо потому, что для них нет поля, либо они имеют тип SC_MARK_BACKGROUND или SC_MARK_UNDERLINE, они могут быть нарисованы полупрозрачно, установив значение альфа .

    

SCI_MARKERADD(int line, int markerNumber) int
     Это сообщение добавляет номер маркера markerNumber к строке. Сообщение возвращает -1, если это не удается (номер незаконной строки, вне памяти) или возвращает номер дескриптора маркера, который идентифицирует добавленный маркер. Вы можете использовать этот возвращенный дескриптор с SCI_MARKERLINEFROMHANDLE , чтобы найти, где маркер после перемещения или объединения строк и с SCI_MARKERDELETEHANDLE , чтобы удалить маркер на основе его дескриптора. Сообщение не проверяет значение markerNumber и не проверяет, содержит ли строка уже маркер.

    

SCI_MARKERADDSET(int line, int markerSet)
     Это сообщение может добавить один или несколько маркеров в строку с одним вызов, указанный в том же 32-битном целочисленном формате «один бит на маркер» возвращено SCI_MARKERGET (и используется функцией поиска маркеров на основе маски SCI_MARKERNEXT и SCI_MARKERPREVIOUS). Как и в SCI_MARKERADD, не проверяется, присутствует ли какой-либо из маркеров на целевой линии.

SCI_MARKERDELETE(int line, int markerNumber)
     Это ищет номер данной строки для данного номера маркера и удаляет его, если он присутствует. Если вы добавили один и тот же маркер более одного раза в строку, это будет удалять одну копию каждый раз, когда она будет использоваться. Если вы передадите маркер с номером -1, все маркеры будут удалены из строки.

SCI_MARKERDELETEALL(int markerNumber)
     Это удаляет маркеры данного номера со всех строк. Если markerNumber равно -1, он удаляет все маркеры из всех строк.

SCI_MARKERGET(int line) int
     Это возвращает 32-разрядное целое число, указывающее, какие маркеры присутствуют в строке. Бит 0 установлен, если присутствует маркер 0, бит 1 для маркера 1 и т. д.

SCI_MARKERNEXT(int lineStart, int markerMask) int
SCI_MARKERPREVIOUS(int lineStart, int markerMask) int
     Эти сообщения эффективно ищут линии, которые содержат заданный набор маркеров. Поиск начинается с номера строки lineStart и продолжается до конца файла     (SCI_MARKERNEXT) или назад в начало файла     (SCI_MARKERPREVIOUS). Аргумент markerMask должен иметь один бит для каждого маркера, который вы хотите найти. Установите бит 0, чтобы найти маркер 0, бит 1 для маркера 1 и т. д. Сообщение возвращает номер строки первой строки, содержащей один из маркеров в      markerMask или -1, если маркер не найден.

SCI_MARKERLINEFROMHANDLE(int markerHandle) int
Аргумент markerHandle является идентификатором маркера, возвращаемого SCI_MARKERADD . Эта функция выполняет поиск документа для маркера с помощью этого дескриптора и возвращает номер строки, который содержит его, или -1, если он не найден.

    

SCI_MARKERDELETEHANDLE(int markerHandle)
     Аргумент markerHandle является идентификатором маркера, возвращаемого SCI_MARKERADD . Эта функция выполняет поиск документа для маркера с помощью этого дескриптора и удаляет маркер, если он найден.

    

   Индикаторы

    

Индикаторы используются для отображения дополнительной информации поверх стиля стилизации. Они могут использоваться для отображения, например, синтаксических ошибок, устаревших имен и плохих отступов путем рисования подчеркиваний в тексте или в блоках вокруг текста.

    

Индикаторы могут иметь другой цвет и стиль «наведения», когда мышь над ними или каретка перемещается в них. Это можно использовать, например, для указания того, что URL можно щелкнуть.

    

Индикаторы могут отображаться в виде простых подчеркиваний, коротких подчеркиваний, линии небольших форм «Т», линии диагонального штриховки, вычеркивания или прямоугольника вокруг текста. Они также могут быть невидимыми при использовании для отслеживания фрагментов контента для приложения в виде INDIC_HIDDEN .

    

Сообщения SCI_INDIC * позволяют вам получить и установить визуальный внешний вид индикаторов. Все они используют аргумент indicator в диапазоне от 0 до INDIC_MAX (35)     для установки индикатора в стиль. Для предотвращения помех набор индикаторов делится на диапазон для использования лексерами (0..7) диапазон для использования контейнерами     (8 = INDIC_CONTAINER .. 31 = INDIC_IME-1 )     и диапазон для индикаторов IME (32 = INDIC_IME ) 35 = INDIC_IME_MAX ).

    

Индикаторы хранятся в формате, подобном кодированию длины пробега, который эффективен как для скорости, так и для хранения для разреженной информации.

    

Индикатор может хранить разные значения для каждого диапазона, но обычно все значения рисуются одинаково. SCI_INDICSETFLAGS     API может использоваться для отображения разных цветов для разных значений.

Первоначально Scintilla использовала другую технику для индикаторов, но это было удалено     и API не выполняют никаких действий . Хотя оба метода были поддержаны, термин «современные индикаторы» использовался для более новой реализации.

SCI_INDICSETSTYLE(int indicator, int indicatorStyle)
SCI_INDICGETSTYLE(int indicator) int
SCI_INDICSETFORE(int indicator, colour fore)
SCI_INDICGETFORE(int indicator) colour
SCI_INDICSETALPHA(int indicator, alpha alpha)
SCI_INDICGETALPHA(int indicator) int
SCI_INDICSETOUTLINEALPHA(int indicator, alpha alpha)
SCI_INDICGETOUTLINEALPHA(int indicator) int
SCI_INDICSETUNDER(int indicator, bool under)
SCI_INDICGETUNDER(int indicator) bool
SCI_INDICSETHOVERSTYLE(int indicator, int indicatorStyle)
SCI_INDICGETHOVERSTYLE(int indicator) int
SCI_INDICSETHOVERFORE(int indicator, colour fore)
SCI_INDICGETHOVERFORE(int indicator) colour
SCI_INDICSETFLAGS(int indicator, int flags)
SCI_INDICGETFLAGS(int indicator) int

SCI_SETINDICATORCURRENT(int indicator)
SCI_GETINDICATORCURRENT int
SCI_SETINDICATORVALUE(int value)
SCI_GETINDICATORVALUE int
SCI_INDICATORFILLRANGE(int start, int lengthFill)
SCI_INDICATORCLEARRANGE(int start, int lengthClear)
SCI_INDICATORALLONFOR(int pos) int
SCI_INDICATORVALUEAT(int indicator, int pos) int
SCI_INDICATORSTART(int indicator, int pos) int
SCI_INDICATOREND(int indicator, int pos) int
SCI_FINDINDICATORSHOW(int start, int end)
SCI_FINDINDICATORFLASH(int start, int end)
SCI_FINDINDICATORHIDE

SCI_INDICSETSTYLE(int indicator, int indicatorStyle)
SCI_INDICGETSTYLE(int indicator) int
Эти два сообщения задаются и получают стиль для определенного индикатора. В настоящее время доступны стили индикаторов:
    Образцы индикаторов

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
Символ Значение Визуальный эффект
INDIC_PLAIN 0 Подчеркнута одной прямой.
INDIC_SQUIGGLE 1 Чрезвычайная подчеркнутость. Требуется 3 пикселя пространства descender.
INDIC_TT 2 Линия малых форм T.
INDIC_DIAGONAL 3 Диагональная штриховка.
INDIC_STRIKE 4 Удалите.
INDIC_HIDDEN 5 Индикатор без визуального эффекта.
INDIC_BOX 6 Прямоугольник вокруг текста.
INDIC_ROUNDBOX 7 Прямоугольник с закругленными углами вокруг текста с использованием полупрозрачного рисунка с внутренней частью обычно более прозрачен, чем граница. Вы можете использовать               SCI_INDICSETALPHA и SCI_INDICSETOUTLINEALPHA               для контроля значений альфа-прозрачности. По умолчанию значения альфа - 30 для цвета заливки и 50 для контурного цвета.
INDIC_STRAIGHTBOX 8 Прямоугольник вокруг текста с использованием полупрозрачного рисунка с интерьером обычно более прозрачен, чем граница. Вы можете использовать               SCI_INDICSETALPHA и SCI_INDICSETOUTLINEALPHA               для контроля значений альфа-прозрачности. По умолчанию значения альфа - 30 для цвета заливки и 50 для контурного цвета. Этот индикатор не окрашивает верхний пиксель линии так что индикаторы на смежных линиях визуально отличаются друг от друга и отключены.
INDIC_FULLBOX 16 Прямоугольник вокруг текста с использованием полупрозрачного рисунка, аналогичного INDIC_STRAIGHTBOX               но охватывая всю область символов.
INDIC_DASH 9 Пунктирная подчеркивание.
INDIC_DOTS 10 Пунктирная подчеркивание.
INDIC_SQUIGGLELOW 11 Подобно INDIC_SQUIGGLE , но только с использованием 2 вертикальных пикселей, которые будут соответствовать маленьким шрифтам.
INDIC_DOTBOX 12 Пунктирный прямоугольник вокруг текста с использованием полупрозрачного рисунка. Прозрачность чередуется с альфа-настройками альфа и контура альфа с верхним левым пикселем с использованием альфа-настройки.               SCI_INDICSETALPHA и               SCI_INDICSETOUTLINEALPHA               контролируйте значения альфа-прозрачности. Значения по умолчанию: 30 для альфа и 50 для базовой альфа. Чтобы избежать чрезмерного распределения памяти, максимальная ширина точечного прямоугольника составляет 4000 пикселей.
INDIC_GRADIENT 20 Вертикальный градиент между цветом и альфой сверху и полностью прозрачным снизу.
INDIC_GRADIENTCENTRE 21 Вертикальный градиент с указанным цветом и альфой в среднем затухании до полностью прозрачного сверху и снизу.
INDIC_SQUIGGLEPIXMAP 13 Версия INDIC_SQUIGGLE , которая рисует с использованием pixmap вместо целого ряда линейных сегментов для производительности. Измеряется как в 3, так и в 6 раз быстрее, чем INDIC_SQUIGGLE на GTK +. Внешний вид не будет таким же хорошим, как INDIC_SQUIGGLE в OS X в режиме HiDPI.
INDIC_COMPOSITIONTHICK 14 Подчеркнута двухцветная подстрока, расположенная в нижней части линии, чтобы избежать касания базы символов. Каждая сторона имеет вложенный 1 пиксель, так что разные индикаторы в этом стиле, охватывающие диапазон, кажутся изолированными. Это похоже на внешний вид, используемый для цели в композициях ввода азиатского языка.
INDIC_COMPOSITIONTHIN 15 Подчеркнута 1-пиксельная толщина, расположенная непосредственно перед нижней частью линии. Каждая сторона имеет вложенный 1 пиксель, так что разные индикаторы в этом стиле, охватывающие диапазон, кажутся изолированными. Это похоже на внешний вид, используемый для нецелевых диапазонов в составе ввода в азиатском языке .
INDIC_TEXTFORE 17 Измените цвет текста на передний цвет индикатора.
INDIC_POINT 18 Нарисуйте треугольник ниже начала диапазона индикаторов.
INDIC_POINTCHARACTER 19 Нарисуйте треугольник ниже центра первого символа диапазона индикатора.
    

Стили стилей по умолчанию эквивалентны:
SCI_INDICSETSTYLE(0, INDIC_SQUIGGLE);
SCI_INDICSETSTYLE(1, INDIC_TT);
SCI_INDICSETSTYLE(2, INDIC_PLAIN);

SCI_INDICSETFORE(int indicator, colour fore)
SCI_INDICGETFORE(int indicator) colour
Эти два сообщения устанавливаются и получают цвет, используемый для рисования индикатора. Цвет индикаторов по умолчанию эквивалентен:
SCI_INDICSETFORE(0, 0x007f00); (dark green)
SCI_INDICSETFORE(1, 0xff0000); (light blue)
SCI_INDICSETFORE(2, 0x0000ff); (light red)

SCI_INDICSETALPHA(int indicator, alpha alpha)
SCI_INDICGETALPHA(int indicator) int
Эти два сообщения устанавливаются и получают альфа-прозрачность, используемую для рисования цвета заливки прямоугольника INDIC_ROUNDBOX и INDIC_STRAIGHTBOX. Значение альфа может составлять от 0 (полностью прозрачное) до 255 (без прозрачности).

    

SCI_INDICSETOUTLINEALPHA(int indicator, alpha alpha)
SCI_INDICGETOUTLINEALPHA(int indicator) int
     Эти два сообщения задаются и получают альфа-прозрачность, используемую для рисования контурного цвета прямоугольника INDIC_ROUNDBOX и INDIC_STRAIGHTBOX. Значение альфа может составлять от 0 (полностью прозрачное) до 255 (без прозрачности).

    

SCI_INDICSETUNDER(int indicator, bool under)
SCI_INDICGETUNDER(int indicator) bool
     Эти два сообщения задаются и получают, отображается ли индикатор по тексту или над (по умолчанию). Рисование по тексту не работает с устаревшим однофазным рисунком      Режим.

    

SCI_INDICSETHOVERSTYLE(int indicator, int indicatorStyle)
SCI_INDICGETHOVERSTYLE(int indicator) int
SCI_INDICSETHOVERFORE(int indicator, colour fore)
SCI_INDICGETHOVERFORE(int indicator) colour
     Эти сообщения устанавливаются и получают цвет и стиль, используемые для рисования индикаторы, когда мышь над ними или каретка перемещается в них. Курсор мыши также изменяется, когда индикатор нарисован в режиме наведения стиль. Значение по умолчанию - для того, чтобы вид наведения был таким же, как и нормальный внешний вид и вызов      SCI_INDICSETFORE или      SCI_INDICSETSTYLE также сбросит атрибут наведения.

SCI_INDICSETFLAGS(int indicator, int flags)
SCI_INDICGETFLAGS(int indicator) int
Эти сообщения устанавливаются и получают флаги, связанные с индикатором. В настоящее время существует один флаг, SC_INDICFLAG_VALUEFORE: когда этот флаг установлен, цвет, используемый индикатором, не соответствует настройке переднего знака индикатора, а вместо этого из значения индикатора в этой точке файла. Это позволяет отображать много цветов для одного индикатора. Значение представляет собой целочисленный цвет RGB , который был обработан с помощью SC_INDICVALUEBIT (0x1000000)     при вызове SCI_SETINDICATORVALUE. Чтобы найти цвет от значения и значение с помощью SC_INDICVALUEMASK (0xFFFFFF).

    

SCI_SETINDICATORCURRENT(int indicator)
SCI_GETINDICATORCURRENT int
    Эти два сообщения устанавливаются и получают индикатор, на который будут влиять вызовы      SCI_INDICATORFILLRANGE(int start, int lengthFill) и      SCI_INDICATORCLEARRANGE(int start, int lengthClear) .

    

SCI_SETINDICATORVALUE(int value)
SCI_GETINDICATORVALUE int
    Эти два сообщения устанавливаются и получают значение, которое будет установлено вызовами     SCI_INDICATORFILLRANGE.

    

SCI_INDICATORFILLRANGE(int start, int lengthFill)
SCI_INDICATORCLEARRANGE(int start, int lengthClear)
    Эти два сообщения заполняют или очищают диапазон для текущего индикатора.     SCI_INDICATORFILLRANGE заполняет текущее значение.

    

SCI_INDICATORALLONFOR(int pos) int
    Получить значение битмапа, представляющее, какие индикаторы отличны от нуля в позиции. В результате представлены только первые 32 индикатора, поэтому индикаторы IME не включены.

    

SCI_INDICATORVALUEAT(int indicator, int pos) int
    Извлеките значение определенного индикатора в позиции.

SCI_INDICATORSTART(int indicator, int pos) int
SCI_INDICATOREND(int indicator, int pos) int
Найдите начало или конец диапазона с одним значением из позиции в пределах диапазона. Может использоваться для повторения документа, чтобы обнаружить все позиции индикатора.

    

Индикатор поиска OS X

    

В матчах поиска OS X выделены анимированным золотым округленным прямоугольником. Индикатор показывает, затем кратковременно растет на 25% и сжимается до первоначального размера, чтобы привлечь внимание пользователя. Хотя эта функция в настоящее время реализована только в OS X, она может быть реализована на других платформах в будущем.

    

SCI_FINDINDICATORSHOW(int start, int end)
SCI_FINDINDICATORFLASH(int start, int end)
     Эти два сообщения показывают и оживляют индикатор поиска. Индикатор остается видимым с      SCI_FINDINDICATORSHOW и исчезает после показа в течение половины секунды с      SCI_FINDINDICATORFLASH.      SCI_FINDINDICATORSHOW ведет себя аналогично приложениям OS X TextEdit и Safari и лучше всего подходит для редактирования документации, где целью поиска часто является слово.      SCI_FINDINDICATORFLASH похож на Xcode и подходит для редактирования исходного кода, где совпадение часто будет расположено рядом с операторами, которые в противном случае были бы скрыты под дополнением индикатора.

    

SCI_FINDINDICATORHIDE
     Это сообщение скрывает индикатор поиска.

    

В более ранних версиях Scintilla разрешены байты стиля секционирования     между номерами стилей и индикаторами и предоставленными API для установки и запроса этого.

    

   Автозавершение

    

Автозавершение отображает окно списка, показывающее вероятные идентификаторы, основанные на типизации пользователя. Пользователь выбирает текущий выбранный элемент, нажимая символ табуляции или другой символ, который является членом набора символов заполнения, определенного с помощью SCI_AUTOCSETFILLUPS. Ваше автозавершение запускается вашим приложением. Например, в C, если вы обнаружите, что пользователь только что набрал fred. , вы можете найти fred , и если у него есть известный список участников, вы можете предложить им в списке автозавершения. Кроме того, вы можете отслеживать ввод пользователя и предлагать список вероятных элементов, как только их ввод сократит выбор до разумного списка. В качестве еще одной альтернативы вы можете определить код ключа для активации списка.

    

Когда пользователь делает выбор из списка, контейнер отправляется SCN_AUTOCSELECTION уведомление . При возврате из уведомления Scintilla вставляет выделенный текст и контейнер отправляется SCN_AUTOCCOMPLETED уведомление , если список автозавершения не отменен, например, при отправке контейнера       SCI_AUTOCCANCEL .

    

Чтобы использовать автозавершение, вы должны следить за каждым символом, добавленным в документ. Видеть      SciTEBase :: CharAdded () в SciTEBase.cxx для примера автозавершения.

SCI_AUTOCSHOW(int lengthEntered, const char *itemList)
SCI_AUTOCCANCEL
SCI_AUTOCACTIVE bool
SCI_AUTOCPOSSTART position
SCI_AUTOCCOMPLETE
SCI_AUTOCSTOPS(<unused> , const char *characterSet)
SCI_AUTOCSETSEPARATOR(int separatorCharacter)
SCI_AUTOCGETSEPARATOR int
SCI_AUTOCSELECT(<unused> , const char *select)
SCI_AUTOCGETCURRENT int
SCI_AUTOCGETCURRENTTEXT(<unused> , char *text) int
SCI_AUTOCSETCANCELATSTART(bool cancel)
SCI_AUTOCGETCANCELATSTART bool
SCI_AUTOCSETFILLUPS(<unused> , const char *characterSet)
SCI_AUTOCSETCHOOSESINGLE(bool chooseSingle)
SCI_AUTOCGETCHOOSESINGLE bool
SCI_AUTOCSETIGNORECASE(bool ignoreCase)
SCI_AUTOCGETIGNORECASE bool
SCI_AUTOCSETCASEINSENSITIVEBEHAVIOUR(int behaviour)
SCI_AUTOCGETCASEINSENSITIVEBEHAVIOUR int
SCI_AUTOCSETMULTI(int multi)
SCI_AUTOCGETMULTI int
SCI_AUTOCSETORDER(int order)
SCI_AUTOCGETORDER int
SCI_AUTOCSETAUTOHIDE(bool autoHide)
SCI_AUTOCGETAUTOHIDE bool
SCI_AUTOCSETDROPRESTOFWORD(bool dropRestOfWord)
SCI_AUTOCGETDROPRESTOFWORD bool
SCI_REGISTERIMAGE(int type, const char *xpmData)
SCI_REGISTERRGBAIMAGE(int type, const char *pixels)
SCI_CLEARREGISTEREDIMAGES
SCI_AUTOCSETTYPESEPARATOR(int separatorCharacter)
SCI_AUTOCGETTYPESEPARATOR int
SCI_AUTOCSETMAXHEIGHT(int rowCount)
SCI_AUTOCGETMAXHEIGHT int
SCI_AUTOCSETMAXWIDTH(int characterCount)
SCI_AUTOCGETMAXWIDTH int

SCI_AUTOCSHOW(int lengthEntered, const char *itemList)
Это сообщение вызывает отображение списка. lengthEntered - количество символов уже введенного слова и itemList - это список слов, разделенных символами разделителя. Начальный символ разделителя - это пробел, но это можно установить или получить с помощью SCI_AUTOCSETSEPARATOR     и SCI_AUTOCGETSEPARATOR .

    

С настройками по умолчанию список слов должен быть отсортирован в порядке. Если задано игнорировать режим case с SCI_AUTOCSETIGNORECASE , то строки будут сопоставлены после преобразования в верхний регистр. Одним из результатов этого является то, что список следует сортировать с символами пунктуации «[',' \ ','] ',' ^ ',' _ 'и'` ', отсортированные по буквам. Альтернативную обработку порядка списка можно указать с помощью SCI_AUTOCSETORDER

    

SCI_AUTOCCANCEL
     Это сообщение отменяет любой отображаемый список автозавершения. Когда в режиме автозавершения список должен исчезать, когда пользователь вводит символ, который не может быть частью автозавершения, например «.», «(» Или «[» при вводе идентификатора. Набор символов, которые отменяют автозавершение может быть указан SCI_AUTOCSTOPS .

    

SCI_AUTOCACTIVE bool
     Это сообщение возвращает ненулевое значение, если есть активный список автозавершения и ноль, если таковой нет.

    

SCI_AUTOCPOSSTART position
     Это возвращает значение текущей позиции, когда SCI_AUTOCSHOW начал отображение списка.

    

SCI_AUTOCCOMPLETE
     Это сообщение вызывает автозавершение. Это имеет тот же эффект, что и клавиша табуляции.

    

SCI_AUTOCSTOPS(<unused> , const char *characterSet)
     Параметр characterSet - это строка, содержащая список символов, которые автоматически отменяют список автозавершения. Когда вы запускаете редактор, этот список пуст.

    

SCI_AUTOCSETSEPARATOR(int separatorCharacter)
SCI_AUTOCGETSEPARATOR int
     Эти два сообщения задаются и получают разделительный символ, используемый для разделения слов в     SCI_AUTOCSHOW. По умолчанию используется символ пробела.

    

SCI_AUTOCSELECT(<unused> , const char *select)
SCI_AUTOCGETCURRENT int
     Это сообщение выбирает элемент в списке автозавершения. Он ищет список слов для первого, который соответствует select . По умолчанию сравнения чувствительны к регистру, но вы можете изменить это с помощью SCI_AUTOCSETIGNORECASE . Сопоставление - символ по символу для длины строки select . То есть, если select является «Fred», он будет соответствовать «Frederick», если это первый элемент в списке, который начинается с «Fred». Если элемент найден, он выбирается. Если элемент не найден, список автозавершения закрывается, если автоматически скрывается (см. SCI_AUTOCSETAUTOHIDE ).
    Текущий индекс выбора можно получить с помощью SCI_AUTOCGETCURRENT.

SCI_AUTOCGETCURRENTTEXT(<unused> , char *text NUL-terminated) int
Это сообщение извлекает текущий выделенный текст в списке автозавершения. Обычно     Вместо этого используется SCN_AUTOCSELECTION .

    

Значение копируется в буфер text , возвращая длину (не включая завершающий 0). Если не найден, пустая строка копируется в буфер и возвращается 0.

    

Если аргумент value равен 0, возвращается длина, которая должна быть выделена для хранения значения; опять же, завершение 0 не включено.

    

SCI_AUTOCSETCANCELATSTART(bool cancel)
SCI_AUTOCGETCANCELATSTART bool
     Поведение по умолчанию заключается в том, что список отменяется, если каретка перемещается в место, где оно было, когда был отображен список. Вызывая это сообщение с помощью аргумента false , список не отменяется до тех пор, пока каретка не переместит хотя бы один символ перед завершением слова.

    

SCI_AUTOCSETFILLUPS(<unused> , const char *characterSet)
     Если символ заполнения заполняется активным списком автозавершения, в документ добавляется текущий выбранный элемент в списке, затем добавляется символ заполнения. Обычные символы заполнения: '(', '[' и '.', Но другие возможны в зависимости от языка. По умолчанию не установлены никакие символы заполнения.

    

SCI_AUTOCSETCHOOSESINGLE(bool chooseSingle)
SCI_AUTOCGETCHOOSESINGLE bool
     Если вы используете SCI_AUTOCSETCHOOSESINGLE (1) , и список имеет только один элемент, он автоматически добавляется и список не отображается. По умолчанию отображается список, даже если имеется только один элемент.

    

SCI_AUTOCSETIGNORECASE(bool ignoreCase)
SCI_AUTOCGETIGNORECASE bool
     По умолчанию сопоставление символов с элементами списка зависит от регистра. Эти сообщения позволяют устанавливать и получать чувствительность к регистру.

    

SCI_AUTOCSETCASEINSENSITIVEBEHAVIOUR(int behaviour)
SCI_AUTOCGETCASEINSENSITIVEBEHAVIOUR int
    Если для автозавершения задано игнорировать регистр (SCI_AUTOCSETIGNORECASE), по умолчанию он будет выбирать первый элемент списка, который соответствует чувствительному к регистру способу ввода введенных символов. Это соответствует свойству поведения SC_CASEINSENSITIVEBEHAVIOUR_RESPECTCASE (0). Если вы хотите, чтобы автозавершение вообще игнорировало регистр, выберите SC_CASEINSENSITIVEBEHAVIOUR_IGNORECASE (1).

    

SCI_AUTOCSETMULTI(int multi)
SCI_AUTOCGETMULTI int
    При автозавершении с множеством выбранных вариантов текст с автозавершением может перейти в основной выбор с помощью     SC_MULTIAUTOC_ONCE (0) или в каждый выбор с помощью SC_MULTIAUTOC_EACH (1). По умолчанию используется SC_MULTIAUTOC_ONCE.

SCI_AUTOCSETORDER(int order)
SCI_AUTOCGETORDER int
Значение по умолчанию SC_ORDER_PRESORTED (0) требует, чтобы список был представлен в алфавитном порядке сортировки.

    

Сортировка списка может быть выполнена Scintilla вместо приложения с помощью SC_ORDER_PERFORMSORT (1). Это займет дополнительное время.

    

Приложения, которые хотят присвоить приоритет некоторым значениям и показать список в порядке приоритета, а не в алфавитном порядке, могут использовать SC_ORDER_CUSTOM (2). Для создания сортированного индекса требуется дополнительная обработка в SCI_AUTOCSHOW.

    

Настройка заказа должна быть выполнена перед вызовом SCI_AUTOCSHOW.

    

SCI_AUTOCSETAUTOHIDE(bool autoHide)
SCI_AUTOCGETAUTOHIDE bool
     По умолчанию список отменяется, если нет жизнеспособных совпадений (пользователь набрал символы, которые больше не соответствуют записи списка). Если вы хотите продолжать отображать исходный список, установите autoHide на false . Это также влияет на SCI_AUTOCSELECT .

    

SCI_AUTOCSETDROPRESTOFWORD(bool dropRestOfWord)
SCI_AUTOCGETDROPRESTOFWORD bool
     Когда элемент выбран, любые символы слова, следующие за каретой, сначала стираются, если      dropRestOfWord установлен true . По умолчанию используется false .

    

SCI_REGISTERIMAGE (тип int, const char *xpmData)
SCI_REGISTERRGBAIMAGE (тип int, const char *pixels)
SCI_CLEARREGISTEREDIMAGES
SCI_AUTOCSETTYPESEPARATOR(int separatorCharacter)
SCI_AUTOCGETTYPESEPARATOR int
      Элементы списка автозавершения могут отображать изображение, а также текст. Каждое изображение сначала регистрируется целочисленным типом. Затем это целое число включается в текст списка, разделенного символом '?' из текста. Например,       «fclose? 2 fopen» отображает изображение 2 перед строкой «fclose» и без изображения «fopen». Изображения находятся в формате XPM (SCI_REGISTERIMAGE) или        формат RGBA (SCI_REGISTERRGBAIMAGE). Для SCI_REGISTERRGBAIMAGE ширина и высота должны быть предварительно установлены с помощью SCI_RGBAIMAGESETWIDTH и        SCI_RGBAIMAGESETHEIGHT . Набор зарегистрированных изображений можно очистить с помощью SCI_CLEARREGISTEREDIMAGES и '?' разделитель изменен с помощью SCI_AUTOCSETTYPESEPARATOR.

SCI_AUTOCSETMAXHEIGHT(int rowCount)
SCI_AUTOCGETMAXHEIGHT int
Получить или установить максимальное количество строк, которые будут отображаться в списке автозавершения. Если в списке больше строк, отображается вертикальная полоса прокрутки. По умолчанию используется значение 5.

    

SCI_AUTOCSETMAXWIDTH(int characterCount)
SCI_AUTOCGETMAXWIDTH int
      Получить или установить максимальную ширину списка автозавершения как количество символов в самом длинном элементе, который будет полностью видимый. Если ноль (по умолчанию), то ширина списка рассчитывается так, чтобы он соответствовал элемент с большинством символов. Любые предметы, которые не могут быть полностью отображаемые в пределах доступной ширины, обозначаются наличием многоточия.

    

   Пользовательские списки

    

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

     SCI_USERLISTSHOW(int listType, const char *itemList)
    

o Сообщение SCI_AUTOCSETCHOOSESINGLE не влияет.
o Когда пользователь делает выбор, отправляется уведомление SCN_USERLISTSELECTION, а не SCN_AUTOCSELECTION .

    

ВНИМАНИЕ: если вы установили заполняющие символы или символы остановки, они остаются активными в пользовательском списке и могут привести к тому, что элементы будут выбраны или список пользователей отменен из-за ввода пользователем в редактор.

    

SCI_USERLISTSHOW(int listType, const char *itemList)
     Параметр listType возвращается в контейнер как wParam     поле SCNotification     состав. Он должен быть больше 0, так как Scintilla сообщает разницу между списком автозавершения и списком пользователей. Если у вас есть разные типы списков, например список буферов и список макросов, вы можете использовать listType , чтобы указать, какой из них был выбран.

    

   Вызванные подсказки

    

Советы по вызову - это небольшие окна, отображающие аргументы функции и отображаемые после того, как пользователь набрал имя функции. Обычно они отображают символы, используя имя, размер и набор символов шрифта, определенные      STYLE_DEFAULT . Вы можете использовать STYLE_CALLTIP , чтобы определить размеры имени, размера, цвета переднего плана и фона и набора символов с помощью      SCI_CALLTIPUSESTYLE . Это также позволяет поддерживать символы табуляции.     Существует некоторое взаимодействие между подсказками вызовов и списками автозавершения, в которых показано, что подсказка отменяет любой активный список автозавершения и наоборот.

    

На Qt не выполняются подсказки вызовов.

Советы по вызову могут выделять часть текста внутри них. Вы можете использовать это, чтобы выделить текущий аргумент функции, подсчитав количество запятых (или любой другой разделитель, используемый вашим языком). См. SciTEBase :: CharAdded () в SciTEBase.cxx для примера использования вызова.

    

Мышь может быть нажата на подсказки вызова, и это вызывает      SCN_CALLTIPCLICK     уведомление отправляется в контейнер. Маленькие стрелки вверх и вниз могут отображаться в подсказке вызова, соответственно, включая символы '\ 001' или '\ 002'. Это полезно для того, чтобы показать, что есть перегруженные варианты одного имени функции и что пользователь может щелкнуть по стрелкам, чтобы циклически перебирать перегрузки.

    

В качестве альтернативы подсказки вызовов могут отображаться, когда вы некоторое время оставляете указатель мыши над словом в ответ на SCN_DWELLSTART уведомление и отменено в ответ на SCN_DWELLEND . Этот метод можно использовать в отладчике, чтобы указать значение переменной или во время редактирования, чтобы предоставить информацию о слове под указателем.

SCI_CALLTIPSHOW(int pos, const char *definition)
SCI_CALLTIPCANCEL
SCI_CALLTIPACTIVE bool
SCI_CALLTIPPOSSTART position
SCI_CALLTIPSETPOSSTART(int posStart)
SCI_CALLTIPSETHLT(int highlightStart, int highlightEnd)
SCI_CALLTIPSETBACK(colour back)
SCI_CALLTIPSETFORE(colour fore)
SCI_CALLTIPSETFOREHLT(colour fore)
SCI_CALLTIPUSESTYLE(int tabSize)
SCI_CALLTIPSETPOSITION(bool above)

SCI_CALLTIPSHOW(int pos, const char *definition)
Это сообщение запускает процесс, отображая окно вызова. Если подсказка вызова уже активна, это не влияет.
      pos - это позиция в документе, в которой выровнять подсказку. Текст подсказки вызова выравнивается, чтобы начать 1 строку ниже этого символа, если вы не включили стрелки вверх и / или вниз в тексте подсказки вызова, и в этом случае наконечник выровнен по правому краю самой правой стрелки. Предполагается, что вы начнете текст с чего-то вроде     "\ 001 1 из 3 \ 002".
      definition - это текст подсказки вызова. Это может содержать несколько строк, разделенных     '\n' (Line Feed, ASCII code 10). Не включайте '\r' (возврат каретки, код ASCII 13), так как это скорее всего будет напечатано как пустое поле. '\ t' (Tab, ASCII-код 9) поддерживается, если вы установите табуляцию с помощью      SCI_CALLTIPUSESTYLE .
    Положение каретки запоминается здесь, так что подсказка вызова может быть отменена автоматически, если последующее удаление перемещает каретку до этой позиции.

    

SCI_CALLTIPCANCEL
     Это сообщение отменяет любой отображаемый отзыв. Scintilla также отменяет подсказки вызовов для вас, если вы используете любые команды клавиатуры, которые не совместимы с редактированием списка аргументов функции. Советы по вызову отменены, если вы удаляете назад позицию, где была каретка, когда был запущен наконечник.

    

SCI_CALLTIPACTIVE bool
     Это возвращает 1, если подсказка вызова активна и 0, если она не активна.

    

SCI_CALLTIPPOSSTART position
SCI_CALLTIPSETPOSSTART(int posStart)
     Это сообщение возвращает или устанавливает значение текущей позиции, когда SCI_CALLTIPSHOW     начал отображать подсказку.

    

SCI_CALLTIPSETHLT(int highlightStart, int highlightEnd)
     Это позволяет отобразить область текста подсказок вызовов в выделенном стиле. highlightStart - индекс, основанный на нулевом значении, в строке первого символа для выделения и highlightEnd - это индекс первого символа после подсветка. highlightEnd должен быть больше highlightStart ; highlightEnd-highlightStart - количество символов для выделения. Если это необходимо, основные моменты могут быть расширены на концах строк.

    

Невысокий текст рисуется в середине серого. Выбранный текст рисуется синим цветом. Фон белый. Они могут быть изменены с помощью SCI_CALLTIPSETBACK, SCI_CALLTIPSETFORE, и SCI_CALLTIPSETFOREHLT.

    

SCI_CALLTIPSETBACK (colour back)
     Цвет фона подсказок вызова может быть установлен с этим сообщением; цвет по умолчанию белый. Не рекомендуется устанавливать темный цвет в качестве фона, поскольку цвет по умолчанию для обычного текста подсказки серебристый, а цвет по умолчанию для выделенного текста - темно-синий. Это также устанавливает цвет фона STYLE_CALLTIP .

SCI_CALLTIPSETFORE(colour fore)
Цвет текста подсказки вызова может быть установлен с этим сообщением; цвет по умолчанию серебристый. Это также устанавливает цвет переднего плана STYLE_CALLTIP .

    

SCI_CALLTIPSETFOREHLT (colour fore)
     Цвет выделенного текста подсказки вызова может быть установлен с этим сообщением; цвет по умолчанию - синий.

    

SCI_CALLTIPUSESTYLE(int tabSize)
     Это сообщение изменяет стиль, используемый для подсказок звонков от STYLE_DEFAULT до      STYLE_CALLTIP и задает размер вкладок в пикселях экрана. Если tabsize меньше 1, символы Tab не обрабатываются специально. После того, как этот вызов был использован, цвета подсказки и цвета фона также берутся из стиля.

    

SCI_CALLTIPSETPOSITION(bool выше)
     По умолчанию подсказка отображается под текстом, установка которого выше true     (1) отобразит его над текстом.

    

   Команды клавиатуры

    

Чтобы приложение-контейнер выполняло какие-либо действия, доступные пользователю с клавиатурой, все действия клавиатуры являются сообщениями. Они не принимают никаких параметров. Эти команды также используются при переопределении привязок клавиш с сообщением SCI_ASSIGNCMDKEY .

SCI_LINEDOWN SCI_LINEDOWNEXTEND SCI_LINEDOWNRECTEXTEND SCI_LINESCROLLDOWN
SCI_LINEUP SCI_LINEUPEXTEND SCI_LINEUPRECTEXTEND SCI_LINESCROLLUP
SCI_PARADOWN SCI_PARADOWNEXTEND SCI_PARAUP SCI_PARAUPEXTEND
SCI_CHARLEFT SCI_CHARLEFTEXTEND SCI_CHARLEFTRECTEXTEND
SCI_CHARRIGHT SCI_CHARRIGHTEXTEND SCI_CHARRIGHTRECTEXTEND
SCI_WORDLEFT SCI_WORDLEFTEXTEND SCI_WORDRIGHT SCI_WORDRIGHTEXTEND
SCI_WORDLEFTEND SCI_WORDLEFTENDEXTEND SCI_WORDRIGHTEND SCI_WORDRIGHTENDEXTEND
SCI_WORDPARTLEFT SCI_WORDPARTLEFTEXTEND SCI_WORDPARTRIGHT SCI_WORDPARTRIGHTEXTEND
SCI_HOME SCI_HOMEEXTEND SCI_HOMERECTEXTEND
SCI_HOMEDISPLAY SCI_HOMEDISPLAYEXTEND SCI_HOMEWRAP SCI_HOMEWRAPEXTEND
SCI_VCHOME SCI_VCHOMEEXTEND SCI_VCHOMERECTEXTEND
SCI_VCHOMEWRAP SCI_VCHOMEWRAPEXTEND SCI_VCHOMEDISPLAY SCI_VCHOMEDISPLAYEXTEND
SCI_LINEEND SCI_LINEENDEXTEND SCI_LINEENDRECTEXTEND
SCI_LINEENDDISPLAY SCI_LINEENDDISPLAYEXTEND SCI_LINEENDWRAP SCI_LINEENDWRAPEXTEND
SCI_DOCUMENTSTART SCI_DOCUMENTSTARTEXTEND SCI_DOCUMENTEND SCI_DOCUMENTENDEXTEND
SCI_PAGEUP SCI_PAGEUPEXTEND SCI_PAGEUPRECTEXTEND
SCI_PAGEDOWN SCI_PAGEDOWNEXTEND SCI_PAGEDOWNRECTEXTEND
SCI_STUTTEREDPAGEUP SCI_STUTTEREDPAGEUPEXTEND
SCI_STUTTEREDPAGEDOWN SCI_STUTTEREDPAGEDOWNEXTEND
SCI_DELETEBACK SCI_DELETEBACKNOTLINE
SCI_DELWORDLEFT SCI_DELWORDRIGHT SCI_DELWORDRIGHTEND
SCI_DELLINELEFT SCI_DELLINERIGHT SCI_LINEDELETE SCI_LINECUT
SCI_LINECOPY SCI_LINETRANSPOSE SCI_LINEREVERSE SCI_LINEDUPLICATE
SCI_LOWERCASE SCI_UPPERCASE SCI_CANCEL SCI_EDITTOGGLEOVERTYPE
SCI_NEWLINE SCI_FORMFEED SCI_TAB SCI_BACKTAB
SCI_SELECTIONDUPLICATE SCI_VERTICALCENTRECARET
SCI_MOVESELECTEDLINESUP SCI_MOVESELECTEDLINESDOWN
SCI_SCROLLTOSTART SCI_SCROLLTOEND

Сообщения SCI_ * EXTEND расширяют выделение.

    

Сообщения SCI_ * RECTEXTEND расширяют прямоугольный выбор     (и преобразовать правильный выбор в прямоугольный, если таковой имеется).

    

Команды SCI_WORDPART * используются для перемещения между сегментами слов, отмеченными заглавной буквой (aCamelCaseIdentifier) ??или символами подчеркивания (an_under_bar_ident).

    

Команды SCI_WORD [LEFT | RIGHT] END * похожи на SCI_WORD [LEFT | RIGHT] * , но перемещаются между словами, а не словами.

    

Команды SCI_HOME * перемещают курсор к началу строки, в то время как     Команды SCI_VCHOME * перемещают курсор к первому непустому символу строки     (т. е. сразу после отступа), если он уже не существует; в этом случае он действует как SCI_HOME *.

    

Команды SCI_ [HOME | LINEEND] DISPLAY * используются в режиме переноса строк, чтобы разрешить перемещение в начало или конец строк отображения, в отличие от обычного      SCI_ [HOME | LINEEND] , которые перемещаются в начало или конец строк документа.

    

Команды SCI _ [[VC] HOME | LINEEND] WRAP * похожи на их тезки      SCI _ [[VC] HOME | LINEEND] * , за исключением того, что они ведут себя по-разному, когда включен перенос слов:      Они идут сначала к началу / концу строки отображения, например, SCI_ [HOME | LINEEND] DISPLAY * , но если курсор уже находится в точке, он переходит к началу или концу строка документа, в зависимости от SCI _ [[VC] HOME | LINEEND] * .

    

Команды SCI_SCROLLTO [START | END] прокручивают документ до начала или конца без изменения выделения. Эти команды соответствуют соглашениям платформы OS X для поведения      home и end . Scintilla можно сделать в соответствии с приложениями OS X, привязав к этим командам ключи home и end .

    

Команда SCI_CANCEL отменяет отображение автозавершения и calltip и отменяет любые дополнительные выборы.

    

   привязки клавиш

Существует привязка ключей по умолчанию к командам, которые определены в источнике Scintilla в файле KeyMap.cxx константой KeyMap :: MapDefault [] . В этой таблице перечислены определения ключей для сообщений SCI _ * без параметров (в основном описанных выше команд клавиатуры , но любая команда Scintilla, которая аргументы не могут быть отображены). Вы можете изменить отображение в соответствии с вашими требованиями.

     SCI_ASSIGNCMDKEY(int keyDefinition, int sciCommand)
      SCI_CLEARCMDKEY(int keyDefinition)
     SCI_CLEARALLCMDKEYS
     SCI_NULL
    
    

keyDefinition
     Определение ключа содержит код ключа в младших 16 бит и модификаторы клавиш в 16-битных. Чтобы комбинировать keyCode и keyMod :
    
      keyDefinition = keyCode + (keyMod < 16)

    

Код ключа - это видимый или управляющий символ или ключ из SCK _ *     перечисление, которое содержит:
      SCK_ADD , SCK_BACK , SCK_DELETE , SCK_DIVIDE ,      SCK_DOWN , SCK_END , SCK_ESCAPE , SCK_HOME ,      SCK_INSERT , SCK_LEFT , SCK_MENU , SCK_NEXT (Страница вниз),      SCK_PRIOR (страница вверх), SCK_RETURN , SCK_RIGHT ,      SCK_RWIN ,      SCK_SUBTRACT , SCK_TAB , SCK_UP и      SCK_WIN .

    

Модификаторы представляют собой комбинацию из нуля или более из SCMOD_ALT ,      SCMOD_CTRL , SCMOD_SHIFT ,      SCMOD_META и SCMOD_SUPER . В OS X ключ команды сопоставляется с SCMOD_CTRL , а клавиша Control -      SCMOD_META .      SCMOD_SUPER доступен только на GTK +, который обычно является ключом Windows. Если вы создаете таблицу, вы можете использовать SCMOD_NORM , который имеет значение 0, чтобы не было никаких модификаторов.

SCI_ASSIGNCMDKEY(int keyDefinition, int sciCommand)
Это присваивает заданное определение ключа команде Scintilla, идентифицированной      sciCommand . sciCommand может быть любой командой SCI _ * , у которой нет аргументов.

    

SCI_CLEARCMDKEY(int keyDefinition )
     Это делает данное определение ключа недействительным, назначая действие SCI_NULL     к нему.

    

SCI_CLEARALLCMDKEYS
     Эта команда удаляет все сопоставление команд клавиатуры, устанавливая пустую таблицу отображения.

    

SCI_NULL
     SCI_NULL ничего не делает и является значением, назначенным клавишам, которые не выполняют никаких действий. SCI_NULL гарантирует, что ключи не распространяются на родительское окно, так как это может привести к перемещению фокуса. Если вы хотите, чтобы стандартное поведение платформы использовало константу 0.

    

   Меню редактирования всплывающих окон

     SCI_USEPOPUP(int popUpMode)
    
    

SCI_USEPOPUP(int popUpMode)
     Щелчок по неправильной кнопке мыши вызывает небольшое меню редактирования по умолчанию. Это можно отключить с помощью SCI_USEPOPUP (SC_POPUP_NEVER) . Если вы отключите его, команды контекстного меню (в Windows, WM_CONTEXTMENU ) не будут обрабатываться с помощью Scintilla, поэтому родительский элемент окна Scintilla будет иметь возможность обрабатывать сообщение.

                                                                                                                                                                                                                                                                                                         
Символ Значение Значение
SC_POPUP_NEVER 0 Никогда не показывать меню редактирования по умолчанию.
SC_POPUP_ALL 1 Показать меню редактирования по умолчанию, если щелкнуть на scintilla.
SC_POPUP_TEXT 2 Показать меню редактирования по умолчанию только при нажатии на текстовую область.
    

   Запись макроса

    

Запуск и остановка режима макросъемки. В режиме макросъемки действия сообщаются в контейнер через SCN_MACRORECORD      уведомления . Затем до контейнера записывать эти действия для будущего воспроизведения.

     SCI_STARTRECORD
     SCI_STOPRECORD
    
    

SCI_STARTRECORD
SCI_STOPRECORD
     Эти два сообщения включают и выключают макросъемку.

   Печать

    

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

    

Для разных платформ используются разные типы идентификаторов поверхности дисплея. В Windows это      HDC s., на GTK + 3.x cairo_t * и на Cocoa CGContextRef .

SCI_FORMATRANGE(bool draw, Sci_RangeToFormat *fr) position
SCI_SETPRINTMAGNIFICATION(int magnification)
SCI_GETPRINTMAGNIFICATION int
SCI_SETPRINTCOLOURMODE(int mode)
SCI_GETPRINTCOLOURMODE int
SCI_SETPRINTWRAPMODE(int wrapMode)
SCI_GETPRINTWRAPMODE int

SCI_FORMATRANGE(bool draw, Sci_RangeToFormat *fr) position
Этот вызов отображает диапазон текста в контекст устройства. Если вы используете это для печати, вам, вероятно, захочется упорядочить верхний и нижний колонтитулы страницы; Сцинтил не делает этого для вас. См. SciTEWin :: Print () в SciTEWinDlg.cxx для примера. Каждое использование этого сообщения отображает диапазон текста в прямоугольную область и возвращает позицию в документе следующего символа для печати. ??

    

нарисовать элементы управления, если какой-либо вывод завершен. Установите для этого значение значение false, если вы разбиваете на страницы     (например, если вы используете это с MFC, вам нужно будет разбивать на страницы      OnBeginPrinting () перед выходом каждой страницы.

 struct Sci_Rectangle {int left; int top; int right; int bottom; };

struct Sci_RangeToFormat {
    Sci_SurfaceID hdc; // Идентификатор поверхности, который мы печатаем на Sci_SurfaceID hdcTarget; // Идентификатор поверхности, который мы используем для измерения (может быть таким же, как hdc)
    Sci_Rectangle rc; // Прямоугольник для печати Sci_Rectangle rcPage; // Физически печатаемый размер страницы Sci_CharacterRange chrg; // Диапазон символов для печати
};
    

В Windows, hdc и hdcTarget оба должны быть установлены в дескриптор контекста устройства выходного устройства (обычно это принтер). Если вы печатаете метафайл, они не будут такими же, как метафайлы Windows (в отличие от расширенных метафайлов) не реализуют полный API для возврата информации. В этом случае, установите hdcTarget на экран DC.
      rcPage - это прямоугольник {0, 0, maxX, maxY} , где maxX + 1     и maxY + 1 - количество физически печатаемых пикселей в x и y.
      rc - это прямоугольник для визуализации текста (который, конечно же, будет помещен в прямоугольник, определенный rcPage).
      chrg.cpMin и chrg.cpMax определяют начальную позицию и максимальное положение символов для вывода. Вся строка в этом диапазоне символов рисуется.

    

В какао идентификаторы поверхности для печати ( draw = 1 ) должны быть графическим портом текущего контекста     ( (CGContextRef) [[NSGraphicsContext currentContext] graphicsPort] ), когда вызывается метод drawRect вида. Идентификаторы поверхности на самом деле не используются для измерения ( draw = 0 ), но могут быть установлены в растровый контекст (созданный с помощью CGBitmapContextCreate ), чтобы избежать предупреждений во время выполнения.

    

В GTK + используемые идентификаторы поверхности можно найти из контекста печати с помощью      gtk_print_context_get_cairo_context (контекст) .

     

chrg.cpMin и chrg.cpMax определяют начальную позицию и максимальное положение выводимых символов. Вся строка в этом диапазоне символов рисуется.

При печати самая утомительная часть всегда разрабатывает, какие поля должны быть предназначены для непечатаемой области бумаги и печати верхнего и нижнего колонтитула. Если вы посмотрите на код печати в SciTE, вы обнаружите, что большинство из них занято этим. Цикл, который заставляет Scintilla визуализировать текст, довольно прост, если вы удалите все поля, непечатаемые области, код заголовка и нижнего колонтитула.

    

SCI_SETPRINTMAGNIFICATION(int magnification)
SCI_GETPRINTMAGNIFICATION int
     SCI_GETPRINTMAGNIFICATION позволяет печатать с разным размером, чем шрифт экрана. magnification - количество точек, добавляемых к размеру каждого шрифта экрана. Значение -3 или -4 дает достаточно малую печать. Вы можете получить это значение с помощью     SCI_GETPRINTMAGNIFICATION.

    

SCI_SETPRINTCOLOURMODE(int mode)
SCI_GETPRINTCOLOURMODE int
     Эти два сообщения задаются и получают метод, используемый для визуализации цветного текста на принтере, который, вероятно, использует белую бумагу. Особенно важно учитывать обработку цвета, если вы используете темный или черный экран. Печать белого цвета на черном использует тонер и чернила очень много раз быстрее, чем наоборот. Вы можете установить один из следующих режимов:

                                                                                                                                                                                                                                                                                                                    
Символ Значение Цель
SC_PRINT_NORMAL 0 Печать с использованием текущих цветов экрана, за исключением полей номеров строк, которые печатаются на белом фоне. Это значение по умолчанию.
SC_PRINT_INVERTLIGHT 1 Если вы используете фон темного экрана, это экономит чернила, инвертируя значение света всех цветов и печати на белом фоне.
SC_PRINT_BLACKONWHITE 2 Печатать весь текст как черный на белом фоне.
SC_PRINT_COLOURONWHITE 3 Все печатает в своем собственном цвете на белом фоне.
SC_PRINT_COLOURONWHITEDEFAULTBG 4 Все печатает в своем собственном цветном переднем плане, но все стили до и включая STYLE_LINENUMBER будут печататься на белом фоне.
SC_PRINT_SCREENCOLOURS 5 Печать с использованием текущих цветов экрана для фона и фона. Это единственный режим, который не устанавливает цвет фона поля номера строки в белый.

SCI_SETPRINTWRAPMODE(int wrapMode)
SCI_GETPRINTWRAPMODE int
Эти две функции получают и устанавливают режим обертки принтера. wrapMode может быть установлен в SC_WRAP_NONE (0), SC_WRAP_WORD (1) или      SC_WRAP_CHAR (2). По умолчанию используется      SC_WRAP_WORD, который переносит напечатанный вывод, чтобы все символы вписывались в прямоугольник печати. Если вы установите SC_WRAP_NONE, каждая строка текста генерирует одну строку вывода, а линия усекается, если она слишком длинная, чтобы вписаться в область печати. ??
     SC_WRAP_WORD пытается обернуть только слова, обозначенные пробелом или изменениями стиля, хотя, если слово длиннее строки, оно будет завернуто до конца строки. SC_WRAP_CHAR предпочтительнее      SC_WRAP_WORD для азиатских языков, где между словами нет пробелов.

    

   Прямой доступ

SCI_GETDIRECTFUNCTION int
SCI_GETDIRECTPOINTER int
SCI_GETCHARACTERPOINTER int
SCI_GETRANGEPOINTER(int start, int lengthRange) int
SCI_GETGAPPOSITION position

В Windows схема передачи сообщений, используемая для связи между контейнером и Scintilla, опосредована операцией SendMessage и может привести к плохой производительности при интенсивном вызове. Чтобы избежать этих накладных расходов, Scintilla предоставляет сообщения, которые позволяют вам напрямую вызвать функцию сообщения Scintilla. Код для этого в C / C ++ имеет вид:

 #include "Scintilla.h"
SciFnDirect pSciMsg = (SciFnDirect) SendMessage (hSciWnd, SCI_GETDIRECTFUNCTION, 0, 0);
sptr_t pSciWndData = (sptr_t) SendMessage (hSciWnd, SCI_GETDIRECTPOINTER, 0, 0);

// теперь оболочка для вызова Scintilla напрямую
sptr_t CallScintilla (unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
    return pSciMsg (pSciWndData, iMessage, wParam, lParam);
}
    

SciFnDirect , sptr_t и uptr_t объявлены в      Scintilla.h . hSciWnd - это дескриптор окна, который был создан при создании окна Scintilla.

    

В то же время этот прямой вызов вызовет проблемы, если выполняется из другого потока в собственный поток окна Scintilla, и в этом случае следует использовать SendMessage (hSciWnd, SCI_ *, wParam, lParam) для синхронизации с потоком окна.

    

Эта функция также работает на GTK +, но не оказывает существенного влияния на скорость.

    

Из версии 1.47 в Windows Scintilla экспортирует функцию, называемую      Scintilla_DirectFunction , который можно использовать так же, как функция, возвращаемая     SCI_GETDIRECTFUNCTION. Это избавит вас от вызова     SCI_GETDIRECTFUNCTION и необходимость вызова Scintilla косвенно с помощью указателя функции.

    

SCI_GETDIRECTFUNCTION int
     Это сообщение возвращает адрес функции для вызова для обработки сообщений Scintilla без накладных расходов при прохождении через систему обмена сообщениями Windows. Вам нужно позвонить только один раз, независимо от количества созданных вами окон Scintilla.

    

SCI_GETDIRECTPOINTER int
     Это возвращает указатель на данные, которые определяют, какое окно Scintilla используется. Вы должны называть это один раз для каждого созданного вами окна Scintilla. Когда вы вызываете прямую функцию, вы должны передать прямой указатель, связанный с целевым окном.

SCI_GETCHARACTERPOINTER int
SCI_GETRANGEPOINTER(int start, int lengthRange) int
SCI_GETGAPPOSITION position
Предоставьте временный прямой доступ только для чтения к памяти, используемой Scintilla для хранения документа.

     

SCI_GETCHARACTERPOINTER перемещает пробел внутри Scintilla, чтобы текст документа сохранялся последовательно и гарантировал наличие символа NUL после текста, а затем возвращает указатель на первый символ. Приложения затем могут передать это функции, которая принимает указатель на символ, такой как поиск регулярных выражений или анализатор. Указатель должен not записываться так, чтобы десинхронизировать внутреннее состояние Scintilla.

     

Так как любое действие в Scintilla может изменить его внутреннее состояние, этот указатель становится недействительным после любого вызова или посредством действия пользовательского интерфейса. Приложение должно повторно загрузить указатель после любого вызова Scintilla или выполнения любых вызовов пользовательского интерфейса, таких как изменение индикатора прогресса.

     

Этот вызов занимает аналогичное время для ввода символа в конце документа, и это может включать перемещение содержимого документа. В частности, все символы после зазора между документами перемещаются до разрыва. Это уплотненное состояние должно сохраняться над вызовами и действиями пользовательского интерфейса, которые не изменяют содержимое документа, поэтому быстрое повторение указателя происходит очень быстро. Если этот вызов используется для реализации глобальной операции замены, то каждая замена будет перемещать пробел, поэтому, если после каждой замены вызывается SCI_GETCHARACTERPOINTER, тогда операция станет O (n ^ 2), а не O (n ). Вместо этого все совпадения должны быть найдены и сохранены, а затем все выполняемые замены.

     

SCI_GETRANGEPOINTER обеспечивает прямой доступ только к запрошенному диапазону. Разрыв не перемещается, если он не находится в запрошенном диапазоне, поэтому этот вызов может быть быстрее, чем SCI_GETCHARACTERPOINTER. Это может использоваться кодом приложения, способным воздействовать на блоки текста или диапазоны строк.

     

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

    

   Множественный просмотр

    

Окно Scintilla и отображаемый им документ являются отдельными объектами. Когда вы создаете новое окно, вы также создаете новый пустой документ. Каждый документ имеет счетчик ссылок, изначально установленный в 1. В документе также есть список окон Scintilla, связанных с ним, поэтому, когда какое-либо окно изменяет документ, все остальные окна, в которых он появляется, уведомляются, чтобы заставить их обновлять , Система устроена таким образом, что вы можете работать со многими документами в одном окне Scintilla, чтобы вы могли отображать один документ в нескольких окнах (для использования с окнами сплиттера).

    

Хотя эти сообщения используют document * doc , чтобы обеспечить совместимость с будущими версиями Scintilla, вы должны рассматривать doc как непрозрачный void * . То есть вы можете использовать и хранить указатель, как описано в этом разделе, но вы не должны его разыгрывать.

SCI_GETDOCPOINTER document *
SCI_SETDOCPOINTER(<unused> , document *doc)
SCI_CREATEDOCUMENT(int bytes, int documentOptions) document *
SCI_ADDREFDOCUMENT(<unused> , document *doc)
SCI_RELEASEDOCUMENT(<unused> , document *doc)
SCI_GETDOCUMENTOPTIONS int

SCI_GETDOCPOINTER document *
Это возвращает указатель на документ, который в настоящее время используется окном. Это не имеет никакого другого эффекта.

    

SCI_SETDOCPOINTER(<unused> , document * doc)
     Это сообщение делает следующее:
     1. Он удаляет текущее окно из списка, хранящегося в текущем документе.
     2. Он уменьшает счетчик ссылок текущего документа на 1.
     3. Если счетчик ссылок достигает 0, документ будет удален.
     4. doc устанавливается как новый документ для окна.
     5. Если doc равен 0, создается новый пустой документ и прикрепляется к окну.
     6. Если doc не было 0, его счетчик ссылок увеличивается на 1.

    

SCI_CREATEDOCUMENT(int bytes, int documentOptions) > document *
     Это сообщение создает новый пустой документ и возвращает указатель на него. Этот документ не выбран в редакторе и начинается с подсчета ссылок 1. Это означает, что у вас есть право собственности на него, и он должен либо уменьшить счетчик ссылок на 1 после использования     SCI_SETDOCPOINTER, чтобы оно принадлежало окну Scintilla, или вы должны убедиться, что вы уменьшили количество ссылок на 1 с помощью SCI_RELEASEDOCUMENT, прежде чем закрыть приложение, чтобы избежать утечек памяти. Аргумент bytes определяет исходное распределение памяти для документа, поскольку более эффективно выделять один раз, а не полагаться на буфер, растущий по мере добавления данных. Если SCI_CREATEDOCUMENT не работает, тогда возвращается 0.

    

Аргумент documentOptions выбирает между различными возможностями документа, которые влияют на распределение памяти и производительность с помощью     SC_DOCUMENTOPTION_DEFAULT (0), выбрав стандартные параметры.     SC_DOCUMENTOPTION_STYLES_NONE (0x1) останавливает выделение памяти стилям, которые сохраняют значительную память, часто 40%, при этом весь документ обрабатывается как стиль 0. Лексеры могут создавать визуальный стиль с использованием индикаторов.      SC_DOCUMENTOPTION_TEXT_LARGE (0x100) вмещает документы размером более 2 GigaBytes в 64-разрядных исполняемых файлах.

    

С SC_DOCUMENTOPTION_STYLES_NONE лексеры все еще активны и могут отображать индикаторы. Некоторые из них могут создавать сворачивающуюся информацию, хотя большинство из них требуют лексических стилей, чтобы правильно определять свёртку. Его часто более эффективно устанавливать нулевой лексер SCLEX_NULL , поэтому никакой лексер не запускается.

SC_DOCUMENTOPTION_TEXT_LARGE вариант экспериментален и не был тщательно протестирован. Лексеры могут потерпеть неудачу или повесить, когда lexing прошло 2 ГБ или 4 ГБ. Приложения, использующие эту опцию, должны быть протестированы, чтобы убедиться, что опция работает в их обстоятельствах, и каждый лексер включен также должен быть протестирован с документами размером более 4 ГБ. Для многих приложений лексические документы размером более 4 ГБ будут слишком вялыми, поэтому SC_DOCUMENTOPTION_STYLES_NONE     и может использоваться нулевой лексер SCLEX_NULL . Другой подход - включить простой стиль с      SCI_SETIDLESTYLING .

                                                                                                                                                                                                                            
Символ Значение Эффект
SC_DOCUMENTOPTION_DEFAULT 0 Стандартное поведение
SC_DOCUMENTOPTION_STYLES_NONE 0x1 Остановить выделение памяти для стилей и обработать весь текст как стиль 0.
SC_DOCUMENTOPTION_TEXT_LARGE 0x100 Разрешить документ размером более 2 ГБ.

SCI_ADDREFDOCUMENT(<unused> , document *doc)
Это увеличивает количество ссылок на документ на 1. Если вы хотите заменить текущий документ в окне Scintilla и взять на себя владение текущим документом, например, если вы редактируете много документов в одном окне, выполните следующие действия:
     1. Используйте SCI_GETDOCPOINTER, чтобы получить указатель на документ,      doc .
     2. Используйте SCI_ADDREFDOCUMENT (0, doc) , чтобы увеличить счетчик ссылок.
     3. Используйте SCI_SETDOCPOINTER (0, docNew) , чтобы установить другой документ или      SCI_SETDOCPOINTER (0, 0) , чтобы установить новый пустой документ.

    

SCI_RELEASEDOCUMENT(<unused> , document * doc)
     Это сообщение уменьшает количество ссылок на документ, идентифицированное doc . doc должен быть результатом SCI_GETDOCPOINTER или SCI_CREATEDOCUMENT и должен указывать на документ, который все еще существует. Если вы вызовете это в документе со ссылочным числом 1, которое все еще привязано к окну Scintilla, произойдут плохие вещи. Чтобы мир вращается на своей орбите, вы должны сбалансировать каждый вызов на SCI_CREATEDOCUMENT или     SCI_ADDREFDOCUMENT с вызовом SCI_RELEASEDOCUMENT.

    

SCI_GETDOCUMENTOPTIONS int
     Возвращает параметры, которые были использованы для создания документа.

    

   Фоновая загрузка и сохранение

    

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

    

Загрузка в фоновом режиме

     SCI_CREATELOADER(int bytes, int documentOptions) int
    
    

Приложение может загружать весь файл в буфер, который он выделяет в фоновом потоке, а затем добавлять данные в этот буфер в документ Scintilla в потоке пользовательского интерфейса. Этот метод использует дополнительную память для хранения полной копии файла, а также означает, что время, которое Scintilla принимает для выполнения первоначального обнаружения конца строки, блокирует пользовательский интерфейс.

    

Чтобы избежать этих проблем, можно загрузить объект загрузчика и использовать его для загрузки файла. Объект loader поддерживает интерфейс ILoader.

    

SCI_CREATELOADER(int bytes, int documentOptions) int
     Создайте объект, который поддерживает интерфейс ILoader , который может использоваться для загрузки данных, а затем должен быть превращен в объект документа Scintilla для вложения в объект вида. Аргумент bytes определяет исходное распределение памяти для документа, поскольку более эффективно выделять один раз, а не полагаться на буфер, растущий по мере добавления данных. Если SCI_CREATELOADER не работает, тогда возвращается 0.

    

Аргумент documentOptions описан в разделе SCI_CREATEDOCUMENT .

ILoader

class ILoader {
public:
        virtual int SCI_METHOD Release() = 0;
        // Returns a status code from SC_STATUS_*
        virtual int SCI_METHOD AddData(const char *data, Sci_Position length) = 0;
        virtual void * SCI_METHOD ConvertToDocument() = 0;
};

Приложение должно вызывать метод AddData с каждым блоком данных, считанным из файла.      AddData вернет SC_STATUS_OK, если не произойдет сбой, например, исчерпание памяти. Если сбой происходит в AddData или в вызове чтения файла, загрузка может быть отменена, а загрузчик освобожден при вызове Release . Когда весь файл был прочитан, необходимо вызвать ConvertToDocument для создания указателя документа Scintilla. Вновь созданный документ будет иметь счетчик ссылок 1 так же, как указатель документа, возвращенный из     SCI_CREATEDOCUMENT. Нет необходимости вызывать Release после ConvertToDocument .

    

Сохранение в фоновом режиме

    

Приложение, которое хочет сохранить в фоновом режиме, должно заблокировать документ с помощью SCI_SETREADONLY (1)     для предотвращения изменений и получения указателя на единое содержимое документа с помощью     SCI_GETCHARACTERPOINTER. Буфер заблокированного документа не будет перемещаться, поэтому указатель действителен до тех пор, пока приложение не вызовет SCI_SETREADONLY (0) .

    

Если пользователь пытается выполнить модификацию, пока документ заблокирован, в приложение отправляется уведомление SCN_MODIFYATTEMPTRO , Затем приложение может принять решение игнорировать изменение или прекратить фоновый сохраняющий поток и повторно использовать модификацию перед возвратом из уведомления.

    

   Сворачивание

    

Фундаментальная операция при свёртывании делает невидимые или видимые линии невидимыми. Видимость линии - это свойство представления, а не документа, поэтому каждый вид может отображать другой набор строк. С точки зрения пользователя линии скрыты и отображаются с помощью точек сгиба. Как правило, точки сложения документа основаны на иерархической структуре содержимого документа. В Python иерархия определяется отступом и в C ++ символами скобок. Эта иерархия может быть представлена ??внутри объекта документа Scintilla путем присоединения к каждой строке числового «уровня сгиба». Уровень сгиба наиболее легко устанавливается с помощью лексера, но вы также можете установить его с помощью сообщений.

    

Это зависит от вашего кода, чтобы установить соединение между действиями пользователя и сворачиванием и разворачиванием. Лучший способ увидеть, как это делается, - найти исходный код SciTE для сообщений, используемых в этом разделе документации, и посмотреть, как они используются. Вам также нужно будет использовать маркеры и свёртки запас, чтобы завершить выполнение сворачивания. Свойство "fold" должно быть установлено на "1" с      SCI_SETPROPERTY ("fold", "1") , чтобы включить свёртывание.

SCI_VISIBLEFROMDOCLINE(int docLine) int
SCI_DOCLINEFROMVISIBLE(int displayLine) int
SCI_SHOWLINES(int lineStart, int lineEnd)
SCI_HIDELINES(int lineStart, int lineEnd)
SCI_GETLINEVISIBLE(int line) bool
SCI_GETALLLINESVISIBLE bool
SCI_SETFOLDLEVEL(int line, int level)
SCI_GETFOLDLEVEL(int line) int
SCI_SETAUTOMATICFOLD(int automaticFold)
SCI_GETAUTOMATICFOLD int
SCI_SETFOLDFLAGS(int flags)
SCI_GETLASTCHILD(int line, int level) int
SCI_GETFOLDPARENT(int line) int
SCI_SETFOLDEXPANDED(int line, bool expanded)
SCI_GETFOLDEXPANDED(int line) bool
SCI_CONTRACTEDFOLDNEXT(int lineStart) int
SCI_TOGGLEFOLD(int line)
SCI_TOGGLEFOLDSHOWTEXT(int line, const char *text)
SCI_FOLDDISPLAYTEXTSETSTYLE(int style)
SCI_FOLDLINE(int line, int action)
SCI_FOLDCHILDREN(int line, int action)
SCI_FOLDALL(int action)
SCI_EXPANDCHILDREN(int line, int level)
SCI_ENSUREVISIBLE(int line)
SCI_ENSUREVISIBLEENFORCEPOLICY(int line)

SCI_VISIBLEFROMDOCLINE(int docLine) int
Когда некоторые строки скрыты и / или аннотации отображаются, то конкретная строка в документе может отображаться в другом положении в позиции документа. Если строки не скрыты, а аннотаций нет, это сообщение возвращается      docLine . В противном случае это возвращает строку отображения (считая первую видимую строку равной 0). Линия отображения невидимой строки такая же, как и предыдущая видимая строка. Номер строки отображения первой строки в документе равен 0. Если строки скрыты и      docLine находится вне диапазона строк в документе, возвращаемое значение равно -1. Линии могут занимать более одной строки отображения, если они завертываются.

    

SCI_DOCLINEFROMVISIBLE(int displayLine) int
     Когда некоторые строки скрыты и / или аннотации отображаются, то конкретная строка в документе может отображаться в другом положении в позиции документа. Это сообщение возвращает номер строки документа, соответствующий строке дисплея (подсчет строки отображения первой строки в документе как 0). Если displayLine меньше или равно 0, результат равен 0. Если      displayLine больше или равно количеству отображаемых строк, результатом является количество строк в документе.

    

SCI_SHOWLINES(int lineStart, int lineEnd)
SCI_HIDELINES(int lineStart, int lineEnd)
SCI_GETLINEVISIBLE(int line) bool
SCI_GETALLLINESVISIBLE bool
     Первые два сообщения отмечают диапазон строк как видимый или невидимый, а затем перерисовывают отображение.     SCI_GETLINEVISIBLE сообщает о видимом состоянии строки и возвращает 1, если она видна, и 0, если она не видна.     SCI_GETALLLINESVISIBLE возвращает 1, если все строки видны и 0, если некоторые строки скрыты. Эти сообщения не влияют на уровни сброса или сбрасывают флаги. Первая строка не может быть скрыта.

    

SCI_SETFOLDLEVEL(int line, int level)
SCI_GETFOLDLEVEL(int line) int
     Эти два сообщения устанавливаются и получают 32-битное значение, которое содержит уровень сгиба линии и некоторые флаги, связанные с фальцованием. Уровень сгиба - это число в диапазоне от 0 до     SC_FOLDLEVELNUMBERMASK (0x0FFF). Однако начальный уровень сбрасывания установлен на     SC_FOLDLEVELBASE (0x400), чтобы беззнаковая арифметика на уровнях свёртывания. Есть два бита флага добавления. SC_FOLDLEVELWHITEFLAG указывает, что строка пуста и позволяет обрабатывать ее несколько иначе, чем может указывать ее уровень. Например, пустые строки, как правило, не должны быть точками сгиба и будут считаться частью предыдущего раздела, даже если они могут иметь меньший уровень сгиба.     SC_FOLDLEVELHEADERFLAG указывает, что строка является заголовком (точкой сгиба).

    

Используйте SCI_GETFOLDLEVEL(line) & SC_FOLDLEVELNUMBERMASK , чтобы получить уровень сгиба линии. Аналогично используйте SCI_GETFOLDLEVEL(line) & SC_FOLDLEVEL * FLAG , чтобы получить состояние флагов. Чтобы установить уровень сгиба, вы должны или в соответствующих флагах. Например, чтобы установить уровень на thisLevel и пометить линию как использование точки сгиба:      SCI_SETFOLDLEVEL (строка, thisLevel | SC_FOLDLEVELHEADERFLAG) .

    Если вы используете лексер, вам не нужно использовать SCI_SETFOLDLEVEL, так как это намного лучше обрабатывается лексером. Вам нужно будет использовать SCI_GETFOLDLEVEL, чтобы решить, как обрабатывать запросы на фальсификацию пользователя. Если вы измените уровни сбрасывания, размер сгиба будет обновляться в соответствии с вашими изменениями.     

SCI_SETFOLDFLAGS(int flags)
     В дополнение к показу маркеров в области сгиба, вы можете указать свёртки пользователю путем рисования линий в текстовой области. Строки рисуются в цвете переднего плана, установленном для STYLE_DEFAULT . Биты, установленные в      flags определяют, где свёртываются линии сгиба:

                                                                                                                                                                                                                                                                                                                                                                                                        
Символ Значение Эффект
1 Экспериментальная функция, которая была удалена.
SC_FOLDFLAG_LINEBEFORE_EXPANDED 2 Нарисуйте выше, если расширено
SC_FOLDFLAG_LINEBEFORE_CONTRACTED 4 Нарисуйте выше, если не развернуто
SC_FOLDFLAG_LINEAFTER_EXPANDED 8 Нарисуйте ниже, если расширено
SC_FOLDFLAG_LINEAFTER_CONTRACTED 16 Нарисуйте ниже, если не развернуто
SC_FOLDFLAG_LEVELNUMBERS 64 отображать шестнадцатеричные уровни сброса в полевой строке, чтобы помочь отлаживать фальцовку. Внешний вид этой функции может измениться в будущем.
SC_FOLDFLAG_LINESTATE 128 отображает шестнадцатеричное состояние линии в полевой строке, чтобы помочь отлаживать лексирование и свёртывание. Не может использоваться одновременно сSC_FOLDFLAG_LEVELNUMBERS.

Это сообщение вызывает перерисовку дисплея.

    

SCI_GETLASTCHILD(int line, int level) int
     Это сообщение ищет следующую строку после line , которая имеет уровень сворачивания, который меньше или равен level , а затем возвращает номер предыдущей строки. Если вы установите для параметра level значение -1, level установлен уровень свёртывания строки      line . Если из является точкой сгиба, SCI_GETLASTCHILD (from,     -1) возвращает последнюю строку, которая была бы сделана видимой или скрытой, переключая состояние сгиба.

    

SCI_GETFOLDPARENT(int line) int
     Это сообщение возвращает номер строки первой строки перед line , который помечен как точка сложения с помощью SC_FOLDLEVELHEADERFLAG и имеет уровень свертки меньше, чем строка . Если ни одна строка не найдена, или если флаги заголовка и уровни сброса несогласованы, возвращаемое значение равно -1.

    

SCI_TOGGLEFOLD(int line)
SCI_TOGGLEFOLDSHOWTEXT(int line, const char *text)
     Каждая точка свёртки может быть либо расширена, отображая все дочерние строки, либо сжимается, скрывая все дочерние линии. Эти сообщения переключают состояние сгибания данной строки, если у нее установлен SC_FOLDLEVELHEADERFLAG. Эти сообщения заботятся о сворачивании или расширении всех линий, которые зависят от линии. Дисплей обновляется после этого сообщения.

    

Дополнительный текстовый тег может быть показан справа от сложенного текста с помощью      текст для     SCI_TOGGLEFOLDSHOWTEXT. Текст рисуется с помощью      стиль STYLE_FOLDDISPLAYTEXT .

    

SCI_FOLDDISPLAYTEXTSETSTYLE(int style)
    Это сообщение изменяет внешний вид текстовых меток fold.

                                                                                                                                                                                                                            
Символ Значение Эффект
SC_FOLDDISPLAYTEXT_HIDDEN 0 Не показывать текстовые теги. Это значение по умолчанию.
SC_FOLDDISPLAYTEXT_STANDARD 1 Отобразить текстовые теги.
SC_FOLDDISPLAYTEXT_BOXED 2 Показывать текстовые теги с рамкой, нарисованной вокруг них.

SCI_SETFOLDEXPANDED(int line, bool expanded)
SCI_GETFOLDEXPANDED(int line) bool
Эти сообщения задаются и получают расширенное состояние одной строки. Установленное сообщение не влияет на видимое состояние линии или любых линий, которые зависят от нее. Он меняет маркеры на свёртки запас. Если вы запрашиваете состояние расширения строки, находящейся вне документа, результат: false (0).

    

Если вы просто хотите переключить состояние сгиба одной строки и обрабатывать все строки, зависящие от нее, гораздо проще использовать SCI_TOGGLEFOLD. Вы использовали бы      сообщение SCI_SETFOLDEXPANDED для обработки многих сгибов без обновления дисплея до тех пор, пока вы не закончите. См. SciTEBase :: FoldAll () и      SciTEBase :: Expand () для примеров использования этих сообщений.

    

SCI_FOLDLINE(int line, int action)
SCI_FOLDCHILDREN(int line, int action)
SCI_FOLDALL(int action)
    Эти сообщения обеспечивают более высокий уровень подхода к сворачиванию вместо установки расширенных флагов и отображения или скрытия отдельных строк.

    

Индивидуальная свёртка может быть сжата / развернута / переключена с помощью SCI_FOLDLINE. Чтобы повлиять на все дочерние свёртки, вызовите SCI_FOLDCHILDREN.

    

Чтобы повлиять на весь вызов документа SCI_FOLDALL. С помощью SC_FOLDACTION_TOGGLE     первый сводный заголовок в документе проверяется, чтобы решить, следует ли расширять или сокращать.

                                                                                                                                                                                                                            
Символ Значение Эффект
SC_FOLDACTION_CONTRACT 0 Контракт.
SC_FOLDACTION_EXPAND 1 Развернуть.
SC_FOLDACTION_TOGGLE 2 Переключение между сокращенным и расширенным.

SCI_EXPANDCHILDREN(int line, int level)
Это используется для ответа на изменение строки, вызывающей ее уровень сгиба или изменение заголовка, возможно, при добавлении или удалении '{'.

    

К тому времени, когда контейнер получил уведомление о том, что строка изменилась, уровень сбрасывания уже установлен, поэтому контейнер должен использовать предыдущий уровень в этом вызове, чтобы можно было отобразить любой диапазон, скрытый под этой строкой.

    

SCI_SETAUTOMATICFOLD(int automaticFold)
SCI_GETAUTOMATICFOLD int
    Вместо реализации всей логики обработки свёртываемости в контейнере Scintilla может обеспечить поведение, достаточное для многих приложений. Аргумент automaticFold является битным, определяющим, какая из трех частей свертывающей реализации должна быть включена. Большинство приложений должны иметь возможность использовать     SC_AUTOMATICFOLD_SHOW и SC_AUTOMATICFOLD_CHANGE     флаги, если они не хотят реализовать совсем другое поведение, например, определить свою собственную структуру свёрток.     SC_AUTOMATICFOLD_CLICK, скорее всего, будет отключен, когда приложение захочет добавить или изменить поведение кликов, например, показать заголовки методов, только если Shift + Alt используется вместе с кликом.

                                                                                                                                                                                                                            
Символ Значение Эффект
SC_AUTOMATICFOLD_SHOW 1 Автоматически отображать строки по мере необходимости. Это позволяет избежать отправки уведомления SCN_NEEDSHOWN .
SC_AUTOMATICFOLD_CLICK 2 Автоматически обрабатывать клики автоматически. Это позволяет избежать отправки уведомления SCN_MARGINCLICK для полей сгиба.
SC_AUTOMATICFOLD_CHANGE 4 Показывать строки по мере необходимости при изменении структуры свёрток. Уведомление SCN_MODIFIED по-прежнему отправляется, если контейнер не отключен.

SCI_CONTRACTEDFOLDNEXT(int lineStart) int
Поиск эффективно для строк, которые имеют сокращенные заголовки. Это полезно при сохранении фальцовки пользователя при переключении документов или сохранении фальцовки с файлом. Поиск начинается с номера строки lineStart и продолжается до конца файла.       lineStart возвращается, если это заголовок с сокращенным сгибом, иначе возвращается следующий заголовок с сокращенным сводом. Если нет более сокращенных заголовков фреймов, тогда возвращается -1.

    

SCI_ENSUREVISIBLE(int line)
SCI_ENSUREVISIBLEENFORCEPOLICY(int line)
     Линия может быть скрыта, потому что более чем одна из ее родительских линий сжимается. Оба этих сообщения перемещаются вверх по иерархии свёрток, расширяя любые сложенные свёртки до тех пор, пока они не достигнут верхнего уровня. Затем линия будет видна. Если вы используете SCI_ENSUREVISIBLEENFORCEPOLICY, тогда применяется политика вертикальной каретки, заданная SCI_SETVISIBLEPOLICY .

    

   Перенос строки

SCI_SETWRAPMODE(int wrapMode)
SCI_GETWRAPMODE int
SCI_SETWRAPVISUALFLAGS(int wrapVisualFlags)
SCI_GETWRAPVISUALFLAGS int
SCI_SETWRAPVISUALFLAGSLOCATION(int wrapVisualFlagsLocation)
SCI_GETWRAPVISUALFLAGSLOCATION int
SCI_SETWRAPINDENTMODE(int wrapIndentMode)
SCI_GETWRAPINDENTMODE int
SCI_SETWRAPSTARTINDENT(int indent)
SCI_GETWRAPSTARTINDENT int
SCI_SETLAYOUTCACHE(int cacheMode)
SCI_GETLAYOUTCACHE int
SCI_SETPOSITIONCACHE(int size)
SCI_GETPOSITIONCACHE int
SCI_LINESSPLIT(int pixelWidth)
SCI_LINESJOIN
SCI_WRAPCOUNT(int docLine) int

По умолчанию Scintilla не переносит строки текста. Если вы включите обертку строк, строки, которые шире ширины окна, продолжаются в следующих строках. Строки разбиваются после пробелов или символов табуляции или между прогонами разных стилей. Если это невозможно, потому что слово в одном стиле шире окна, тогда разрыв происходит после последнего символа, который полностью соответствует строке. Горизонтальная полоса прокрутки не появляется, когда включен режим обрезки.

        

Для обернутых строк Scintilla может рисовать визуальные флаги (маленькие стрелки) в конце сублинии завернутой строки и в начале следующей сублинии. Они могут быть активированы индивидуально, но если Scintilla рисует визуальный флаг в начале следующей сублинии, эта сублиния будет отступом одним символом. Независимо от рисования визуального флага при начале сублиния может иметь отступ.

    

Значительная часть времени, используемого Scintilla, расходуется на выкладку и рисование текста. Подобные вычисления компоновки текста могут выполняться много раз, даже когда данные, используемые в этих вычислениях, не изменяются. Чтобы избежать этих ненужных вычислений в некоторых случаях, кеш макета строки может хранить результаты вычислений. Кэш недействителен всякий раз, когда изменяются базовые данные, такие как содержимое или стиль документа. Кэширование макета всего документа имеет наибольший эффект, что делает динамическую линейную печать целых 20 раз быстрее, но для этого требуется 7-кратная память, требуемая содержимым документа плюс около 80 байт на строку.

    

Обертка не выполняется немедленно, происходит изменение, но задерживается до тех пор, пока дисплей не будет перерисован. Эта задержка повышает производительность, позволяя выполнить набор изменений, а затем завернутый и отображаемый один раз. Из-за этого некоторые операции могут выполняться не так, как ожидалось. Если файл читается и позиция прокрутки перемещается в определенную строку в тексте, например, когда контейнер пытается восстановить предыдущий сеанс редактирования, тогда позиция прокрутки будет определена перед оберткой, поэтому неожиданный диапазон текста будет отображается. Чтобы правильно прокрутить до положения, затяните прокрутку до тех пор, пока обертывание не будет выполнено, ожидая начального      SCN_PAINTED .

    

SCI_SETWRAPMODE(int wrapMode)
SCI_GETWRAPMODE int
     Установите wrapMode в SC_WRAP_WORD (1), чтобы включить обертку в границах слов или стилей, SC_WRAP_CHAR (2), чтобы включить обертку между любыми символами, SC_WRAP_WHITESPACE ( 3), чтобы включить обертку в пробеле и SC_WRAP_NONE (0), чтобы отключить перенос строк. SC_WRAP_CHAR предпочтительнее для азиатских языков, где между словами нет пробелов.

    

SCI_SETWRAPVISUALFLAGS(int wrapVisualFlags)
SCI_GETWRAPVISUALFLAGS int
                Вы можете включить рисование визуальных флагов, чтобы указать, что линия завернута. Биты, установленные в wrapVisualFlags, определяют, какие визуальные флаги нарисованы.

                                                                                                                                                                                                                                                                    
Символ Значение Эффект
SC_WRAPVISUALFLAG_NONE 0 Нет визуальных флагов
SC_WRAPVISUALFLAG_END 1 Визуальный флаг в конце сублинии завернутой строки.
SC_WRAPVISUALFLAG_START 2 Визуальный флаг при начале сублинии завернутой строки.
                                             Subline имеет отступы по крайней мере 1, чтобы освободить место для флага.
                                
SC_WRAPVISUALFLAG_MARGIN 4 Визуальный флаг в поле номера строки.
    

SCI_SETWRAPVISUALFLAGSLOCATION(int wrapVisualFlagsLocation)
SCI_GETWRAPVISUALFLAGSLOCATION int
                Вы можете установить, будут ли визуальные флажки указывать, что линия обернута, рисуются около границы или рядом с текстом. Биты, установленные в wrapVisualFlagsLocation, устанавливают местоположение рядом с текстом для соответствующего визуального флага.

                                                                                                                                                                                                                            
Символ Значение Эффект
SC_WRAPVISUALFLAGLOC_DEFAULT 0 Визуальные флаги, расположенные около границы
SC_WRAPVISUALFLAGLOC_END_BY_TEXT 1 Визуальный флаг в конце сублинии, нарисованный около текста
SC_WRAPVISUALFLAGLOC_START_BY_TEXT 2 Визуальный флаг в начале сублинии, нарисованный около текста

SCI_SETWRAPINDENTMODE(int wrapIndentMode)
SCI_GETWRAPINDENTMODE int
Обернутые сублины могут быть отступом до положения их первой сублинии или еще одного уровня отступа. По умолчанию используется SC_WRAPINDENT_FIXED. Режимы:

                                                                                                                                                                                                                                                                                                    
Символ Значение Эффект
SC_WRAPINDENT_FIXED 0               Упакованные сублины, выровненные слева от окна, плюс сумма, установленная               SCI_SETWRAPSTARTINDENT           
SC_WRAPINDENT_SAME 1 Обернутые сублины выровнены по первому отступу subline
SC_WRAPINDENT_INDENT 2 Обернутые сублины выровнены с первым абзацем субблица плюс еще один уровень отступов
SC_WRAPINDENT_DEEPINDENT 3 Обернутые сублины выровнены с первым абзацем субблица плюс еще два уровня отступа
    

SCI_SETWRAPSTARTINDENT(int indent)
SCI_GETWRAPSTARTINDENT int
     SCI_SETWRAPSTARTINDENT задает размер вложения сублиней для обернутых строк в терминах средней ширины символа в                  STYLE_DEFAULT . Нет ограничений на размеры отступов, но значения, меньшие 0 или большие, могут иметь нежелательные эффекты.
                Отступ сублинов не зависит от визуальных флагов, но если                 SC_WRAPVISUALFLAG_START задан отступ не менее 1.

    

SCI_SETLAYOUTCACHE(int cacheMode)
SCI_GETLAYOUTCACHE int
     Вы можете установить cacheMode на один из символов в таблице:

                                                                                                                                                                                                                                                                    
Символ Значение Макет, кешированный для этих строк
SC_CACHE_NONE 0 Никакие строки не кэшируются.
SC_CACHE_CARET 1 Строка, содержащая текст. Это значение по умолчанию.
SC_CACHE_PAGE 2 Видимые строки плюс строка, содержащая карет.
SC_CACHE_DOCUMENT 3 Все строки в документе.
    

SCI_SETPOSITIONCACHE(int size)
SCI_GETPOSITIONCACHE int
     Кэш позиции хранит информацию о местоположении для коротких строк текста, так что их макет может быть определен быстрее, если повтор запускается. Размер записи в этом кеше можно установить с помощью SCI_SETPOSITIONCACHE.

    

SCI_LINESSPLIT(int pixelWidth)
     Разделите диапазон линий, обозначенных мишенью, на линии шириной не более ширины. Разбиение происходит на границах слов, где это возможно, аналогично обертке строк. Когда pixelWidth равно 0, используется ширина окна.

    

SCI_LINESJOIN
     Присоедините диапазон строк, обозначенных мишенью, в одну строку, удалив символы конца строки. Если это не приведет к пробелу между словами, добавится дополнительное пространство.

    

SCI_WRAPCOUNT(int docLine) int
    Линии документов могут занимать более одной строки отображения, если они переносятся, и это возвращает количество строк отображения, необходимых для переноса строки документа.

    

   Масштабирование

Scintilla включает «коэффициент масштабирования», который позволяет сделать весь текст в документе большим или меньшим шагом по одной точке. Отображаемый размер точки никогда не опускается ниже 2, независимо от коэффициента масштабирования, который вы установили. Вы можете установить коэффициенты масштабирования в диапазоне от -10 до +20 пунктов.

     SCI_ZOOMIN
     SCI_ZOOMOUT
      SCI_SETZOOM(int zoomInPoints)
      SCI_GETZOOM int
    
    

SCI_ZOOMIN
SCI_ZOOMOUT
     SCI_ZOOMIN увеличивает коэффициент масштабирования на одну точку, если текущий коэффициент масштабирования меньше 20 пунктов. SCI_ZOOMOUT уменьшает коэффициент масштабирования на одну точку, если текущий коэффициент масштабирования больше -10 пунктов.

    

SCI_SETZOOM(int zoomInPoints)
SCI_GETZOOM int
     Эти сообщения позволяют установить и получить коэффициент масштабирования напрямую. Не существует ограничений по тем факторам, которые вы можете установить, поэтому ограничение на -10 до +20, чтобы соответствовать инкрементным функциям масштабирования, является хорошей идеей.

    

   Длинные строки

    

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

SCI_SETEDGEMODE(int edgeMode)
SCI_GETEDGEMODE int
SCI_SETEDGECOLUMN(int column)
SCI_GETEDGECOLUMN int
SCI_SETEDGECOLOUR(colour edgeColour)
SCI_GETEDGECOLOUR colour

SCI_MULTIEDGEADDLINE(int column, colour edgeColour)
SCI_MULTIEDGECLEARALL

SCI_SETEDGEMODE(int edgeMode)
SCI_GETEDGEMODE int
Эти два сообщения устанавливаются и получают режим, используемый для отображения длинных строк. Вы можете установить одно из значений в таблице:

                                                                                                                                                                                                                                                                               
Символ Значение Режим отображения длинных строк
EDGE_NONE 0 Длинные строки не отмечены. Это состояние по умолчанию.
EDGE_LINE 1 Вертикальная линия рисуется по номеру столбца, заданному SCI_SETEDGECOLUMN. Это хорошо работает для моноширинных шрифтов. Строка рисуется в позиции, основанной на ширине символа пробела в STYLE_DEFAULT , поэтому может не работать очень хорошо если ваши стили используют пропорциональные шрифты или если ваш стиль имеет разные размеры шрифта, или вы используете смесь жирного, курсивного и обычного текста.
EDGE_BACKGROUND 2 Цвет фона символов после предела столбца изменяется на цвет, заданный с помощью SCI_SETEDGECOLOUR. Это рекомендуется для пропорциональных шрифтов.
EDGE_MULTILINE 3 Это похоже на EDGE_LINE , но в отличие от отображения только одной отдельной строки одновременно может отображаться настраиваемый набор вертикальных линий. Этот edgeMode            использует полностью независимый набор данных, который можно настроить только с помощью сообщения SCI_MULTIEDGE * .

SCI_SETEDGECOLUMN(int column)
SCI_GETEDGECOLUMN int
Эти сообщения устанавливаются и получают номер столбца, на котором отображается маркер длинной строки. При рисовании строк столбец устанавливает позицию в единицах ширины пробела в      STYLE_DEFAULT . При установке цвета фона столбец представляет собой число символов     (с учетом вкладок) в строку.

    

SCI_SETEDGECOLOUR (colour edgeColour)
SCI_GETEDGECOLOUR colour
     Эти сообщения устанавливаются и получают цвет маркера, используемый для отображения того, что строка превысила длину, заданную с помощью SCI_SETEDGECOLUMN.

    

SCI_MULTIEDGEADDLINE(int column, colour edgeColour)
SCI_MULTIEDGECLEARALL
     SCI_MULTIEDGEADDLINE добавляет новый вертикальный край к представлению. Кромка будет отображаться с указанным номером столбца. Результирующее положение края зависит от метрики символа пробела в STYLE_DEFAULT . Все ребра можно очистить с помощью     SCI_MULTIEDGECLEARALL.

    

   Доступность

Scintilla поддерживает некоторые возможности доступности платформы. Эта поддержка отличается между платформами. В GTK + и Cocoa API-интерфейсы доступности платформы реализованы в достаточной степени, чтобы заставить экранные считыватели работать. В Win32 управление системой осуществляется с помощью экранной программы.

     SCI_SETACCESSIBILITY(int accessibility)

      SCI_GETACCSISIILITY int
    
    

SCI_SETACCESSIBILITY(int accessibility)
SCI_GETACCESSIBILITY int
     Эти сообщения могут включать или отключать доступность и сообщать о его текущем состоянии.

    

На большинстве платформ доступность либо реализована, либо не реализована, и это можно обнаружить с помощью SCI_GETACCESSIBILITY с     SCI_SETACCESSIBILITY не выполняет никаких действий. В GTK + для обеспечения доступности существуют затраты на хранение и производительность, поэтому его можно отключить, вызвав SCI_SETACCESSIBILITY.

                                                                                                                      
Символ Значение Статус доступности
SC_ACCESSIBILITY_DISABLED 0 Доступность отключена.
SC_ACCESSIBILITY_ENABLED 1 Доступность включена.

   Лексер

    

Если вы определяете символ SCI_LEXER при создании Scintilla (иногда это называется версией SciSilla SciLexer), включена поддержка лексинга для широкого круга языков программирования, и сообщения в этом разделе поддерживается. Если вы хотите установить стиль и свернуть точки для неподдерживаемого языка, вы можете сделать это в контейнере или еще лучше, напишите свой собственный лексер, следуя шаблону одного из существующих.

    

Scintilla также поддерживает внешние лексеры. Это библиотеки DLL (в Windows) или .so (на GTK + / Linux), которые экспортируют три функции: GetLexerCount , GetLexerName и      GetLexerFactory . Подробнее см. externalLexer.cxx .

SCI_SETLEXER(int lexer)
SCI_GETLEXER int
SCI_SETLEXERLANGUAGE(<unused> , const char *language)
SCI_GETLEXERLANGUAGE(<unused> , char *language) int
SCI_LOADLEXERLIBRARY(<unused> , const char *path)
SCI_COLOURISE(int start, int end)
SCI_CHANGELEXERSTATE(int start, int end) int
SCI_PROPERTYNAMES(<unused> , char *names) int
SCI_PROPERTYTYPE(const char *name) int
SCI_DESCRIBEPROPERTY(const char *name, char *description) int
SCI_SETPROPERTY(const char *key, const char *value)
SCI_GETPROPERTY(const char *key, char *value) int
SCI_GETPROPERTYEXPANDED(const char *key, char *value) int
SCI_GETPROPERTYINT(const char *key, int defaultValue) int
SCI_DESCRIBEKEYWORDSETS(<unused> , char *descriptions) int
SCI_SETKEYWORDS(int keyWordSet, const char *keyWords)
SCI_GETSUBSTYLEBASES(<unused> , char *styles) int
SCI_DISTANCETOSECONDARYSTYLES int
SCI_ALLOCATESUBSTYLES(int styleBase, int numberStyles) int
SCI_FREESUBSTYLES
SCI_GETSUBSTYLESSTART(int styleBase) int
SCI_GETSUBSTYLESLENGTH(int styleBase) int
SCI_GETSTYLEFROMSUBSTYLE(int subStyle) int
SCI_GETPRIMARYSTYLEFROMSTYLE(int style) int
SCI_SETIDENTIFIERS(int style, const char *identifiers)
SCI_PRIVATELEXERCALL(int operation, int pointer) int
SCI_GETNAMEDSTYLES int
SCI_NAMEOFSTYLE(int style, char *name) int
SCI_TAGSOFSTYLE(int style, char *tags) int
SCI_DESCRIPTIONOFSTYLE(int style, char *description) int

SCI_SETLEXER(int lexer)
SCI_GETLEXER int
Вы можете выбрать лексер для использования с целым кодом из перечисления SCLEX _ * в Scintilla.h . В этой последовательности есть два кода, которые не используют лексеры:      SCLEX_NULL , чтобы выбрать действие без лексинга и SCLEX_CONTAINER , который отправляет SCN_STYLENEEDED уведомление контейнера всякий раз, когда требуется текст текста. Вы не можете использовать      Значение SCLEX_AUTOMATIC ; это идентифицирует дополнительные внешние лексеры, которые Scintilla присваивает неиспользуемым лексерским номерам.

    

SCI_SETLEXERLANGUAGE(<unused> , const char *language)
SCI_GETLEXERLANGUAGE(<unused> , char *language NUL-terminated) int
     SCI_SETLEXERLANGUAGE позволяет выбрать лексер по имени и является единственным методом, если вы используете внешний лексер или если вы написали модуль лексера для собственного языка и не хотите его назначать явное число лексеров. Чтобы выбрать существующий лексер, установите language для соответствия имени (чувствительного к регистру) имени модуля, например "ada" или "python", а не "Ada"     или "Python". Чтобы найти имя встроенных лексеров, откройте соответствующие      Lex * .cxx и найдите LexerModule . Третий аргумент в      Конструктор LexerModule - это имя для использования.

    

Чтобы проверить, работает ли ваше назначение lexer, используйте SCI_GETLEXER до и после установки нового лексера, чтобы узнать, есть ли лексер номер изменен.

    

SCI_GETLEXERLANGUAGE извлекает имя лексера.

    

SCI_LOADLEXERLIBRARY(<unused> , const char *path)
     Загрузите лексер, реализованный в общей библиотеке. Это файл .so на GTK + / Linux или .DLL-файле в Windows.

    

SCI_COLOURISE(int start, int end)
     Это запрашивает текущий лексер или контейнер (если для lexer установлено значение      SCLEX_CONTAINER ), чтобы создать документ между start и      end . Если end равен -1, документ стилизован из      start до конца. Если для свойства "fold" установлено значение      "1" , а ваш лексер или контейнер поддерживает фальцовку, также устанавливаются уровни сброса. Это сообщение вызывает перерисовку.

    

SCI_CHANGELEXERSTATE(int start, int end) int
    Укажите, что внутреннее состояние лексера изменилось в диапазоне и, следовательно, может потребоваться перерисовать.

    

SCI_PROPERTYNAMES(<unused> , char *name NUL-terminated) int
SCI_PROPERTYTYPE(const char *name) int
SCI_DESCRIBEPROPERTY(const char *name, char *description NUL-terminated) int
    Может быть получена информация о свойствах, которые могут быть установлены для текущего лексера. Эта информация доступна только для новых лексеров.     SCI_PROPERTYNAMES возвращает строку со всеми допустимыми свойствами, разделенными «\n». Если лексер не поддерживает этот вызов, возвращается пустая строка. Свойства могут быть логическими (SC_TYPE_BOOLEAN), integer (SC_TYPE_INTEGER)) или string (SC_TYPE_STRING), и это можно найти с помощью SCI_PROPERTYTYPE. Описание свойства на английском языке возвращается SCI_DESCRIBEPROPERTY.

SCI_SETPROPERTY(const char *key, const char *value)
Вы можете связывать настройки с лексерами с помощью пар слов: цепочки значений. Нет ограничений на количество пар ключевых слов, которые вы можете установить, кроме доступной памяти. key - ключевое слово, чувствительное к регистру, value - это строка, связанная с ключевым словом. Если уже есть строка значений, связанная с ключевым словом, она заменяется. Если вы передаете строку с нулевой длиной, сообщение ничего не делает. Оба key и value используются без изменений; дополнительные пробелы в начале или конце key значительны.

    

Строка value может ссылаться на другие ключевые слова. Например,      SCI_SETPROPERTY ("foldTimes10", "$ (fold) 0") сохраняет строку      "$ (fold) 0" , но при обращении к нему код $ (fold) заменяется значением "fold" ключевое слово (или ничем, если это ключевое слово не существует).

    

В настоящее время свойство «fold» определено для большинства лексеров, чтобы установить структуру сгиба, если установлено «1». SCLEX_PYTHON понимает "tab.timmy.whinge.level" как параметр, определяющий, как указывать плохое отступы. Большинство ключевых слов имеют значения, которые интерпретируются как целые числа. Найдите источники lexer для GetPropertyInt , чтобы узнать, как используются свойства.

    

Существует соглашение об именовании свойств, используемых лексерами, так что набор свойств может быть найден скриптами. Имена свойств должны начинаться с слова "lexer. & Lt; lexer >." или "fold". < lexer >. " когда они применяются к одному лексеру или начинаются с «lexer». или "свернуть". если они применяются к нескольким лексерам.

    

Приложения могут обнаруживать набор свойств, используемых при поиске исходного кода лексеров для строк, содержащих      GetProperty и строка с двойными кавычками и извлечь значение двойной кавычки в качестве имени свойства. Скрипт scintilla / scripts / LexGen.py делает это и может использоваться в качестве примера. Документация для свойства может быть расположена над вызовом в виде многострочного комментария, начиная с     
// свойство < property-name >

    

SCI_GETPROPERTY(const char *key, char *value NUL-terminated) int
    Поиск ключевого слова: пара значений с использованием указанного ключа; если он найден, скопируйте значение в предоставленный пользователем буфер и верните длину (не включая завершающий 0). Если не найден, скопируйте пустую строку в буфер и верните 0.

    

Обратите внимание, что «замена ключевого слова», как описано в     SCI_SETPROPERTY не будет выполняться.

    

Если аргумент value равен 0, возвращается длина, которая должна быть выделена для хранения значения;     опять же, завершение 0 не включено.

    

SCI_GETPROPERTYEXPANDED(const char *key, char *value) int
    Поиск ключевого слова: пара значений с использованием указанного ключа; если он найден, скопируйте значение в предоставленный пользователем буфер и верните длину (не включая завершающий 0). Если не найден, скопируйте пустую строку в буфер и верните 0.

    

Обратите внимание, что «замена ключевого слова», как описано в     SCI_SETPROPERTY .

    

Если аргумент значения равен 0, то длина, которая должна быть выделено для хранения значения (включая любое указанное ключевое слово замена)     возвращается; опять же, завершение 0 не включено.

SCI_GETPROPERTYINT(const char *key, int defaultValue) int
Поиск ключевого слова: пара значений с использованием указанного ключа; если найдено, интерпретировать значение как целое и вернуть его. Если не найден (или значение - пустая строка), верните поставляется по умолчанию. Если найдено ключевое слово: пара значений, но не число, то верните 0.

    

Обратите внимание, что «замена ключевого слова», как описано в     SCI_SETPROPERTY будет выполняться перед любой цифровой интерпретацией.

    

SCI_SETKEYWORDS(int keyWordSet, const char *keyWords)
     Вы можете установить до 9 списков ключевых слов для использования текущим лексером.       keyWordSet может быть от 0 до 8 (от 0 до KEYWORDSET_MAX )     и выбирает, какой список ключевых слов заменить. keyWords - это список ключевых слов, разделенных пробелами, вкладками, "\n" или "\r" или любой комбинацией из этих. Ожидается, что ключевые слова будут состоять из стандартных символов ASCII-печати, но вам нечего прекратить использовать коды символов без разделителя от 1 до 255     (за исключением здравого смысла).

    

Как используются эти ключевые слова, полностью зависит от lexer. Некоторые языки, такие как HTML, могут содержать встроенные языки, VBScript и JavaScript являются общими для HTML. Для HTML ключевое слово 0 установлено для HTML, 1 для JavaScript и 2 для VBScript, 3 для Python, 4 для PHP и 5 для ключевых слов SGML и DTD. Просмотрите код лексера, чтобы увидеть примеры списка ключевых слов. Полностью соответствующий lexer устанавливает четвертый аргумент конструктора LexerModule как список строк, описывающих использование списков ключевых слов.

    

В качестве альтернативы вы можете использовать set 0 для общих ключевых слов, установить 1 для ключевых слов, которые вызывают отступы, и установить 2 для ключевых слов, которые вызывают деиндикацию. Еще раз, у вас может быть простой лексер, который раскрасит ключевые слова, и вы можете изменить языки, изменив ключевые слова в наборе 0. Нет ничего, что помешало бы вам создать свои собственные списки ключевых слов в лексере, но это означает, что лексер должен быть перестроен, если добавлено больше ключевых слов.

    

SCI_DESCRIBEKEYWORDSETS(<unused> , char *descriptions NUL-terminated) int
    Описание всех наборов ключевых слов, разделенных символом «\n», возвращается SCI_DESCRIBEKEYWORDSETS.

    

Подстили

    

Лексеры могут поддерживать несколько разных подъязыков, и каждый подъязык может захотеть создать определенное количество наборов идентификаторов (или аналогичных лексем, таких как ключевые слова документации) однозначно. Предварительное выделение большого количества для каждой цели быстро исчерпало бы количество разрешенных стилей. Это облегчается подстановками, которые позволяют приложению определять, сколько наборов идентификаторов выделяется для каждой цели. Лексерам необходимо явно поддерживать эту функцию, реализуя конкретные методы.

SCI_GETSUBSTYLEBASES(<unused> , char *styles NUL-terminated) int
Fill styles с байтом для каждого стиля, который можно разделить на подмены.

    

SCI_DISTANCETOSECDDATESTYLES int
     Возвращает расстояние между основным стилем и его соответствующим вторичным стилем.

    

SCI_ALLOCATESUBSTYLES(int styleBase, int numberStyles) int
     Выделите некоторое количество подстановок для определенного базового стиля, возвращающего первый номер подставленного номера. Подсистемы распределяются смежно.

    

SCI_FREESUBSTYLES
     Освободите все выделенные подстановки.

    

SCI_GETSUBSTYLESSTART(int styleBase) int
SCI_GETSUBSTYLESGENGTH(int styleBase) int
     Верните начало и длину подстановок, выделенных для базового стиля.

    

SCI_GETSTYLEFROMSUBSTYLE(int subStyle) int
     Для вспомогательного стиля возвращаем базовый стиль, иначе возвращаем аргумент.

    

SCI_GETPRIMARYSTYLEFROMSTYLE(int style) int
     Для вторичного стиля верните основной стиль, иначе верните аргумент.

    

SCI_SETIDENTIFIERS(int style, const char *identifiers)
     Подобно SCI_SETKEYWORDS, но для подстановок. Функция префикса, доступная с помощью SCI_SETKEYWORDS, не реализована для SCI_SETIDENTIFIERS.

    

SCI_PRIVATELEXERCALL(int operation, int pointer) int
     Позвоните в лексер, не поняв Scintilla.

    

Метаданные стиля

    

Лексеры могут предоставлять информацию о стилях, которые они используют. Лексерам необходимо явно поддерживать эту функцию, реализуя определенные методы.

    

SCI_GETNAMEDSTYLES int
     Извлеките количество названных стилей для лексера.

    

SCI_NAMEOFSTYLE(int style, char *name) int
     Получить имя стиля. Это символ препроцессора C, такой как «SCE_C_COMMENTDOC».

    

SCI_TAGSOFSTYLE(int style, char *tags) int
     Получить теги стиля. Это набор слов, разделенных пробелами, например «документация комментариев».

    

SCI_DESCRIPTIONOFSTYLE(int style, char *description) int
     Получить английское описание стиля, который может быть подходящим для отображения в пользовательском интерфейсе. Это выглядит так: «Комментарий Doc: комментарии блока, начинающиеся с / ** или /*!".

    

   Объекты лексера

Лексеры запрограммированы как объекты, реализующие интерфейс ILexer4, и которые взаимодействуют с документом, который они лексируют через интерфейс IDocument. Раньше лексеры определялись с помощью функций лексинга и фальцовки, но создание объекта для обработки взаимодействия лексера с документом позволяет лексеру сохранять информацию о состоянии, которая может использоваться во время лексинга. Например, лексика C ++ может хранить набор определений препроцессора или деклараций переменных и стилизовать их в зависимости от их роли.

    

Набор вспомогательных классов позволяет использовать более старые лексеры, определенные функциями, которые будут использоваться в Scintilla.

ILexer4

class ILexer4 {
public:
        virtual int SCI_METHOD Version() const = 0;
        virtual void SCI_METHOD Release() = 0;
        virtual const char * SCI_METHOD PropertyNames() = 0;
        virtual int SCI_METHOD PropertyType(const char *name) = 0;
        virtual const char * SCI_METHOD DescribeProperty(const char *name) = 0;
        virtual Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) = 0;
        virtual const char * SCI_METHOD DescribeWordListSets() = 0;
        virtual Sci_Position SCI_METHOD WordListSet(int n, const char *wl) = 0;
        virtual void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) = 0;
        virtual void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) = 0;
        virtual void * SCI_METHOD PrivateCall(int operation, void *pointer) = 0;
        virtual int SCI_METHOD LineEndTypesSupported() = 0;
        virtual int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) = 0;
        virtual int SCI_METHOD SubStylesStart(int styleBase) = 0;
        virtual int SCI_METHOD SubStylesLength(int styleBase) = 0;
        virtual int SCI_METHOD StyleFromSubStyle(int subStyle) = 0;
        virtual int SCI_METHOD PrimaryStyleFromStyle(int style) = 0;
        virtual void SCI_METHOD FreeSubStyles() = 0;
        virtual void SCI_METHOD SetIdentifiers(int style, const char *identifiers) = 0;
        virtual int SCI_METHOD DistanceToSecondaryStyles() = 0;
        virtual const char * SCI_METHOD GetSubStyleBases() = 0;
        virtual int SCI_METHOD NamedStyles() = 0;
        virtual const char * SCI_METHOD NameOfStyle(int style) = 0;
        virtual const char * SCI_METHOD TagsOfStyle(int style) = 0;
        virtual const char * SCI_METHOD DescriptionOfStyle(int style) = 0;
};

Типы Sci_Position и Sci_PositionU используются для позиций и номеров строк в документе. С помощью Scintilla 4 64-битные сборки определяют их как 64-битные типы, позволяющие в будущем реализовать документы размером более 2 ГБ.

Методы, возвращающие строки как const char * , не требуются для автономного выделения отдельных распределений: реализация lexer может иметь один буфер, который повторно используется для каждого вызова. Вызывающие должны немедленно скопировать возвращаемые строки.

Возвращаемые значения из PropertySet и WordListSet используются для указания необходимости изменения выполняя лексирование или свёртывание по любому из документов. Это позиция, в которой необходимо перезапустить лексирование и сгибание или -1 если изменение не требует дополнительной работы над документом. Простым подходом является возврат 0, если есть вероятность, что изменение требует лексирования документа снова, пока Оптимизация может заключаться в том, чтобы помнить, где параметр сначала влияет на документ и возвращает эту позицию.

Версия возвращает перечисляемое значение, определяющее, какая версия интерфейса реализована: lvRelease4 для ILexer4 . До Scintilla 4.0 были возможны разные значения.

Release вызывается для уничтожения объекта lexer.

PrivateCall позволяет осуществлять прямую связь между приложение и лексер. Примером может служить приложение поддерживает одну большую структуру данных, содержащую символическую информацию о системных заголовках (например, Windows.h) и предоставляет это лексеру где он может применяться к каждому документу. Это позволяет избежать издержек построение информации заголовка системы для каждого документа. Это вызывается с помощью API SCI_PRIVATELEXERCALL.

Fold вызывается с точным диапазоном, который требует свертывания. Раньше лексеры вызывались с диапазоном, который начинал одну строку перед диапазоном, который нужно сложить, так как это позволило зафиксировать последнюю строку из предыдущего свёртывания. Новый подход позволяет лексеру решать, отступать или обрабатывать этот более эффективно.

NamedStyles , NameOfStyle , ТегиOfStyle и ОписаниеOfStyle используются для предоставления информации о наборе стилей, используемых этим лексером. NameOfStyle - это идентификатор на языке C, такой как « SCE_LUA_COMMENT ». TagsOfStyle - это набор тегов, описывающих стиль стандартизованным способом, например « literal string multiline raw ». Набор общих тегов и соглашений для их объединения описан здесь . ОписаниеOfStyle - это английское описание стиля типа " Определение имени функции или метода ".

IDocument

class IDocument {
public:
        virtual int SCI_METHOD Version() const = 0;
        virtual void SCI_METHOD SetErrorStatus(int status) = 0;
        virtual Sci_Position SCI_METHOD Length() const = 0;
        virtual void SCI_METHOD GetCharRange(char *buffer, Sci_Position position, Sci_Position lengthRetrieve) const = 0;
        virtual char SCI_METHOD StyleAt(Sci_Position position) const = 0;
        virtual Sci_Position SCI_METHOD LineFromPosition(Sci_Position position) const = 0;
        virtual Sci_Position SCI_METHOD LineStart(Sci_Position line) const = 0;
        virtual int SCI_METHOD GetLevel(Sci_Position line) const = 0;
        virtual int SCI_METHOD SetLevel(Sci_Position line, int level) = 0;
        virtual int SCI_METHOD GetLineState(Sci_Position line) const = 0;
        virtual int SCI_METHOD SetLineState(Sci_Position line, int state) = 0;
        virtual void SCI_METHOD StartStyling(Sci_Position position) = 0;
        virtual bool SCI_METHOD SetStyleFor(Sci_Position length, char style) = 0;
        virtual bool SCI_METHOD SetStyles(Sci_Position length, const char *styles) = 0;
        virtual void SCI_METHOD DecorationSetCurrentIndicator(int indicator) = 0;
        virtual void SCI_METHOD DecorationFillRange(Sci_Position position, int value, Sci_Position fillLength) = 0;
        virtual void SCI_METHOD ChangeLexerState(Sci_Position start, Sci_Position end) = 0;
        virtual int SCI_METHOD CodePage() const = 0;
        virtual bool SCI_METHOD IsDBCSLeadByte(char ch) const = 0;
        virtual const char * SCI_METHOD BufferPointer() = 0;
        virtual int SCI_METHOD GetLineIndentation(Sci_Position line) = 0;
        virtual Sci_Position SCI_METHOD LineEnd(Sci_Position line) const = 0;
        virtual Sci_Position SCI_METHOD GetRelativePosition(Sci_Position positionStart, Sci_Position characterOffset) const = 0;
        virtual int SCI_METHOD GetCharacterAndWidth(Sci_Position position, Sci_Position *pWidth) const = 0;
};

Scintilla пытается минимизировать последствия модификации текста для только relex и перерисовать линию изменения, где это возможно. лексер объекты содержат свое собственное частное состояние, которое может повлиять позже линий. Например, если лексика C ++ выдает неактивный код сегменты, то изменение оператора #define BEOS 0 на #define BEOS 1 может потребовать повторного использования и повторного отображения последующих частей документа. Лексер может вызывать ChangeLexerState , чтобы сигнализировать документу, что он должен повторно отображать и отображать больше.

Для StartStyling аргумент маски не действует. Он использовался в версиях 3.4.2 и ранее.

SetErrorStatus используется для уведомления документа исключения. Исключения не должны выходить за границы сборки, поскольку обе стороны могут быть построены с использованием разных компиляторов или несовместимы исключений.

Чтобы лексеры могли определить конечную позицию линии и, следовательно, легче поддерживать концы строк Unicode IDocument включает LineEnd , который следует использовать, а не тестирование для конкретных символы конца строки.

GetRelativePosition перемещает документ целыми символами, возвращая INVALID_POSITION для перемещения за пределы начала и конца документа.

GetCharacterAndWidth предоставляет стандартный преобразование из байтов UTF-8 в символ UTF-32 или из DBCS в 16-битное значение. Байт в недопустимом UTF-8 сообщается отдельно со значениями 0xDC80 + byteValue, которые недействительными кодами Unicode. Аргумент pWidth может быть NULL, если вызывающему абоненту не нужно знать количество байтов в символе.

Интерфейсы ILexer4 и IDocument могут быть расширен в будущем с расширенными версиями ( ILexer5 ...). Метод Version указывает, какой интерфейс и, следовательно, какие методы можно назвать.

Scintilla 4 изменила определение IDocument , объединив ранее отдельные Интерфейс IDocumentWithLineEnd и удаление параметра маски в StartStyling .

    

   Уведомления

Уведомления отправляются (увольняются) из элемента управления Scintilla в его контейнер, когда произошло событие, которое может заинтересовать контейнер.

    

Уведомления отправляются с использованием      WM_NOTIFY в Windows.

    

В GTK + передается сигнал «sci-notify», и обработчик сигнала должен иметь подпись      handler (GtkWidget *, gint, уведомление SCNotification *, gpointer userData) .

    

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

    

Контейнеру передается структура SCNotification , содержащая информацию о событии.

struct Sci_NotifyHeader {   // This matches the Win32 NMHDR structure void *hwndFrom;     // environment specific window handle/pointer uptr_t idFrom;        // CtrlID of the window issuing the notification unsigned int code;  // The SCN_* notification code
};

struct SCNotification {
struct Sci_NotifyHeader nmhdr;
Sci_Position position;
/* SCN_STYLENEEDED, SCN_DOUBLECLICK, SCN_MODIFIED, SCN_MARGINCLICK, */
/* SCN_MARGINRIGHTCLICK, SCN_NEEDSHOWN, SCN_DWELLSTART, SCN_DWELLEND, */
/* SCN_CALLTIPCLICK, SCN_HOTSPOTCLICK, SCN_HOTSPOTDOUBLECLICK, */
/* SCN_HOTSPOTRELEASECLICK, SCN_INDICATORCLICK, SCN_INDICATORRELEASE, */
/* SCN_USERLISTSELECTION, SCN_AUTOCSELECTION, SCN_AUTOCSELECTIONCHANGE */

int ch;
/* SCN_CHARADDED, SCN_KEY, SCN_AUTOCCOMPLETE, SCN_AUTOCSELECTION, */
/* SCN_USERLISTSELECTION */
int modifiers;
/* SCN_KEY, SCN_DOUBLECLICK, SCN_HOTSPOTCLICK, SCN_HOTSPOTDOUBLECLICK, */
/* SCN_HOTSPOTRELEASECLICK, SCN_INDICATORCLICK, SCN_INDICATORRELEASE, */

int modificationType;	/* SCN_MODIFIED */
const char *text;
/* SCN_MODIFIED, SCN_USERLISTSELECTION, SCN_AUTOCSELECTION, SCN_URIDROPPED, */
/* SCN_AUTOCSELECTIONCHANGE */

Sci_Position length;		/* SCN_MODIFIED */
Sci_Position linesAdded;	/* SCN_MODIFIED */
int message;	/* SCN_MACRORECORD */
uptr_t wParam;	/* SCN_MACRORECORD */
sptr_t lParam;	/* SCN_MACRORECORD */
Sci_Position line;		/* SCN_MODIFIED */
int foldLevelNow;	/* SCN_MODIFIED */
int foldLevelPrev;	/* SCN_MODIFIED */
int margin;		/* SCN_MARGINCLICK, SCN_MARGINRIGHTCLICK */
int listType;	/* SCN_USERLISTSELECTION, SCN_AUTOCSELECTIONCHANGE */
int x;			/* SCN_DWELLSTART, SCN_DWELLEND */
int y;		/* SCN_DWELLSTART, SCN_DWELLEND */
int token;		/* SCN_MODIFIED with SC_MOD_CONTAINER */
int annotationLinesAdded;	/* SCN_MODIFIED with SC_MOD_CHANGEANNOTATION */
int updated;	/* SCN_UPDATEUI */
int listCompletionMethod;
/* SCN_AUTOCSELECTION, SCN_AUTOCCOMPLETED, SCN_USERLISTSELECTION */

};

Сообщения уведомления, которые ваш контейнер может выбрать для обработки, и связанные с ними сообщения:

SCN_STYLENEEDED
SCN_CHARADDED
SCN_SAVEPOINTREACHED
SCN_SAVEPOINTLEFT
SCN_MODIFYATTEMPTRO
SCN_KEY
SCN_DOUBLECLICK
SCN_UPDATEUI
SCN_MODIFIED
SCN_MACRORECORD
SCN_MARGINCLICK
SCN_NEEDSHOWN
SCN_PAINTED
SCN_USERLISTSELECTION
SCN_URIDROPPED
SCN_DWELLSTART
SCN_DWELLEND
SCN_ZOOM
SCN_HOTSPOTCLICK
SCN_HOTSPOTDOUBLECLICK
SCN_HOTSPOTRELEASECLICK
SCN_INDICATORCLICK
SCN_INDICATORRELEASE
SCN_CALLTIPCLICK
SCN_AUTOCSELECTION
SCN_AUTOCCANCELLED
SCN_AUTOCCHARDELETED
SCN_FOCUSIN
SCN_FOCUSOUT
SCN_AUTOCCOMPLETED
SCN_MARGINRIGHTCLICK
SCN_AUTOCSELECTIONCHANGE

The following SCI_* messages are associated with these notifications:

SCI_SETMODEVENTMASK(int eventMask)
SCI_GETMODEVENTMASK int
SCI_SETMOUSEDWELLTIME(int periodMilliseconds)
SCI_GETMOUSEDWELLTIME int
SCI_SETIDENTIFIER(int identifier)
SCI_GETIDENTIFIER int

Следующие дополнительные уведомления отправляются с использованием вторичного метода «команда», и его следует избегать в новом коде, поскольку основной метод «уведомления» предоставляет все те же события с более богатой информацией. Сообщение WM_COMMAND используется в Windows. Это эмулирует элемент управления Windows Edit. В этих уведомлениях передаются только младшие 16 бит идентификатора элемента управления.

    

В GTK + передается сигнал команды и обработчик сигнала должен иметь подпись      handler (GtkWidget *, gint wParam, gpointer lParam, пользовательские данные gpointer) .

     SCEN_CHANGE
      SCEN_SETFOCUS
      SCEN_KILLFOCUS
    
    

SCI_SETIDENTIFIER(int identifier)
SCI_GETIDENTIFIER int
     Эти два сообщения задаются и получают идентификатор экземпляра Scintilla, который включен в уведомления, как       idFrom . Когда приложение создает несколько виджетов Scintilla, это позволяет найти источник каждого уведомления. В Windows это значение инициализируется в вызове CreateWindow и сохраняется как       GWLP_ID атрибута окна. Значение должно быть небольшим, предпочтительно менее 16 бит, а не указателем, поскольку некоторые из функций будут передавать только 16 или 32 бита.

    

SCN_STYLENEEDED
     Если вы использовали SCI_SETLEXER (SCLEX_CONTAINER) , чтобы заставить контейнер действовать как лексер, вы получите это уведомление, когда Scintilla будет для отображения или печати текста, требующего стилизации. Вы должны стилизовать текст из строки, которая содержит позицию, возвращаемую SCI_GETENDSTYLED до позиции, переданной в SCNotification.position . Символически вам нужен код формы:

 startPos = SCI_GETENDSTYLED ()
    lineNumber = SCI_LINEFROMPOSITION (startPos);
    startPos = SCI_POSITIONFROMLINE (номер строки);
    MyStyleRoutine (startPos, SCNotification.position);
    

SCN_CHARADDED
     Это отправляется, когда пользователь вводит обычный текст текста (в отличие от символа команды), который вводится в текст. Контейнер может использовать это, чтобы решить отобразить подсказку вызова или автоматический список завершения . Символ находится в SCNotification.ch . Это уведомление отправляется до того, как символ был оформлен, поэтому обработка, зависящая от стиля, должна выполняться в уведомлении SCN_UPDATEUI.

SCN_SAVEPOINTREACHED
SCN_SAVEPOINTLEFT
Отправляется в контейнер, когда точка сохранения введена или оставлена, что позволяет контейнеру отображать индикатор «грязный документ» и изменять его меню.
     См. Также: SCI_SETSAVEPOINT , SCI_GETMODIFY

    

SCN_MODIFYATTEMPTRO
     В режиме только для чтения это уведомление отправляется в контейнер, если пользователь пытается изменить текст. Это можно использовать для проверки документа из системы управления версиями. Вы можете установить состояние документа только для чтения с помощью SCI_SETREADONLY .

    

SCN_KEY
     Сообщает, что все клавиши нажаты, но не используются Scintilla. Используется на GTK + из-за некоторых проблем с фокусом клавиатуры и не отправляется версией Windows. SCNotification.ch содержит код ключа и      SCNotification.modifiers содержит модификаторы. Это уведомление отправляется, если модификаторы включают SCMOD_ALT или SCMOD_CTRL , а код ключа меньше 256.

    

SCN_DOUBLECLICK
     Кнопка мыши была дважды нажата в редакторе. Поле position установлено в текстовое положение двойного щелчка, поле line установлено в строку двойного щелчка и модификаторы устанавливается на ключевые модификаторы, удерживаемые аналогично SCN_KEY .

    

SCN_UPDATEUI
     Либо изменился текст или стиль документа, либо изменился диапазон выбора или положение прокрутки. Теперь самое время обновить элементы пользовательского интерфейса контейнера, которые зависят от состояния документа или представления. Поскольку иногда бывает трудно определить, произошло ли изменение, эти события могут также срабатывать, когда фактических изменений не было. В поле updated установлен бит набор вещей, измененных с момента предыдущего уведомления.

                                                                                                                                                                                                                                   
Символ Значение Значение
SC_UPDATE_CONTENT 0x01 Содержание, стиль или маркеры могут быть изменены.
SC_UPDATE_SELECTION 0x02 Выбор может быть изменен.
SC_UPDATE_V_SCROLL 0x04 Можно прокручивать по вертикали.
SC_UPDATE_H_SCROLL 0x08 Может прокручиваться по горизонтали.
    

SCN_MODIFIED
     Это уведомление отправляется при изменении или изменении текста или стиля документа. Вы можете установить маску для уведомлений, отправленных в контейнер с SCI_SETMODEVENTMASK . Структура уведомлений содержит информацию о том, что изменилось, как произошло изменение и изменилось ли количество строк в документе. Никакие изменения не могут быть выполнены во время события SCN_MODIFIED . Используемые поля SCNotification :

                                                                                                                                                                                                                                                                                                            
Поле Использование
modificationType Набор флагов, которые идентифицируют сделанные изменения. См. Следующую таблицу.
position Начать позицию изменения текста или стиля. Установите значение 0, если не используется.
length Длина изменения в байтах при изменении текста или стиля. Установите значение 0, если не используется.
linesAdded Количество добавленных строк. Если отрицательное, количество удаленных строк. Установите значение 0, если оно не используется, или никакие строки не добавлены или не удалены.
text Действителен для изменения текста, а не для изменений стиля. Если мы собираем информацию об отмене, это содержит указатель на текст, который передается системе Undo, в противном случае он равен нулю. Для пользователя SC_MOD_BEFOREDELETE текстовое поле равно 0.
line Номер строки, в которой произошел сбой или изменение маркера. Это значение равно 0, если оно не используется и может быть -1, если было изменено несколько строк.
foldLevelNow Новый уровень сгиба применяется к строке или 0, если это поле не используется.
foldLevelPrev Предыдущий уровень сгиба линии или 0, если это поле не используется.
    

В поле SCNotification.modificationType установлены биты, чтобы сообщить вам, что было сделано. Биты SC_MOD _ * соответствуют действиям.      SC_PERFORMED _ * сообщают вам, было ли действие выполнено пользователем или результатом отмены или повтора предыдущего действия.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
Символ Значение Значение Поля SCNotification
SC_MOD_INSERTTEXT 0x01 Текст был вставлен в документ. position, length, text, linesAdded
SC_MOD_DELETETEXT 0x02 Текст удален из документа. position, length, text, linesAdded
SC_MOD_CHANGESTYLE 0x04 Произошло изменение стиля. позиция, длина
SC_MOD_CHANGEFOLD 0x08 произошло сменное изменение. , foldLevelNow, foldLevelPrev
SC_PERFORMED_USER 0x10 Информация: операция была выполнена пользователем. None
SC_PERFORMED_UNDO 0x20 Информация: это было результатом Отменить. None
SC_PERFORMED_REDO 0x40 Информация: это было результатом повтора. None
SC_MULTISTEPUNDOREDO 0x80 Это часть многоэтапной транзакции Undo или Redo. None
SC_LASTSTEPINUNDOREDO 0x100 Это последний шаг в транзакции Undo или Redo. None
SC_MOD_CHANGEMARKER 0x200 Один или несколько маркеров изменились в строке. строка
SC_MOD_BEFOREINSERT 0x400 Текст будет вставлен в документ. , если выполняется пользователем, тогда текст в байтах, длина в байтах
SC_MOD_BEFOREDELETE 0x800 Текст будет удален из документа. позиция, длина
SC_MOD_CHANGEINDICATOR 0x4000 Индикатор был добавлен или удален из диапазона текста. позиция, длина
SC_MOD_CHANGELINESTATE 0x8000 Состояние строки изменилось, поскольку SCI_SETLINESTATE           был вызван. строка
SC_MOD_CHANGETABSTOPS 0x200000 Явные табуляции в строке изменились, потому что SCI_CLEARTABSTOPS или            был вызван SCI_ADDTABSTOP . строка
SC_MOD_LEXERSTATE 0x80000 Внутреннее состояние лексера изменилось в диапазоне. позиция, длина
SC_MOD_CHANGEMARGIN 0x10000 Поля текста изменилась. строка
SC_MOD_CHANGEANNOTATION 0x20000 Аннотации изменились. строка
SC_MOD_INSERTCHECK 0x100000 Текст будет вставлен. Обработчик может изменить введенный текст, вызвав SCI_CHANGEINSERTION. Никакие другие модификации в этом обработчике не могут быть сделаны. позиция, длина, текст
SC_MULTILINEUNDOREDO 0x1000 Это часть отмены или повтора с многострочными изменениями. нет
SC_STARTACTION 0x2000 Это устанавливается в действии SC_PERFORMED_USER, когда это первый или единственный шаг в транзакции отмены. Это можно использовать для интеграции стека отката Scintilla со стеком отмены в приложении-контейнере путем добавления действия Scintilla в стек контейнера для открытой транзакции контейнера или открытия новой транзакции контейнера, если нет открытой транзакции контейнера.            None
SC_MOD_CONTAINER 0x40000 Этот параметр установлен для действий, которые контейнер хранит в стек отмены SCI_ADDUNDOACTION .            маркер
SC_MODEVENTMASKALL 0x1FFFFF Это маска для всех допустимых флагов. Это состояние маски по умолчанию, установленное SCI_SETMODEVENTMASK . None
    

SCEN_CHANGE
      SCEN_CHANGE (768) запускается при изменении текста (а не стиля) документа. Это уведомление отправляется с помощью сообщения WM_COMMAND в Windows и     «командный» сигнал на GTK +, так как это поведение стандартного элемента управления Edit     ( SCEN_CHANGE имеет то же значение, что и элемент управления Windows Edit      EN_CHANGE ). Никакой другой информации не отправляется. Если вам нужна более подробная информация, используйте SCN_MODIFIED . Вы можете фильтровать типы изменений, о которых вы уведомлены, с помощью SCI_SETMODEVENTMASK .

    

SCI_SETMODEVENTMASK(int eventMask)
SCI_GETMODEVENTMASK int
     Эти сообщения устанавливаются и получают маску события, которая определяет, какие события изменения документа уведомляются в контейнере с SCN_MODIFIED и SCEN_CHANGE . Например, контейнер может решить видеть только уведомления об изменениях текста, а не изменения стиля при вызове SCI_SETMODEVENTMASK(SC_MOD_INSERTTEXT|SC_MOD_DELETETEXT).

Возможные типы уведомлений такие же, как флаги бит modifyType , используемые SCN_MODIFIED: SC_MOD_INSERTTEXT, SC_MOD_DELETETEXT, SC_MOD_CHANGESTYLE, SC_MOD_CHANGEFOLD, SC_PERFORMED_USER, SC_PERFORMED_UNDO, SC_PERFORMED_REDO, SC_MULTISTEPUNDOREDO, SC_LASTSTEPINUNDOREDO, SC_MOD_CHANGEMARKER, SC_MOD_BEFOREINSERT, SC_MOD_BEFOREDELETE, SC_MULTILINEUNDOREDO, and SC_MODEVENTMASKALL.

SCEN_SETFOCUS
SCEN_KILLFOCUS
SCEN_SETFOCUS(512) запускается, когда Scintilla получает фокус и      SCEN_KILLFOCUS (256), когда он теряет фокус. Эти уведомления отправляются с использованием      WM_COMMAND в Windows и сигнал команды на GTK +, так как это поведение стандартного элемента управления Edit. К сожалению, эти коды не соответствуют кодам уведомлений Windows Edit EN_SETFOCUS (256) и EN_KILLFOCUS (512). Теперь уже слишком поздно менять коды Scintilla, поскольку клиенты зависят от текущих значений.

    

SCN_MACRORECORD
      SCI_STARTRECORD и SCI_STOPRECORD позволяют включать и отключать макросъемку. Когда это разрешено, каждый раз, когда происходит изменение записи,      SCN_MACRORECORD отправляется в контейнер. Резервное копирование происходит в контейнере. Чтобы просмотреть полный список сообщений SCI _ * , которые можно записать, выполните поиск источника Scintilla Editor.cxx для      Редактор :: NotifyMacroRecord . Поля SCNotification , установленные в этом уведомлении:

                                                                                                                                                             
Поле Использование
message Сообщение SCI _ * , вызвавшее уведомление.
wParam Значение wParam в сообщении SCI _ * .
lParam Значение lParam в сообщении SCI _ * .
    

SCN_MARGINCLICK
      SCN_MARGINRIGHTCLICK
     Эти уведомления сообщают контейнеру, что мышь была нажата или щелкнула правой кнопкой мыши внутри поля , которое было помечено как чувствительное (см. SCI_SETMARGINSENSITIVEN ). Это можно использовать для выполнения свёртывания или для размещения точек останова. Используются следующие поля SCNotification :

                                                                                                    
Поле Использование
modifiers Соответствующая комбинация SCI_SHIFT,           SCI_CTRL и SCI_ALT, чтобы указать ключи, которые были удержаны во время клика по краю.
position Позиция начала строки в документе, соответствующая щелчку поля.
margin Номер поля, который был нажат.
    

SCN_NEEDSHOWN
     Scintilla определила, что диапазон невидимых линий должен быть видимым. Примером того, где это может понадобиться, является то, что конец строки сокращенной точки сбрасывания удаляется. Это сообщение отправляется в контейнер, если он хочет сделать линию видимой каким-то необычным способом, например, сделать весь документ видимым. Большинство контейнеров просто гарантируют, что каждая строка в диапазоне видима, вызывая SCI_ENSUREVISIBLE . Позиция и      length поля SCNotification указывают диапазон документа, который должен быть видимым. Код контейнера будет похож на следующий скелет кода:

 firstLine = SCI_LINEFROMPOSITION (scn.position)
lastLine = SCI_LINEFROMPOSITION (scn.position + scn.length-1)
для строки = lineStart to lineEnd do SCI_ENSUREVISIBLE(line) next
    

SCN_PAINTED
     Картина только что была сделана. Полезно, если вы хотите обновить некоторые другие виджеты, основанные на изменении Scintilla, но хотите, чтобы краска возникла, прежде всего, стала более отзывчивой. В SCNotification нет другой информации.

    

SCN_USERLISTSELECTION
     Пользователь выбрал элемент в списке пользователей .     Используемые поля SCNotification :

                                                                                                                                                                                                                                                     
Поле Использование
listType Этот параметр установлен в listType из SCI_USERLISTSHOW сообщение, инициировавшее список.
text Текст выделения.
position Позиция, в которой был отображен список.
ch Если символом заполнения является метод выбора, используется символ, иначе 0.
listCompletionMethod Значение, указывающее способ, в котором произошло завершение. См. Таблицу ниже.
    
     Смотрите уведомление SCN_AUTOCCOMPLETED для возможных значений для listCompletionMethod.     

SCN_URIDROPPED
     Только на версии GTK +. Указывает, что пользователь перетащил URI, такой как имя файла или веб-адрес в Scintilla. Контейнер может интерпретировать это как запрос на открытие файла.      text поля SCNotification указывает текст URI.

    

SCN_DWELLSTART
      SCN_DWELLEND
      SCN_DWELLSTART генерируется, когда пользователь удерживает мышь в одной позиции для периода ожидания (см. SCI_SETMOUSEDWELLTIME ). SCN_DWELLEND генерируется после SCN_DWELLSTART , и мышь перемещается, или другое действие, такое как нажатие клавиши, означает, что время ожидания завершено. Оба уведомления устанавливают одинаковые поля в SCNotification:

                                                                                                                             
Поле Использование
position Это ближайшая позиция в документе в позицию, в которой указатель мыши задерживался.
x, y Если указатель задержался. Поле position установлено в            SCI_POSITIONFROMPOINTCLOSE (x, y) .
    
    

SCI_SETMOUSEDWELLTIME(int periodMilliseconds)
SCI_GETMOUSEDWELLTIME int
     Эти два сообщения устанавливаются и получают время, в течение которого мышь должна сидеть неподвижно, в миллисекундах, для создания уведомления SCN_DWELLSTART . Если установлено значение SC_TIME_FOREVER, по умолчанию не создаются события ожидания.

    

SCN_ZOOM
     Это уведомление генерируется, когда пользователь увеличивает масштаб дисплея с помощью клавиатуры или     Вызывается метод SCI_SETZOOM . Это уведомление может использоваться для пересчета позиций, таких как ширина поля номера строки, чтобы поддерживать размеры в терминах символов, а не пикселей. SCNotification не содержит дополнительной информации.

    

     SCN_HOTSPOTCLICK
     SCN_HOTSPOTDOUBLECLICK
     SCN_HOTSPOTRELEASECLICK
     Эти уведомления генерируются, когда пользователь нажимает или дважды нажимает на текст, который находится в стиле с набором атрибутов hotspot. Это уведомление может использоваться для ссылки на определения переменных или веб-страницы. В обработчике уведомлений вам следует избегать вызова любой функции, которая изменяет текущую позицию выбора или каретки. В поле position задается текстовая позиция щелчка или двойного щелчка, а поле modifiers установлено на модификаторы ключа, удерживаемые аналогично сообщению SCN_KEY . Сообщается только состояние клавиши Ctrl для SCN_HOTSPOTRELEASECLICK .

    

     SCN_INDICATORCLICK
     SCN_INDICATORRELEASE
     Эти уведомления генерируются, когда пользователь нажимает или отпускает мышь на текст с индикатором. В поле position задается текстовая позиция щелчка или двойного щелчка, а поле modifiers установлено на модификаторы ключа, удерживаемые аналогично сообщению SCN_KEY .

    

SCN_CALLTIPCLICK
     Это уведомление генерируется, когда пользователь нажимает на подсказку. Это уведомление может использоваться для отображения следующего прототипа функции, когда имя функции перегружено различными аргументами. Поле position установлено в 1, если щелчок находится в стрелке вверх, 2, если стрелкой вниз, и 0, если в другом месте.

    

SCN_AUTOCSELECTION
     Пользователь выбрал элемент в списке автозавершения . Уведомление отправляется до того, как будет вставлен выбор. Автоматическая вставка может быть отменена путем отправки       SCI_AUTOCCANCEL перед возвратом из уведомления. Используемые поля SCNotification :

                                                                                                                                                                                                             
Поле Использование
position Начальная позиция слова завершается.
text Текст выделения.
ch Если символом заполнения является метод выбора, используется символ, иначе 0.
listCompletionMethod Значение, указывающее способ, в котором произошло завершение. См. Таблицу ниже.
    
                                                                                                                                                                                                                                                                                                                                                       
Символ Значение Значение
SC_AC_FILLUP 1 Символ заполнения запустил завершение. Используемый символ находится в ch.
SC_AC_DOUBLECLICK 2 Двойной щелчок вызвал завершение. ch равно 0.
SC_AC_TAB 3 Ключ вкладки или SCI_TAB инициировал завершение. ch равно 0.
SC_AC_NEWLINE 4 Новая строка или SCI_NEWLINE вызвали завершение. ch равно 0.
SC_AC_COMMAND 5 The            сообщение SCI_AUTOCSELECT вызвало завершение. ch равно 0.
    

SCN_AUTOCCANCELLED
     Пользователь отменил список автозавершения . В SCNotification нет другой информации.

    

SCN_AUTOCCHARDELETED
     Пользователь удалил символ, пока список автозавершения был активным. В SCNotification нет другой информации.

    

SCN_AUTOCCOMPLETED
    
Это уведомление создается после того, как автозавершение вставило его текст. Поля идентичны полям            SCN_AUTOCSELECTION      уведомление.

    

SCN_AUTOCSELECTIONCHANGE
    
Это уведомление отправляется, когда элементы подсвечиваются в списке автозавершения или пользователя.     Используемые поля SCNotification :

                                                                                                                                                                     
Поле Использование
listType Этот параметр установлен в listType из SCI_USERLISTSHOW сообщение или 0 для автозавершения.
text Текст выделения.
position Позиция, в которой был отображен список.
    

SCN_FOCUSIN
     SCN_FOCUSOUT
     SCN_FOCUSIN (2028) запускается, когда Scintilla получает фокус и      SCN_FOCUSOUT (2029), когда он теряет фокус.

    

   Изображения

    

Поддерживаются два формата для изображений, используемых маркерами маркеров и списками автозавершения, RGBA и XPM.

    

RGBA

    

Формат RGBA позволяет получить прозрачность с помощью alpha     значение для каждого пикселя. Это проще, чем      XPM и более способным.

    

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

    

Каждый пиксель состоит из красного байта, зеленого байта, синего байта и альфа-байта. Байты цвета не преломляются альфа-значением. То есть полностью красный пиксель, который будет непрозрачным на 25%, будет [FF, 00, 00, 3F]

    

Поскольку данные пикселя RGBA не включают информацию о размере, ширина и высота должны быть предварительно установлены с помощью      SCI_RGBAIMAGESETWIDTH и      SCI_RGBAIMAGESETHEIGHT .

    

Платформы GUI часто включают функции для чтения форматов файлов изображений, таких как PNG, в память в форме RGBA или в подобной форме. Если поддержка подходящей платформы отсутствует, библиотеки LodePNG и picoPNG являются небольшими библиотеками для загрузки и декодирования файлов PNG, доступных под лицензией типа BSD .

    

Формат RGBA поддерживается в Windows, GTK + и OS X Cocoa.

    

XPM

    

Формат XPM      здесь . Scintilla может обрабатывать только пиксельные пиксели XPM, которые используют один символ на пиксель без названных цветов. Может быть полностью прозрачный цвет с именем «Нет».

    

Существуют две формы структуры данных, используемые для изображений XPM, первый формат «линий» хорошо подходит для встраивания изображения в исходный код C, а «текстовая форма» подходит для чтения из файла. В форме линий используется массив строк с первой строкой, указывающей размеры и количество используемых цветов. За этим следует строка для каждого цвета, и за этим разделом следует изображение с одной строкой в ??строке. Текстовая форма содержит те же данные, что и один блок с нулевым завершением, отформатированный как исходный код C, начинающийся с комментария «/ * XPM * /» для маркировки формата.

    

Любой формат может использоваться с API-интерфейсами Scintilla с байтами в местоположении, указанном для проверки, чтобы определить, какой формат: если байты начинаются с «/ * XPM * /», тогда он рассматривается как текстовая форма, в противном случае он рассматривается как линии.

    

Формат XPM поддерживается на всех платформах.

    

   GTK+

    

В GTK + следующие функции создают виджет Scintilla, общаются с ним и позволяют освобождать ресурсы после того, как все виджеты Scintilla были уничтожены.

     GtkWidget * scintilla_new ()
      void scintilla_set_id (ScintillaObject * sci, uptr_t id)
      sptr_t scintilla_send_message (ScintillaObject * sci, unsigned int iMessage, uptr_t wParam, sptr_t lParam)
      void scintilla_release_resources ()
     
    

GtkWidget * scintilla_new ()
    Создайте новый виджет Scintilla. Возвращаемый указатель можно добавить в контейнер и отобразить так же, как другие виджеты.

    

void scintilla_set_id (ScintillaObject * sci, uptr_t id)
    Установите идентификатор элемента управления, который будет использоваться в поле idFrom структуры Sci_NotifyHeader всех уведомлений для этого экземпляра. Это эквивалентноSCI_SETIDENTIFIER.

sptr_t scintilla_send_message(ScintillaObject *sci,unsigned int iMessage, uptr_t wParam, sptr_t lParam)
Основная точка входа позволяет отправлять любые сообщения, описанные в этом документе.

    

void scintilla_release_resources ()
    Позвоните, чтобы освободить оставшиеся ресурсы после того, как все виджеты Scintilla были уничтожены.

    

   Предварительные сообщения

    

Сложные новые функции могут быть добавлены как «предварительные», чтобы разрешить дальнейшие изменения API. Предварительные возможности могут быть даже удалены, если опыт показывает, что они являются ошибкой.

    

Предварительные функции отображаются в этом документе с отличительным цветом фона .

    

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

    

   Устаревшие сообщения и уведомления

    

В настоящее время поддерживаются следующие сообщения для эмуляции существующих элементов управления Windows, но они будут удалены в будущих версиях Scintilla. Если вы используете эти сообщения, вы должны заменить их эквивалентом Scintilla.

WM_GETTEXT(int length, char *text)
WM_SETTEXT(<unused>, const char *text)
EM_GETLINE(int line, char *text)
EM_REPLACESEL(<unused>, const char *text)
EM_SETREADONLY
EM_GETTEXTRANGE(<unused>, TEXTRANGE *tr)
WM_CUT
WM_COPY
WM_PASTE
WM_CLEAR
WM_UNDO
EM_CANUNDO
EM_EMPTYUNDOBUFFER
WM_GETTEXTLENGTH
EM_GETFIRSTVISIBLELINE
EM_GETLINECOUNT
EM_GETMODIFY
EM_SETMODIFY(bool isModified)
EM_GETRECT(RECT *rect)
EM_GETSEL(int *start, int *end)
EM_EXGETSEL(<unused>, CHARRANGE *cr)
EM_SETSEL(int start, int end)
EM_EXSETSEL(<unused>, CHARRANGE *cr)
EM_GETSELTEXT(<unused>, char *text)
EM_LINEFROMCHAR(int position)
EM_EXLINEFROMCHAR(int position)
EM_LINEINDEX(int line)
EM_LINELENGTH(int position)
EM_SCROLL(int line)
EM_LINESCROLL(int column, int line)
EM_SCROLLCARET()
EM_CANPASTE
EM_CHARFROMPOS(<unused>, POINT *location)
EM_POSFROMCHAR(int position, POINT *location)
EM_SELECTIONTYPE
EM_HIDESELECTION(bool hide)
EM_FINDTEXT(int flags, FINDTEXTEX *ft)
EM_FINDTEXTEX(int flags, FINDTEXTEX *ft)
EM_GETMARGINS
EM_SETMARGINS(EC_LEFTMARGIN or EC_RIGHTMARGIN or EC_USEFONTINFO, int val)
EM_FORMATRANGE

Ниже перечислены функции, которые включены только в том случае, если вы определяете      INCLUDE_DEPRECATED_FEATURES в Scintilla.h . Чтобы обеспечить будущую совместимость, вы должны изменить их, как указано.

SCI_SETKEYSUNICODE(bool keysUnicode)
SCI_GETKEYSUNICODE bool
SCI_SETTWOPHASEDRAW(bool twoPhase)
SCI_GETTWOPHASEDRAW bool
SCI_SETSTYLEBITS(int bits)
SCI_GETSTYLEBITS int
SCI_GETSTYLEBITSNEEDED int

SCI_SETKEYSUNICODE(bool keysUnicode) Устаревшая версия SCI_GETKEYSUNICODE bool Устаревшая версия В Windows Scintilla больше не поддерживает узкие окна символов, поэтому вход всегда обрабатывается как Unicode.

    

SCI_SETTWOPHASEDRAW(bool twoPhase)
SCI_GETTWOPHASEDRAW bool
     Это свойство было заменено предыдущим свойством PHASESDRAW, которое является более общим, позволяющим многофазное рисование, а также однофазное рисование.

    

Однофазный чертеж SC_PHASES_ONE, устарел и должен быть заменен двухстраничным SC_PHASES_TWO или многофазным SC_PHASES_MULTIPLE чертежом.

    

Ниже перечислены функции, которые должны быть удалены из кода вызова, но все еще определены, чтобы избежать нарушения вызовов.

    

SCI_SETSTYLEBITS(int bits) Устаревшая версия SCI_GETSTYLEBITS int Устаревшая версия SCI_GETSTYLEBITSNEEDED int Устаревшая версия      INDIC0_MASK , INDIC1_MASK , INDIC2_MASK , INDICS_MASK Устаревшая версия      Scintilla больше не поддерживает индикаторы стиля байта. Последняя версия для поддержки байт-индикаторов стиля была 3.4.2. Любое использование этих символов следует удалить и заменить на стандартные индикаторы .     SCI_GETSTYLEBITS и SCI_GETSTYLEBITSNEEDED всегда возвращают 8, указывая, что для стилизации используются 8 бит, и есть 256 стилей.

   Cообщения редактирования (EM_), которые не поддерживаются Scintilla

EM_GETWORDBREAKPROC EM_GETWORDBREAKPROCEX
EM_SETWORDBREAKPROC EM_SETWORDBREAKPROCEX
EM_GETWORDWRAPMODE EM_SETWORDWRAPMODE
EM_LIMITTEXT EM_EXLIMITTEXT
EM_SETRECT EM_SETRECTNP
EM_FMTLINES
EM_GETHANDLE EM_SETHANDLE
EM_GETPASSWORDCHAR EM_SETPASSWORDCHAR
EM_SETTABSTOPS
EM_FINDWORDBREAK
EM_GETCHARFORMAT EM_SETCHARFORMAT
EM_GETOLEINTERFACE EM_SETOLEINTERFACE
EM_SETOLECALLBACK
EM_GETPARAFORMAT EM_SETPARAFORMAT
EM_PASTESPECIAL
EM_REQUESTRESIZE
EM_GETBKGNDCOLOR EM_SETBKGNDCOLOR
EM_STREAMIN EM_STREAMOUT
EM_GETIMECOLOR EM_SETIMECOLOR
EM_GETIMEOPTIONS EM_SETIMEOPTIONS
EM_GETOPTIONS EM_SETOPTIONS
EM_GETPUNCTUATION EM_SETPUNCTUATION
EM_GETTHUMB
EM_GETEVENTMASK
EM_SETEVENTMASK
EM_DISPLAYBAND
EM_SETTARGETDEVICE

Scintilla пытается быть надмножеством стандартных элементов управления Edit и RichEdit, где это имеет смысл. Поскольку он не предназначен для использования в текстовом процессоре, некоторые редактируемые сообщения не могут быть разумно обработаны. Неподдерживаемые сообщения не влияют.

    

   Удаленные функции

    

Эти функции полностью удалены.

    

SC_CP_DBCS Удалено в 2016 году с выпуском 3.7.1
     Это было использовано для установки режима DBCS (Double Byte Character Set) на GTK +. Явная кодовая страница DBCS должна использоваться при вызове SCI_SETCODEPAGE

    

SCI_SETUSEPALETTE(bool usePalette) Удалено в 2016 году с выпуском 3.7.1
SCI_GETUSEPALETTE bool Удалено в 2016 году с выпуском 3.7.1
     Scintilla больше не поддерживает режим палитры. Последняя версия для поддержки палитр была 2,29. Любые вызовы этих методов должны быть удалены.

    

Предыдущие версии индикаторов, разрешенных Scintilla, должны храниться в битах каждого байт стиля. Это было устарело в 2007 году и удалено в 2014 году с выпуском 3.4.3. Все применения индикаторов стиля байта должны быть заменены на стандартные индикаторы .

    

   Компилирование Scintilla

    

Чтобы создать Scintilla или SciTE, см. файл README, присутствующий в каталогах Scintilla и SciTE. Компилятор должен поддерживать C ++ 17. Для Windows можно использовать GCC 7.1 или Microsoft Visual C ++ 2017.5 для создания. Для GTK + следует использовать GCC 7.1 или новее. GTK + 2.24 и 3.x поддерживаются с помощью glib 2.22+. Установленная версия GTK + должна быть обнаружена автоматически. Когда присутствуют оба GTK + 2 и GTK + 3, для построения GTK + 3.x требуется определение GTK3 в командной строке.

    

Статическое соединение

    

В Windows, Scintilla обычно используется как динамическая библиотека в качестве файла .DLL. Если вы хотите связать Scintilla напрямую с вашим файлом .EXE или .DLL, вы можете ссылаться на статическую библиотеку bin / libscintilla.lib (или .a при использовании GCC) и вызывать Scintilla_RegisterClasses .      Scintilla_RegisterClasses принимает HINSTANCE вашего приложения и гарантирует, что будет зарегистрирован класс окна «Scintilla».

    

При создании автономной DLL Scintilla файл ScintillaDLL.cxx следует скомпилировать и связать, чтобы предоставить DllMain и Scintilla_RegisterClasses .

    

Обеспечение лексеры связаны с Scintilla

    

В зависимости от используемого компилятора и компоновщика лексеры могут быть удалены. Это чаще всего возникает при создании статической библиотеки. Для обеспечения того, чтобы лексеры были связаны,      Можно вызвать функцию Scintilla_LinkLexers () .

    

Изменение набора лексер

Чтобы изменить набор лексеров в Scintilla, добавьте и удалите исходные файлы lexer     ( Lex * .cxx ) из каталога scintilla / lexers и запустите      scripts / LexGen.py из каталога scripts , чтобы обновить файлы make и Catalogue.cxx . LexGen.py требует Python 2.5 или новее. Если у вас нет доступа к Python, вы можете отредактировать Catalogue.cxx простым способом, следуя шаблонам других лексеров. Важно включить      LINK_LEXER (lmMyLexer); соответствует LexerModule lmMyLexer (...); в исходном коде lexer.

    

Создание альтернативной реализации регулярного выражения

 

Простой интерфейс обеспечивает поддержку для переключения механизма регулярных выражений во время компиляции. Вы должны реализовать RegexSearchBase для выбранного вами движка, посмотрите на встроенную реализацию BuiltinRegex , чтобы увидеть, как это делается. Затем вам необходимо реализовать заводский метод CreateRegexSearch  для создания экземпляра вашего класса. Вы должны отключить встроенную реализацию, указав SCI_OWNREGEX.