diff options
Diffstat (limited to 'lisp/abbrev.el')
-rw-r--r-- | lisp/abbrev.el | 26 |
1 files changed, 15 insertions, 11 deletions
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) |