@@ -4951,22 +4951,30 @@ It will show up only if current point has signature help."
4951
4951
(add-hook 'post-command-hook #'lsp-signature)
4952
4952
(lsp-signature-mode t))
4953
4953
4954
+ (defcustom lsp-signature-cycle t
4955
+ "Whether `lsp-signature-next' and prev should cycle."
4956
+ :type 'boolean
4957
+ :group 'lsp-mode)
4958
+
4954
4959
(defun lsp-signature-next ()
4955
4960
"Show next signature."
4956
4961
(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)))))
4962
4968
4963
4969
(defun lsp-signature-previous ()
4964
4970
"Next signature."
4965
4971
(interactive)
4966
4972
(when (and lsp--signature-last-index
4967
4973
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)))
4970
4978
(funcall lsp-signature-function (lsp--signature->message lsp--signature-last))))
4971
4979
4972
4980
(defun lsp-signature-toggle-full-docs ()
0 commit comments