From 12a106a903756aac5fd545ba8cb8f1b5dc7d9304 Mon Sep 17 00:00:00 2001 From: Leo Liu Date: Thu, 19 Apr 2012 00:43:23 +0800 Subject: [PATCH] * lisp/abbrev.el (edit-abbrevs): Move point to the abbrev table of current buffer. (prepare-abbrev-list-buffer): Enter edit-abbrevs-mode only if LOCAL is nil. --- lisp/ChangeLog | 7 +++++++ lisp/abbrev.el | 17 +++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 054b3ca5f47..de484dc68fa 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2012-04-18 Leo Liu + + * abbrev.el (edit-abbrevs): Move point to the abbrev table of + current buffer. + (prepare-abbrev-list-buffer): Enter edit-abbrevs-mode only if + LOCAL is nil. + 2012-04-18 Chong Yidong * simple.el (line-move): Use forward-line if in batch mode diff --git a/lisp/abbrev.el b/lisp/abbrev.el index 3845c4ce4e6..7f54d3dc253 100644 --- a/lisp/abbrev.el +++ b/lisp/abbrev.el @@ -134,10 +134,13 @@ Otherwise display all abbrevs." (push table empty-tables) (insert-abbrev-table-description table t))) (dolist (table (nreverse empty-tables)) - (insert-abbrev-table-description table t)))) + (insert-abbrev-table-description table t))) + ;; Note: `list-abbrevs' can dispaly only local abbrevs, in + ;; which case editing could lose abbrevs of other tables. Thus + ;; enter `edit-abbrevs-mode' only if LOCAL is nil. + (edit-abbrevs-mode)) (goto-char (point-min)) (set-buffer-modified-p nil) - (edit-abbrevs-mode) (current-buffer)))) (defun edit-abbrevs-mode () @@ -152,7 +155,8 @@ Otherwise display all abbrevs." (defun edit-abbrevs () "Alter abbrev definitions by editing a list of them. -Selects a buffer containing a list of abbrev definitions. +Selects a buffer containing a list of abbrev definitions with +point located in the abbrev table of current buffer. You can edit them and type \\\\[edit-abbrevs-redefine] to redefine abbrevs according to your editing. Buffer contains a header line for each abbrev table, @@ -163,7 +167,12 @@ where NAME and EXPANSION are strings with quotes, USECOUNT is an integer, and HOOK is any valid function or may be omitted (it is usually omitted)." (interactive) - (switch-to-buffer (prepare-abbrev-list-buffer))) + (let ((table-name (abbrev-table-name local-abbrev-table))) + (switch-to-buffer (prepare-abbrev-list-buffer)) + (when (and table-name + (search-forward + (concat "(" (symbol-name table-name) ")\n\n") nil t)) + (goto-char (match-end 0))))) (defun edit-abbrevs-redefine () "Redefine abbrevs according to current buffer contents." -- 2.39.2