]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix mark-defun when there's no spaces between successive defuns.
authorAlan Mackenzie <acm@muc.de>
Sat, 6 Jan 2018 11:48:32 +0000 (11:48 +0000)
committerAlan Mackenzie <acm@muc.de>
Sat, 6 Jan 2018 11:48:32 +0000 (11:48 +0000)
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.

lisp/emacs-lisp/lisp.el

index 1777779b75cdb63f3a02640bb3b508dac3f4de25..68d50e6d0b2222edaacae1df1ebfe4b2baa06509 100644 (file)
@@ -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