From 755436391882ca5eec77b3aef534260c8b0c52f7 Mon Sep 17 00:00:00 2001 From: CP_PRAJ <116998733+HJX-001@users.noreply.github.com> Date: Tue, 4 Jun 2024 16:10:30 +0530 Subject: [PATCH] feat: add option to disable/enable diagnostics in hover (#2489) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add option to disable/enable diagnostics in hover * fix: fix lsp next/prev diagnostics command was not working after addition of setting 'show diagnostics in hover' * Update plugin/hover.py --------- Co-authored-by: Rafał Chłodnicki --- LSP.sublime-settings | 3 +++ plugin/core/types.py | 2 ++ plugin/hover.py | 5 +++-- sublime-package.json | 5 +++++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/LSP.sublime-settings b/LSP.sublime-settings index 1489931cf..0bf0e6902 100644 --- a/LSP.sublime-settings +++ b/LSP.sublime-settings @@ -136,6 +136,9 @@ // The maximum number of characters (approximately) before a scrollbar appears. "popup_max_characters_height": 1000, + // Show diagnostics in hover popup if available + "show_diagnostics_in_hover": true, + // Show code actions in hover popup if available "show_code_actions_in_hover": true, diff --git a/plugin/core/types.py b/plugin/core/types.py index 901d3c565..46d7efa7b 100644 --- a/plugin/core/types.py +++ b/plugin/core/types.py @@ -227,6 +227,7 @@ class Settings: show_code_actions = cast(str, None) show_code_lens = cast(str, None) show_inlay_hints = cast(bool, None) + show_diagnostics_in_hover = cast(bool, None) show_code_actions_in_hover = cast(bool, None) show_diagnostics_annotations_severity_level = cast(int, None) show_diagnostics_count_in_view_status = cast(bool, None) @@ -271,6 +272,7 @@ def r(name: str, default: bool | int | str | list | dict) -> None: r("show_code_actions", "annotation") r("show_code_lens", "annotation") r("show_inlay_hints", False) + r("show_diagnostics_in_hover", True) r("show_code_actions_in_hover", True) r("show_diagnostics_annotations_severity_level", 0) r("show_diagnostics_count_in_view_status", False) diff --git a/plugin/hover.py b/plugin/hover.py index b3d9ddae4..260347192 100644 --- a/plugin/hover.py +++ b/plugin/hover.py @@ -278,10 +278,11 @@ def show_hover(self, listener: AbstractViewListener, point: int, only_diagnostic def _show_hover(self, listener: AbstractViewListener, point: int, only_diagnostics: bool) -> None: hover_content = self.hover_content() - contents = self.diagnostics_content() + hover_content + code_actions_content(self._actions_by_config) + prefs = userprefs() + diagnostics_content = self.diagnostics_content() if only_diagnostics or prefs.show_diagnostics_in_hover else "" + contents = diagnostics_content + hover_content + code_actions_content(self._actions_by_config) link_content, link_range = self.link_content_and_range() only_link_content = not bool(contents) and link_range is not None - prefs = userprefs() if prefs.show_symbol_action_links and contents and not only_diagnostics and hover_content: symbol_actions_content = self.symbol_actions_content(listener, point) if link_content: diff --git a/sublime-package.json b/sublime-package.json index 81c687770..023541fe8 100644 --- a/sublime-package.json +++ b/sublime-package.json @@ -621,6 +621,11 @@ "default": "annotation", "markdownDescription": "Where to show `\"code lens\"`." }, + "show_diagnostics_in_hover": { + "type": "boolean", + "default": true, + "markdownDescription": "Show diagnostics in hover popup if available." + }, "show_code_actions_in_hover": { "type": "boolean", "default": true,