在 MSVC 中,快捷键 Ctrl+Up 将光标置于文本编辑器窗格的顶行。同样,Ctrl+Down 将光标置于窗格底部。
为了创建 C# VSIX 扩展,获取这些顶行和底行数字的代码是什么?
我这样做的目的是创建一个跳转到窗格垂直中心的快捷方式。 我的代码目前处于这样的位置:
private void JumpVCenter()
{
// Clear our current selection when we jump.
View.Selection.Clear();
CaretPosition caretPos = View.Caret.Position;
ITextBuffer buffer = View.TextBuffer;
ITextSnapshot snapshot = buffer.CurrentSnapshot;
SnapshotPoint start = caretPos.BufferPosition;
// Code here to get the top/bottom line number of the pane.
// ...
}
我没有找到有关此的文档。经过一段时间的尝试,我找到了一个令我满意的解决方案。即使在运行时更改编辑器文本的大小,该解决方案似乎也会生成正确的行号。
private void JumpVCenter()
{
var lineTop = View.TextViewLines.GetTextViewLineContainingYCoordinate(View.ViewportTop);
var topNum = lineTop.Start.GetContainingLineNumber() + 1;
var lineBot = View.TextViewLines.GetTextViewLineContainingYCoordinate(View.ViewportBottom);
var botNum = lineBot.Start.GetContainingLineNumber();
}