By character or UTF-16 code unit
整体介绍
大多数Scintilla的API使用字节位置,但一些应用程序希望使用基于计数(UTF-32)字符或(UTF-16)代码单元的位置,或者需要与以字符或代码单元编写的其他代码通信。由于只有字节位置,这可能需要检查许多字节来计算文档中的字符或代码单位,但在某些情况下,可以通过索引以字符或代码单位开头的行来加快速度。
SCI_POSITIONRELATIVE
SCI_POSITIONRELATIVE(position pos, position relative) → position
计算参数位置前后的整字符数,并返回该位置。返回的最小位置为0,最大位置为文档中的最后一个位置。如果位置超过文档结尾,则返回0。
SCI_COUNTCHARACTERS
SCI_COUNTCHARACTERS(position start, position end) → position
返回两个位置之间的整字符数。
SCI_POSITIONRELATIVECODEUNITS,SCI_COUNTCODEUNITS
SCI_POSITIONRELATIVECODEUNITS(position pos, position relative) → position SCI_COUNTCODEUNITS(position start, position end) → position
这两个消息是SCI_POSITIONRELATIVE和SCI_COUNTCHARACTERS的UTF-16版本,以UTF-16的编码方式运行。
SCI_GETLINECHARACTERINDEX
SCI_GETLINECHARACTERINDEX
如果任何索引处于活动状态,则返回该值。如果对整个字符进行索引,则可以是SC_LINECHARACTERINDEX_NONE(0)或一个或多个SC_LINECHARACTERINDEX_UTF32(1),如果对UTF-16代码单元进行索引,则可以是SC_LINECHARACTERINDEX_UTF16(2)。字符索引目前仅支持UTF-8文档。
SCI_ALLOCATELINECHARACTERINDEX,SCI_RELEASELINECHARACTERINDEX
SCI_ALLOCATELINECHARACTERINDEX(int lineCharacterIndex) SCI_RELEASELINECHARACTERINDEX(int lineCharacterIndex)
使用与SCI_GETLINECHARACTERINDEX相同的枚举分配或发布一个或多个索引。应用程序的不同方面可能需要不同时段的索引,并且应该为这些时段分配索引。索引使用额外的内存,因此释放它们可以帮助最小化内存,但它们也需要时间重新计算。Scintilla还可以分配索引以支持可访问性或输入法编辑器等功能。一次仅为文档创建一个每种类型的索引。
SCI_LINEFROMINDEXPOSITION,SCI_INDEXPOSITIONFROMLINE
SCI_LINEFROMINDEXPOSITION(position pos, int lineCharacterIndex) → line SCI_INDEXPOSITIONFROMLINE(line line, int lineCharacterIndex) → position
通过使用SC_LINECHARACTERINDEX_UTF32(1)或SC_LINECHARACTERINDEX_UTF16(2)中的一个调用SCI_LINEFROMINDEXPOSITION,可以找到特定字符或代码单元的文档行。相反的操作是,通过使用相同的lineCharacterIndex参数调用SCI_INDEXPOSITIONFROMLINE,从文档开始以字符或代码单位查找文档行的起始位置。