有没有办法在Visual Studio代码编辑器(C / C ++或C#)中以编程方式确定当前插入位置位于注释块内(" //"或/ * *之间) /)?我试着像这样使用IContentType:
if ( m_textView.TextBuffer.ContentType.TypeName == "comment" )
但似乎ContentType.BaseTypes只包含更多的常规内容类型(例如" text"," code"," C / C ++")与整个文件有关。
答案 0 :(得分:2)
您应该能够使用IClassifierAggregatorService
来访问编辑器中用于语法突出显示的分类。如果你没有打败我,我今晚会发布一个更完整的例子,显示在插入符号下提取IClassificationType
文本。
答案 1 :(得分:1)
ContentType
属性是指ITextBuffer
实例的内容。这通常是C#,文本,代码等......它不包含注释或关键字等语义信息
不幸的是,目前没有好的API可以公开这些信息。注释是一种特定于语言的构造,目前Visual Studio中唯一的通用语言API是代码模型,我不认为它支持注释。
将来,像Roslyn这样的API将提供您正在寻找的信息。这至少在Visual Studio 2013之后的版本中才可用
修改强>
有人猜测IClassificationType
是否可用于获取有关评论的信息。在高水平,这确实可以使用,虽然它可能是我会避免做的事情。过去几次我一直被咬过来试图根据需要从分类器中获取信息。你可以遇到很多微妙的性能问题。