如果启用换行,如何获取第一个显示的文档行号?
How to get first displayed document line number if line wrapping is enabled?
我使用 SCI_GETFIRSTVISIBLELINE
的 Scintilla 来获取文档的第一行显示。
现在,我通过将 SCI_SETWRAPMODE
设置为 SC_WRAP_WORD
来启用自动换行模式。但是 SCI_GETFIRSTVISIBLELINE
不再匹配文档行。
有没有办法获取第一个显示的文档行(还有,如何知道显示的行是否是换行的一部分)? Scintilla 本身知道这一点,因为正确的行号显示在文本之前(启用 SC_MARGIN_NUMBER
时)。
Update: 可见行的第一个文档行可以通过调用SCI_DOCLINEFROMVISIBLE
得到SCI_GETFIRSTVISIBLELINE
的结果。然而,检测部分线条仍然是一个问题。
第一个可见行对应的文档行可以通过调用SCI_DOCLINEFROMVISIBLE
得到SCI_GETFIRSTVISIBLELINE
的结果:DOCLINEFROMVISIBLE(GETFIRSTVISIBLELINE())
第二部分有点棘手,对我来说似乎有点老套:
首先,我用第一行的文档行号调用 SCI_WRAPCOUNT
并获取该行使用的行数。如果 SCI_WRAPCOUNT()>1
它是部分行的候选者。跳过的行数可以用SCI_DOCLINEFROMVISIBLE(SCI_GETFIRSTVISIBLELINE() + SCI_WRAPCOUNT() - 1) - SCI_DOCLINEFROMVISIBLE(SCI_GETFIRSTVISIBLELINE())
.
来计算
我使用 SCI_GETFIRSTVISIBLELINE
的 Scintilla 来获取文档的第一行显示。
现在,我通过将 SCI_SETWRAPMODE
设置为 SC_WRAP_WORD
来启用自动换行模式。但是 SCI_GETFIRSTVISIBLELINE
不再匹配文档行。
有没有办法获取第一个显示的文档行(还有,如何知道显示的行是否是换行的一部分)? Scintilla 本身知道这一点,因为正确的行号显示在文本之前(启用 SC_MARGIN_NUMBER
时)。
Update: 可见行的第一个文档行可以通过调用SCI_DOCLINEFROMVISIBLE
得到SCI_GETFIRSTVISIBLELINE
的结果。然而,检测部分线条仍然是一个问题。
第一个可见行对应的文档行可以通过调用SCI_DOCLINEFROMVISIBLE
得到SCI_GETFIRSTVISIBLELINE
的结果:DOCLINEFROMVISIBLE(GETFIRSTVISIBLELINE())
第二部分有点棘手,对我来说似乎有点老套:
首先,我用第一行的文档行号调用 SCI_WRAPCOUNT
并获取该行使用的行数。如果 SCI_WRAPCOUNT()>1
它是部分行的候选者。跳过的行数可以用SCI_DOCLINEFROMVISIBLE(SCI_GETFIRSTVISIBLELINE() + SCI_WRAPCOUNT() - 1) - SCI_DOCLINEFROMVISIBLE(SCI_GETFIRSTVISIBLELINE())
.