From: Felix Date: Mon, 27 Feb 2023 15:15:02 +0000 (+0100) Subject: Implement prefix arg for 'c-ts-mode-toggle-comment-style' X-Git-Tag: emacs-29.0.90~291 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c2b5c6acc586cc6a2e66e23a6208045d456ae41a;p=emacs.git Implement prefix arg for 'c-ts-mode-toggle-comment-style' * lisp/progmodes/c-ts-mode.el (c-ts-mode-toggle-comment-style): Actually implement the optional numeric arg mentioned in the docstring. Copyright-paperwork-exempt: yes --- diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el index 4b66824c44f..53f7839e4af 100644 --- a/lisp/progmodes/c-ts-mode.el +++ b/lisp/progmodes/c-ts-mode.el @@ -88,19 +88,23 @@ :safe 'integerp :group 'c) -(defun c-ts-mode-toggle-comment-style () +(defun c-ts-mode-toggle-comment-style (&optional arg) "Toggle the comment style between block and line comments. Optional numeric ARG, if supplied, switches to block comment style when positive, to line comment style when negative, and just toggles it when zero or left out." - (interactive) - (pcase-let ((`(,starter . ,ender) - (if (string= comment-start "// ") - (cons "/* " " */") - (cons "// " "")))) - (setq-local comment-start starter - comment-end ender)) - (c-ts-mode-set-modeline)) + (interactive "P") + (let ((prevstate-line (string= comment-start "// "))) + (when (or (not arg) + (zerop (setq arg (prefix-numeric-value arg))) + (xor (> 0 arg) prevstate-line)) + (pcase-let ((`(,starter . ,ender) + (if prevstate-line + (cons "/* " " */") + (cons "// " "")))) + (setq-local comment-start starter + comment-end ender)) + (c-ts-mode-set-modeline)))) (defun c-ts-mode-set-modeline () (setq mode-name