我使用 ITextParagraphPropertiesFactoryService 类创建了一个扩展,以自定义方式与编辑器选项卡进行格式对比。一切正常,期待这样一个事实,当用户输入新行时,ITextParagraphPropertiesFactoryService 不会影响新行
为了简化问题,我创建了一个新的 MEF 项目,添加这样的格式提供程序
[Export(typeof(ITextParagraphPropertiesFactoryService))]
[ContentType("text")]
[TextViewRole(PredefinedTextViewRoles.Document)]
internal class ElasticTabstopsProvider : ITextParagraphPropertiesFactoryService
{
/// <summary>
/// Creates an ElasticTabstopsFormatters for
/// the provided configuration.
/// </summary>
public TextParagraphProperties Create(IFormattedLineSource formattedLineSource, TextFormattingRunProperties textProperties,
IMappingSpan line, IMappingPoint lineStart, int lineSegment)
{
return new TextFormattingParagraphProperties(textProperties, 1);
}
}
它会将我的编辑器中的所有选项卡宽度更改为 1。太好了!这就是我要的。但是现在当我按 Enter(新行)时,新光标设置在 Main 下,但是我希望制表符宽度为 1。
在我开始打字后,它会转到预期的位置。
问题是,如何设置新行空行标签大小?我尝试覆盖ISmartIndentProvider
,但似乎 vs 忽略了该值。
调试器在方法中的断点处停止
int? GetDesiredIndentation(ITextSnapshotLine currentLine)
的ISmartIndent
,但无论我返回什么值,缩进都保持不变......