[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#5937: 23.1.95; why saving empty abbrev tables
From: |
Stefan Monnier |
Subject: |
bug#5937: 23.1.95; why saving empty abbrev tables |
Date: |
Mon, 12 Apr 2010 14:32:07 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) |
> Why empty abbrev tables are saved to file?
Don't know.
> It seems to make it more difficult for editing (edit-abbrevs) because
> the buffer is full of empty abbrev. I wonder if saving only non-empty
> tables is better and user friendlier.
It does sound like a good idea. Any objection?
> (defun abbrev-table-empty-p (table)
> "Return nil if there are no abbrev symbols in abbrev table object TABLE."
> (unless (abbrev-table-p table)
> (error "Non abbrev table object"))
> (not (catch 'some
> (mapatoms (lambda (sym)
> (when (abbrev-symbol (symbol-name sym) table)
> (throw 'some t)))
> table))))
> (defadvice write-abbrev-file (around nonempty-abbrev-tables activate)
> "Ignore empty abbrev tables when writing to FILE."
> (let ((file (ad-get-arg 0))
> (coding-system-for-write 'emacs-mule)
> (tables (loop for table in abbrev-table-name-list
> unless (abbrev-table-empty-p (symbol-value table))
> collect table)))
> (or (and file (> (length file) 0)) (setq file abbrev-file-name))
> (with-temp-file file
> (insert ";;-*-coding: emacs-mule;-*-\n")
> (dolist (table (sort tables
> (lambda (s1 s2)
> (string< (symbol-name s1)
> (symbol-name s2)))))
> (insert-abbrev-table-description table nil)))))
Obviously, defadvice wouldn't be the right approach for us.
And rather than (abbrev-symbol (symbol-name sym) table), we can use
(symbol-value sym).
We should also eliminate abbrev tables that only contain "system
abbrevs".
Stefan