Implementing "squiggle" text line markers in JSLint.NET was quite straight forward as can be seen here:

squiggles

However, despite implementing IVsTextMarkerClient with the GetTipText method, tooltips are never shown. The GetTipText method is never even invoked when the mouse hovers over the marker.

If I switch to a glyph type (for example MARKERTYPE.MARKER_SHORTCUT), tooltips show just fine in the margin:

glyph

Is there some trick to getting tooltips to show on the body of an inline text marker?

Implementation source code is available here in the SetMarker method:

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

有帮助吗?

解决方案

It turns out that the answer (to "is it possible?") is no when using the old IVsTextMarkerClient and IVsTextLines implementations.

It can be achieved by implementing the newer ITag / ITagger / ITaggerProvider interfaces instead. My current prototype looks like this:

squiggle with tips

Source code available here:

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

Hope it helps someone else!

其他提示

This works for me, although it is not specific for a text line marker... you'd have to implement that in the background:

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;
  }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top