diff --git a/lsp-ui-sideline.el b/lsp-ui-sideline.el index da35e959..f3cc601c 100644 --- a/lsp-ui-sideline.el +++ b/lsp-ui-sideline.el @@ -619,13 +619,26 @@ from the language server." (lsp--registered-capability "textDocument/codeAction"))) (lsp-request-async "textDocument/codeAction" - (-let (((start . end) (if (eq lsp-ui-sideline-update-mode 'line) - (cons 0 (- eol bol)) - (--> (- (point) bol) (cons it it))))) + (-let* ((diagnostics (lsp-ui-sideline--line-diags (1- line-widen))) + ((start . end) (cond ((eq lsp-ui-sideline-update-mode 'line) + (cons 0 (- eol bol))) + (diagnostics + (let* ((start (- (point) bol)) + (end start)) + (mapc + (-lambda + ((&Diagnostic + :range (&Range :start (&Position :character c1) + :end (&Position :character c2)))) + (setq start (min c1 start)) + (setq end (max c2 end))) + diagnostics) + (cons start end))) + (t (--> (- (point) bol) (cons it it)))))) (list :textDocument doc-id :range (list :start (list :line (1- line-widen) :character start) :end (list :line (1- line-widen) :character end)) - :context (list :diagnostics (lsp-ui-sideline--line-diags (1- line-widen))))) + :context (list :diagnostics diagnostics))) (lambda (actions) (when (eq (current-buffer) buffer) (lsp-ui-sideline--code-actions actions bol eol)))