1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-22 07:09:54 +00:00

Further tweaks for comment-start-skip behavior

* lisp/newcomment.el (comment-normalize-vars): Only add escaping check
to `comment-start-skip' if not `comment-use-syntax'. 
(comment-beginning): Use `narrow-to-region' instead of moving back
one character.
(http://lists.gnu.org/archive/html/emacs-devel/2014-03/msg00488.html)
(comment-start-skip): Update the docstring.

Fixes: debbugs:16971
This commit is contained in:
Dmitry Gutov 2014-03-18 08:06:33 +02:00
parent 1917cf46bb
commit 2b7858ecbd
2 changed files with 21 additions and 9 deletions

View File

@ -1,3 +1,12 @@
2014-03-18 Dmitry Gutov <dgutov@yandex.ru>
* newcomment.el (comment-normalize-vars): Only add escaping check
to `comment-start-skip' if not `comment-use-syntax'. (Bug#16971)
(comment-beginning): Use `narrow-to-region' instead of moving back
one character.
(http://lists.gnu.org/archive/html/emacs-devel/2014-03/msg00488.html)
(comment-start-skip): Update the docstring.
2014-03-18 Daniel Colascione <dancol@dancol.org>
* startup.el (tty-handle-args): Remove debug message from 2007.

View File

@ -120,8 +120,9 @@ Comments might be indented to a different value in order not to go beyond
;;;###autoload
(defvar comment-start-skip nil
"Regexp to match the start of a comment plus everything up to its body.
If there are any \\(...\\) pairs, the comment delimiter text is held to begin
at the place matched by the close of the first pair.")
If there are any \\(...\\) pairs and `comment-use-syntax' is nil,
the comment delimiter text is held to begin at the place matched
by the close of the first pair.")
;;;###autoload
(put 'comment-start-skip 'safe-local-variable 'stringp)
@ -378,7 +379,10 @@ function should first call this function explicitly."
;; In case comment-start has changed since last time.
(string-match comment-start-skip comment-start))
(set (make-local-variable 'comment-start-skip)
(concat "\\(\\(^\\|[^\\\n]\\)\\(\\\\\\\\\\)*\\)\\(\\s<+\\|"
(concat (unless (eq comment-use-syntax t)
;; `syntax-ppss' will detect escaping.
"\\(\\(^\\|[^\\\n]\\)\\(\\\\\\\\\\)*\\)")
"\\(\\s<+\\|"
(regexp-quote (comment-string-strip comment-start t t))
;; Let's not allow any \s- but only [ \t] since \n
;; might be both a comment-end marker and \s-.
@ -523,12 +527,11 @@ the same as `comment-search-backward'."
(when (nth 4 state)
(goto-char (nth 8 state))
(prog1 (point)
(when (or (looking-at comment-start-skip)
;; Some older modes use regexps that check the
;; char before the comment for quoting. (Bug#16971)
(save-excursion
(forward-char -1)
(looking-at comment-start-skip)))
(when (save-restriction
;; `comment-start-skip' sometimes checks that the
;; comment char is not escaped. (Bug#16971)
(narrow-to-region (point) (point-max))
(looking-at comment-start-skip))
(goto-char (match-end 0))))))
;; Can't rely on the syntax table, let's guess based on font-lock.
(unless (eq (get-text-property (point) 'face) 'font-lock-string-face)