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 обеспечит совместимость с будущими улучшениями. |
Сообщения с именами формы 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 выполняет операции отмены и повтора, он уведомляет контейнер, в который он ввел или оставил точку сохранения, с помощью
и
уведомления , позволяющие контейнеру знать, следует ли считать файл грязным или нет.
См. также:
,
SCI_GETLINE(int line, char *text) → int
Это заполняет буфер, определенный текстом, содержимым назначенной строки (строки начинаются с 0). Буфер не заканчивается символом 0. Вы должны убедиться, что буфер достаточно длинный для текста, используйте . Возвращаемое значение - это количество символов, скопированных в буфер. Возвращенный текст включает любые символы конца строки. Если вы запрашиваете номер строки вне диапазона строк в документе, копируются 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
Эти сообщения устанавливаются и получают флаг только для чтения для документа. Если вы помечаете документ только как прочитанный, попытки изменить текст вызывают уведомление .
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)
Это можно вызвать только из
обработчик уведомлений и изменит текст, вставленный в предоставленный.
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; };
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:
searchFlags
В нескольких процедурах поиска используются параметры флагов, которые включают простой поиск регулярных выражений. Объедините опции флага, добавив их:
SCFIND_MATCHCASE |
Совпадение происходит только с текстом, который соответствует случаю строки поиска. |
SCFIND_WHOLEWORD |
Совпадение происходит только в том случае, если символы до и после не являются символами слов, как определено | .
SCFIND_WORDSTART |
Совпадение происходит только в том случае, если символ before не является символом слова, как определено | .
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_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
Эти сообщения обеспечивают перемещаемую поддержку поиска. Это позволяет записывать макросы в несколько инкрементных интерактивных поисков, сохраняя при этом выбор текста для поиска, чтобы операция поиска / выбора была автономной. Эти три сообщения отправляют уведомления , если макросъемка включена.
SCI_SEARCHANCHOR
задает начальную точку поиска, используемую
SCI_SEARCHNEXT
и SCI_SEARCHPREV
в начало текущего выбора, то есть конец выбора, который ближе к началу документа. Вы всегда должны вызывать это, прежде чем вызывать любой из SCI_SEARCHNEXT
или
SCI_SEARCHPREV
.
SCI_SEARCHNEXT
и SCI_SEARCHPREV
выполните поиск следующего и предыдущего вхождения строки поиска с нулевым завершением, на которую указывает текст. Поиск изменяется с помощью searchFlags
.
Возвращаемое значение равно -1, если ничего не найдено, иначе возвращаемое значение является исходной позицией соответствующего текста. Выбор обновляется, чтобы отображать согласованный текст, но не прокручивается в представление.
См. также:
, 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
копирует диапазон текста из документа в системный буфер обмена, а 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 забыть любую сохраненную историю отмены или повтора. Он также устанавливает точку сохранения в начало буфера отмены, поэтому документ будет отображаться немодифицированным. Это не вызывает уведомление
, которое будет отправлено в контейнер.
См. также:
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_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, если он не изменен. Измененное состояние документа определяется положением отмены относительно точки сохранения. Точка сохранения устанавливается , как правило, когда вы сохранили данные в файл.
Если вам необходимо получить уведомление, когда документ будет изменен, Scintilla уведомляет контейнер, который он ввел, или оставил точку сохранения с помощью уведомления .
и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_GETCURRENTPOS → position
Это возвращает текущую позицию.
SCI_SETANCHOR(int anchor)
Это устанавливает положение привязки и создает выбор между положением привязки и текущей позицией. Каретка не просматривается.
См. также:
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_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_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_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 при перетаскивании мышью. Самый последний выбор - это основной выбор и определяет, какая часть документа отображается автоматически. Любой выбор, кроме основного выбора, называется дополнительным выбором. Вызовы в предыдущем разделе работают с основным выбором. Всегда есть хотя бы один выбор. Выбор может быть упрощен вплоть до основного выбора
который обычно отображается на клавишу 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
,
,
, and
.
SCI_SETADDITIONALSELFORE
and
SCI_SETADDITIONALSELBACK
calls have no effect until
and are called with useSelection*Colour value set to true. Subsequent calls to
, and 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
,
,
, and
.
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_SCROLLARET
Если текущая позиция (это каретка, если нет выбора) не отображается, просмотр прокручивается, чтобы сделать ее видимой в соответствии с текущей политикой каретки.
SCI_SCROLLRANGE(int secondary, int primary)
Прокрутите позиции аргументов и диапазон между ними в представлении, отдавая приоритет первичной позиции, а затем вторичной позиции. Поведение похоже на
с использованием первичной позиции вместо каретки. Затем прилагаются усилия для обеспечения видимости вторичного положения и диапазона между ними. Это можно использовать, чтобы сделать видимость соответствия видимой.
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)
Это определяет, как определяется вертикальное позиционирование при вызове . Для параметра политики требуется VISIBLE_SLOP
и VISIBLE_STRICT
. Это похоже на операцию .
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_SETSCROLLWIDTH(int pixelWidth)
SCI_GETSCROLLWIDTH → int
Для производительности Scintilla не измеряет ширину отображения документа для определения свойств горизонтальной полосы прокрутки. Вместо этого используется предполагаемая ширина. Эти сообщения устанавливаются и получают ширину документа в пикселях, принимаемых Scintilla. Значение по умолчанию - 2000. Чтобы обеспечить прокрутку ширины видимых в настоящее время строк, используйте
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
. cursorType
аргументом может быть:
SC_CURSORNORMAL |
-1 | Отображается нормальный курсор. |
---|---|---|
SC_CURSORWAIT |
& NBSP; 4 | Курсор ожидания отображается, когда мышь закончилась или принадлежит окну Scintilla. |
Значения курсора с 1 по 7 заданы курсорами, но только SC_CURSORWAIT
полезно поддается контролю. Другие значения cursorType
вызывают отображение указателя. Сообщение SCI_GETCURSOR
возвращает последний тип курсора, который вы установили, или
SC_CURSORNORMAL
(-1), если вы не задали тип курсора.
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_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 *
используются для перемещения между частями слова:
,
,
, and
.
SCI_WORDENDPOSITION(int pos, bool onlyWordCharacters) → int
SCI_WORDSTARTPOSITION(int pos, bool onlyWordCharacters) → int
Эти сообщения возвращают начало и конец слов, используя то же определение слов, которое используется внутри внутри Scintilla. Вы можете установить собственный список символов, которые считаются словами с
. Позиция устанавливает начало или поиск, который пересылается при поиске конца и назад при поиске начала.
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, вероятно, самый простой способ для стилизации вашего документа. Если вы решите использовать контейнер для стилизации, вы можете использовать команду SCLEX_CONTAINER
, и в этом случае контейнер отправляется уведомление каждый раз, когда текст требует стилизации для отображения. В качестве другой альтернативы вы можете использовать простой для стилизации документа. Даже если вы используете лексер, вы можете использовать команды моделирования для отметки ошибок, обнаруженных компилятором. Можно использовать следующие команды.
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 хранит запись последнего символа, который, вероятно, будет создан правильно. Это перемещается вперед, когда символы после этого стилизованы и перемещаются назад, если перед текстом документа внесены изменения. Перед рисованием текста эта позиция проверяется, если требуется какой-либо стиль и, если это так, сообщение уведомления
отправляется в контейнер. Контейнер может отправить 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
, чтобы получить значение. Изменение значения вызывает уведомление .
SCI_GETMAXLINESTATE → int
Это возвращает последнюю строку с любым состоянием строки.
В то время как упомянутые выше сообщения о настройке стиля изменяют номера стилей, связанные с текстом, эти сообщения определяют, как эти номера стилей интерпретируются визуально. Есть 256 стилей lexer, которые можно установить, от 0 до STYLE_MAX
(255). Существуют также некоторые предопределенные нумерованные стили, начинающиеся с 32, следующие константы STYLE _
*.
STYLE_DEFAULT |
32 | Этот стиль определяет атрибуты, которые получают все стили, когда
используется сообщение SCI_STYLECLEARALL . |
---|---|---|
STYLE_LINENUMBER |
33 | Этот стиль устанавливает атрибуты текста, используемые для отображения номеров строк в поле номера строки. Фоновый цвет, установленный для этого стиля, также устанавливает цвет фона для всех полей, для которых нет установленных битов маскировки. То есть, любая маржа, для которой
mask & SC_MASK_FOLDERS равен 0. Подробнее о масках читайте . |
STYLE_BRACELIGHT |
34 | Этот стиль устанавливает атрибуты, используемые при подсветке фигурных скобок с сообщением | и при подсвечивании соответствующего отступа с помощью .
STYLE_BRACEBAD |
35 | Этот стиль устанавливает атрибуты отображения, используемые при маркировке непревзойденной фигурной скобки с помощью | сообщение.
STYLE_CONTROLCHAR |
36 | Этот стиль устанавливает шрифт, используемый при рисовании управляющих символов. Используются только шрифты, размер, жирный шрифт, курсив и атрибуты набора символов, а не атрибуты цвета. См. Также: | .
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
Эти сообщения (плюс ) устанавливают атрибуты шрифта, которые используются для соответствия шрифтам, которые вы запрашиваете для доступных.
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)
но это может быть изменено путем вызова
. Каждое поле может быть установлено для отображения только символов, номеров строк или текста с помощью
. Текстовые поля также могут отображать символы. Маркеры, которые могут отображаться в каждом поле, устанавливаются с помощью . Любые маркеры, не связанные с видимым полем, будут отображаться как изменения цвета фона в тексте. Ширина в пикселях может быть установлена ??для каждого поля. Поля с нулевой шириной полностью игнорируются. Вы можете выбрать, будет ли щелчок мыши на полях отправляться или в контейнер или выбирает строку текста.
Использование номера поля вне допустимого диапазона не влияет. По умолчанию маркер 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_SETMARGINMASKN(int margin, int mask)
SCI_GETMARGINMASKN(int margin) → int
Маска представляет собой 32-битное значение. Каждый бит соответствует одному из 32 логических символов, которые могут отображаться в поле, которое включено для символов. Существует полезная константа,
SC_MASK_FOLDERS
(0xFE000000 или -33554432), то есть маска для 7 логических символов, используемых для обозначения свертывания. Вы можете назначить широкий диапазон символов и цветов для каждого из 32 логических символов, см. Маркеры для получения дополнительной информации. Если (маска
& Амп; SC_MASK_FOLDERS) == 0
, цвет фона поля управляется стилем 33 ( ).
Вы добавляете логические маркеры в строку с
. Если в строке есть связанный маркер, который не отображается в маске любого поля с ненулевой шириной, маркер меняет цвет фона линии. Например, предположим, что вы решили использовать логический маркер 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
Каждый из пяти полей может быть установлен чувствительным или нечувствительным к щелчкам мыши. Щелчок в чувствительном поле посылает или уведомление в контейнер. Поля, которые не чувствительны, действуют как поля выбора, которые позволяют легко выбирать диапазоны строк. По умолчанию все поля нечувствительны.
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
. Установка поля текста приведет к
уведомление отправляется.
Только атрибуты стиля активны в полях текста: шрифт, 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_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
. Текст должен быть установлен первым, так как он определяет, сколько времени аннотации так, сколько байтов стилизации нужно читать. Установка аннотации приведет к
уведомление отправляется.
Количество строк, аннотирующих строку, можно получить с помощью 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_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_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)
В «стиле подсветки скобок» может быть выделено до двух символов, который определяется как номер стиля (34) , Если вы включили направляющие отступов, вы также можете выделить отступ, который соответствует скобе. Вы можете найти столбец с и выделить отступ с сообщением 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, или ноль, если таковых нет. Изменение настроек табуляции приводит к сообщению .
SCI_SETUSETABS(bool useTabs)
SCI_GETUSETABS → bool
SCI_SETUSETABS
определяет, следует ли создавать отступы из смеси вкладок и пробелов или основываться только на пробелах. Установите useTabs
в false
(0), чтобы создать все вкладки и отступы из пробелов. По умолчанию используется true
. Вы можете использовать
, чтобы получить столбец позиции с учетом ширины вкладки.
SCI_SETINDENT(int indentSize)
SCI_GETINDENT → int
SCI_SETINDENT
устанавливает размер отступа в терминах ширины пробела в . Если вы установите ширину 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
Направляющие отступов представляют собой точечные вертикальные линии, которые появляются в прописном пробеле в каждом столбце размера отступа. Они позволяют легко увидеть, какие конструкции выстраиваются в линию, особенно когда они распространяются на несколько страниц. Стиль (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
Когда происходит выделение фигурной скобки, направляющая отступа, соответствующая фигурным скобкам, может быть выделена стилем подсветки фигурной скобки, (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
.
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 |
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
, чтобы найти, где маркер после перемещения или объединения строк и с , чтобы удалить маркер на основе его дескриптора. Сообщение не проверяет значение markerNumber и не проверяет, содержит ли строка уже маркер.
SCI_MARKERADDSET(int line, int markerSet)
Это сообщение может добавить один или несколько маркеров в строку с одним вызов, указанный в том же 32-битном целочисленном формате «один бит на маркер»
возвращено
(и используется функцией поиска маркеров на основе маски
и
). Как и в
, не проверяется, присутствует ли какой-либо из маркеров на целевой линии.
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
является идентификатором маркера, возвращаемого . Эта функция выполняет поиск документа для маркера с помощью этого дескриптора и возвращает номер строки, который содержит его, или -1, если он не найден.
SCI_MARKERDELETEHANDLE(int markerHandle)
Аргумент markerHandle
является идентификатором маркера, возвращаемого . Эта функция выполняет поиск документа для маркера с помощью этого дескриптора и удаляет маркер, если он найден.
Индикаторы используются для отображения дополнительной информации поверх стиля стилизации. Они могут использоваться для отображения, например, синтаксических ошибок, устаревших имен и плохих отступов путем рисования подчеркиваний в тексте или в блоках вокруг текста.
Индикаторы могут иметь другой цвет и стиль «наведения», когда мышь над ними или каретка перемещается в них. Это можно использовать, например, для указания того, что 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_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 выделены анимированным золотым округленным прямоугольником. Индикатор показывает, затем кратковременно растет на 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
, и если у него есть известный список участников, вы можете предложить им в списке автозавершения. Кроме того, вы можете отслеживать ввод пользователя и предлагать список вероятных элементов, как только их ввод сократит выбор до разумного списка. В качестве еще одной альтернативы вы можете определить код ключа для активации списка.
Когда пользователь делает выбор из списка, контейнер отправляется
уведомление . При возврате из уведомления Scintilla вставляет выделенный текст и контейнер отправляется
уведомление , если список автозавершения не отменен, например, при отправке контейнера
.
Чтобы использовать автозавершение, вы должны следить за каждым символом, добавленным в документ. Видеть
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
- это список слов, разделенных символами разделителя. Начальный символ разделителя - это пробел, но это можно установить или получить с помощью
и .
С настройками по умолчанию список слов должен быть отсортирован в порядке. Если задано игнорировать режим case с SCI_AUTOCSETORDER
, то строки будут сопоставлены после преобразования в верхний регистр. Одним из результатов этого является то, что список следует сортировать с символами пунктуации «[',' \ ','] ',' ^ ',' _ 'и'` ', отсортированные по буквам. Альтернативную обработку порядка списка можно указать с помощьюSCI_AUTOCCANCEL
Это сообщение отменяет любой отображаемый список автозавершения. Когда в режиме автозавершения список должен исчезать, когда пользователь вводит символ, который не может быть частью автозавершения, например «.», «(» Или «[» при вводе идентификатора. Набор символов, которые отменяют автозавершение может быть указан .
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
. По умолчанию сравнения чувствительны к регистру, но вы можете изменить это с помощью . Сопоставление - символ по символу для длины строки select
. То есть, если select является «Fred», он будет соответствовать «Frederick», если это первый элемент в списке, который начинается с «Fred». Если элемент найден, он выбирается. Если элемент не найден, список автозавершения закрывается, если автоматически скрывается (см. ).
Текущий индекс выбора можно получить с помощью SCI_AUTOCGETCURRENT
.
SCI_AUTOCGETCURRENTTEXT(<unused> , char *text NUL-terminated) → int
Это сообщение извлекает текущий выделенный текст в списке автозавершения. Обычно
Вместо этого используется .
Значение копируется в буфер 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_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 Сообщение
не влияет.
o Когда пользователь делает выбор, отправляется уведомление SCN_USERLISTSELECTION
, а не SCN_AUTOCSELECTION
.
ВНИМАНИЕ: если вы установили заполняющие символы или символы остановки, они остаются активными в пользовательском списке и могут привести к тому, что элементы будут выбраны или список пользователей отменен из-за ввода пользователем в редактор.
SCI_USERLISTSHOW(int listType, const char *itemList)
Параметр listType
возвращается в контейнер как wParam
поле
состав. Он должен быть больше 0, так как Scintilla сообщает разницу между списком автозавершения и списком пользователей. Если у вас есть разные типы списков, например список буферов и список макросов, вы можете использовать listType
, чтобы указать, какой из них был выбран.
Советы по вызову - это небольшие окна, отображающие аргументы функции и отображаемые после того, как пользователь набрал имя функции. Обычно они отображают символы, используя имя, размер и набор символов шрифта, определенные
. Вы можете использовать
, чтобы определить размеры имени, размера, цвета переднего плана и фона и набора символов с помощью
SCI_CALLTIPUSESTYLE
. Это также позволяет поддерживать символы табуляции.
Существует некоторое взаимодействие между подсказками вызовов и списками автозавершения, в которых показано, что подсказка отменяет любой активный список автозавершения и наоборот.
На Qt не выполняются подсказки вызовов.
Советы по вызову могут выделять часть текста внутри них. Вы можете использовать это, чтобы выделить текущий аргумент функции, подсчитав количество запятых (или любой другой разделитель, используемый вашим языком). См. SciTEBase :: CharAdded ()
в SciTEBase.cxx
для примера использования вызова.
Мышь может быть нажата на подсказки вызова, и это вызывает
уведомление отправляется в контейнер. Маленькие стрелки вверх и вниз могут отображаться в подсказке вызова, соответственно, включая символы '\ 001' или '\ 002'. Это полезно для того, чтобы показать, что есть перегруженные варианты одного имени функции и что пользователь может щелкнуть по стрелкам, чтобы циклически перебирать перегрузки.
В качестве альтернативы подсказки вызовов могут отображаться, когда вы некоторое время оставляете указатель мыши над словом в ответ на
уведомление и отменено в ответ на
. Этот метод можно использовать в отладчике, чтобы указать значение переменной или во время редактирования, чтобы предоставить информацию о слове под указателем.
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_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
.
Существует привязка ключей по умолчанию к командам, которые определены в источнике 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 | Показать меню редактирования по умолчанию только при нажатии на текстовую область. |
Запуск и остановка режима макросъемки. В режиме макросъемки действия сообщаются в контейнер через
уведомления . Затем до контейнера записывать эти действия для будущего воспроизведения.
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
.
Приложение должно вызывать метод AddData
с каждым блоком данных, считанным из файла.
AddData
вернет SC_STATUS_OK, если не произойдет сбой, например, исчерпание памяти. Если сбой происходит в AddData
или в вызове чтения файла, загрузка может быть отменена, а загрузчик освобожден при вызове Release
. Когда весь файл был прочитан, необходимо вызвать ConvertToDocument
для создания указателя документа Scintilla. Вновь созданный документ будет иметь счетчик ссылок 1 так же, как указатель документа, возвращенный из
SCI_CREATEDOCUMENT. Нет необходимости вызывать Release
после ConvertToDocument
.
Приложение, которое хочет сохранить в фоновом режиме, должно заблокировать документ с помощью SCI_SETREADONLY (1)
для предотвращения изменений и получения указателя на единое содержимое документа с помощью
SCI_GETCHARACTERPOINTER. Буфер заблокированного документа не будет перемещаться, поэтому указатель действителен до тех пор, пока приложение не вызовет SCI_SETREADONLY (0)
.
Если пользователь пытается выполнить модификацию, пока документ заблокирован, в приложение отправляется уведомление
, Затем приложение может принять решение игнорировать изменение или прекратить фоновый сохраняющий поток и повторно использовать модификацию перед возвратом из уведомления.
Фундаментальная операция при свёртывании делает невидимые или видимые линии невидимыми. Видимость линии - это свойство представления, а не документа, поэтому каждый вид может отображать другой набор строк. С точки зрения пользователя линии скрыты и отображаются с помощью точек сгиба. Как правило, точки сложения документа основаны на иерархической структуре содержимого документа. В 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)
В дополнение к показу маркеров в области сгиба, вы можете указать свёртки пользователю путем рисования линий в текстовой области. Строки рисуются в цвете переднего плана, установленном для . Биты, установленные в
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
. Текст рисуется с помощью
.
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_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 байт на строку.
Обертка не выполняется немедленно, происходит изменение, но задерживается до тех пор, пока дисплей не будет перерисован. Эта задержка повышает производительность, позволяя выполнить набор изменений, а затем завернутый и отображаемый один раз. Из-за этого некоторые операции могут выполняться не так, как ожидалось. Если файл читается и позиция прокрутки перемещается в определенную строку в тексте, например, когда контейнер пытается восстановить предыдущий сеанс редактирования, тогда позиция прокрутки будет определена перед оберткой, поэтому неожиданный диапазон текста будет отображается. Чтобы правильно прокрутить до положения, затяните прокрутку до тех пор, пока обертывание не будет выполнено, ожидая начального
.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
задает размер вложения сублиней для обернутых строк в терминах средней ширины символа в
. Нет ограничений на размеры отступов, но значения, меньшие 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 . Это хорошо работает для моноширинных шрифтов. Строка рисуется в позиции, основанной на ширине символа пробела в , поэтому может не работать очень хорошо если ваши стили используют пропорциональные шрифты или если ваш стиль имеет разные размеры шрифта, или вы используете смесь жирного, курсивного и обычного текста. |
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
Вы можете выбрать лексер для использования с целым кодом из перечисления SCLEX _ *
в Scintilla.h
. В этой последовательности есть два кода, которые не используют лексеры:
SCLEX_NULL
, чтобы выбрать действие без лексинга и SCLEX_CONTAINER
, который отправляет
уведомление контейнера всякий раз, когда требуется текст текста. Вы не можете использовать
Значение 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_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.
Обратите внимание, что «замена ключевого слова», как описано в
не будет выполняться.Если аргумент value равен 0, возвращается длина, которая должна быть выделена для хранения значения; опять же, завершение 0 не включено.
SCI_GETPROPERTYEXPANDED(const char *key, char *value) → int
Поиск ключевого слова: пара значений с использованием указанного ключа; если он найден, скопируйте значение в предоставленный пользователем буфер и верните длину (не включая завершающий 0). Если не найден, скопируйте пустую строку в буфер и верните 0.
Обратите внимание, что «замена ключевого слова», как описано в
.Если аргумент значения равен 0, то длина, которая должна быть выделено для хранения значения (включая любое указанное ключевое слово замена) возвращается; опять же, завершение 0 не включено.
SCI_GETPROPERTYINT(const char *key, int defaultValue) → int
Поиск ключевого слова: пара значений с использованием указанного ключа; если найдено,
интерпретировать значение как целое и вернуть его. Если не найден (или значение - пустая строка), верните
поставляется по умолчанию. Если найдено ключевое слово: пара значений, но не число, то верните 0.
Обратите внимание, что «замена ключевого слова», как описано в
будет выполняться перед любой цифровой интерпретацией.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.
Типы 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
- это английское описание стиля типа " Определение имени функции или метода
".
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
Если вы использовали
, чтобы заставить контейнер действовать как лексер, вы получите это уведомление, когда Scintilla будет для отображения или печати текста, требующего стилизации. Вы должны стилизовать текст из строки, которая содержит позицию, возвращаемую (SCLEX_CONTAINER) 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
Отправляется в контейнер, когда точка сохранения введена или оставлена, что позволяет контейнеру отображать индикатор «грязный документ» и изменять его меню.
См. Также: ,
SCN_MODIFYATTEMPTRO
В режиме только для чтения это уведомление отправляется в контейнер, если пользователь пытается изменить текст. Это можно использовать для проверки документа из системы управления версиями. Вы можете установить состояние документа только для чтения с помощью
.
SCN_KEY
Сообщает, что все клавиши нажаты, но не используются Scintilla. Используется на GTK + из-за некоторых проблем с фокусом клавиатуры и не отправляется версией Windows. SCNotification.ch
содержит код ключа и
SCNotification.modifiers
содержит модификаторы. Это уведомление отправляется, если модификаторы включают SCMOD_ALT
или SCMOD_CTRL
, а код ключа меньше 256.
SCN_DOUBLECLICK
Кнопка мыши была дважды нажата в редакторе. Поле position
установлено в текстовое положение двойного щелчка, поле line
установлено в строку двойного щелчка и модификаторы
устанавливается на ключевые модификаторы, удерживаемые аналогично .
SCN_UPDATEUI
Либо изменился текст или стиль документа, либо изменился диапазон выбора или положение прокрутки. Теперь самое время обновить элементы пользовательского интерфейса контейнера, которые зависят от состояния документа или представления. Поскольку иногда бывает трудно определить, произошло ли изменение, эти события могут также срабатывать, когда фактических изменений не было. В поле updated
установлен бит набор вещей, измененных с момента предыдущего уведомления.
Символ | Значение | Значение |
---|---|---|
SC_UPDATE_CONTENT |
0x01 | Содержание, стиль или маркеры могут быть изменены. |
SC_UPDATE_SELECTION |
0x02 | Выбор может быть изменен. |
SC_UPDATE_V_SCROLL |
0x04 | Можно прокручивать по вертикали. |
SC_UPDATE_H_SCROLL |
0x08 | Может прокручиваться по горизонтали. |
SCN_MODIFIED
Это уведомление отправляется при изменении или изменении текста или стиля документа. Вы можете установить маску для уведомлений, отправленных в контейнер с . Структура уведомлений содержит информацию о том, что изменилось, как произошло изменение и изменилось ли количество строк в документе. Никакие изменения не могут быть выполнены во время события 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 | Этот параметр установлен для действий, которые контейнер хранит в стек отмены | .маркер |
SC_MODEVENTMASKALL |
0x1FFFFF | Это маска для всех допустимых флагов. Это состояние маски по умолчанию, установленное | .None |
SCEN_CHANGE
SCEN_CHANGE
(768) запускается при изменении текста (а не стиля) документа. Это уведомление отправляется с помощью сообщения WM_COMMAND
в Windows и
«командный» сигнал на GTK +, так как это поведение стандартного элемента управления Edit
( SCEN_CHANGE
имеет то же значение, что и элемент управления Windows Edit
EN_CHANGE
). Никакой другой информации не отправляется. Если вам нужна более подробная информация, используйте . Вы можете фильтровать типы изменений, о которых вы уведомлены, с помощью .
SCI_SETMODEVENTMASK(int eventMask)
SCI_GETMODEVENTMASK → int
Эти сообщения устанавливаются и получают маску события, которая определяет, какие события изменения документа уведомляются в контейнере с и . Например, контейнер может решить видеть только уведомления об изменениях текста, а не изменения стиля при вызове
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
и позволяют включать и отключать макросъемку. Когда это разрешено, каждый раз, когда происходит изменение записи,
SCN_MACRORECORD
отправляется в контейнер. Резервное копирование происходит в контейнере. Чтобы просмотреть полный список сообщений SCI _ *
, которые можно записать, выполните поиск источника Scintilla Editor.cxx
для
Редактор :: NotifyMacroRecord
. Поля SCNotification
, установленные в этом уведомлении:
Поле | Использование |
---|---|
message |
Сообщение SCI _ * , вызвавшее уведомление. |
wParam |
Значение wParam в сообщении SCI _ * . |
lParam |
Значение lParam в сообщении SCI _ * . |
SCN_MARGINCLICK
SCN_MARGINRIGHTCLICK
Эти уведомления сообщают контейнеру, что мышь была нажата или щелкнула правой кнопкой мыши внутри поля , которое было помечено как чувствительное (см. ). Это можно использовать для выполнения свёртывания или для размещения точек останова. Используются следующие поля SCNotification
:
Поле | Использование |
---|---|
modifiers |
Соответствующая комбинация SCI_SHIFT ,
SCI_CTRL и SCI_ALT , чтобы указать ключи, которые были удержаны во время клика по краю. |
position |
Позиция начала строки в документе, соответствующая щелчку поля. |
margin |
Номер поля, который был нажат. |
SCN_NEEDSHOWN
Scintilla определила, что диапазон невидимых линий должен быть видимым. Примером того, где это может понадобиться, является то, что конец строки сокращенной точки сбрасывания удаляется. Это сообщение отправляется в контейнер, если он хочет сделать линию видимой каким-то необычным способом, например, сделать весь документ видимым. Большинство контейнеров просто гарантируют, что каждая строка в диапазоне видима, вызывая . Позиция
и
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 из сообщение, инициировавшее список. |
text |
Текст выделения. |
position |
Позиция, в которой был отображен список. |
ch |
Если символом заполнения является метод выбора, используется символ, иначе 0. |
listCompletionMethod |
Значение, указывающее способ, в котором произошло завершение. См. Таблицу ниже. |
уведомление SCN_AUTOCCOMPLETED
для возможных значений для listCompletionMethod.
SCN_URIDROPPED
Только на версии GTK +. Указывает, что пользователь перетащил URI, такой как имя файла или веб-адрес в Scintilla. Контейнер может интерпретировать это как запрос на открытие файла.
text
поля SCNotification
указывает текст URI.
SCN_DWELLSTART
SCN_DWELLEND
SCN_DWELLSTART
генерируется, когда пользователь удерживает мышь в одной позиции для периода ожидания (см.
). SCN_DWELLEND
генерируется после SCN_DWELLSTART
, и мышь перемещается, или другое действие, такое как нажатие клавиши, означает, что время ожидания завершено. Оба уведомления устанавливают одинаковые поля в
SCNotification
:
Поле | Использование |
---|---|
position |
Это ближайшая позиция в документе в позицию, в которой указатель мыши задерживался. |
x, y |
Если указатель задержался. Поле position установлено в
. (x, y) |
SCI_SETMOUSEDWELLTIME(int periodMilliseconds)
SCI_GETMOUSEDWELLTIME → int
Эти два сообщения устанавливаются и получают время, в течение которого мышь должна сидеть неподвижно, в миллисекундах, для создания уведомления
. Если установлено значение SC_TIME_FOREVER
, по умолчанию не создаются события ожидания.
SCN_ZOOM
Это уведомление генерируется, когда пользователь увеличивает масштаб дисплея с помощью клавиатуры или
Вызывается метод SCI_SETZOOM
. Это уведомление может использоваться для пересчета позиций, таких как ширина поля номера строки, чтобы поддерживать размеры в терминах символов, а не пикселей. SCNotification
не содержит дополнительной информации.
SCN_HOTSPOTCLICK
SCN_HOTSPOTDOUBLECLICK
SCN_HOTSPOTRELEASECLICK
Эти уведомления генерируются, когда пользователь нажимает или дважды нажимает на текст, который находится в стиле с набором атрибутов hotspot. Это уведомление может использоваться для ссылки на определения переменных или веб-страницы. В обработчике уведомлений вам следует избегать вызова любой функции, которая изменяет текущую позицию выбора или каретки. В поле position
задается текстовая позиция щелчка или двойного щелчка, а поле modifiers
установлено на модификаторы ключа, удерживаемые аналогично сообщению . Сообщается только состояние клавиши Ctrl для SCN_HOTSPOTRELEASECLICK
.
SCN_INDICATORCLICK
SCN_INDICATORRELEASE
Эти уведомления генерируются, когда пользователь нажимает или отпускает мышь на текст с индикатором. В поле position
задается текстовая позиция щелчка или двойного щелчка, а поле modifiers
установлено на модификаторы ключа, удерживаемые аналогично сообщению .
SCN_CALLTIPCLICK
Это уведомление генерируется, когда пользователь нажимает на подсказку. Это уведомление может использоваться для отображения следующего прототипа функции, когда имя функции перегружено различными аргументами. Поле position
установлено в 1, если щелчок находится в стрелке вверх, 2, если стрелкой вниз, и 0, если в другом месте.
SCN_AUTOCSELECTION
Пользователь выбрал элемент в списке автозавершения . Уведомление отправляется до того, как будет вставлен выбор. Автоматическая вставка может быть отменена путем отправки
перед возвратом из уведомления. Используемые поля 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 из сообщение или 0 для автозавершения. |
text |
Текст выделения. |
position |
Позиция, в которой был отображен список. |
SCN_FOCUSIN
SCN_FOCUSOUT
SCN_FOCUSIN
(2028) запускается, когда Scintilla получает фокус и
SCN_FOCUSOUT
(2029), когда он теряет фокус.
Поддерживаются два формата для изображений, используемых маркерами маркеров и списками автозавершения, RGBA и XPM.
Формат RGBA позволяет получить прозрачность с помощью alpha
значение для каждого пикселя. Это проще, чем
XPM
и более способным.
Данные представляют собой последовательность из четырех байтовых значений пикселей, начиная с пикселей для верхней строки, сначала с самым левым пикселом, а затем с пикселями для последующих строк. Для выравнивания нет разрыва между линиями.
Каждый пиксель состоит из красного байта, зеленого байта, синего байта и альфа-байта. Байты цвета не преломляются альфа-значением. То есть полностью красный пиксель, который будет непрозрачным на 25%, будет [FF, 00, 00, 3F]
Поскольку данные пикселя RGBA не включают информацию о размере, ширина и высота должны быть предварительно установлены с помощью
и .Платформы GUI часто включают функции для чтения форматов файлов изображений, таких как PNG, в память в форме RGBA или в подобной форме. Если поддержка подходящей платформы отсутствует, библиотеки LodePNG и picoPNG являются небольшими библиотеками для загрузки и декодирования файлов PNG, доступных под лицензией типа BSD .
Формат RGBA поддерживается в Windows, GTK + и OS X Cocoa.
Формат XPM здесь . Scintilla может обрабатывать только пиксельные пиксели XPM, которые используют один символ на пиксель без названных цветов. Может быть полностью прозрачный цвет с именем «Нет».
Существуют две формы структуры данных, используемые для изображений XPM, первый формат «линий» хорошо подходит для встраивания изображения в исходный код C, а «текстовая форма» подходит для чтения из файла. В форме линий используется массив строк с первой строкой, указывающей размеры и количество используемых цветов. За этим следует строка для каждого цвета, и за этим разделом следует изображение с одной строкой в ??строке. Текстовая форма содержит те же данные, что и один блок с нулевым завершением, отформатированный как исходный код C, начинающийся с комментария «/ * XPM * /» для маркировки формата.
Любой формат может использоваться с API-интерфейсами Scintilla с байтами в местоположении, указанном для проверки, чтобы определить, какой формат: если байты начинаются с «/ * XPM * /», тогда он рассматривается как текстовая форма, в противном случае он рассматривается как линии.
Формат XPM поддерживается на всех платформах.
В 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 стилей.
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 или 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_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
.