【发布时间】:2015-09-17 18:31:37
【问题描述】:
我正在为 Visual Studio 创建一个非常简单的扩展。我试图使扩展仅在使用 python 文件类型时才处于活动状态。我找到了this 并尝试将其应用于我的情况,但我认为我遗漏了一些东西。该扩展程序可以与 python 文件一起正常工作,但当我希望它忽略它们时,它也可以与其他文件类型保持活动状态。
到目前为止,我按照演练制作了这个课程:
static class FileAndContentTypeDefinitions
{
[Export]
[Name("py")]
[BaseDefinition("text")]
internal static ContentTypeDefinition hidingContentTypeDefinition;
[Export]
[FileExtension(".py")]
[ContentType("py")]
internal static FileExtensionToContentTypeDefinition hiddenFileExtensionDefinition;
}
然后,在 SourceProvider 和 HandlerProvider 中我有:
[Export]
[ContentType("py")]
这使 python 文件类型能够工作,但在打开其他文件类型时不会禁用扩展。有没有办法做到这一点?
编辑:我意识到这太模棱两可了。该扩展根据前面出现的方法签名(如果适用)为 python doc cmets 提供了完成建议。这在键入“”时触发。我希望这只发生在 python 文件中。
其他出口是: 来自 HandlerProvider
[Export]
[ContentType("py")]
[Export(typeof(IVsTextViewCreationListener))]
[Name("token completion handler")]
[ContentType("text")]
[TextViewRole(PredefinedTextViewRoles.Editable)]
来自源提供者
[Export]
[ContentType("py")]
[Export(typeof(ICompletionSourceProvider))]
[ContentType("text")]
[Name("token completion")]
我还要补充一点,因为这是我第一次涉足扩展创建,所以我非常密切地遵循了 MSDN 演练。结果,我不相信我能解释代码的每一点(翻译:我不知道它做了什么)。
【问题讨论】:
-
“禁用扩展”是什么意思?你想防止什么?
-
啊,好点。所以这个扩展为python doc cmets提供了一个补全,当输入'''时触发。我希望这只发生在 python 文件中。
-
请向我们展示您导出的服务。
-
嗨@SLaks 我刚刚更新了我的问题。希望对您有所帮助!
标签: c# visual-studio mef visual-studio-extensions file-type