我使用ITextParagraphPropertiesFactoryService类以自定义方式创建了扩展,即格式vs编辑器选项卡。一切都运行得很好,希望这样的事实,即当用户进入新的生产线,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键(新行)新光标主营下设,但是我希望标签宽度为1
我开始输入它关系到预期位置之后。
的问题是,我怎么可以设置新行空行标签的大小? 我尝试覆盖ISmartIndentProvider
,但似乎与忽略该值。
Debuger停在断点方法
int? GetDesiredIndentation(ITextSnapshotLine currentLine)
的
ISmartIndent
,但缩进保持不变,不管我回什么价值?
感谢杰森的回答,比我没有看到ISmartIndetProvider的原因,它甚至在最简单的情况下也不起作用,但是您能否提供一个快速提示,以便如何更改制表符分割并返回到智能从代码? –
该接口的存在是为了让语言服务能够指定他们希望缩进如何工作。它的目的不是允许扩展来覆盖语言服务的行为。更改特定语言的缩进的API是[IVsTextManager.SetUserPreferences](http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.textmanager.interop.ivstextmanager.setuserpreferences.aspx)。你可能想在网上挖掘使用,这些API有点奇怪。 –
我看到杰森,我会检查关闭智能缩进,但我认为这不是我的情况,我需要注意,但我需要将它设置到正确的位置......有没有任何服务可以自己设置当前位置? –