Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate to the new async QuickInfo API #24094

Closed
olegtk opened this issue Jan 8, 2018 · 7 comments
Closed

Migrate to the new async QuickInfo API #24094

olegtk opened this issue Jan 8, 2018 · 7 comments
Assignees
Labels
Area-IDE Resolution-Fixed The bug has been fixed and/or the requested behavior has been implemented
Milestone

Comments

@olegtk
Copy link
Contributor

olegtk commented Jan 8, 2018

Since VS 2017 15.6 the editor supports new async/cross-IDE QuickInfo. IQuickInfo* API is now deprecated.
This issue tracks migrating Roslyn to the new async QuickInfo API.

@olegtk olegtk added the Area-IDE label Jan 8, 2018
@jinujoseph jinujoseph added this to the 15.6 milestone Jan 8, 2018
@jinujoseph jinujoseph modified the milestones: 15.6, 15.7 Jan 12, 2018
@jinujoseph
Copy link
Contributor

refer #20554 while doing this

@gundermanc
Copy link
Member

Spec document for IDE Async Quick Info support can be found here: https://microsoft.sharepoint.com/:w:/t/DD_VSIDE/EZ86OPBZuwlMqOfXkF4bn7oBlOoTZhWjaHu2mDV0Tr-HHg?e=c68c0c69ee8c488d8a364ab33bc1d6fc

Please reach out with any questions.

@gundermanc
Copy link
Member

Are we sure we want to delay this to 15.7? There is a quick info flicker regression that resulted from the underlying API change that regresses the user experience in lightbulb. The problem is that the new API does not support recomputation of the content of an already visible quick info tip, but Roslyn relies on this behavior to not block the UI thread. The flicker tends to occur when querying quick info over an error squiggle.

@jinujoseph
Copy link
Contributor

cc @DustinCampbell

@CyrusNajmabadi
Copy link
Member

CyrusNajmabadi commented Jan 25, 2018

Please reach out with any questions.

I can't seem to read that doc. Is it limited to only teh MS organization? Any way that could be made public?

@gundermanc
Copy link
Member

Sure! I'll try to put it up tomorrow.

@gundermanc
Copy link
Member

Alright, it's up:

Modern Quick Info API for porting the quick info provider and Modern ToolTip API for information about the tooltips APIs upon which they are based.

A few things to look out for:

  • Roslyn's event hookup feature used hacks to remove other provider's items from quick info and swallow keystrokes to keep it alive while the user was typing. I dropped the ability to remove content from other sources, so, this feature should be re-implemented using the IToolTipService. It's designed with exactly this scenario in mind, so, there is a parameter you can pass to keep the ToolTip alive during keystroke.
  • IViewElementFactoryService is a more generic form of Roslyn's IDeferredQuickInfoContent. You give us ClassifiedTextRuns that map to editor classifications and simply convert them to spans of text formatted per those classifications. The wiki has a bit more info.

Let me know if you need any more info.

@JieCarolHu JieCarolHu added the 4 - In Review A fix for the issue is submitted for review. label Mar 15, 2018
@jinujoseph jinujoseph modified the milestones: 15.7, 15.8 Mar 27, 2018
@JieCarolHu JieCarolHu added Resolution-Fixed The bug has been fixed and/or the requested behavior has been implemented and removed 4 - In Review A fix for the issue is submitted for review. labels Apr 25, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area-IDE Resolution-Fixed The bug has been fixed and/or the requested behavior has been implemented
Projects
None yet
Development

No branches or pull requests

6 participants