(auto-coding-regexp-alist): Add entries
[bpt/emacs.git] / lisp / abbrev.el
index aa4249d..bd0c6ff 100644 (file)
@@ -1,6 +1,7 @@
 ;;; abbrev.el --- abbrev mode commands for Emacs
 
-;; Copyright (C) 1985, 1986, 1987, 1992 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1986, 1987, 1992, 2002, 2003, 2004,
+;;   2005, 2006 Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: abbrev convenience
@@ -19,8 +20,8 @@
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
 ;;; Commentary:
 
@@ -92,11 +93,11 @@ Mark is set after the inserted text."
   (interactive)
   (push-mark
    (save-excursion
-    (let ((tables abbrev-table-name-list))
-      (while tables
-       (insert-abbrev-table-description (car tables) t)
-       (setq tables (cdr tables))))
-    (point))))
+     (let ((tables abbrev-table-name-list))
+       (while tables
+        (insert-abbrev-table-description (car tables) t)
+        (setq tables (cdr tables))))
+     (point))))
 
 (defun list-abbrevs (&optional local)
   "Display a list of defined abbrevs.
@@ -134,9 +135,11 @@ Otherwise display all abbrevs."
   "Major mode for editing the list of abbrev definitions.
 \\{edit-abbrevs-map}"
   (interactive)
+  (kill-all-local-variables)
   (setq major-mode 'edit-abbrevs-mode)
   (setq mode-name "Edit-Abbrevs")
-  (use-local-map edit-abbrevs-map))
+  (use-local-map edit-abbrevs-map)
+  (run-mode-hooks 'edit-abbrevs-mode-hook))
 
 (defun edit-abbrevs ()
   "Alter abbrev definitions by editing a list of them.
@@ -168,23 +171,23 @@ the ones defined from the buffer now."
   (interactive "P")
   (if arg (kill-all-abbrevs))
   (save-excursion
-   (goto-char (point-min))
-   (while (and (not (eobp)) (re-search-forward "^(" nil t))
-     (let* ((buf (current-buffer))
-           (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 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)))
-       (define-abbrev-table table abbrevs)))))
+    (goto-char (point-min))
+    (while (and (not (eobp)) (re-search-forward "^(" nil t))
+      (let* ((buf (current-buffer))
+            (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 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)))
+       (define-abbrev-table table abbrevs)))))
 
 (defun read-abbrev-file (&optional file quietly)
   "Read abbrev definitions from file written with `write-abbrev-file'.
@@ -201,7 +204,7 @@ Optional second argument QUIETLY non-nil means don't display a message."
 Optional argument FILE is the name of the file to read;
 it defaults to the value of `abbrev-file-name'.
 Does not display any message."
-  ;(interactive "fRead abbrev file: ")
+                                       ;(interactive "fRead abbrev file: ")
   (read-abbrev-file file t))
 
 (defun write-abbrev-file (&optional file)
@@ -221,7 +224,17 @@ specified in `abbrev-file-name' is used."
   (let ((coding-system-for-write 'emacs-mule))
     (with-temp-file file
       (insert ";;-*-coding: emacs-mule;-*-\n")
-      (dolist (table abbrev-table-name-list)
+      (dolist (table
+               ;; We sort the table in order to ease the automatic
+               ;; merging of different versions of the user's abbrevs
+               ;; file.  This is useful, for example, for when the
+               ;; user keeps their home directory in a revision
+               ;; control system, and is therefore keeping multiple
+               ;; slightly-differing copies loosely synchronized.
+               (sort (copy-sequence abbrev-table-name-list)
+                     (lambda (s1 s2)
+                       (string< (symbol-name s1)
+                                (symbol-name s2)))))
        (insert-abbrev-table-description table nil)))))
 \f
 (defun add-mode-abbrev (arg)
@@ -269,7 +282,7 @@ Don't use this function in a Lisp program; use `define-abbrev' instead."
                              name (abbrev-expansion name table))))
        (define-abbrev table (downcase name) exp))))
 
-(defun inverse-add-mode-abbrev (arg)
+(defun inverse-add-mode-abbrev (n)
   "Define last word before point as a mode-specific abbrev.
 With prefix argument N, defines the Nth word before point.
 This command uses the minibuffer to read the expansion.
@@ -280,15 +293,15 @@ Expands the abbreviation after defining it."
        global-abbrev-table
      (or local-abbrev-table
         (error "No per-mode abbrev table")))
-   "Mode" arg))
+   "Mode" n))
 
-(defun inverse-add-global-abbrev (arg)
+(defun inverse-add-global-abbrev (n)
   "Define last word before point as a global (mode-independent) abbrev.
 With prefix argument N, defines the Nth word before point.
 This command uses the minibuffer to read the expansion.
 Expands the abbreviation after defining it."
   (interactive "p")
-  (inverse-add-abbrev global-abbrev-table "Global" arg))
+  (inverse-add-abbrev global-abbrev-table "Global" n))
 
 (defun inverse-add-abbrev (table type arg)
   (let (name exp start end)
@@ -326,9 +339,8 @@ ARG is non-nil.  Interactively, ARG is the prefix argument."
 
 (defun expand-region-abbrevs (start end &optional noquery)
   "For abbrev occurrence in the region, offer to expand it.
-The user is asked to type y or n for each occurrence.
-A prefix argument means don't query; expand all abbrevs.
-If called from a Lisp program, arguments are START END &optional NOQUERY."
+The user is asked to type `y' or `n' for each occurrence.
+A prefix argument means don't query; expand all abbrevs."
   (interactive "r\nP")
   (save-excursion
     (goto-char start)