microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
161.86k stars 28.45k forks source link

More visibility for Critical errors #149316

Open akaroml opened 2 years ago

akaroml commented 2 years ago

When opening a Java project, the Java language server imports the project and reports errors, that are visualized in the PROBLEMS view. Among those errors, one error should stand out more. In our case, the user is blocked until the version incompatibility issue is fixed. This is now shown as a warning and buried among other errors, so users could not easily notice it. Our solution is to use notification and ask users to take action.

Here to open the discussion on whether this is the right pattern to use when dealing with such a case. Our thoughts are:

  1. One error can hardly stand out in the PROBLEMS view when there are many
  2. Notification could be a bit intrusive and noisy to the users
  3. Is there a solution sitting in the middle?

And here's a video to demonstrate the pattern we are using:

https://user-images.githubusercontent.com/16755094/167988073-1852b1d5-2d44-4a0c-98a4-7dc989757a53.mp4

isidorn commented 2 years ago

I agree that showing the notification like you currently do is not the best experience. The quick fixes in the problems view should ideally be more discoverable.

Assigning to @lszomoru for problems view. And @misolori for design thoughts.

miguelsolorio commented 2 years ago

the user is blocked until the version incompatibility issue is fixed. This is now shown as a warning...

If it is a blocking issue, shouldn't this be considered an error then?

mjbvz commented 2 years ago

Have you considered using the Language status api for critical errors? https://code.visualstudio.com/updates/v1_65#_language-status-items

ESLint uses this for example to let the user know if ESlint itself is misconfigured

lszomoru commented 1 year ago

@akaroml, the problems view now support rendering as a table with problems being sorted by severity by default. One option would be to have the critical error that the user should focus on with the highest severity so that it appears at the top. But I do agree with @mjbvz that using the language status api is the way to go here.

Do let us know if there is anything else that you need from our side before closing this issue. Thanks!