From 9e6f6ceb4cffec71161d498636e47b66b9529632 Mon Sep 17 00:00:00 2001 From: Nikita Bloshchanevich Date: Fri, 1 Jan 2021 13:44:46 +0100 Subject: [PATCH 1/3] `lsp-ui-sideline': highlight disabled code actions --- lsp-ui-sideline.el | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lsp-ui-sideline.el b/lsp-ui-sideline.el index 28d80400..d73a330d 100644 --- a/lsp-ui-sideline.el +++ b/lsp-ui-sideline.el @@ -466,6 +466,10 @@ Push sideline overlays on `lsp-ui-sideline--ovs'." (propertize " " 'display (lsp-ui-sideline--code-actions-make-image)) (propertize " " 'display '(space :width 0.3)))))) +(defface lsp-ui-sideline-disabled-code-action-face + '((t :inherit lsp-disabled-code-action-face)) + "Faced used to show disabled code actions in the sideline.") + (defun lsp-ui-sideline--code-actions (actions bol eol) "Show code ACTIONS." (let ((inhibit-modification-hooks t)) @@ -489,8 +493,12 @@ Push sideline overlays on `lsp-ui-sideline--ovs'." (lsp-execute-code-action action)))) map)) (len (length title)) + (disabled? (lsp:code-action-disabled? action)) (title (progn (add-face-text-property 0 len 'lsp-ui-sideline-global nil title) (add-face-text-property 0 len 'lsp-ui-sideline-code-action nil title) + (when disabled? + (add-face-text-property 0 len 'lsp-ui-sideline-disabled-code-action-face nil title) + (add-text-properties 0 len `(help-echo ,(lsp:code-action-disabled-reason disabled?)) title)) (add-text-properties 0 len `(keymap ,keymap mouse-face highlight) title) title)) (string (concat (propertize " " 'display `(space :align-to (- right-fringe ,(lsp-ui-sideline--align (+ len (length image)) margin)))) From 9a08059dcc50fab8a0e185e3fcc96d89387d3aac Mon Sep 17 00:00:00 2001 From: Nikita Bloshchanevich Date: Fri, 1 Jan 2021 13:47:09 +0100 Subject: [PATCH 2/3] `lsp-ui-sideline': disabled code actions optional The new `defcustom' `lsp-ui-sideline-show-disabled-code-actions' controls whether disabled code actions should be shown at all. --- lsp-ui-sideline.el | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lsp-ui-sideline.el b/lsp-ui-sideline.el index d73a330d..b39c756f 100644 --- a/lsp-ui-sideline.el +++ b/lsp-ui-sideline.el @@ -470,13 +470,21 @@ Push sideline overlays on `lsp-ui-sideline--ovs'." '((t :inherit lsp-disabled-code-action-face)) "Faced used to show disabled code actions in the sideline.") +(defcustom lsp-ui-sideline-show-disabled-code-actions t + "Whether disabled code actions should be shown. +They cannot be executed." + :type 'boolean + :group 'lsp-ui-sideline) + (defun lsp-ui-sideline--code-actions (actions bol eol) "Show code ACTIONS." (let ((inhibit-modification-hooks t)) (when lsp-ui-sideline-actions-kind-regex - (setq actions (seq-filter (-lambda ((&CodeAction :kind?)) - (or (not kind?) - (s-match lsp-ui-sideline-actions-kind-regex kind?))) + (setq actions (seq-filter (-lambda ((&CodeAction :kind? :disabled?)) + (and (or (not disabled?) + lsp-ui-sideline-show-disabled-code-actions) + (or (not kind?) + (s-match lsp-ui-sideline-actions-kind-regex kind?)))) actions))) (setq lsp-ui-sideline--code-actions actions) (lsp-ui-sideline--delete-kind 'actions) From 6a5ed5eeaa7d790d6f13bd03b5888b7c8fe7d86e Mon Sep 17 00:00:00 2001 From: Nikita Bloshchanevich Date: Fri, 1 Jan 2021 13:51:08 +0100 Subject: [PATCH 3/3] Also highlight preferred code actions --- lsp-ui-sideline.el | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lsp-ui-sideline.el b/lsp-ui-sideline.el index b39c756f..64864cca 100644 --- a/lsp-ui-sideline.el +++ b/lsp-ui-sideline.el @@ -470,6 +470,10 @@ Push sideline overlays on `lsp-ui-sideline--ovs'." '((t :inherit lsp-disabled-code-action-face)) "Faced used to show disabled code actions in the sideline.") +(defface lsp-ui-sideline-preferred-code-action-face + '((t :inherit lsp-preferred-code-action-face)) + "Face used to show preferred code actions in the sideline.") + (defcustom lsp-ui-sideline-show-disabled-code-actions t "Whether disabled code actions should be shown. They cannot be executed." @@ -501,9 +505,11 @@ They cannot be executed." (lsp-execute-code-action action)))) map)) (len (length title)) - (disabled? (lsp:code-action-disabled? action)) + ((&CodeAction :disabled? :is-preferred?) action) (title (progn (add-face-text-property 0 len 'lsp-ui-sideline-global nil title) (add-face-text-property 0 len 'lsp-ui-sideline-code-action nil title) + (when is-preferred? + (add-face-text-property 0 len 'lsp-ui-sideline-preferred-code-action-face nil title)) (when disabled? (add-face-text-property 0 len 'lsp-ui-sideline-disabled-code-action-face nil title) (add-text-properties 0 len `(help-echo ,(lsp:code-action-disabled-reason disabled?)) title))