From f28dffbfd847057498a6038312050e0b740e6ba3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?El=C3=ADas=20Gabriel=20P=C3=A9rez?= Date: Mon, 31 Mar 2025 17:58:16 -0600 Subject: [PATCH] Add block-comment-start and block-comment-end to supported modes * lisp/emacs-lisp/lisp-mode.el (lisp-mode-variables): Add block-comment-start and block-comment-end from here... * lisp/newcomment.el (block-comment-start, block-comment-end):... * lisp/nxml/nxml-mode.el (nxml-mode):... * lisp/progmodes/c-ts-common.el (c-ts-common-comment-setup):... * lisp/progmodes/go-ts-mode.el (go-work-ts-mode):... * lisp/progmodes/js.el (js--mode-setup):... * lisp/progmodes/json-ts-mode.el (json-ts-mode):... * lisp/progmodes/lua-ts-mode.el (lua-ts-mode):... * lisp/progmodes/opascal.el (opascal-mode):... * lisp/progmodes/pascal.el (pascal-mode):... * lisp/progmodes/typescript-ts-mode.el (tsx-ts-mode):... * lisp/textmodes/css-mode.el (css-base-mode, scss-mode):... * lisp/textmodes/sgml-mode.el (sgml-mode): ... to here. (Bug#77424) (cherry picked from commit 4c6b1712a4d67ae40ccc087c7946de4cb14e8cc7) --- lisp/emacs-lisp/lisp-mode.el | 2 ++ lisp/newcomment.el | 9 +++++---- lisp/nxml/nxml-mode.el | 2 ++ lisp/progmodes/c-ts-common.el | 4 ++++ lisp/progmodes/go-ts-mode.el | 2 ++ lisp/progmodes/js.el | 2 ++ lisp/progmodes/json-ts-mode.el | 2 ++ lisp/progmodes/lua-ts-mode.el | 2 ++ lisp/progmodes/opascal.el | 4 +++- lisp/progmodes/pascal.el | 2 ++ lisp/progmodes/typescript-ts-mode.el | 2 ++ lisp/textmodes/css-mode.el | 4 ++++ lisp/textmodes/sgml-mode.el | 2 ++ 13 files changed, 34 insertions(+), 5 deletions(-) diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index 450782c1af5..06b68f35d73 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el @@ -698,6 +698,8 @@ font-lock keywords will not be case sensitive." (setq-local add-log-current-defun-function #'lisp-current-defun-name) (setq-local comment-start ";") (setq-local comment-start-skip ";+ *") + (setq-local block-comment-start "#|") + (setq-local block-comment-end "|#") (setq-local comment-add 1) ;default to `;;' in comment-region (setq-local comment-column 40) (setq-local comment-use-syntax t) diff --git a/lisp/newcomment.el b/lisp/newcomment.el index 945187e863f..eb36f91104d 100644 --- a/lisp/newcomment.el +++ b/lisp/newcomment.el @@ -56,7 +56,6 @@ ;; - spill auto-fill of comments onto the end of the next line. ;; - uncomment-region with a consp (for blocks) or somehow make the ;; deletion of continuation markers less dangerous. -;; - drop block-comment- unless it's really used. ;; - uncomment-region on a subpart of a comment. ;; - support gnu-style "multi-line with space in continue". ;; - somehow allow comment-dwim to use the region even if transient-mark-mode @@ -183,9 +182,11 @@ guaranteed to be correctly ordered. It is called within `save-excursion'. Applicable at least in modes for languages like fixed-format Fortran where comments always start in column zero.") -;; ?? never set -(defvar block-comment-start nil) -(defvar block-comment-end nil) +(defvar block-comment-start nil + "String to insert to start a new block comment, or nil if no supported.") + +(defvar block-comment-end nil + "String to insert to end a new block comment, or nil if no supported.") (defvar comment-quote-nested t "Non-nil if nested comments should be quoted. diff --git a/lisp/nxml/nxml-mode.el b/lisp/nxml/nxml-mode.el index 7acc19b9058..994b2779d1a 100644 --- a/lisp/nxml/nxml-mode.el +++ b/lisp/nxml/nxml-mode.el @@ -529,6 +529,8 @@ Many aspects this mode can be customized using (setq-local comment-start-skip "") (setq-local comment-end-skip "[ \t\r\n]*-->") + (setq-local block-comment-start "") (setq-local comment-line-break-function #'nxml-newline-and-indent) (setq-local comment-quote-nested-function #'nxml-comment-quote-nested) (setq-local comment-continue "") ; avoid double-hyphens as a padding diff --git a/lisp/progmodes/c-ts-common.el b/lisp/progmodes/c-ts-common.el index 516d5f9b722..9fd2a678903 100644 --- a/lisp/progmodes/c-ts-common.el +++ b/lisp/progmodes/c-ts-common.el @@ -275,6 +275,8 @@ Set up: - `comment-end' - `comment-start-skip' - `comment-end-skip' + - `block-comment-start' + - `block-comment-end' - `adaptive-fill-mode' - `adaptive-fill-first-line-regexp' - `paragraph-start' @@ -291,6 +293,8 @@ Set up: (rx (* (syntax whitespace)) (group (or (syntax comment-end) (seq (+ "*") "/"))))) + (setq-local block-comment-start "/*") + (setq-local block-comment-end "*/") (setq-local adaptive-fill-mode t) (setq-local adaptive-fill-function #'c-ts-common--adaptive-fill-prefix) ;; Always accept * or | as prefix, even if there's only one line in diff --git a/lisp/progmodes/go-ts-mode.el b/lisp/progmodes/go-ts-mode.el index 82bcf5ef7c1..1bd946a6c36 100644 --- a/lisp/progmodes/go-ts-mode.el +++ b/lisp/progmodes/go-ts-mode.el @@ -679,6 +679,8 @@ what the parent of the node would be if it were a node." (setq-local comment-start "// ") (setq-local comment-end "") (setq-local comment-start-skip (rx "//" (* (syntax whitespace)))) + (setq-local block-comment-start "/*") + (setq-local block-comment-end "*/") ;; Indent. (setq-local indent-tabs-mode t diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el index 0b4c9f81452..5f06ea11398 100644 --- a/lisp/progmodes/js.el +++ b/lisp/progmodes/js.el @@ -3771,6 +3771,8 @@ Currently there are `js-mode' and `js-ts-mode'." (setq-local comment-start "// ") (setq-local comment-start-skip "\\(?://+\\|/\\*+\\)\\s *") (setq-local comment-end "") + (setq-local block-comment-start "/*") + (setq-local block-comment-end "*/") (setq-local fill-paragraph-function #'js-fill-paragraph) (setq-local normal-auto-fill-function #'js-do-auto-fill) diff --git a/lisp/progmodes/json-ts-mode.el b/lisp/progmodes/json-ts-mode.el index 1b8f033e97a..c13e2e7f956 100644 --- a/lisp/progmodes/json-ts-mode.el +++ b/lisp/progmodes/json-ts-mode.el @@ -137,6 +137,8 @@ Return nil if there is no name or if NODE is not a defun node." (setq-local comment-start "// ") (setq-local comment-start-skip "\\(?://+\\|/\\*+\\)\\s *") (setq-local comment-end "") + (setq-local block-comment-start "/*") + (setq-local block-comment-end "*/") ;; Electric (setq-local electric-indent-chars diff --git a/lisp/progmodes/lua-ts-mode.el b/lisp/progmodes/lua-ts-mode.el index cac56ace749..d606ad6ccd9 100644 --- a/lisp/progmodes/lua-ts-mode.el +++ b/lisp/progmodes/lua-ts-mode.el @@ -667,6 +667,8 @@ Calls REPORT-FN directly." (setq-local comment-start "--") (setq-local comment-start-skip "--\\s-*") (setq-local comment-end "") + (setq-local block-comment-start "--[[" ) + (setq-local block-comment-end "]]")) ;; Font-lock. (setq-local treesit-font-lock-settings lua-ts--font-lock-settings) diff --git a/lisp/progmodes/opascal.el b/lisp/progmodes/opascal.el index bd6bc3b28ac..9dcaff9645e 100644 --- a/lisp/progmodes/opascal.el +++ b/lisp/progmodes/opascal.el @@ -1767,7 +1767,9 @@ Coloring: (setq-local comment-start "// ") (setq-local comment-start-skip "\\(?://\\|(\\*\\|{\\)[ \t]*") - (setq-local comment-end-skip "[ \t]*\\(?:\n\\|\\*)\\|}\\)")) + (setq-local comment-end-skip "[ \t]*\\(?:\n\\|\\*)\\|}\\)") + (setq-local block-comment-start "(*") + (setq-local block-comment-end "*)")) (provide 'opascal) ;;; opascal.el ends here diff --git a/lisp/progmodes/pascal.el b/lisp/progmodes/pascal.el index b6316d4dfe1..113cf68c8d6 100644 --- a/lisp/progmodes/pascal.el +++ b/lisp/progmodes/pascal.el @@ -348,6 +348,8 @@ See also the user variables `pascal-type-keywords', `pascal-start-keywords' and (setq-local comment-start "{") (setq-local comment-start-skip "(\\*+ *\\|{ *") (setq-local comment-end "}") + (setq-local block-comment-start "(*") + (setq-local block-comment-end "*)") (add-hook 'completion-at-point-functions 'pascal-completions-at-point nil t) ;; Font lock support (setq-local font-lock-defaults '(pascal-font-lock-keywords nil t)) diff --git a/lisp/progmodes/typescript-ts-mode.el b/lisp/progmodes/typescript-ts-mode.el index 3162bf66500..d9437297bb6 100644 --- a/lisp/progmodes/typescript-ts-mode.el +++ b/lisp/progmodes/typescript-ts-mode.el @@ -650,6 +650,8 @@ at least 3 (which is the default value)." ;; Comments. (setq-local comment-start "// ") (setq-local comment-end "") + (setq-local block-comment-start "/*") + (setq-local block-comment-end "*/") (setq-local comment-start-skip (rx (or (seq "/" (+ "/")) (seq "/" (+ "*"))) (* (syntax whitespace)))) diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el index e715a11a03b..45d8a77489b 100644 --- a/lisp/textmodes/css-mode.el +++ b/lisp/textmodes/css-mode.el @@ -1853,6 +1853,8 @@ implementations: `css-mode' and `css-ts-mode'." (setq-local comment-start-skip "/\\*+[ \t]*") (setq-local comment-end "*/") (setq-local comment-end-skip "[ \t]*\\*+/") + (setq-local block-comment-start "/*") + (setq-local block-comment-end "*/") (setq-local electric-indent-chars (append css-electric-keys electric-indent-chars)) ;; The default "." creates ambiguity with class selectors. @@ -2076,6 +2078,8 @@ be used to fill comments. "Major mode to edit \"Sassy CSS\" files." (setq-local comment-start "// ") (setq-local comment-end "") + (setq-local block-comment-start "/*") + (setq-local block-comment-end "*/") (setq-local comment-continue " *") (setq-local comment-start-skip "/[*/]+[ \t]*") (setq-local comment-end-skip "[ \t]*\\(?:\n\\|\\*+/\\)") diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el index c4a000dbfc8..c188fa2d3d1 100644 --- a/lisp/textmodes/sgml-mode.el +++ b/lisp/textmodes/sgml-mode.el @@ -622,6 +622,8 @@ Do \\[describe-key] on the following bindings to discover what they do. (setq-local indent-line-function #'sgml-indent-line) (setq-local comment-start "") + (setq-local block-comment-start "") (setq-local comment-indent-function #'sgml-comment-indent) (setq-local comment-line-break-function #'sgml-comment-indent-new-line) (setq-local skeleton-further-elements '((completion-ignore-case t))) -- 2.39.5