Skip to content

Commit c3cbadc

Browse files
authored
`lsp-signature-next'/prev: support cycling (#2647)
If `lsp-signature-cycle' is enabled (default), `lsp-signature-next' and `lsp-signature-previous' will cycle if called with the last/first item selected.
1 parent 958e061 commit c3cbadc

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

lsp-mode.el

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4951,22 +4951,30 @@ It will show up only if current point has signature help."
49514951
(add-hook 'post-command-hook #'lsp-signature)
49524952
(lsp-signature-mode t))
49534953

4954+
(defcustom lsp-signature-cycle t
4955+
"Whether `lsp-signature-next' and prev should cycle."
4956+
:type 'boolean
4957+
:group 'lsp-mode)
4958+
49544959
(defun lsp-signature-next ()
49554960
"Show next signature."
49564961
(interactive)
4957-
(when (and lsp--signature-last-index
4958-
lsp--signature-last
4959-
(< (1+ lsp--signature-last-index) (length (lsp:signature-help-signatures lsp--signature-last))))
4960-
(setq lsp--signature-last-index (1+ lsp--signature-last-index))
4961-
(funcall lsp-signature-function (lsp--signature->message lsp--signature-last))))
4962+
(let ((nsigs (length (lsp:signature-help-signatures lsp--signature-last))))
4963+
(when (and lsp--signature-last-index
4964+
lsp--signature-last
4965+
(or lsp-signature-cycle (< (1+ lsp--signature-last-index) nsigs)))
4966+
(setq lsp--signature-last-index (% (1+ lsp--signature-last-index) nsigs))
4967+
(funcall lsp-signature-function (lsp--signature->message lsp--signature-last)))))
49624968

49634969
(defun lsp-signature-previous ()
49644970
"Next signature."
49654971
(interactive)
49664972
(when (and lsp--signature-last-index
49674973
lsp--signature-last
4968-
(not (zerop lsp--signature-last-index)))
4969-
(setq lsp--signature-last-index (1- lsp--signature-last-index))
4974+
(or lsp-signature-cycle (not (zerop lsp--signature-last-index))))
4975+
(setq lsp--signature-last-index (1- (if (zerop lsp--signature-last-index)
4976+
(length (lsp:signature-help-signatures lsp--signature-last))
4977+
lsp--signature-last-index)))
49704978
(funcall lsp-signature-function (lsp--signature->message lsp--signature-last))))
49714979

49724980
(defun lsp-signature-toggle-full-docs ()

0 commit comments

Comments
 (0)