diff options
author | Leo Liu <sdl.web@gmail.com> | 2013-05-18 06:46:10 +0800 |
---|---|---|
committer | Leo Liu <sdl.web@gmail.com> | 2013-05-18 06:46:10 +0800 |
commit | 42caeb895d159d7b3d32e5f4873b063b6759e244 (patch) | |
tree | 6a47930d7c1547d35ee318693ffe36306e7316b7 /lisp/newcomment.el | |
parent | 0a1691786d832afd0e0b681ecc71538fb63eec2b (diff) | |
download | emacs-42caeb895d159d7b3d32e5f4873b063b6759e244.tar.gz |
* newcomment.el (comment-search-backward): Stricter in finding
comment start.
* progmodes/octave.el (octave-comment-start): Remove the SPC char.
(octave-comment-start-skip): Properly anchored.
Fixes: debbugs:14303
Diffstat (limited to 'lisp/newcomment.el')
-rw-r--r-- | lisp/newcomment.el | 44 |
1 files changed, 23 insertions, 21 deletions
diff --git a/lisp/newcomment.el b/lisp/newcomment.el index bcb5f721ae8..e10b96f97f9 100644 --- a/lisp/newcomment.el +++ b/lisp/newcomment.el @@ -485,27 +485,29 @@ and raises an error or returns nil if NOERROR is non-nil." Moves point to inside the comment and returns the position of the comment-starter. If no comment is found, moves point to LIMIT and raises an error or returns nil if NOERROR is non-nil." - ;; FIXME: If a comment-start appears inside a comment, we may erroneously - ;; stop there. This can be rather bad in general, but since - ;; comment-search-backward is only used to find the comment-column (in - ;; comment-set-column) and to find the comment-start string (via - ;; comment-beginning) in indent-new-comment-line, it should be harmless. - (if (not (re-search-backward comment-start-skip limit t)) - (unless noerror (error "No comment")) - (beginning-of-line) - (let* ((end (match-end 0)) - (cs (comment-search-forward end t)) - (pt (point))) - (if (not cs) - (progn (beginning-of-line) - (comment-search-backward limit noerror)) - (while (progn (goto-char cs) - (comment-forward) - (and (< (point) end) - (setq cs (comment-search-forward end t)))) - (setq pt (point))) - (goto-char pt) - cs)))) + (let (found end) + (while (and (not found) + (re-search-backward comment-start-skip limit t)) + (setq end (match-end 0)) + (unless (and comment-use-syntax + (nth 8 (syntax-ppss (or (match-end 1) + (match-beginning 0))))) + (setq found t))) + (if (not found) + (unless noerror (error "No comment")) + (beginning-of-line) + (let ((cs (comment-search-forward end t)) + (pt (point))) + (if (not cs) + (progn (beginning-of-line) + (comment-search-backward limit noerror)) + (while (progn (goto-char cs) + (comment-forward) + (and (< (point) end) + (setq cs (comment-search-forward end t)))) + (setq pt (point))) + (goto-char pt) + cs))))) (defun comment-beginning () "Find the beginning of the enclosing comment. |