]> git.eshelyaron.com Git - emacs.git/commitdiff
Make edit-abbrevs parsing less brittle
authorLars Ingebrigtsen <larsi@gnus.org>
Tue, 27 Oct 2020 11:18:27 +0000 (12:18 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Tue, 27 Oct 2020 11:19:41 +0000 (12:19 +0100)
* lisp/abbrev.el (define-abbrevs): Make the parsing less brittle
-- allow more blank lines (bug#42611).

lisp/abbrev.el

index dc52a22012584652ce9b3533407ae7c45e5b3e18..f35c637eed5b13d30a6bfdac04ad84a5f1dce60b 100644 (file)
@@ -189,17 +189,21 @@ the ones defined from the buffer now."
             (table (read buf))
             abbrevs name hook exp count sys)
        (forward-line 1)
-       (while (progn (forward-line 1)
-                     (not (eolp)))
-         (setq name (read buf) count (read buf))
-         (if (equal count '(sys))
-             (setq sys t count (read buf))
-           (setq sys nil))
-         (setq exp (read buf))
-         (skip-chars-backward " \t\n\f")
-         (setq hook (if (not (eolp)) (read buf)))
-         (skip-chars-backward " \t\n\f")
-         (setq abbrevs (cons (list name exp hook count sys) abbrevs)))
+       (while (and (not (eobp))
+                    ;; Advance as long as we're looking at blank lines
+                    ;; or we have an abbrev.
+                    (looking-at "[ \t\n]\\|\\(\"\\)"))
+          (when (match-string 1)
+           (setq name (read buf) count (read buf))
+           (if (equal count '(sys))
+               (setq sys t count (read buf))
+             (setq sys nil))
+           (setq exp (read buf))
+           (skip-chars-backward " \t\n\f")
+           (setq hook (if (not (eolp)) (read buf)))
+           (skip-chars-backward " \t\n\f")
+           (setq abbrevs (cons (list name exp hook count sys) abbrevs)))
+          (forward-line 1))
        (define-abbrev-table table abbrevs)))))
 
 (defun read-abbrev-file (&optional file quietly)