annotate lisp/abbrev.el @ 24419:30e478cd167e

(shell-command-default-error-buffer): Renamed from shell-command-on-region-default-error-buffer. (shell-command-on-region): Mention in echo area when there is some error output. Mention success or failure, too. Accumulate multiple error outputs going forward, with formfeed in between. Display the error buffer when we have put something in it. (shell-command): Add the ERROR-BUFFER argument feature.
author Karl Heuer <kwzh@gnu.org>
date Mon, 01 Mar 1999 03:19:32 +0000
parents a77d473867b8
children 8c7fdc02cb78
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
22250
a77d473867b8 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 19307
diff changeset
5 ;; Keywords: abbrev convenience
2247
2c7997f249eb Add or correct keywords
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1329
diff changeset
6
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7 ;; This file is part of GNU Emacs.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 ;; GNU Emacs is free software; you can redistribute it and/or modify
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10 ;; 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
11 ;; the Free Software Foundation; either version 2, or (at your option)
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 ;; any later version.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 ;; GNU Emacs is distributed in the hope that it will be useful,
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 ;; GNU General Public License for more details.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19 ;; 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
20 ;; 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
21 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 11558
diff changeset
22 ;; Boston, MA 02111-1307, USA.
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
24 ;;; Commentary:
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
25
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
26 ;; 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
27
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 732
diff changeset
28 ;;; Code:
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
29
19307
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
30 (defcustom only-global-abbrevs nil
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
31 "*t means user plans to use global abbrevs only.
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
32 This makes the commands that normally define mode-specific abbrevs
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
33 define global abbrevs instead."
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
34 :type 'boolean
22250
a77d473867b8 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 19307
diff changeset
35 :group 'abbrev-mode
a77d473867b8 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 19307
diff changeset
36 :group 'convenience)
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38 (defun abbrev-mode (arg)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39 "Toggle abbrev mode.
1329
b825fe93c826 Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 1233
diff changeset
40 With argument ARG, turn abbrev mode on iff ARG is positive.
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41 In abbrev mode, inserting an abbreviation causes it to expand
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 and be replaced by its expansion."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43 (interactive "P")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 (setq abbrev-mode
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45 (if (null arg) (not abbrev-mode)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46 (> (prefix-numeric-value arg) 0)))
11558
03792bb111ab (abbrev-mode): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 9180
diff changeset
47 (force-mode-line-update))
19307
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
48
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
49 (defcustom abbrev-mode nil
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
50 "Toggle abbrev mode.
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
51 In abbrev mode, inserting an abbreviation causes it to expand
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
52 and be replaced by its expansion.
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
53 You must modify via \\[customize] for this variable to have an effect."
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
54 :set (lambda (symbol value)
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
55 (abbrev-mode (if value 1 0)))
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
56 :type 'boolean
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
57 :group 'abbrev-mode)
5745bc43cfe9 Customized.
Richard M. Stallman <rms@gnu.org>
parents: 16689
diff changeset
58
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60 (defvar edit-abbrevs-map nil
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 "Keymap used in edit-abbrevs.")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 (if edit-abbrevs-map
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 nil
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 (setq edit-abbrevs-map (make-sparse-keymap))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65 (define-key edit-abbrevs-map "\C-x\C-s" 'edit-abbrevs-redefine)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66 (define-key edit-abbrevs-map "\C-c\C-c" 'edit-abbrevs-redefine))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68 (defun kill-all-abbrevs ()
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 "Undefine all defined abbrevs."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70 (interactive)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71 (let ((tables abbrev-table-name-list))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72 (while tables
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73 (clear-abbrev-table (symbol-value (car tables)))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 (setq tables (cdr tables)))))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76 (defun insert-abbrevs ()
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77 "Insert after point a description of all defined abbrevs.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78 Mark is set after the inserted text."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79 (interactive)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80 (push-mark
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81 (save-excursion
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82 (let ((tables abbrev-table-name-list))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83 (while tables
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
84 (insert-abbrev-table-description (car tables) t)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85 (setq tables (cdr tables))))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86 (point))))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
87
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88 (defun list-abbrevs ()
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 "Display a list of all defined abbrevs."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 (interactive)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 (display-buffer (prepare-abbrev-list-buffer)))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93 (defun prepare-abbrev-list-buffer ()
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94 (save-excursion
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
95 (set-buffer (get-buffer-create "*Abbrevs*"))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96 (erase-buffer)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97 (let ((tables abbrev-table-name-list))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98 (while tables
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
99 (insert-abbrev-table-description (car tables) t)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100 (setq tables (cdr tables))))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101 (goto-char (point-min))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102 (set-buffer-modified-p nil)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103 (edit-abbrevs-mode))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104 (get-buffer-create "*Abbrevs*"))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
105
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106 (defun edit-abbrevs-mode ()
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
107 "Major mode for editing the list of abbrev definitions.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
108 \\{edit-abbrevs-map}"
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
109 (interactive)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110 (setq major-mode 'edit-abbrevs-mode)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111 (setq mode-name "Edit-Abbrevs")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
112 (use-local-map edit-abbrevs-map))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
114 (defun edit-abbrevs ()
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
115 "Alter abbrev definitions by editing a list of them.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
116 Selects a buffer containing a list of abbrev definitions.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117 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
118 according to your editing.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119 Buffer contains a header line for each abbrev table,
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
120 which is the abbrev table name in parentheses.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121 This is followed by one line per abbrev in that table:
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122 NAME USECOUNT EXPANSION HOOK
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123 where NAME and EXPANSION are strings with quotes,
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 USECOUNT is an integer, and HOOK is any valid function
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125 or may be omitted (it is usually omitted)."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
126 (interactive)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127 (switch-to-buffer (prepare-abbrev-list-buffer)))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 (defun edit-abbrevs-redefine ()
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130 "Redefine abbrevs according to current buffer contents."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 (interactive)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132 (define-abbrevs t)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133 (set-buffer-modified-p nil))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135 (defun define-abbrevs (&optional arg)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 "Define abbrevs according to current visible buffer contents.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137 See documentation of `edit-abbrevs' for info on the format of the
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138 text you must have in the buffer.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 With argument, eliminate all abbrev definitions except
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140 the ones defined from the buffer now."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 (interactive "P")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 (if arg (kill-all-abbrevs))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143 (save-excursion
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144 (goto-char (point-min))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145 (while (and (not (eobp)) (re-search-forward "^(" nil t))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146 (let* ((buf (current-buffer))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147 (table (read buf))
862
46630543d659 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
148 abbrevs name hook exp count)
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149 (forward-line 1)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150 (while (progn (forward-line 1)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
151 (not (eolp)))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152 (setq name (read buf) count (read buf) exp (read buf))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153 (skip-chars-backward " \t\n\f")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154 (setq hook (if (not (eolp)) (read buf)))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155 (skip-chars-backward " \t\n\f")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
156 (setq abbrevs (cons (list name exp hook count) abbrevs)))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157 (define-abbrev-table table abbrevs)))))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 (defun read-abbrev-file (&optional file quietly)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 "Read abbrev definitions from file written with `write-abbrev-file'.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161 Optional argument FILE is the name of the file to read;
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162 it defaults to the value of `abbrev-file-name'.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163 Optional second argument QUIETLY non-nil means don't print anything."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164 (interactive "fRead abbrev file: ")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165 (load (if (and file (> (length file) 0)) file abbrev-file-name)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 nil quietly)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167 (setq save-abbrevs t abbrevs-changed nil))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 (defun quietly-read-abbrev-file (&optional file)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170 "Read abbrev definitions from file written with write-abbrev-file.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 Optional argument FILE is the name of the file to read;
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172 it defaults to the value of `abbrev-file-name'.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173 Does not print anything."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174 ;(interactive "fRead abbrev file: ")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175 (read-abbrev-file file t))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 (defun write-abbrev-file (file)
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 732
diff changeset
178 "Write all abbrev definitions to a file of Lisp code.
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 The file written can be loaded in another session to define the same abbrevs.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 The argument FILE is the file name to write."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 (interactive
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 (list
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 (read-file-name "Write abbrev file: "
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 (file-name-directory (expand-file-name abbrev-file-name))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 abbrev-file-name)))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 (or (and file (> (length file) 0))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 (setq file abbrev-file-name))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 (save-excursion
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189 (set-buffer (get-buffer-create " write-abbrev-file"))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 (erase-buffer)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191 (let ((tables abbrev-table-name-list))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 (while tables
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193 (insert-abbrev-table-description (car tables) nil)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194 (setq tables (cdr tables))))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195 (write-region 1 (point-max) file)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196 (erase-buffer)))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 (defun add-mode-abbrev (arg)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199 "Define mode-specific abbrev for last word(s) before point.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
200 Argument is how many words before point form the expansion;
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 or zero means the region is the expansion.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202 A negative argument means to undefine the specified abbrev.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203 Reads the abbreviation in the minibuffer.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 Don't use this function in a Lisp program; use `define-abbrev' instead."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 (interactive "p")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207 (add-abbrev
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208 (if only-global-abbrevs
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
209 global-abbrev-table
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210 (or local-abbrev-table
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211 (error "No per-mode abbrev table")))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
212 "Mode" arg))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
214 (defun add-global-abbrev (arg)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 "Define global (all modes) abbrev for last word(s) before point.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216 The prefix argument specifies the number of words before point that form the
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 expansion; or zero means the region is the expansion.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218 A negative argument means to undefine the specified abbrev.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219 This command uses the minibuffer to read the abbreviation.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221 Don't use this function in a Lisp program; use `define-abbrev' instead."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222 (interactive "p")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 (add-abbrev global-abbrev-table "Global" arg))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225 (defun add-abbrev (table type arg)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226 (let ((exp (and (>= arg 0)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227 (buffer-substring
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228 (point)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229 (if (= arg 0) (mark)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230 (save-excursion (forward-word (- arg)) (point))))))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
231 name)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232 (setq name
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 (read-string (format (if exp "%s abbrev for \"%s\": "
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234 "Undefine %s abbrev: ")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235 type exp)))
9180
569ed1f55710 (add-abbrev, inverse-add-abbrev):
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
236 (set-text-properties 0 (length name) nil name)
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237 (if (or (null exp)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238 (not (abbrev-expansion name table))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
239 (y-or-n-p (format "%s expands to \"%s\"; redefine? "
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
240 name (abbrev-expansion name table))))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241 (define-abbrev table (downcase name) exp))))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
242
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243 (defun inverse-add-mode-abbrev (arg)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
244 "Define last word before point as a mode-specific abbrev.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
245 With prefix argument N, defines the Nth word before point.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
246 This command uses the minibuffer to read the expansion.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
247 Expands the abbreviation after defining it."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
248 (interactive "p")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
249 (inverse-add-abbrev
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250 (if only-global-abbrevs
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
251 global-abbrev-table
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
252 (or local-abbrev-table
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
253 (error "No per-mode abbrev table")))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
254 "Mode" arg))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
256 (defun inverse-add-global-abbrev (arg)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
257 "Define last word before point as a global (mode-independent) abbrev.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
258 With prefix argument N, defines the Nth word before point.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259 This command uses the minibuffer to read the expansion.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260 Expands the abbreviation after defining it."
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 (inverse-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 inverse-add-abbrev (table type arg)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265 (let (name nameloc exp)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
266 (save-excursion
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267 (forward-word (- arg))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268 (setq name (buffer-substring (point) (progn (forward-word 1)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269 (setq nameloc (point))))))
9180
569ed1f55710 (add-abbrev, inverse-add-abbrev):
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
270 (set-text-properties 0 (length name) nil name)
411
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271 (setq exp (read-string (format "%s expansion for \"%s\": "
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
272 type name)))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273 (if (or (not (abbrev-expansion name table))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
274 (y-or-n-p (format "%s expands to \"%s\"; redefine? "
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
275 name (abbrev-expansion name table))))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276 (progn
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
277 (define-abbrev table (downcase name) exp)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
278 (save-excursion
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
279 (goto-char nameloc)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
280 (expand-abbrev))))))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
281
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
282 (defun abbrev-prefix-mark (&optional arg)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
283 "Mark current point as the beginning of an abbrev.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
284 Abbrev to be expanded starts here rather than at beginning of word.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
285 This way, you can expand an abbrev with a prefix: insert the prefix,
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
286 use this command, then insert the abbrev."
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 (or arg (expand-abbrev))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
289 (setq abbrev-start-location (point-marker)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
290 abbrev-start-location-buffer (current-buffer))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
291 (insert "-"))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
292
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
293 (defun expand-region-abbrevs (start end &optional noquery)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294 "For abbrev occurrence in the region, offer to expand it.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295 The user is asked to type y or n for each occurrence.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
296 A prefix argument means don't query; expand all abbrevs.
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
297 If called from a Lisp program, arguments are START END &optional NOQUERY."
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298 (interactive "r\nP")
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299 (save-excursion
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 (goto-char start)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301 (let ((lim (- (point-max) end))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
302 pnt string)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303 (while (and (not (eobp))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 (progn (forward-word 1)
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305 (<= (setq pnt (point)) (- (point-max) lim))))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 (if (abbrev-expansion
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
307 (setq string
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
308 (buffer-substring
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
309 (save-excursion (forward-word -1) (point))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310 pnt)))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311 (if (or noquery (y-or-n-p (format "Expand `%s'? " string)))
cb75ab565260 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
312 (expand-abbrev)))))))
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 411
diff changeset
313
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 411
diff changeset
314 ;;; abbrev.el ends here