From: Lars Ingebrigtsen Date: Tue, 27 Oct 2020 11:18:27 +0000 (+0100) Subject: Make edit-abbrevs parsing less brittle X-Git-Tag: emacs-28.0.90~5396 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=990c0620cb9fee3f4779468662d8447c2b301156;p=emacs.git Make edit-abbrevs parsing less brittle * lisp/abbrev.el (define-abbrevs): Make the parsing less brittle -- allow more blank lines (bug#42611). --- diff --git a/lisp/abbrev.el b/lisp/abbrev.el index dc52a220125..f35c637eed5 100644 --- a/lisp/abbrev.el +++ b/lisp/abbrev.el @@ -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)