Fix mark-defun when there's no spaces between successive defuns.
The problem was a parse-partial-sexp call which tried to use the STOPBEFORE argument to detect non-syntactic WS. This fails on a "}", which does not begin a sexp. * lisp/emacs-lisp/lisp.h (beginning-of-defun--in-emptyish-line-p): Enhance to handle BOL being in a string. (beginning-of-defun-comments): Call the above function in place of the call to parse-partial-sexp.
This commit is contained in:
parent
a377c652b5
commit
b8d74c4578
1 changed files with 8 additions and 10 deletions
|
@ -405,12 +405,13 @@ whitespace."
|
|||
;; See https://lists.gnu.org/r/help-gnu-emacs/2016-08/msg00141.html
|
||||
(save-excursion
|
||||
(forward-line 0)
|
||||
(< (line-end-position)
|
||||
(let ((ppss (syntax-ppss)))
|
||||
(when (nth 4 ppss)
|
||||
(goto-char (nth 8 ppss)))
|
||||
(forward-comment (point-max))
|
||||
(point)))))
|
||||
(let ((ppss (syntax-ppss)))
|
||||
(and (null (nth 3 ppss))
|
||||
(< (line-end-position)
|
||||
(progn (when (nth 4 ppss)
|
||||
(goto-char (nth 8 ppss)))
|
||||
(forward-comment (point-max))
|
||||
(point)))))))
|
||||
|
||||
(defun beginning-of-defun-comments (&optional arg)
|
||||
"Move to the beginning of ARGth defun, including comments."
|
||||
|
@ -428,10 +429,7 @@ whitespace."
|
|||
(progn (skip-syntax-backward
|
||||
"-" (line-beginning-position))
|
||||
(not (bolp))) ; Check for blank line.
|
||||
(progn (parse-partial-sexp
|
||||
(line-beginning-position) (line-end-position)
|
||||
nil t (syntax-ppss (line-beginning-position)))
|
||||
(eolp))))) ; Check for non-comment text.
|
||||
(beginning-of-defun--in-emptyish-line-p)))) ; Check for non-comment text.
|
||||
(forward-line (if first-line-p 0 1))))
|
||||
|
||||
(defvar end-of-defun-function
|
||||
|
|
Loading…
Add table
Reference in a new issue