Scintilla保持一个在两个点(锚定点和当前位置)之间延伸的选择。如果定位点和当前位置相同,则没有选定的文本。文档中的位置范围从0(第一个字符之前)到文档大小(最后一个字符之后)。如果使用消息,则可以设置CRLF对中间的一个位置,或者在2字节字符的中间。但是,键盘命令不会将插入符号移动到此类位置。
SCI_GETTEXTLENGTH → position SCI_GETLENGTH → position
这两条消息都返回文档的长度(字节)。
SCI_GETLINECOUNT → line
这将返回文档中的行数。空文档包含一行。仅包含行尾序列的文档有两行。
SCI_LINESONSCREEN → line
这将返回屏幕上可见的完整行数。对于恒定的行高度,这是可用的垂直空间除以线间距。除非将窗口的大小调整为整条线,否则视图底部可能有一条可见的局部线。
SCI_GETMODIFY → bool
如果文档已修改,则返回非零;如果未修改,则返回0。文档的修改状态由相对于保存点的撤消位置确定。保存点由SCI_SETSAVEPOINT设置,通常在将数据保存到文件时设置。
如果您需要在文档被修改时得到通知,Scintilla将通知容器它已进入或离开保存点,并显示SCN_SAVEPOINTREACHED和SCN_SAVEPOINTLEFT通知消息。
SCI_SETSEL(position anchor, position caret)
该消息设置锚点和当前位置。如果插入符号为负数,则表示选中至文档结尾。如果锚点为负值,则表示删除任何选择(即将锚点设置为与插入符号相同的位置)。执行此操作后,插入符号将滚动到视图中。
SCI_GOTOPOS(position caret)
该消息将删除所有选择,将插入符号设置为插入符号,并在必要时滚动视图以使插入符号可见。它相当于SCI_SETSEL(caret, caret)。锚定位置设置为与当前位置相同。
SCI_GOTOLINE(line line)
该消息将删除所有选择,并在行号行的开头设置插入符号,并滚动视图(如果需要)使其可见。锚点位置设置为与当前位置相同。如果行在文档中的行之外(第一行为0),则行集为第一行或最后一行。
SCI_SETCURRENTPOS(position caret)
该消息将设置当前位置,并在定位点和当前位置之间创建选择。插入符号不会滚动到视图中。
SCI_GETCURRENTPOS → position
该消息将返回当前位置。
SCI_SETANCHOR(position anchor)
这将设置锚点位置,并在锚点位置和当前位置之间创建选择。插入符号不会滚动到视图中。
SCI_GETANCHOR → position
该消息将返回当前锚点位置。
SCI_SETSELECTIONSTART(position anchor) SCI_SETSELECTIONEND(position caret)
这些选项基于锚点位置小于当前位置的前置条件设置选择。它们不会使插入符号可见。该表显示了锚的位置和使用这些消息后的当前位置。
New value for | 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(position caret)
这将删除所有选择并将插入符号设置为插入符号。插入符号不会滚动到视图中。
SCI_SELECTALL
这将选择文档中的所有文本。当前位置不会滚动到视图中。
SCI_LINEFROMPOSITION(position pos) → line
此消息返回文档中包含位置pos的行。如果pos<=0,则返回值为0。如果pos超出文档末尾,则返回值是最后一行。
SCI_POSITIONFROMLINE(line line) → position
此消息返回文档中包含位置pos的行。如果pos<=0,则返回值为0。如果pos超出文档末尾,则返回值是最后一行。
SCI_POSITIONFROMLINE(line line) → position
这将返回与行首相对应的文档位置。如果行为负数,则返回保留选择开始的行的位置。如果行大于文档中的行,则返回值为-1。如果行数等于文档中的行数(即,超过最后一行1行),则返回值为文档的结尾。
SCI_GETLINEENDPOSITION(line line) → position
这将返回任何行尾字符之前的行尾位置。如果行是文档中的最后一行(没有任何行尾字符)或更大,则结果是文档的大小。如果行为负数,则结果未定义。
SCI_LINELENGTH(line line) → position
这将返回行的长度,包括任何行尾字符。如果行为负数或超出文档中的最后一行,则结果为0。如果希望行长不包含任何行尾字符,请使用SCI_GETLINEENDPOSITION(line)-SCI_POSITIONFROMLINE(line)。
SCI_GETSELTEXT(
, char *text NUL-terminated) → position
这会将当前选定的文本和终止的0字节复制到文本缓冲区。缓冲区大小应通过使用文本参数SCI_GETSELTEXT(0,0)的空指针进行调用来确定。这允许矩形和不连续选择以及简单选择。有关如何复制多个和矩形选择以及虚拟空间的信息,请参见多个选择。
SCI_GETCURLINE(position length, char *text NUL-terminated) → position
这将检索包含插入符号的行的文本,并返回插入符号行内的位置。传入char*文本,指向一个足够大的缓冲区,以容纳要检索的文本和一个终止的0字符。将长度设置为缓冲区的长度,该长度必须至少为1才能容纳终止的0字符。如果文本参数为0,则返回应分配用于存储整个当前行的长度。
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(line line) → position SCI_GETLINESELENDPOSITION(line line) → position
在给定行检索选择的开始和结束位置,如果此行没有选择,则返回INVALID_POSITION。
SCI_MOVECARETINSIDEVIEW
如果插入符号不在视图的顶部或底部,则会将其移动到其当前位置可见的最近直线上。任何选择都将丢失。
SCI_POSITIONBEFORE(position pos) → position SCI_POSITIONAFTER(position pos) → position
这两个消息返回所设置位置的字符前一个字符位置与后一个字符位置。返回的最小位置为0,最大位置为文档中的最后一个位置。如果使用多字节字符内的位置调用,将返回该字符的开始/结束位置。
SCI_TEXTWIDTH(int style, const char *text) → int
这将返回以给定样式绘制的字符串的像素宽度,该宽度可用于确定行号边距的宽度,以显示给定数量的数字。
SCI_TEXTHEIGHT(line line) → int
这将返回特定行的高度(以像素为单位)。目前所有线条的高度都相同。
SCI_GETCOLUMN(position pos) → position
此消息返回文档中考虑了选项卡宽度的位置pos的列号。这将返回pos前一行上最后一个制表符的列号,加上最后一个制表符和pos之间的字符数。如果该行上没有制表符,则返回值为该行上该位置的字符数。在这两种情况下,双字节字符都算作单个字符。这可能只对单间距字体有用。
SCI_FINDCOLUMN(line line, position column) → position
此消息返回一行中列的位置,并考虑制表符的宽度。它将多字节字符视为一列。列编号,与行一样,从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(
, position pos) → int SCI_POINTYFROMPOSITION(, position pos) → int
这些消息返回文档中位置pos处文本的x和y显示像素位置。
SCI_HIDESELECTION(bool hide)
正常状态是通过按照SCI_SETSELFORE和SCI_SETSELBACK的设置绘制选择,使其可见。但是,如果隐藏所选内容,则会将其绘制为普通文本。
SCI_CHOOSECARETX
Scintilla记忆用户明确水平移动到的最后一个位置的x值,然后在垂直移动时使用该值,例如使用上下键。此消息将插入符号的当前x位置设置为记忆值。
SCI_MOVESELECTEDLINESUP
将选定的行上移一行,在选择后将行上移。所选内容将自动扩展到所选内容第一行的开头和最后一行的结尾。如果未选择任何内容,将选择光标当前所在的行。
SCI_MOVESELECTEDLINESDOWN
将所选行下移一行,在选择之前下移一行。所选内容将自动扩展到所选内容第一行的开头和最后一行的结尾。如果未选择任何内容,将选择光标当前所在的行。
SCI_SETMOUSESELECTIONRECTANGULARSWITCH(bool mouseSelectionRectangularSwitch) SCI_GETMOUSESELECTIONRECTANGULARSWITCH → bool
启用或禁用在使用鼠标进行选择时切换到矩形选择模式的功能。启用此选项后,通过按相应的修改器键,可以将流模式中的鼠标选择切换到矩形模式。然后,即使再次释放修改器关键点,它们也会保持矩形模式。关闭此选项后,鼠标选择将始终保持在启动选择的模式。默认情况下,它处于关闭状态。