【问题标题】:Visual Studio Package: Is it possible to show tooltips on text line markers?Visual Studio 包:是否可以在文本行标记上显示工具提示?
【发布时间】:2013-09-28 01:06:13
【问题描述】:

在 JSLint.NET 中实现“squiggle”文本行标记非常简单,如下所示:

但是,尽管使用 GetTipText 方法实现 IVsTextMarkerClient,但工具提示永远不会显示。当鼠标悬停在标记上时,甚至不会调用 GetTipText 方法。

如果我切换到字形类型(例如 MARKERTYPE.MARKER_SHORTCUT),工具提示会在页边空白处显示得很好:

是否有一些技巧可以让工具提示显示在内嵌文本标记的主体上?

SetMarker 方法中提供了实现源代码:

https://jslintnet.codeplex.com/SourceControl/changeset/view/f27a513c14bbfbf787ddb66485ae6c4404dc8352#source/JSLintNet.VS2012/JSLintErrorTask.cs

【问题讨论】:

    标签: c# visual-studio visual-studio-2012 visual-studio-sdk visual-studio-package


    【解决方案1】:

    事实证明,当使用旧的 IVsTextMarkerClient 和 IVsTextLines 实现时,答案(“可能吗?”)是否定的。

    可以通过实现较新的 ITag / ITagger / ITaggerProvider 接口来实现。我目前的原型是这样的:

    这里有源代码:

    https://jslintnet.codeplex.com/SourceControl/changeset/view/077d348a1fdf819ce13ceb984bae8000ce76a63d#source/JSLintNet.VS2012/Errors/JSLintTagger.cs

    希望对其他人有所帮助!

    【讨论】:

      【解决方案2】:

      这对我有用,虽然它不是特定于文本行标记...你必须在后台实现它:

      public class MyAuthoringScope : AuthoringScope
      {
        ...
        public override string GetDataTipText(int line, int col, out TextSpan span)
        {
              string info;
              TokenInfo tokenInfo = this._source.GetTokenInfo(line, col);
               ...
              return info;
        }
      }
      

      【讨论】:

      • 很有趣,谢谢。我还没有考虑过使用 Microsoft.VisualStudio.Package.AuthoringScope。您介意从您的实现中提供更多上下文吗?
      • 没关系,似乎 ITagger + IErrorTag 最适合我正在尝试做的事情。再次感谢。
      猜你喜欢
      • 2019-11-09
      • 1970-01-01
      • 2017-12-05
      • 1970-01-01
      • 1970-01-01
      • 2019-02-02
      • 1970-01-01
      • 2014-12-17
      相关资源
      最近更新 更多