【问题标题】:VisualStudio completion session dismissed when removing completion set删除完成集时,VisualStudio 完成会话被取消
【发布时间】:2015-12-08 19:39:55
【问题描述】:

我正在尝试在 VisualStudio IDE 中扩展 html 完成。我将它用于框架,它将 html 标记与自定义表达式相结合。我需要添加对这些表达式的支持。问题是,当我实现我的CompletionSource 来为标记中的自定义元素提供补全时,已经有一个 CompletionSet,特别是 HtmlCompletionSet 在 completionSets 中传递了我的CompletionSource 的 AugmentCompletionSession。我应该添加我在CompletionSourceProvider 上使用[Order(After = "default")] 属性以确保我的完成在html 完成之后进行。

问题是我不希望 html 补全中的任何内容显示在我的自定义元素上。我想摆脱整个HtmlCompletionSet

所以这是我尝试过的:

  1. 填写我自己的完成集
  2. 将我的完成集添加到 completionSets
  3. 检查是HtmlCompletionSet 在那里
  4. 删除 HtmlCompletionSet 如果有/更新完成集使其为空

这会导致完成会话消失。我猜它会自动被解雇或其他什么。我应该怎么办?有什么优雅的方法可以解决这个问题吗?

【问题讨论】:

  • 一般来说,CompletionSet API 并不是真正为“替换现有事物”而设计的;他们的模型是仅附加的。您可能需要专门询问 HTML 编辑器人员是否有更具体的扩展点。
  • 感谢您的回复。问题是我不知道该联系谁来回答这些问题。
  • 是的,老实说我也不行。 :-/ 让我在内部发送一封电子邮件。

标签: c# html visual-studio visual-studio-extensions


【解决方案1】:

扩展/修改 html 完成集的最佳方法是通过 IHtmlCompletionListProvider 添加新项目,或通过 IHtmlCompletionListFilter 过滤掉现有的完成条目。传递给这些接口上的方法的 HtmlCompletionContext 应该为您提供足够的上下文来确定您需要什么。

【讨论】:

  • 感谢您的回复。我正在这样做。我正在尽可能地做。也就是说,如果我想添加自定义 html 元素、自定义属性或自定义属性值。 IHtmlCompletionListProviderIHtmlCompletionListFilter 对此有好处。然而,我的问题是。对于具有完全不同语法的自定义表达式,我还需要智能感知。这意味着我必须在不同的字符上触发智能感知,在不同的字符上提交......等等。但仍然在同一个 html 文档中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-16
相关资源
最近更新 更多