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

Suggestion: Super Quick Info group separators #244

Closed
IneedHelp opened this issue Mar 2, 2023 · 33 comments
Closed

Suggestion: Super Quick Info group separators #244

IneedHelp opened this issue Mar 2, 2023 · 33 comments
Assignees
Labels
enhancement QuickInfo Tool tip and quick info

Comments

@IneedHelp
Copy link

Hello! Big fan of your extension, it's a wonderful tool.

I'm wondering if it would be possible to add an option for Super Quick Info groups to be visually separated similar to this style:
image

It looks this way because I am using your extension combined with Enhanced ToolTips from ReSharper (which unfortunately is conflicting with Super Quick Info in the sense that it doesn't allow interacting with it).

@wmjordan
Copy link
Owner

wmjordan commented Mar 2, 2023

Hi, @IneedHelp you are welcome.

@fitdev, could you take the trouble commenting on this.

@fitdev
Copy link

fitdev commented Mar 2, 2023

I am not 100% sure what exactly is meant by @IneedHelp , but if borders / extra padding is what is meant, then personally I do not think it's a good idea to do it in all logical sections, as it will lead to too much visual distraction in some cases (like too many horizontal lines / rectangles). It may make sense to perhaps add just horizontal line separators to visually split the tooltip into header, body, and footer (although how these sections should be defined is up to one's preference).

On a related note about information presentation in Super Quick Infos, perhaps the returns subsection of the signature of a member can be improved by including information about ref and readonly / readonly ref variants (right now this information is not shown at all) - perhaps by simply listing those keywords before the return type name. If a member is using yield return as opposed to return perhaps that too can be included.

@wmjordan
Copy link
Owner

wmjordan commented Mar 2, 2023

Thank you for your comments, @fitdev.
The borders and horizontal lines on the screenshot have brought similar feelings to me.

As for the ref stuff, it is already displayed in the signature part. There's no need to redundantly display it in the returns section.
image

@fitdev
Copy link

fitdev commented Mar 2, 2023

Yes, sorry. I should have clarified. I meant moving the ref part to the "returns" section, so you would have there: <returns icon> ref int and above it you would have just ... static method (no ref there).

@wmjordan
Copy link
Owner

wmjordan commented Mar 2, 2023

moving the ref part to the "returns" section

Hmm, it is reasonable to do so.
image

@IneedHelp
Copy link
Author

I admit that there's redundant "sections/rectangles" presented in the screenshot, but that's due to the mixing of ReSharper's EnhancedToolTip with Codist's Super Quick Info, but what I really meant is the option of introducing some sort of separation between major sections or very distinct sections of the presented information.

@wmjordan
Copy link
Owner

wmjordan commented Mar 2, 2023

some sort of separation between major sections or very distinct sections of the presented information

Margins between sections are the separations.
I've tried. The lines distracted me without bringing any benefit beyond the margins.

Maybe we can dim some icons within the sections.
So, you can quickly tell the start of a section by the icons with negative indentation.
image
image

@fitdev
Copy link

fitdev commented Mar 2, 2023

Personally, I don't like the dimming. Perhaps indentation by 1 icon space would be better? But then I am ok with the current presentation.

@IneedHelp
Copy link
Author

IneedHelp commented Mar 2, 2023

I am aware that the way information is presented is very much a matter of preference, that's why I suggested this addition as an option users can choose to enable. I should say that many of my preferences are tightly tied to Enhanced ToolTips which I've been using on top of Codist for years, and now making the decision to ditch Enhanced ToolTips, I get a brain itch whenever I notice the differences. Similarly to @fitdev , I wouldn't use the dimming (although that could represent an option for someone who does or might); I particularly like the dashed line/border for section separation:
image

@wmjordan
Copy link
Owner

wmjordan commented Mar 3, 2023

Perhaps indentation by 1 icon space would be better?

It may be, but it takes time to implement.

I particularly like the dashed line/border for section separation

I've already tried that. I don't like so many lines there.

On the contrary to #216, which triggered my same pain when working with the Quick Info and eventually I made up my mind to redesign the representation from scratch with @fitdev and @laicasaane (in #214), actually I am feeling OK with the current implementation, thus I don't want to take any time to change it at this moment.

I am dealing with the nasty #227 which turns out to be unfixed, which may frustrate some users. And #245 is more worthy of investigation.

@wmjordan wmjordan added question QuickInfo Tool tip and quick info labels Mar 3, 2023
@wmjordan wmjordan added this to the Backlog milestone Mar 14, 2023
@DimitarCC
Copy link

I've already tried that. I don't like so many lines there.

I think its a matter of preference...
You can add an option to have or not have the separation lines. So everybody will be happy.
For me current look is quite tight and sometimes i am lost in the text.
So i also think is better if you can add separation lines.

@wmjordan
Copy link
Owner

I am sorry that I can not come up with a better design.
After quite some attempts, I have to give up again.

If anyone has a better idea, please post it here. A conceptual screenshot will be nice.

@wmjordan
Copy link
Owner

wmjordan commented Mar 31, 2023

Perhaps indentation by 1 icon space would be better?

@fitdev I just tried that. It does not look good to me. It wasted some display space.

image

@DimitarCC
Copy link

@wmjordan

I understand that you want to show up as much info as possible in the tooltip. But please understand that much info is not usable if you can not read it.

So i made a little draft how i would do it...

image

image

So

  1. The main icon should be few pixels down on the same level as the first line of text
  2. The informational section should be down and rows in it should have separation between them
  3. There should be separation between parameters and their information. Also indentation should be the same. I know this will lost some space but in my opinion it is much readable. I would made it with • instead of :. Its much more visually readable.
  4. Is it possible this icon to be changed to exhamation or to be used different icons depending on the severity of the issue?

image

Regarding the identation inside sections...I have several proposals

  1. With a buble around the header so to identify the start of the section

image

  1. Without icons for the members of the section. (we all know that childs of the section are from same type. like interfaces)

image

  1. With smalled icon for the childs and slight indentation

image

Finally, i want to say that you did great work. I appreciate it but it have to be adjusted. Also i just propose things. it is not mandatory to do it. Also all of my proposals can be made optional with settings.

@fitdev
Copy link

fitdev commented Mar 31, 2023

@wmjordan

I just tried that. It does not look good to me. It wasted some display space.

I agree. Current design seems better.

@fitdev
Copy link

fitdev commented Mar 31, 2023

As for @DimitarCC 's suggestions:

  1. Is it possible this icon to be changed to exhamation or to be used different icons depending on the severity of the issue?

I agree that this would be nice.

  1. With smalled icon for the childs and slight indentation

Existing design works fine for me, but if I had to pick one of the 3 suggested alternatives, I would go with 3.

I am not so sure personally about other suggestions - it is really a matter of preference. I am ok with the current design - perhaps it is not the best, but it is functional enough. I don't like the idea of alignment because it indeed wastes a lot of space, and in a way makes it more difficult to read. However maybe some horizontal spacing between major sections may be increased a bit (by a few pixels).

@DimitarCC
Copy link

@wmjordan

I just tried that. It does not look good to me. It wasted some display space.

I agree. Current design seems better.

For me is very difficult to read because different sections are too near. No only major sections.
All is matter of personal preference. Not all think the same as you. So thats why i said to be made as configurable options.

@wmjordan
Copy link
Owner

wmjordan commented Mar 31, 2023

However maybe some horizontal spacing between major sections may be increased a bit (by a few pixels).

@fitdev
Thanks for your comment. It has brighten the way ahead!
Fortunately, this is technically possible and seems easy to implement. I will give it a try.
image
Versus current implementation below:
image

For me is very difficult to read because different sections are too near

@DimitarCC
Well, as @fitdev has remarked above, I will try to see whether it is possible to widen the distance between sections.

4. Is it possible this icon to be changed to exhamation or to be used different icons depending on the severity of the issue?

#37 has a long discussion on this. And the current implementation is the best I can do.

@DimitarCC
Copy link

@wmjordan

I just tried that. It does not look good to me. It wasted some display space.

I agree. Current design seems better.

For me is very dificult to read because different sections are too near. No only major sections.
All is matter of personal preference. Not all think the same as you. So thats why i said to be made as configurable options.

However maybe some horizontal spacing between major sections may be increased a bit (by a few pixels).

@fitdev Thanks for your comment. It has brighten the way ahead! Fortunately, this is technically possible and seems easy to implement. I will give it a try. image Versus current implementation below: image

For me is very difficult to read because different sections are too near

@DimitarCC Well, as @fitdev has remarked above, I will try to see whether it is possible to widen the distance between sections.

  1. Is it possible this icon to be changed to exhamation or to be used different icons depending on the severity of the issue?

#37 has a long discussion on this. And the current implementation is the best I can do.

Please make more space also between description and returns and so on.
That is too near and when is large description text and returns description is dificult to distinguish between them.

@DimitarCC
Copy link

@wmjordan

P.S. what is required to build the extension myself?
I am .NET developer from years also in WPF and anything related to visual part.
But i have never made extensions to VS.
So if you point me out what i need to build this and when in the code to look for the UI stuff i can try to modify this myself and see how it will look.

@wmjordan
Copy link
Owner

wmjordan commented Mar 31, 2023

what is required to build the extension myself?

Install the Visual Studio Extension Development workload will do.
However, the extension is supposed to be working with VS 2017 through VS 2022, thus the project targets .NET Framework 4.6.1.

So if you point me out what i need to build this and when in the code to look for the UI stuff i can try to modify this myself and see how it will look.

The Quick Info hacking code is in QuickInfo\QuickInfoOverrider.cs.
Find the OnVisualParentChanged method of UIOverrider where the magic begins.

@DimitarCC
Copy link

@wmjordan
Thanks. Will give it a try.

@wmjordan
Copy link
Owner

The XML Doc part is done by the OverrideDocumentation method in QuickInfo\CSharpQuickInfo.cs.

If you are unhappy with the returns being to closed to the summary, you should head to the above method and jump to the RenderXmlDoc method in Helpres\XmlDocRenderer.cs.

@fitdev
Copy link

fitdev commented Mar 31, 2023

Perhaps, there could be 2 styles for Super Quick Infos to accommodate users with varying preferences: the current one (called default / condensed), and the new one (with more space around different sections)?

Another thing, sorry to mention it here, as it is not related to the issue, but regarding the XML Docs in Super Quick Infos, is it possible to render member symbols in a distinguished style from the rest of the text and prefix them with their containing type:

Please see <see cref="DateTime.Now" /> currently is rendered as Please see Now, while ti would be nice to have it rendered as Please see DateTime.Now instead (with both DateTime and Now parts clickable).

@wmjordan
Copy link
Owner

Perhaps, there could be 2 styles for Super Quick Infos to accommodate users with varying preferences: the current one (called default / condensed), and the new one (with more space around different sections)?

Hmm, it is possible.
However, a demonstration of the "more space" version will be nice before I get start on it.

prefix them with their containing type

Technically, it is easy to implement that.
In less than 0.1%'s time, I need that too, and I hover on the symbol and I will see the name of the containing type. I have no memory that I want to click on the containing type instead of the member.
For the rest 99.9%'s time, I don't want that prefix since it wastes space and appears distractive.

@fitdev
Copy link

fitdev commented Mar 31, 2023

For the rest 99.9%'s time, I don't want that prefix since it wastes space and appears distractive.

My case is the opposite, as I work with literally 1000s of different types that may have same member names, and I cannot possibly remember which type a particular member likely refers too. So, perhaps this should be an option. Also, VS's default behavior is to show the containing type.

@wmjordan
Copy link
Owner

wmjordan commented Mar 31, 2023

My case is the opposite, as I work with literally 1000s of different types that may have same member names, and I cannot possibly remember which type a particular member likely refers too. So, perhaps this should be an option. Also, VS's default behavior is to show the containing type.

OK. It is reasonable. See the demonstration below.
image
image

The behavior of VS's Quick Info is a pain for me, however. Once the namespace of the containing type is not shown up in the "using" section, the type name will be fully qualified and can be very.very.very.long. I don't want that. It will not be an option in Codist.

@wmjordan
Copy link
Owner

wmjordan commented Mar 31, 2023

For me is very dificult to read because different sections are too near. No only major sections.

@DimitarCC
Will this look a little better to you?

image

@DimitarCC
Copy link

@wmjordan
That is much better. Thanks.

@wmjordan
Copy link
Owner

@wmjordan That is much better. Thanks.

Well then. Not bad to me either.
I am going to use it in the new version, without an option, and let's see how it goes.

@DimitarCC
Copy link

DimitarCC commented Apr 1, 2023

Regarding diagnostics classification there is diagnostics service in roslyn that can be get from workspace. GetService(...). Cant you use that to get properly the analyzers issues?

@wmjordan wmjordan mentioned this issue Apr 1, 2023
23 tasks
@wmjordan
Copy link
Owner

wmjordan commented Apr 1, 2023

There's an new beta for download.

@wmjordan wmjordan removed this from the Backlog milestone Apr 6, 2023
@wmjordan wmjordan self-assigned this Apr 8, 2023
@wmjordan
Copy link
Owner

wmjordan commented Apr 8, 2023

This issue will be closed as improvements have been done to the recent beta versions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement QuickInfo Tool tip and quick info
Projects
None yet
Development

No branches or pull requests

4 participants