Place empty abbrev tables after nonempty ones when editing

This commit is contained in:
Leo Liu 2011-03-28 22:34:32 +08:00
parent 1db5b1ad87
commit 947b656632
2 changed files with 26 additions and 2 deletions

View file

@ -1,3 +1,9 @@
2011-03-28 Leo Liu <sdl.web@gmail.com>
* abbrev.el (abbrev-table-empty-p): New function.
(prepare-abbrev-list-buffer): Place empty abbrev tables after
nonempty ones. (Bug#5937)
2011-03-27 Jan Djärv <jan.h.d@swipnet.se>
* cus-start.el (all): Add boolean ns-auto-hide-menu-bar.

View file

@ -123,8 +123,13 @@ Otherwise display all abbrevs."
(if local
(insert-abbrev-table-description
(abbrev-table-name local-table) t)
(dolist (table abbrev-table-name-list)
(insert-abbrev-table-description table t)))
(let (empty-tables)
(dolist (table abbrev-table-name-list)
(if (abbrev-table-empty-p (symbol-value table))
(push table empty-tables)
(insert-abbrev-table-description table t)))
(dolist (table (nreverse empty-tables))
(insert-abbrev-table-description table t))))
(goto-char (point-min))
(set-buffer-modified-p nil)
(edit-abbrevs-mode)
@ -420,6 +425,19 @@ PROPS is a list of properties."
(and (vectorp object)
(numberp (abbrev-table-get object :abbrev-table-modiff))))
(defun abbrev-table-empty-p (object &optional ignore-system)
"Return nil if there are no abbrev symbols in OBJECT.
If IGNORE-SYSTEM is non-nil, system definitions are ignored."
(unless (abbrev-table-p object)
(error "Non abbrev table object"))
(not (catch 'some
(mapatoms (lambda (abbrev)
(unless (or (zerop (length (symbol-name abbrev)))
(and ignore-system
(abbrev-get abbrev :system)))
(throw 'some t)))
object))))
(defvar global-abbrev-table (make-abbrev-table)
"The abbrev table whose abbrevs affect all buffers.
Each buffer may also have a local abbrev table.