annotate lisp/macros.el @ 14789:d68b71228abd

(bibtex-pop): New generic function which unifies the functionality of bibtex-pop-previous and bibtex-pop-next. Now, bibtex-pop moves to the end of field after the pop. Concatenated strings are now handled correctly. Delimiters are not added to non-delimited entries. Changed occurences of bibtex-text-in-cfield to bibtex-text-in-field. (bibtex-pop-previous, bibtex-pop-next): Call bibtex-pop. (bibtex-complete-string): Fixed bug that removed delimiters around the following field if current field is already undelimited on completion. (bibtex-complete-string, bibtex-remove-double-quotes-or-braces): Only remove delimiters if field text is not concatenated. (bibtex-font-lock-keywords): Use the same regexps used in all other places of bibtex.el to parse the buffer. (bibtex-mode): Changed the definition of font-lock-defaults, so that quote-delimited entries aren't fontified as strings anymore. (bibtex-parse-keys): Changed the regexp used for finding crossref entries. (bibtex-field-const, bibtex-reference-key): Fixed the regexp to match more of the characters allowed here by BibTeX/LaTeX. (bibtex-field-name): Made it less restrictive. (bibtex-field-string): Changed so that quote-delimited entries with quotes inside aren't a problem anymore. Changed nesting level of braces in entries to support three inner braces. (bibtex-validate-buffer): By giving an optional argument, the user can now let it not validate the whole buffer, but only the portion starting at point. Small modification in strategy used to find next entry. (bibtex-print-help-message): Ignore case in field name when searching for help text. (bibtex-submit-bug-report): New function.
author Richard M. Stallman <rms@gnu.org>
date Fri, 08 Mar 1996 17:42:30 +0000
parents ad30f677493e
children c23c9712ef5c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
659
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 427
diff changeset
1 ;;; macros.el --- non-primitive commands for keyboard macros.
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 427
diff changeset
2
11235
e6bdaaa6ce1b Update copyright.
Karl Heuer <kwzh@gnu.org>
parents: 11170
diff changeset
3 ;; Copyright (C) 1985, 86, 87, 92, 94, 95 Free Software Foundation, Inc.
845
213978acbc1e entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
4
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
5 ;; Maintainer: FSF
2247
2c7997f249eb Add or correct keywords
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1470
diff changeset
6 ;; Keywords: abbrev
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
7
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
9
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
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: 659
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
13 ;; any later version.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
14
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
18 ;; GNU General Public License for more details.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
19
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
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: 12923
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: 12923
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12923
diff changeset
23 ;; Boston, MA 02111-1307, USA.
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
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 ;; Extension commands for keyboard macros. These permit you to assign
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
28 ;; a name to the last-defined keyboard macro, expand and insert the
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
29 ;; lisp corresponding to a macro, query the user from within a macro,
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
30 ;; or apply a macro to each line in the reason.
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2247
diff changeset
31
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
32 ;;; Code:
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
33
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 217
diff changeset
34 ;;;###autoload
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
35 (defun name-last-kbd-macro (symbol)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
36 "Assign a name to the last keyboard macro defined.
216
2c663336acaf *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 36
diff changeset
37 Argument SYMBOL is the name to define.
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
38 The symbol's function definition becomes the keyboard macro string.
217
8977ce293397 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 216
diff changeset
39 Such a \"function\" cannot be called from Lisp, but it is a valid editor command."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
40 (interactive "SName for last kbd macro: ")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
41 (or last-kbd-macro
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
42 (error "No keyboard macro defined"))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
43 (and (fboundp symbol)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
44 (not (stringp (symbol-function symbol)))
4331
c75a5c7d4f39 (name-last-kbd-macro): Handle macros that are vectors.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
45 (not (vectorp (symbol-function symbol)))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
46 (error "Function %s is already defined and not a keyboard macro."
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
47 symbol))
14398
ad30f677493e (name-last-kbd-macro): Reject empty cmd name.
Richard M. Stallman <rms@gnu.org>
parents: 14321
diff changeset
48 (if (string-equal symbol "")
ad30f677493e (name-last-kbd-macro): Reject empty cmd name.
Richard M. Stallman <rms@gnu.org>
parents: 14321
diff changeset
49 (error "No command name given"))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
50 (fset symbol last-kbd-macro))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
51
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 217
diff changeset
52 ;;;###autoload
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
53 (defun insert-kbd-macro (macroname &optional keys)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
54 "Insert in buffer the definition of kbd macro NAME, as Lisp code.
217
8977ce293397 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 216
diff changeset
55 Optional second arg KEYS means also record the keys it is on
1469
af4fe5e670f2 (insert-kbd-macro): Replace nonprinting chars with escapes.
Richard M. Stallman <rms@gnu.org>
parents: 845
diff changeset
56 \(this is the prefix argument, when calling interactively).
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
57
217
8977ce293397 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 216
diff changeset
58 This Lisp code will, when executed, define the kbd macro with the same
8977ce293397 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 216
diff changeset
59 definition it has now. If you say to record the keys, the Lisp code
8977ce293397 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 216
diff changeset
60 will also rebind those keys to the macro. Only global key bindings
8977ce293397 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 216
diff changeset
61 are recorded since executing this Lisp code always makes global
8977ce293397 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 216
diff changeset
62 bindings.
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
63
1469
af4fe5e670f2 (insert-kbd-macro): Replace nonprinting chars with escapes.
Richard M. Stallman <rms@gnu.org>
parents: 845
diff changeset
64 To save a kbd macro, visit a file of Lisp code such as your `~/.emacs',
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
65 use this command, and then save the file."
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
66 (interactive "CInsert kbd macro (name): \nP")
1470
eb4043bd65ef (insert-kbd-macros): If arg is empty, use last macro as default.
Richard M. Stallman <rms@gnu.org>
parents: 1469
diff changeset
67 (let (definition)
eb4043bd65ef (insert-kbd-macros): If arg is empty, use last macro as default.
Richard M. Stallman <rms@gnu.org>
parents: 1469
diff changeset
68 (if (string= (symbol-name macroname) "")
eb4043bd65ef (insert-kbd-macros): If arg is empty, use last macro as default.
Richard M. Stallman <rms@gnu.org>
parents: 1469
diff changeset
69 (progn
eb4043bd65ef (insert-kbd-macros): If arg is empty, use last macro as default.
Richard M. Stallman <rms@gnu.org>
parents: 1469
diff changeset
70 (setq macroname 'last-kbd-macro definition last-kbd-macro)
eb4043bd65ef (insert-kbd-macros): If arg is empty, use last macro as default.
Richard M. Stallman <rms@gnu.org>
parents: 1469
diff changeset
71 (insert "(setq "))
eb4043bd65ef (insert-kbd-macros): If arg is empty, use last macro as default.
Richard M. Stallman <rms@gnu.org>
parents: 1469
diff changeset
72 (setq definition (symbol-function macroname))
eb4043bd65ef (insert-kbd-macros): If arg is empty, use last macro as default.
Richard M. Stallman <rms@gnu.org>
parents: 1469
diff changeset
73 (insert "(fset '"))
eb4043bd65ef (insert-kbd-macros): If arg is empty, use last macro as default.
Richard M. Stallman <rms@gnu.org>
parents: 1469
diff changeset
74 (prin1 macroname (current-buffer))
eb4043bd65ef (insert-kbd-macros): If arg is empty, use last macro as default.
Richard M. Stallman <rms@gnu.org>
parents: 1469
diff changeset
75 (insert "\n ")
11170
4d33c7615a5c (insert-kbd-macro): Do something reasonable for vectors.
Karl Heuer <kwzh@gnu.org>
parents: 10153
diff changeset
76 (if (stringp definition)
4d33c7615a5c (insert-kbd-macro): Do something reasonable for vectors.
Karl Heuer <kwzh@gnu.org>
parents: 10153
diff changeset
77 (let ((beg (point)) end)
4d33c7615a5c (insert-kbd-macro): Do something reasonable for vectors.
Karl Heuer <kwzh@gnu.org>
parents: 10153
diff changeset
78 (prin1 definition (current-buffer))
4d33c7615a5c (insert-kbd-macro): Do something reasonable for vectors.
Karl Heuer <kwzh@gnu.org>
parents: 10153
diff changeset
79 (setq end (point-marker))
4d33c7615a5c (insert-kbd-macro): Do something reasonable for vectors.
Karl Heuer <kwzh@gnu.org>
parents: 10153
diff changeset
80 (goto-char beg)
10153
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
81 (while (< (point) end)
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
82 (let ((char (following-char)))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
83 (cond ((= char 0)
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
84 (delete-region (point) (1+ (point)))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
85 (insert "\\C-@"))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
86 ((< char 27)
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
87 (delete-region (point) (1+ (point)))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
88 (insert "\\C-" (+ 96 char)))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
89 ((= char ?\C-\\)
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
90 (delete-region (point) (1+ (point)))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
91 (insert "\\C-\\\\"))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
92 ((< char 32)
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
93 (delete-region (point) (1+ (point)))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
94 (insert "\\C-" (+ 64 char)))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
95 ((< char 127)
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
96 (forward-char 1))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
97 ((= char 127)
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
98 (delete-region (point) (1+ (point)))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
99 (insert "\\C-?"))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
100 ((= char 128)
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
101 (delete-region (point) (1+ (point)))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
102 (insert "\\M-\\C-@"))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
103 ((= char (aref "\M-\C-\\" 0))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
104 (delete-region (point) (1+ (point)))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
105 (insert "\\M-\\C-\\\\"))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
106 ((< char 155)
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
107 (delete-region (point) (1+ (point)))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
108 (insert "\\M-\\C-" (- char 32)))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
109 ((< char 160)
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
110 (delete-region (point) (1+ (point)))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
111 (insert "\\M-\\C-" (- char 64)))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
112 ((= char (aref "\M-\\" 0))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
113 (delete-region (point) (1+ (point)))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
114 (insert "\\M-\\\\"))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
115 ((< char 255)
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
116 (delete-region (point) (1+ (point)))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
117 (insert "\\M-" (- char 128)))
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
118 ((= char 255)
2279074cd821 (insert-kbd-macro): Specially handle C-\, M-\ and C-M-\.
Richard M. Stallman <rms@gnu.org>
parents: 9851
diff changeset
119 (delete-region (point) (1+ (point)))
11170
4d33c7615a5c (insert-kbd-macro): Do something reasonable for vectors.
Karl Heuer <kwzh@gnu.org>
parents: 10153
diff changeset
120 (insert "\\M-\\C-?"))))))
4d33c7615a5c (insert-kbd-macro): Do something reasonable for vectors.
Karl Heuer <kwzh@gnu.org>
parents: 10153
diff changeset
121 (if (vectorp definition)
12923
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
122 (let ((len (length definition)) (i 0) char mods)
11170
4d33c7615a5c (insert-kbd-macro): Do something reasonable for vectors.
Karl Heuer <kwzh@gnu.org>
parents: 10153
diff changeset
123 (while (< i len)
4d33c7615a5c (insert-kbd-macro): Do something reasonable for vectors.
Karl Heuer <kwzh@gnu.org>
parents: 10153
diff changeset
124 (insert (if (zerop i) ?\[ ?\ ))
4d33c7615a5c (insert-kbd-macro): Do something reasonable for vectors.
Karl Heuer <kwzh@gnu.org>
parents: 10153
diff changeset
125 (setq char (aref definition i)
4d33c7615a5c (insert-kbd-macro): Do something reasonable for vectors.
Karl Heuer <kwzh@gnu.org>
parents: 10153
diff changeset
126 i (1+ i))
12923
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
127 (cond ((not (numberp char))
11170
4d33c7615a5c (insert-kbd-macro): Do something reasonable for vectors.
Karl Heuer <kwzh@gnu.org>
parents: 10153
diff changeset
128 (prin1 char (current-buffer)))
12923
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
129 (t
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
130 (insert "?")
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
131 (setq mods (event-modifiers char)
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
132 char (event-basic-type char))
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
133 (while mods
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
134 (cond ((eq (car mods) 'control)
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
135 (insert "\\C-"))
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
136 ((eq (car mods) 'meta)
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
137 (insert "\\M-"))
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
138 ((eq (car mods) 'hyper)
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
139 (insert "\\H-"))
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
140 ((eq (car mods) 'super)
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
141 (insert "\\s-"))
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
142 ((eq (car mods) 'alt)
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
143 (insert "\\A-"))
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
144 ((and (eq (car mods) 'shift)
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
145 (>= char ?a)
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
146 (<= char ?z))
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
147 (setq char (upcase char)))
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
148 ((eq (car mods) 'shift)
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
149 (insert "\\S-")))
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
150 (setq mods (cdr mods)))
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
151 (cond ((= char ?\\)
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
152 (insert "\\\\"))
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
153 ((= char 127)
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
154 (insert "\\C-?"))
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
155 ((< char 127)
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
156 (insert char))
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
157 (t (insert "\\" (format "%o" char)))))))
11170
4d33c7615a5c (insert-kbd-macro): Do something reasonable for vectors.
Karl Heuer <kwzh@gnu.org>
parents: 10153
diff changeset
158 (insert ?\]))
4d33c7615a5c (insert-kbd-macro): Do something reasonable for vectors.
Karl Heuer <kwzh@gnu.org>
parents: 10153
diff changeset
159 (prin1 definition (current-buffer))))
1470
eb4043bd65ef (insert-kbd-macros): If arg is empty, use last macro as default.
Richard M. Stallman <rms@gnu.org>
parents: 1469
diff changeset
160 (insert ")\n")
eb4043bd65ef (insert-kbd-macros): If arg is empty, use last macro as default.
Richard M. Stallman <rms@gnu.org>
parents: 1469
diff changeset
161 (if keys
5773
54baa5a15850 (insert-kbd-macro): Pass (keymap) as KEYMAP arg to where-is-internal.
Richard M. Stallman <rms@gnu.org>
parents: 5307
diff changeset
162 (let ((keys (where-is-internal macroname '(keymap))))
1470
eb4043bd65ef (insert-kbd-macros): If arg is empty, use last macro as default.
Richard M. Stallman <rms@gnu.org>
parents: 1469
diff changeset
163 (while keys
eb4043bd65ef (insert-kbd-macros): If arg is empty, use last macro as default.
Richard M. Stallman <rms@gnu.org>
parents: 1469
diff changeset
164 (insert "(global-set-key ")
eb4043bd65ef (insert-kbd-macros): If arg is empty, use last macro as default.
Richard M. Stallman <rms@gnu.org>
parents: 1469
diff changeset
165 (prin1 (car keys) (current-buffer))
eb4043bd65ef (insert-kbd-macros): If arg is empty, use last macro as default.
Richard M. Stallman <rms@gnu.org>
parents: 1469
diff changeset
166 (insert " '")
eb4043bd65ef (insert-kbd-macros): If arg is empty, use last macro as default.
Richard M. Stallman <rms@gnu.org>
parents: 1469
diff changeset
167 (prin1 macroname (current-buffer))
eb4043bd65ef (insert-kbd-macros): If arg is empty, use last macro as default.
Richard M. Stallman <rms@gnu.org>
parents: 1469
diff changeset
168 (insert ")\n")
eb4043bd65ef (insert-kbd-macros): If arg is empty, use last macro as default.
Richard M. Stallman <rms@gnu.org>
parents: 1469
diff changeset
169 (setq keys (cdr keys)))))))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
170
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 217
diff changeset
171 ;;;###autoload
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
172 (defun kbd-macro-query (flag)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
173 "Query user during kbd macro execution.
217
8977ce293397 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 216
diff changeset
174 With prefix argument, enters recursive edit, reading keyboard
8977ce293397 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 216
diff changeset
175 commands even within a kbd macro. You can give different commands
8977ce293397 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 216
diff changeset
176 each time the macro executes.
2708
a9d400ee1c0e Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 2707
diff changeset
177 Without prefix argument, asks whether to continue running the macro.
a9d400ee1c0e Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 2707
diff changeset
178 Your options are: \\<query-replace-map>
a9d400ee1c0e Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 2707
diff changeset
179 \\[act] Finish this iteration normally and continue with the next.
a9d400ee1c0e Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 2707
diff changeset
180 \\[skip] Skip the rest of this iteration, and start the next.
a9d400ee1c0e Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 2707
diff changeset
181 \\[exit] Stop the macro entirely right now.
a9d400ee1c0e Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 2707
diff changeset
182 \\[recenter] Redisplay the screen, then ask again.
a9d400ee1c0e Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 2707
diff changeset
183 \\[edit] Enter recursive edit; ask again when you exit from that."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
184 (interactive "P")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
185 (or executing-macro
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
186 defining-kbd-macro
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
187 (error "Not defining or executing kbd macro"))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
188 (if flag
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
189 (let (executing-macro defining-kbd-macro)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
190 (recursive-edit))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
191 (if (not executing-macro)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
192 nil
2707
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
193 (let ((loop t)
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
194 (msg (substitute-command-keys
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
195 "Proceed with macro?\\<query-replace-map>\
2753
c824ba373cc2 (kbd-macro-query): Fix prompt string.
Richard M. Stallman <rms@gnu.org>
parents: 2708
diff changeset
196 (\\[act], \\[skip], \\[exit], \\[recenter], \\[edit]) ")))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
197 (while loop
2707
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
198 (let ((key (let ((executing-macro nil)
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
199 (defining-kbd-macro nil))
14321
24189cc67176 (kbd-macro-query): Pass proper format string to message.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
200 (message "%s" msg)
2707
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
201 (read-event)))
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
202 def)
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
203 (setq key (vector key))
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
204 (setq def (lookup-key query-replace-map key))
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
205 (cond ((eq def 'act)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
206 (setq loop nil))
2707
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
207 ((eq def 'skip)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
208 (setq loop nil)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
209 (setq executing-macro ""))
2707
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
210 ((eq def 'exit)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
211 (setq loop nil)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
212 (setq executing-macro t))
2707
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
213 ((eq def 'recenter)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
214 (recenter nil))
2707
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
215 ((eq def 'edit)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
216 (let (executing-macro defining-kbd-macro)
2707
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
217 (recursive-edit)))
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
218 ((eq def 'quit)
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
219 (setq quit-flag t))
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
220 (t
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
221 (or (eq def 'help)
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
222 (ding))
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
223 (with-output-to-temp-buffer "*Help*"
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
224 (princ
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
225 (substitute-command-keys
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 2753
diff changeset
226 "Specify how to proceed with keyboard macro execution.
2707
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
227 Possibilities: \\<query-replace-map>
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
228 \\[act] Finish this iteration normally and continue with the next.
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
229 \\[skip] Skip the rest of this iteration, and start the next.
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
230 \\[exit] Stop the macro entirely right now.
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
231 \\[recenter] Redisplay the screen, then ask again.
9851
0e1748cc2f32 (kbd-macro-query): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
232 \\[edit] Enter recursive edit; ask again when you exit from that."))
0e1748cc2f32 (kbd-macro-query): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
233 (save-excursion
0e1748cc2f32 (kbd-macro-query): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
234 (set-buffer standard-output)
0e1748cc2f32 (kbd-macro-query): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
235 (help-mode)))))))))))
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 217
diff changeset
236
268
2dd411fe2f72 *** empty log message ***
Brian Preble <rassilon@gnu.org>
parents: 256
diff changeset
237 ;;;###autoload
273
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
238 (defun apply-macro-to-region-lines (top bottom &optional macro)
391
4b1d23627759 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 274
diff changeset
239 "For each complete line between point and mark, move to the beginning
4b1d23627759 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 274
diff changeset
240 of the line, and run the last keyboard macro.
273
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
241
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
242 When called from lisp, this function takes two arguments TOP and
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
243 BOTTOM, describing the current region. TOP must be before BOTTOM.
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
244 The optional third argument MACRO specifies a keyboard macro to
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
245 execute.
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
246
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
247 This is useful for quoting or unquoting included text, adding and
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
248 removing comments, or producing tables where the entries are regular.
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
249
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
250 For example, in Usenet articles, sections of text quoted from another
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
251 author are indented, or have each line start with `>'. To quote a
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
252 section of text, define a keyboard macro which inserts `>', put point
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
253 and mark at opposite ends of the quoted section, and use
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
254 `\\[apply-macro-to-region-lines]' to mark the entire section.
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
255
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
256 Suppose you wanted to build a keyword table in C where each entry
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
257 looked like this:
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
258
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
259 { \"foo\", foo_data, foo_function },
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
260 { \"bar\", bar_data, bar_function },
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
261 { \"baz\", baz_data, baz_function },
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
262
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
263 You could enter the names in this format:
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
264
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
265 foo
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
266 bar
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
267 baz
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
268
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
269 and write a macro to massage a word into a table entry:
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
270
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
271 \\C-x (
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
272 \\M-d { \"\\C-y\", \\C-y_data, \\C-y_function },
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
273 \\C-x )
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
274
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
275 and then select the region of un-tablified names and use
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
276 `\\[apply-macro-to-region-lines]' to build the table from the names.
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
277 "
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
278 (interactive "r")
391
4b1d23627759 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 274
diff changeset
279 (or macro
4b1d23627759 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 274
diff changeset
280 (progn
4b1d23627759 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 274
diff changeset
281 (if (null last-kbd-macro)
4b1d23627759 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 274
diff changeset
282 (error "No keyboard macro has been defined."))
4b1d23627759 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 274
diff changeset
283 (setq macro last-kbd-macro)))
273
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
284 (save-excursion
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
285 (let ((end-marker (progn
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
286 (goto-char bottom)
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
287 (beginning-of-line)
427
1507978a453c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 391
diff changeset
288 (point-marker)))
1507978a453c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 391
diff changeset
289 next-line-marker)
273
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
290 (goto-char top)
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
291 (if (not (bolp))
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
292 (forward-line 1))
427
1507978a453c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 391
diff changeset
293 (setq next-line-marker (point-marker))
1507978a453c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 391
diff changeset
294 (while (< next-line-marker end-marker)
1507978a453c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 391
diff changeset
295 (goto-char next-line-marker)
274
7121f18e0114 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 273
diff changeset
296 (save-excursion
427
1507978a453c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 391
diff changeset
297 (forward-line 1)
1507978a453c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 391
diff changeset
298 (set-marker next-line-marker (point)))
1507978a453c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 391
diff changeset
299 (save-excursion
1507978a453c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 391
diff changeset
300 (execute-kbd-macro (or macro last-kbd-macro))))
1507978a453c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 391
diff changeset
301 (set-marker end-marker nil)
1507978a453c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 391
diff changeset
302 (set-marker next-line-marker nil))))
273
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
303
5307
069c54e77fd1 Don't repeat at load time any bindings that are autoloaded.
Richard M. Stallman <rms@gnu.org>
parents: 4331
diff changeset
304 ;;;###autoload (define-key ctl-x-map "q" 'kbd-macro-query)
659
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 427
diff changeset
305
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 427
diff changeset
306 ;;; macros.el ends here