From ea144b28028f6ef72d67d84f550e1798c61347e2 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Fri, 5 Apr 2019 08:00:09 -0400 Subject: [PATCH v1] Properly bracket concat of comment-start-skip (Bug#34805) * lisp/emacs-lisp/smie.el (smie-indent-fixindent): * lisp/cedet/semantic/doc.el (semantic-doc-snarf-comment-for-tag): * lisp/progmodes/fortran.el (fortran-previous-statement) (fortran-next-statement) (fortran-fill-statement): * lisp/progmodes/vhdl-mode.el (vhdl-beginning-of-statement): Bracket comment-start-skip and comment-end-skip to avoid unexpected regexp operator precedence. --- lisp/cedet/semantic/doc.el | 3 ++- lisp/emacs-lisp/smie.el | 4 ++-- lisp/progmodes/fortran.el | 9 ++++++--- lisp/progmodes/vhdl-mode.el | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/lisp/cedet/semantic/doc.el b/lisp/cedet/semantic/doc.el index 5611629c14..4f98cf4102 100644 --- a/lisp/cedet/semantic/doc.el +++ b/lisp/cedet/semantic/doc.el @@ -103,7 +103,8 @@ (defun semantic-doc-snarf-comment-for-tag (nosnarf) nil ;; ok, try to clean the text up. ;; Comment start thingy - (while (string-match (concat "^\\s-*" comment-start-skip) ct) + (while (string-match (concat "^\\s-*\\(?:" comment-start-skip "\\)") + ct) (setq ct (concat (substring ct 0 (match-beginning 0)) (substring ct (match-end 0))))) ;; Arbitrary punctuation at the beginning of each line. diff --git a/lisp/emacs-lisp/smie.el b/lisp/emacs-lisp/smie.el index 92b639d71e..e0293c3cbb 100644 --- a/lisp/emacs-lisp/smie.el +++ b/lisp/emacs-lisp/smie.el @@ -1446,9 +1446,9 @@ (defun smie-indent-fixindent () (and (smie-indent--bolp) (save-excursion (comment-normalize-vars) - (re-search-forward (concat comment-start-skip + (re-search-forward (concat "\\(?:" comment-start-skip "\\)" "fixindent" - comment-end-skip) + "\\(?:" comment-end-skip "\\)") ;; 1+ to account for the \n comment termination. (1+ (line-end-position)) t)) (current-column))) diff --git a/lisp/progmodes/fortran.el b/lisp/progmodes/fortran.el index 152667040f..f01e866f55 100644 --- a/lisp/progmodes/fortran.el +++ b/lisp/progmodes/fortran.el @@ -1275,7 +1275,8 @@ (defun fortran-previous-statement () (concat "[ \t]*" (regexp-quote fortran-continuation-string))) (looking-at "[ \t]*$\\| \\{5\\}[^ 0\n]\\|\t[1-9]") - (looking-at (concat "[ \t]*" comment-start-skip))))) + (looking-at (concat "[ \t]*\\(?:" + comment-start-skip "\\)"))))) (cond ((and continue-test (not not-first-statement)) (message "Incomplete continuation statement.")) @@ -1298,7 +1299,8 @@ (defun fortran-next-statement () (or (looking-at fortran-comment-line-start-skip) (looking-at fortran-directive-re) (looking-at "[ \t]*$\\| [^ 0\n]\\|\t[1-9]") - (looking-at (concat "[ \t]*" comment-start-skip))))) + (looking-at (concat "[ \t]*\\(?:" + comment-start-skip "\\)"))))) (if (not not-last-statement) 'last-statement))) @@ -2146,7 +2148,8 @@ (defun fortran-fill-statement () (or (looking-at "[ \t]*$") (looking-at fortran-comment-line-start-skip) (and comment-start-skip - (looking-at (concat "[ \t]*" comment-start-skip))))) + (looking-at (concat "[ \t]*\\(?:" + comment-start-skip "\\)"))))) (save-excursion ;; Find beginning of statement. (fortran-next-statement) diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el index 1dc0c61d06..13d0cfa67e 100644 --- a/lisp/progmodes/vhdl-mode.el +++ b/lisp/progmodes/vhdl-mode.el @@ -6699,7 +6699,7 @@ (defun vhdl-beginning-of-statement (&optional count lim interactive) (if (and interactive (or (nth 3 state) (nth 4 state) - (looking-at (concat "[ \t]*" comment-start-skip)))) + (looking-at (concat "[ \t]*\\(?:" comment-start-skip "\\)")))) (forward-sentence (- count)) (while (> count 0) (vhdl-beginning-of-statement-1 lim) -- 2.11.0