Shorten Merlin diagnostics error - #1513
Conversation
Pull Request Test Coverage Report for Build 4844Details
💛 - Coveralls |
voodoos
left a comment
There was a problem hiding this comment.
Could you make the PR or commit messages more descriptive ?
As far as I understand there are multiple things happening here:
- Optionally limit multi-line errors to only the first line
- Only show configuration failures when there are some (not optional)
- Only show typer diagnostics if there are no syntax errors (not optional)
The first one is uncontroversial.
These last two filters could arguably be made more precise, and there used to be a mechanism in Merlin not to report multiple errors related to the same missing module for example.
Also I wonder whether it would make sense to still show typer errors when they are located before the first parser error. But I don't mind keeping it like this for now and see how it feels in practice.
(cc @awilliambauer)
| Range.create ~start ~end_) | ||
| ;; | ||
|
|
||
| let default_error_to_diagnostics ~diagnostics ~merlin ~error = |
There was a problem hiding this comment.
I don't understand that name ? Why is it "default" ?
voodoos
left a comment
There was a problem hiding this comment.
Thanks Xavier. For the record, in the latest version we only kept the part of that PR adding a new configuration option that only return the first line of multi-line diagnostics.
* Add ShortenMerlinDiagnostics in `config_data` (and promote) * Upgrade configuration * Change diagnostics representation * Add test * Remove useless `Fiber.return` * Add CHANGES entry * Restore Merlin's recovery
CHANGES: ## Features - Make `inlay-hint` for function parameters configurable (ocaml/ocaml-lsp#1515) - Add custom `ocamllsp/jumpToTypedHole` to navigate through typed holes (ocaml/ocaml-lsp#1516) - Add a code-action for combining pattern cases (just relaying on regex) (ocaml/ocaml-lsp#1514) - Allow (by configuration) shortening of diagnostics (just highlighting the first line) (ocaml/ocaml-lsp#1513) - Fix `yojson_of_t` for `Nullable_option`: serialize `None` as `Null` instead of asserting false (ocaml/ocaml-lsp#1525 fixes ocaml/ocaml-lsp#1524) ## Fixes - Support for `class`, `class type`, `method` and `property` for `DocumentSymbol` query (ocaml/ocaml-lsp#1487 fixes ocaml/ocaml-lsp#1449) - Fix `inlay-hint` for function parameters (ocaml/ocaml-lsp#1515) - More precise diagnostics in the event of a failed identifier search (`Definition_query`) (ocaml/ocaml-lsp#1518) - Remove `ocamlformat` application after `destruct` (that remove some useful parenthesis) (ocaml/ocaml-lsp#1519) - Add a new server option `standardHover`, that can be used by clients to disable the default hover provider. When `standardHover = false` `textDocument/hover` requests always returns with empty result. (ocaml/ocaml-lsp#1416)
CHANGES: ## Features - Make `inlay-hint` for function parameters configurable (ocaml/ocaml-lsp#1515) - Add custom `ocamllsp/jumpToTypedHole` to navigate through typed holes (ocaml/ocaml-lsp#1516) - Add a code-action for combining pattern cases (just relaying on regex) (ocaml/ocaml-lsp#1514) - Allow (by configuration) shortening of diagnostics (just highlighting the first line) (ocaml/ocaml-lsp#1513) - Fix `yojson_of_t` for `Nullable_option`: serialize `None` as `Null` instead of asserting false (ocaml/ocaml-lsp#1525 fixes ocaml/ocaml-lsp#1524) ## Fixes - Support for `class`, `class type`, `method` and `property` for `DocumentSymbol` query (ocaml/ocaml-lsp#1487 fixes ocaml/ocaml-lsp#1449) - Fix `inlay-hint` for function parameters (ocaml/ocaml-lsp#1515) - More precise diagnostics in the event of a failed identifier search (`Definition_query`) (ocaml/ocaml-lsp#1518) - Remove `ocamlformat` application after `destruct` (that remove some useful parenthesis) (ocaml/ocaml-lsp#1519) - Add a new server option `standardHover`, that can be used by clients to disable the default hover provider. When `standardHover = false` `textDocument/hover` requests always returns with empty result. (ocaml/ocaml-lsp#1416)
CHANGES: ## Features - Make `inlay-hint` for function parameters configurable (ocaml/ocaml-lsp#1515) - Add custom `ocamllsp/jumpToTypedHole` to navigate through typed holes (ocaml/ocaml-lsp#1516) - Add a code-action for combining pattern cases (just relaying on regex) (ocaml/ocaml-lsp#1514) - Allow (by configuration) shortening of diagnostics (just highlighting the first line) (ocaml/ocaml-lsp#1513) - Fix `yojson_of_t` for `Nullable_option`: serialize `None` as `Null` instead of asserting false (ocaml/ocaml-lsp#1525 fixes ocaml/ocaml-lsp#1524) ## Fixes - Support for `class`, `class type`, `method` and `property` for `DocumentSymbol` query (ocaml/ocaml-lsp#1487 fixes ocaml/ocaml-lsp#1449) - Fix `inlay-hint` for function parameters (ocaml/ocaml-lsp#1515) - More precise diagnostics in the event of a failed identifier search (`Definition_query`) (ocaml/ocaml-lsp#1518) - Remove `ocamlformat` application after `destruct` (that remove some useful parenthesis) (ocaml/ocaml-lsp#1519)
CHANGES: ## Features - Make `inlay-hint` for function parameters configurable (ocaml/ocaml-lsp#1515) - Add custom `ocamllsp/jumpToTypedHole` to navigate through typed holes (ocaml/ocaml-lsp#1516) - Add a code-action for combining pattern cases (just relaying on regex) (ocaml/ocaml-lsp#1514) - Allow (by configuration) shortening of diagnostics (just highlighting the first line) (ocaml/ocaml-lsp#1513) - Fix `yojson_of_t` for `Nullable_option`: serialize `None` as `Null` instead of asserting false (ocaml/ocaml-lsp#1525 fixes ocaml/ocaml-lsp#1524) ## Fixes - Support for `class`, `class type`, `method` and `property` for `DocumentSymbol` query (ocaml/ocaml-lsp#1487 fixes ocaml/ocaml-lsp#1449) - Fix `inlay-hint` for function parameters (ocaml/ocaml-lsp#1515) - More precise diagnostics in the event of a failed identifier search (`Definition_query`) (ocaml/ocaml-lsp#1518) - Remove `ocamlformat` application after `destruct` (that remove some useful parenthesis) (ocaml/ocaml-lsp#1519)
* Add ShortenMerlinDiagnostics in `config_data` (and promote) * Upgrade configuration * Change diagnostics representation * Add test * Remove useless `Fiber.return` * Add CHANGES entry * Restore Merlin's recovery
Make error diagnostics shortenable (to improve readability)