annotate lisp/abbrev.el @ 62149:e64f1e2ecec2

(easy-mmode-pretty-mode-name): Explain more about the LIGHTER arg's usage in the doc string. Add commentary to clarify what the code does. Fix the regexp that strips whitespace from LIGHTER. Quote LIGHTER before using it, since it could have characters special to regular expressions.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 07 May 2005 15:05:00 +0000
parents f585c8c92ae1
children 6d35491e8a34 08185296b491
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 411
diff changeset
1 ;;; abbrev.el --- abbrev mode commands for Emacs
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2
846
20674ae6bf52 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
3 ;; Copyright (C) 1985, 1986, 1987, 1992 Free Software Foundation, Inc.
20674ae6bf52 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
4
38697
a19197c6442f Keyword added and FSF specified as Maintainer.
Pavel Janík <Pavel@Janik.cz>
parents: 33961
diff changeset
5 ;; Maintainer: FSF
22250
a77d473867b8 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 19307
diff changeset
6 ;; Keywords: abbrev convenience
2247
2c7997f249eb Add or correct keywords
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1329
diff changeset
7
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 732
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 ;; any later version.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 ;; GNU General Public License for more details.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 11558
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 11558
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 11558
diff changeset
23 ;; Boston, MA 02111-1307, USA.
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
25 ;;; Commentary:
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
26
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
27 ;; This facility is documented in the Emacs Manual.
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
28
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 732
diff changeset
29 ;;; Code:
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
30
42560
099200f97432 Remove unnecessary whitespaces.
Pavel Janík <Pavel@Janik.cz>
parents: 41142
diff changeset
31 (defcustom only-global-abbrevs nil
56576
ceca427e7f83 (only-global-abbrevs): Doc fix.
John Paul Wallington <jpw@pobox.com>
parents: 56078
diff changeset
32 "Non-nil means user plans to use global abbrevs only.
19307
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
33 This makes the commands that normally define mode-specific abbrevs
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
34 define global abbrevs instead."
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
35 :type 'boolean
22250
a77d473867b8 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 19307
diff changeset
36 :group 'abbrev-mode
a77d473867b8 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 19307
diff changeset
37 :group 'convenience)
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38
28822
1c03ffa9c07d (abbrev-mode): Make ARG optional.
Gerd Moellmann <gerd@gnu.org>
parents: 28186
diff changeset
39 (defun abbrev-mode (&optional arg)
56078
bd7bc33213fd (abbrev-mode, edit-abbrevs-map): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 54134
diff changeset
40 "Toggle Abbrev mode in the current buffer.
1329
b825fe93c826 Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 1233
diff changeset
41 With argument ARG, turn abbrev mode on iff ARG is positive.
56078
bd7bc33213fd (abbrev-mode, edit-abbrevs-map): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 54134
diff changeset
42 In Abbrev mode, inserting an abbreviation causes it to expand
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43 and be replaced by its expansion."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 (interactive "P")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45 (setq abbrev-mode
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46 (if (null arg) (not abbrev-mode)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 (> (prefix-numeric-value arg) 0)))
11558
03792bb111ab (abbrev-mode): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 9180
diff changeset
48 (force-mode-line-update))
19307
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
49
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
50 (defcustom abbrev-mode nil
56078
bd7bc33213fd (abbrev-mode, edit-abbrevs-map): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 54134
diff changeset
51 "Enable or disable Abbrev mode.
24596
5f4d21e85cf6 (abbrev-mode): Customizing sets the default value.
Richard M. Stallman <rms@gnu.org>
parents: 24550
diff changeset
52 Non-nil means automatically expand abbrevs as they are inserted.
5f4d21e85cf6 (abbrev-mode): Customizing sets the default value.
Richard M. Stallman <rms@gnu.org>
parents: 24550
diff changeset
53
56078
bd7bc33213fd (abbrev-mode, edit-abbrevs-map): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 54134
diff changeset
54 Setting this variable with `setq' changes it for the current buffer.
24596
5f4d21e85cf6 (abbrev-mode): Customizing sets the default value.
Richard M. Stallman <rms@gnu.org>
parents: 24550
diff changeset
55 Changing it with \\[customize] sets the default value.
56078
bd7bc33213fd (abbrev-mode, edit-abbrevs-map): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 54134
diff changeset
56 Interactively, use the command `abbrev-mode'
bd7bc33213fd (abbrev-mode, edit-abbrevs-map): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 54134
diff changeset
57 to enable or disable Abbrev mode in the current buffer."
19307
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
58 :type 'boolean
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
59 :group 'abbrev-mode)
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
60
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61
56576
ceca427e7f83 (only-global-abbrevs): Doc fix.
John Paul Wallington <jpw@pobox.com>
parents: 56078
diff changeset
62 (defvar edit-abbrevs-map
ceca427e7f83 (only-global-abbrevs): Doc fix.
John Paul Wallington <jpw@pobox.com>
parents: 56078
diff changeset
63 (let ((map (make-sparse-keymap)))
ceca427e7f83 (only-global-abbrevs): Doc fix.
John Paul Wallington <jpw@pobox.com>
parents: 56078
diff changeset
64 (define-key map "\C-x\C-s" 'edit-abbrevs-redefine)
ceca427e7f83 (only-global-abbrevs): Doc fix.
John Paul Wallington <jpw@pobox.com>
parents: 56078
diff changeset
65 (define-key map "\C-c\C-c" 'edit-abbrevs-redefine)
ceca427e7f83 (only-global-abbrevs): Doc fix.
John Paul Wallington <jpw@pobox.com>
parents: 56078
diff changeset
66 map)
56078
bd7bc33213fd (abbrev-mode, edit-abbrevs-map): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 54134
diff changeset
67 "Keymap used in `edit-abbrevs'.")
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 (defun kill-all-abbrevs ()
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70 "Undefine all defined abbrevs."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71 (interactive)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72 (let ((tables abbrev-table-name-list))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73 (while tables
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 (clear-abbrev-table (symbol-value (car tables)))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 (setq tables (cdr tables)))))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76
47424
472a93499802 (copy-abbrev-table): New function.
Richard M. Stallman <rms@gnu.org>
parents: 42560
diff changeset
77 (defun copy-abbrev-table (table)
472a93499802 (copy-abbrev-table): New function.
Richard M. Stallman <rms@gnu.org>
parents: 42560
diff changeset
78 "Make a new abbrev-table with the same abbrevs as TABLE."
472a93499802 (copy-abbrev-table): New function.
Richard M. Stallman <rms@gnu.org>
parents: 42560
diff changeset
79 (let ((new-table (make-abbrev-table)))
472a93499802 (copy-abbrev-table): New function.
Richard M. Stallman <rms@gnu.org>
parents: 42560
diff changeset
80 (mapatoms
472a93499802 (copy-abbrev-table): New function.
Richard M. Stallman <rms@gnu.org>
parents: 42560
diff changeset
81 (lambda (symbol)
472a93499802 (copy-abbrev-table): New function.
Richard M. Stallman <rms@gnu.org>
parents: 42560
diff changeset
82 (define-abbrev new-table
472a93499802 (copy-abbrev-table): New function.
Richard M. Stallman <rms@gnu.org>
parents: 42560
diff changeset
83 (symbol-name symbol)
472a93499802 (copy-abbrev-table): New function.
Richard M. Stallman <rms@gnu.org>
parents: 42560
diff changeset
84 (symbol-value symbol)
472a93499802 (copy-abbrev-table): New function.
Richard M. Stallman <rms@gnu.org>
parents: 42560
diff changeset
85 (symbol-function symbol)))
472a93499802 (copy-abbrev-table): New function.
Richard M. Stallman <rms@gnu.org>
parents: 42560
diff changeset
86 table)
472a93499802 (copy-abbrev-table): New function.
Richard M. Stallman <rms@gnu.org>
parents: 42560
diff changeset
87 new-table))
472a93499802 (copy-abbrev-table): New function.
Richard M. Stallman <rms@gnu.org>
parents: 42560
diff changeset
88
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 (defun insert-abbrevs ()
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 "Insert after point a description of all defined abbrevs.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 Mark is set after the inserted text."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92 (interactive)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93 (push-mark
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94 (save-excursion
61744
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
95 (let ((tables abbrev-table-name-list))
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
96 (while tables
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
97 (insert-abbrev-table-description (car tables) t)
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
98 (setq tables (cdr tables))))
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
99 (point))))
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100
31230
200fc9dc31f4 (list-abbrevs): Add optional parameter LOCAL.
Gerd Moellmann <gerd@gnu.org>
parents: 28822
diff changeset
101 (defun list-abbrevs (&optional local)
200fc9dc31f4 (list-abbrevs): Add optional parameter LOCAL.
Gerd Moellmann <gerd@gnu.org>
parents: 28822
diff changeset
102 "Display a list of defined abbrevs.
200fc9dc31f4 (list-abbrevs): Add optional parameter LOCAL.
Gerd Moellmann <gerd@gnu.org>
parents: 28822
diff changeset
103 If LOCAL is non-nil, interactively when invoked with a
200fc9dc31f4 (list-abbrevs): Add optional parameter LOCAL.
Gerd Moellmann <gerd@gnu.org>
parents: 28822
diff changeset
104 prefix arg, display only local, i.e. mode-specific, abbrevs.
200fc9dc31f4 (list-abbrevs): Add optional parameter LOCAL.
Gerd Moellmann <gerd@gnu.org>
parents: 28822
diff changeset
105 Otherwise display all abbrevs."
200fc9dc31f4 (list-abbrevs): Add optional parameter LOCAL.
Gerd Moellmann <gerd@gnu.org>
parents: 28822
diff changeset
106 (interactive "P")
200fc9dc31f4 (list-abbrevs): Add optional parameter LOCAL.
Gerd Moellmann <gerd@gnu.org>
parents: 28822
diff changeset
107 (display-buffer (prepare-abbrev-list-buffer local)))
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
108
31230
200fc9dc31f4 (list-abbrevs): Add optional parameter LOCAL.
Gerd Moellmann <gerd@gnu.org>
parents: 28822
diff changeset
109 (defun abbrev-table-name (table)
200fc9dc31f4 (list-abbrevs): Add optional parameter LOCAL.
Gerd Moellmann <gerd@gnu.org>
parents: 28822
diff changeset
110 "Value is the name of abbrev table TABLE."
200fc9dc31f4 (list-abbrevs): Add optional parameter LOCAL.
Gerd Moellmann <gerd@gnu.org>
parents: 28822
diff changeset
111 (let ((tables abbrev-table-name-list)
200fc9dc31f4 (list-abbrevs): Add optional parameter LOCAL.
Gerd Moellmann <gerd@gnu.org>
parents: 28822
diff changeset
112 found)
200fc9dc31f4 (list-abbrevs): Add optional parameter LOCAL.
Gerd Moellmann <gerd@gnu.org>
parents: 28822
diff changeset
113 (while (and (not found) tables)
200fc9dc31f4 (list-abbrevs): Add optional parameter LOCAL.
Gerd Moellmann <gerd@gnu.org>
parents: 28822
diff changeset
114 (when (eq (symbol-value (car tables)) table)
200fc9dc31f4 (list-abbrevs): Add optional parameter LOCAL.
Gerd Moellmann <gerd@gnu.org>
parents: 28822
diff changeset
115 (setq found (car tables)))
200fc9dc31f4 (list-abbrevs): Add optional parameter LOCAL.
Gerd Moellmann <gerd@gnu.org>
parents: 28822
diff changeset
116 (setq tables (cdr tables)))
200fc9dc31f4 (list-abbrevs): Add optional parameter LOCAL.
Gerd Moellmann <gerd@gnu.org>
parents: 28822
diff changeset
117 found))
42560
099200f97432 Remove unnecessary whitespaces.
Pavel Janík <Pavel@Janik.cz>
parents: 41142
diff changeset
118
31230
200fc9dc31f4 (list-abbrevs): Add optional parameter LOCAL.
Gerd Moellmann <gerd@gnu.org>
parents: 28822
diff changeset
119 (defun prepare-abbrev-list-buffer (&optional local)
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
120 (save-excursion
33961
f7744f7fd432 (prepare-abbrev-list-buffer): Get the value of
Gerd Moellmann <gerd@gnu.org>
parents: 31230
diff changeset
121 (let ((table local-abbrev-table))
f7744f7fd432 (prepare-abbrev-list-buffer): Get the value of
Gerd Moellmann <gerd@gnu.org>
parents: 31230
diff changeset
122 (set-buffer (get-buffer-create "*Abbrevs*"))
f7744f7fd432 (prepare-abbrev-list-buffer): Get the value of
Gerd Moellmann <gerd@gnu.org>
parents: 31230
diff changeset
123 (erase-buffer)
f7744f7fd432 (prepare-abbrev-list-buffer): Get the value of
Gerd Moellmann <gerd@gnu.org>
parents: 31230
diff changeset
124 (if local
f7744f7fd432 (prepare-abbrev-list-buffer): Get the value of
Gerd Moellmann <gerd@gnu.org>
parents: 31230
diff changeset
125 (insert-abbrev-table-description (abbrev-table-name table) t)
f7744f7fd432 (prepare-abbrev-list-buffer): Get the value of
Gerd Moellmann <gerd@gnu.org>
parents: 31230
diff changeset
126 (dolist (table abbrev-table-name-list)
f7744f7fd432 (prepare-abbrev-list-buffer): Get the value of
Gerd Moellmann <gerd@gnu.org>
parents: 31230
diff changeset
127 (insert-abbrev-table-description table t)))
f7744f7fd432 (prepare-abbrev-list-buffer): Get the value of
Gerd Moellmann <gerd@gnu.org>
parents: 31230
diff changeset
128 (goto-char (point-min))
f7744f7fd432 (prepare-abbrev-list-buffer): Get the value of
Gerd Moellmann <gerd@gnu.org>
parents: 31230
diff changeset
129 (set-buffer-modified-p nil)
f7744f7fd432 (prepare-abbrev-list-buffer): Get the value of
Gerd Moellmann <gerd@gnu.org>
parents: 31230
diff changeset
130 (edit-abbrevs-mode)
f7744f7fd432 (prepare-abbrev-list-buffer): Get the value of
Gerd Moellmann <gerd@gnu.org>
parents: 31230
diff changeset
131 (current-buffer))))
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133 (defun edit-abbrevs-mode ()
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134 "Major mode for editing the list of abbrev definitions.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135 \\{edit-abbrevs-map}"
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 (interactive)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137 (setq major-mode 'edit-abbrevs-mode)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138 (setq mode-name "Edit-Abbrevs")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 (use-local-map edit-abbrevs-map))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 (defun edit-abbrevs ()
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 "Alter abbrev definitions by editing a list of them.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143 Selects a buffer containing a list of abbrev definitions.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144 You can edit them and type \\<edit-abbrevs-map>\\[edit-abbrevs-redefine] to redefine abbrevs
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145 according to your editing.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146 Buffer contains a header line for each abbrev table,
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147 which is the abbrev table name in parentheses.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
148 This is followed by one line per abbrev in that table:
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149 NAME USECOUNT EXPANSION HOOK
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150 where NAME and EXPANSION are strings with quotes,
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
151 USECOUNT is an integer, and HOOK is any valid function
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152 or may be omitted (it is usually omitted)."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153 (interactive)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154 (switch-to-buffer (prepare-abbrev-list-buffer)))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
156 (defun edit-abbrevs-redefine ()
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157 "Redefine abbrevs according to current buffer contents."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158 (interactive)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 (define-abbrevs t)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 (set-buffer-modified-p nil))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162 (defun define-abbrevs (&optional arg)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163 "Define abbrevs according to current visible buffer contents.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164 See documentation of `edit-abbrevs' for info on the format of the
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165 text you must have in the buffer.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 With argument, eliminate all abbrev definitions except
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167 the ones defined from the buffer now."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 (interactive "P")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 (if arg (kill-all-abbrevs))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170 (save-excursion
61744
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
171 (goto-char (point-min))
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
172 (while (and (not (eobp)) (re-search-forward "^(" nil t))
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
173 (let* ((buf (current-buffer))
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
174 (table (read buf))
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
175 abbrevs name hook exp count sys)
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
176 (forward-line 1)
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
177 (while (progn (forward-line 1)
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
178 (not (eolp)))
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
179 (setq name (read buf) count (read buf))
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
180 (if (equal count '(sys))
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
181 (setq sys t count (read buf)))
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
182 (setq exp (read buf))
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
183 (skip-chars-backward " \t\n\f")
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
184 (setq hook (if (not (eolp)) (read buf)))
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
185 (skip-chars-backward " \t\n\f")
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
186 (setq abbrevs (cons (list name exp hook count sys) abbrevs)))
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
187 (define-abbrev-table table abbrevs)))))
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189 (defun read-abbrev-file (&optional file quietly)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 "Read abbrev definitions from file written with `write-abbrev-file'.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191 Optional argument FILE is the name of the file to read;
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 it defaults to the value of `abbrev-file-name'.
40904
0f074a905ca2 (read-abbrev-file): Don't set save-abbrevs.
Richard M. Stallman <rms@gnu.org>
parents: 38697
diff changeset
193 Optional second argument QUIETLY non-nil means don't display a message."
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194 (interactive "fRead abbrev file: ")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195 (load (if (and file (> (length file) 0)) file abbrev-file-name)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196 nil quietly)
40904
0f074a905ca2 (read-abbrev-file): Don't set save-abbrevs.
Richard M. Stallman <rms@gnu.org>
parents: 38697
diff changeset
197 (setq abbrevs-changed nil))
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199 (defun quietly-read-abbrev-file (&optional file)
56576
ceca427e7f83 (only-global-abbrevs): Doc fix.
John Paul Wallington <jpw@pobox.com>
parents: 56078
diff changeset
200 "Read abbrev definitions from file written with `write-abbrev-file'.
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 Optional argument FILE is the name of the file to read;
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202 it defaults to the value of `abbrev-file-name'.
40904
0f074a905ca2 (read-abbrev-file): Don't set save-abbrevs.
Richard M. Stallman <rms@gnu.org>
parents: 38697
diff changeset
203 Does not display any message."
61744
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
204 ;(interactive "fRead abbrev file: ")
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 (read-abbrev-file file t))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206
54134
16aaa8fe949d (write-abbrev-file): Make argument optional. Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
207 (defun write-abbrev-file (&optional file)
16aaa8fe949d (write-abbrev-file): Make argument optional. Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
208 "Write all user-level abbrev definitions to a file of Lisp code.
16aaa8fe949d (write-abbrev-file): Make argument optional. Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
209 This does not include system abbrevs; it includes only the abbrev tables
16aaa8fe949d (write-abbrev-file): Make argument optional. Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
210 listed in listed in `abbrev-table-name-list'.
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211 The file written can be loaded in another session to define the same abbrevs.
54134
16aaa8fe949d (write-abbrev-file): Make argument optional. Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
212 The argument FILE is the file name to write. If omitted or nil, the file
16aaa8fe949d (write-abbrev-file): Make argument optional. Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
213 specified in `abbrev-file-name' is used."
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
214 (interactive
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 (list
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216 (read-file-name "Write abbrev file: "
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 (file-name-directory (expand-file-name abbrev-file-name))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218 abbrev-file-name)))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219 (or (and file (> (length file) 0))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220 (setq file abbrev-file-name))
49405
7c5f68b0dbd3 (write-abbrev-file): Simplify, and put a coding cookie
Dave Love <fx@gnu.org>
parents: 47654
diff changeset
221 (let ((coding-system-for-write 'emacs-mule))
7c5f68b0dbd3 (write-abbrev-file): Simplify, and put a coding cookie
Dave Love <fx@gnu.org>
parents: 47654
diff changeset
222 (with-temp-file file
7c5f68b0dbd3 (write-abbrev-file): Simplify, and put a coding cookie
Dave Love <fx@gnu.org>
parents: 47654
diff changeset
223 (insert ";;-*-coding: emacs-mule;-*-\n")
61744
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
224 (dolist (table
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
225 ;; We sort the table in order to ease the automatic
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
226 ;; merging of different versions of the user's abbrevs
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
227 ;; file. This is useful, for example, for when the
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
228 ;; user keeps their home directory in a revision
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
229 ;; control system, and is therefore keeping multiple
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
230 ;; slightly-differing copies loosely synchronized.
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
231 (sort (copy-sequence abbrev-table-name-list)
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
232 (lambda (s1 s2)
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
233 (string< (symbol-name s1)
f585c8c92ae1 (write-abbrev-file): Write table entries in alphabetical order
Eli Zaretskii <eliz@gnu.org>
parents: 61448
diff changeset
234 (symbol-name s2)))))
49405
7c5f68b0dbd3 (write-abbrev-file): Simplify, and put a coding cookie
Dave Love <fx@gnu.org>
parents: 47654
diff changeset
235 (insert-abbrev-table-description table nil)))))
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237 (defun add-mode-abbrev (arg)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238 "Define mode-specific abbrev for last word(s) before point.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
239 Argument is how many words before point form the expansion;
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
240 or zero means the region is the expansion.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241 A negative argument means to undefine the specified abbrev.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
242 Reads the abbreviation in the minibuffer.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
244 Don't use this function in a Lisp program; use `define-abbrev' instead."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
245 (interactive "p")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
246 (add-abbrev
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
247 (if only-global-abbrevs
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49405
diff changeset
248 global-abbrev-table
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
249 (or local-abbrev-table
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250 (error "No per-mode abbrev table")))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
251 "Mode" arg))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
252
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
253 (defun add-global-abbrev (arg)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
254 "Define global (all modes) abbrev for last word(s) before point.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255 The prefix argument specifies the number of words before point that form the
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
256 expansion; or zero means the region is the expansion.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
257 A negative argument means to undefine the specified abbrev.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
258 This command uses the minibuffer to read the abbreviation.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260 Don't use this function in a Lisp program; use `define-abbrev' instead."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261 (interactive "p")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262 (add-abbrev global-abbrev-table "Global" arg))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
264 (defun add-abbrev (table type arg)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265 (let ((exp (and (>= arg 0)
26079
bc18b027a049 (add-abbrev, inverse-add-abbrev, expand-region-abbrevs): Remove
Dave Love <fx@gnu.org>
parents: 24596
diff changeset
266 (buffer-substring-no-properties
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267 (point)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268 (if (= arg 0) (mark)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269 (save-excursion (forward-word (- arg)) (point))))))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
270 name)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271 (setq name
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
272 (read-string (format (if exp "%s abbrev for \"%s\": "
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273 "Undefine %s abbrev: ")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
274 type exp)))
9180
569ed1f55710 (add-abbrev, inverse-add-abbrev):
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
275 (set-text-properties 0 (length name) nil name)
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276 (if (or (null exp)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
277 (not (abbrev-expansion name table))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
278 (y-or-n-p (format "%s expands to \"%s\"; redefine? "
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
279 name (abbrev-expansion name table))))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
280 (define-abbrev table (downcase name) exp))))
42560
099200f97432 Remove unnecessary whitespaces.
Pavel Janík <Pavel@Janik.cz>
parents: 41142
diff changeset
281
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
282 (defun inverse-add-mode-abbrev (arg)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
283 "Define last word before point as a mode-specific abbrev.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
284 With prefix argument N, defines the Nth word before point.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
285 This command uses the minibuffer to read the expansion.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
286 Expands the abbreviation after defining it."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
287 (interactive "p")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
288 (inverse-add-abbrev
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
289 (if only-global-abbrevs
42560
099200f97432 Remove unnecessary whitespaces.
Pavel Janík <Pavel@Janik.cz>
parents: 41142
diff changeset
290 global-abbrev-table
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
291 (or local-abbrev-table
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
292 (error "No per-mode abbrev table")))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
293 "Mode" arg))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295 (defun inverse-add-global-abbrev (arg)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
296 "Define last word before point as a global (mode-independent) abbrev.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
297 With prefix argument N, defines the Nth word before point.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298 This command uses the minibuffer to read the expansion.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299 Expands the abbreviation after defining it."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 (interactive "p")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301 (inverse-add-abbrev global-abbrev-table "Global" arg))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
302
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303 (defun inverse-add-abbrev (table type arg)
28186
a552a942b327 (inverse-add-abbrev): Identify word by first moving
Gerd Moellmann <gerd@gnu.org>
parents: 26079
diff changeset
304 (let (name exp start end)
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305 (save-excursion
28186
a552a942b327 (inverse-add-abbrev): Identify word by first moving
Gerd Moellmann <gerd@gnu.org>
parents: 26079
diff changeset
306 (forward-word (1+ (- arg)))
a552a942b327 (inverse-add-abbrev): Identify word by first moving
Gerd Moellmann <gerd@gnu.org>
parents: 26079
diff changeset
307 (setq end (point))
a552a942b327 (inverse-add-abbrev): Identify word by first moving
Gerd Moellmann <gerd@gnu.org>
parents: 26079
diff changeset
308 (backward-word 1)
a552a942b327 (inverse-add-abbrev): Identify word by first moving
Gerd Moellmann <gerd@gnu.org>
parents: 26079
diff changeset
309 (setq start (point)
a552a942b327 (inverse-add-abbrev): Identify word by first moving
Gerd Moellmann <gerd@gnu.org>
parents: 26079
diff changeset
310 name (buffer-substring-no-properties start end)))
a552a942b327 (inverse-add-abbrev): Identify word by first moving
Gerd Moellmann <gerd@gnu.org>
parents: 26079
diff changeset
311
a552a942b327 (inverse-add-abbrev): Identify word by first moving
Gerd Moellmann <gerd@gnu.org>
parents: 26079
diff changeset
312 (setq exp (read-string (format "%s expansion for \"%s\": " type name)
a552a942b327 (inverse-add-abbrev): Identify word by first moving
Gerd Moellmann <gerd@gnu.org>
parents: 26079
diff changeset
313 nil nil nil t))
a552a942b327 (inverse-add-abbrev): Identify word by first moving
Gerd Moellmann <gerd@gnu.org>
parents: 26079
diff changeset
314 (when (or (not (abbrev-expansion name table))
a552a942b327 (inverse-add-abbrev): Identify word by first moving
Gerd Moellmann <gerd@gnu.org>
parents: 26079
diff changeset
315 (y-or-n-p (format "%s expands to \"%s\"; redefine? "
a552a942b327 (inverse-add-abbrev): Identify word by first moving
Gerd Moellmann <gerd@gnu.org>
parents: 26079
diff changeset
316 name (abbrev-expansion name table))))
a552a942b327 (inverse-add-abbrev): Identify word by first moving
Gerd Moellmann <gerd@gnu.org>
parents: 26079
diff changeset
317 (define-abbrev table (downcase name) exp)
a552a942b327 (inverse-add-abbrev): Identify word by first moving
Gerd Moellmann <gerd@gnu.org>
parents: 26079
diff changeset
318 (save-excursion
a552a942b327 (inverse-add-abbrev): Identify word by first moving
Gerd Moellmann <gerd@gnu.org>
parents: 26079
diff changeset
319 (goto-char end)
a552a942b327 (inverse-add-abbrev): Identify word by first moving
Gerd Moellmann <gerd@gnu.org>
parents: 26079
diff changeset
320 (expand-abbrev)))))
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
321
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
322 (defun abbrev-prefix-mark (&optional arg)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
323 "Mark current point as the beginning of an abbrev.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324 Abbrev to be expanded starts here rather than at beginning of word.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325 This way, you can expand an abbrev with a prefix: insert the prefix,
54134
16aaa8fe949d (write-abbrev-file): Make argument optional. Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
326 use this command, then insert the abbrev. This command inserts a
16aaa8fe949d (write-abbrev-file): Make argument optional. Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
327 temporary hyphen after the prefix \(until the intended abbrev
16aaa8fe949d (write-abbrev-file): Make argument optional. Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
328 expansion occurs).
16aaa8fe949d (write-abbrev-file): Make argument optional. Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
329 If the prefix is itself an abbrev, this command expands it, unless
16aaa8fe949d (write-abbrev-file): Make argument optional. Doc fix.
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
330 ARG is non-nil. Interactively, ARG is the prefix argument."
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 (interactive "P")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332 (or arg (expand-abbrev))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
333 (setq abbrev-start-location (point-marker)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
334 abbrev-start-location-buffer (current-buffer))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
335 (insert "-"))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
336
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
337 (defun expand-region-abbrevs (start end &optional noquery)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
338 "For abbrev occurrence in the region, offer to expand it.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
339 The user is asked to type y or n for each occurrence.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
340 A prefix argument means don't query; expand all abbrevs.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
341 If called from a Lisp program, arguments are START END &optional NOQUERY."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
342 (interactive "r\nP")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
343 (save-excursion
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
344 (goto-char start)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
345 (let ((lim (- (point-max) end))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
346 pnt string)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
347 (while (and (not (eobp))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
348 (progn (forward-word 1)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
349 (<= (setq pnt (point)) (- (point-max) lim))))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
350 (if (abbrev-expansion
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
351 (setq string
26079
bc18b027a049 (add-abbrev, inverse-add-abbrev, expand-region-abbrevs): Remove
Dave Love <fx@gnu.org>
parents: 24596
diff changeset
352 (buffer-substring-no-properties
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
353 (save-excursion (forward-word -1) (point))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
354 pnt)))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
355 (if (or noquery (y-or-n-p (format "Expand `%s'? " string)))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
356 (expand-abbrev)))))))
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 411
diff changeset
357
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49588
diff changeset
358 ;;; arch-tag: dbd6f3ae-dfe3-40ba-b00f-f9e3ff960df5
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 411
diff changeset
359 ;;; abbrev.el ends here