我想在 AvalonEdit 中实现类似于 Visual Studio 中的“虚拟空间”功能。
即插入符号可以位于文本行末尾之外,如果您按任意键,则会自动添加空格以进行匹配。
我非常习惯这个功能,但是谷歌搜索和研究 AvalonEdit 的代码都没有给我任何关于如何启用它的线索,如果它完全受支持的话。
如果不是,建议如何扩展插入符号处理机制会很好。
谢谢!
我想在 AvalonEdit 中实现类似于 Visual Studio 中的“虚拟空间”功能。
即插入符号可以位于文本行末尾之外,如果您按任意键,则会自动添加空格以进行匹配。
我非常习惯这个功能,但是谷歌搜索和研究 AvalonEdit 的代码都没有给我任何关于如何启用它的线索,如果它完全受支持的话。
如果不是,建议如何扩展插入符号处理机制会很好。
谢谢!
编辑:虚拟空间支持已添加到版本 4.2.0.8283 中的 AvalonEdit。设置textEditor.Options.EnableVirtualSpace = true;
。
以下是我的原始答案。
目前不支持。
如果您想尝试添加它,请确保您阅读了“坐标系”文档(在 CodeProject 的帮助文件中)。您需要扩展“可视列”,以便行尾之后的位置有效。而且您必须调整位置<->列计算(VisualLine.GetVisualColumn 和朋友)。使用 TextView.WideSpaceWidth 找出超过行尾的列。
以上应该允许您使用鼠标将插入符号放置在虚拟空间中。之后,您需要更改插入符号移动(箭头键、CaretNavigationCommandHandler)和文本输入逻辑(TextArea.PerformTextInput)以支持虚拟空间。
如果您成功完成上述步骤,请不要忘记将您的更改贡献回 AvalonEdit。:-) 虽然我自己不喜欢虚拟空间,但我们需要类似的东西来使 RectangleSelection 正常工作。