如何在Visual Studio中确定当前插入符号的位置在注释块中

本文关键字:符号 插入 位置 注释 Visual Studio | 更新日期: 2023-09-27 17:52:39

是否有一种方法可以在Visual Studio代码编辑器(C/c++或c#)中以编程方式确定当前插入符号位置在注释块内(在"//"之后或/* */之间)?我尝试像这样使用IContentType:

if ( m_textView.TextBuffer.ContentType.TypeName == "comment" ) 

,但似乎ContentType。BaseTypes只包含与整个文件相关的更一般的内容类型(如"text","code","C/c++")。

如何在Visual Studio中确定当前插入符号的位置在注释块中

您应该能够使用IClassifierAggregatorService访问编辑器中用于语法高亮显示的分类。如果你没有打败我,我将在今晚发布一个更完整的例子,展示插入符号下文本的IClassificationType的提取。

ContentType属性是指ITextBuffer实例的内容。这通常是c#、文本、代码等。它不包含诸如注释或关键字

之类的语义信息不幸的是,目前还没有很好的API来公开这些信息。注释是一种特定于语言的结构,目前Visual Studio中唯一通用的语言API是代码模型,我认为它不支持注释。在未来,像Roslyn这样的api将提供你正在寻找的信息。这至少要到Visual Studio 2013之后的版本才能使用

编辑

有一些关于IClassificationType是否可以用来获取评论信息的猜测。在高层次上,这确实可以使用,尽管我可能会避免这样做。在过去的几次尝试中,我一直试图根据需要从分类器中获取信息。你可能会遇到很多微妙的完美问题。