annotate lisp/macros.el @ 53879:e3771c262410

New file. Move original fringe related declarations and code from dispextern.h and xdisp.c here. Rework code to support user defined fringe bitmaps, redefining standard bitmaps, ability to overlay user defined bitmap with overlay arrow bitmap, and add faces to bitmaps. (Voverflow_newline_into_fringe): Declare here. (enum fringe_bitmap_align): New enum. (..._bits): All bitmaps are now defined without bitswapping; that is now done in init_fringe_once (if necessary). (standard_bitmaps): New array with specifications for the standard fringe bitmaps. (fringe_faces): New array. (valid_fringe_bitmap_id_p): New function. (draw_fringe_bitmap_1): Rename from draw_fringe_bitmap. (draw_fringe_bitmap): New function which draws fringe bitmap, possibly overlaying bitmap with cursor in right fringe or the overlay arrow in the left fringe. (update_window_fringes): Do not handle overlay arrow here. Compare and copy fringe bitmap faces. (init_fringe_bitmap): New function. (Fdefine_fringe_bitmap, Fdestroy_fringe_bitmap): New DEFUNs to define and destroy user defined fringe bitmaps. (Fset_fringe_bitmap_face): New DEFUN to set face for a fringe bitmap. (Ffringe_bitmaps_at_pos): New DEFUN to read current fringe bitmaps. (syms_of_fringe): New function. Defsubr new DEFUNs. DEFVAR_LISP Voverflow_newline_into_fringe. (init_fringe_once, init_fringe): New functions. (w32_init_fringe, w32_reset_fringes) [WINDOWS_NT]: New functions.
author Kim F. Storm <storm@cua.dk>
date Sun, 08 Feb 2004 23:18:16 +0000
parents 695cf19ef79e
children be5ab1230982 375f2633d815
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 33281
diff changeset
1 ;;; macros.el --- non-primitive commands for keyboard macros
659
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)))
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 33281
diff changeset
46 (error "Function %s is already defined and not a keyboard macro"
36
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 "\\\\"))
52035
f08b70837398 (insert-kbd-macro): Escape double quote character. From Thomas W
Glenn Morris <rgm@gnu.org>
parents: 49597
diff changeset
153 ((= char ?\")
f08b70837398 (insert-kbd-macro): Escape double quote character. From Thomas W
Glenn Morris <rgm@gnu.org>
parents: 49597
diff changeset
154 (insert "\\\""))
33281
e321e58206ac (insert-kbd-macro): Print semi-colons as `?\;'.
Gerd Moellmann <gerd@gnu.org>
parents: 18383
diff changeset
155 ((= char ?\;)
e321e58206ac (insert-kbd-macro): Print semi-colons as `?\;'.
Gerd Moellmann <gerd@gnu.org>
parents: 18383
diff changeset
156 (insert "\\;"))
12923
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
157 ((= char 127)
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
158 (insert "\\C-?"))
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
159 ((< char 127)
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
160 (insert char))
f1e05398634b (insert-kbd-macro): Express vector char modifiers with
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
161 (t (insert "\\" (format "%o" char)))))))
11170
4d33c7615a5c (insert-kbd-macro): Do something reasonable for vectors.
Karl Heuer <kwzh@gnu.org>
parents: 10153
diff changeset
162 (insert ?\]))
4d33c7615a5c (insert-kbd-macro): Do something reasonable for vectors.
Karl Heuer <kwzh@gnu.org>
parents: 10153
diff changeset
163 (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
164 (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
165 (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
166 (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
167 (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
168 (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
169 (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
170 (insert " '")
eb4043bd65ef (insert-kbd-macros): If arg is empty, use last macro as default.
Richard M. Stallman <rms@gnu.org>
parents: 1469
diff changeset
171 (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
172 (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
173 (setq keys (cdr keys)))))))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
174
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 217
diff changeset
175 ;;;###autoload
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
176 (defun kbd-macro-query (flag)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
177 "Query user during kbd macro execution.
217
8977ce293397 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 216
diff changeset
178 With prefix argument, enters recursive edit, reading keyboard
8977ce293397 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 216
diff changeset
179 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
180 each time the macro executes.
2708
a9d400ee1c0e Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 2707
diff changeset
181 Without prefix argument, asks whether to continue running the macro.
a9d400ee1c0e Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 2707
diff changeset
182 Your options are: \\<query-replace-map>
a9d400ee1c0e Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 2707
diff changeset
183 \\[act] Finish this iteration normally and continue with the next.
a9d400ee1c0e Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 2707
diff changeset
184 \\[skip] Skip the rest of this iteration, and start the next.
a9d400ee1c0e Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 2707
diff changeset
185 \\[exit] Stop the macro entirely right now.
a9d400ee1c0e Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 2707
diff changeset
186 \\[recenter] Redisplay the screen, then ask again.
a9d400ee1c0e Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 2707
diff changeset
187 \\[edit] Enter recursive edit; ask again when you exit from that."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
188 (interactive "P")
15302
c23c9712ef5c Use executing-kbd-macro, not executing-macro.
Karl Heuer <kwzh@gnu.org>
parents: 14398
diff changeset
189 (or executing-kbd-macro
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
190 defining-kbd-macro
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
191 (error "Not defining or executing kbd macro"))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
192 (if flag
15302
c23c9712ef5c Use executing-kbd-macro, not executing-macro.
Karl Heuer <kwzh@gnu.org>
parents: 14398
diff changeset
193 (let (executing-kbd-macro defining-kbd-macro)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
194 (recursive-edit))
15302
c23c9712ef5c Use executing-kbd-macro, not executing-macro.
Karl Heuer <kwzh@gnu.org>
parents: 14398
diff changeset
195 (if (not executing-kbd-macro)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
196 nil
2707
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
197 (let ((loop t)
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
198 (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
199 "Proceed with macro?\\<query-replace-map>\
2753
c824ba373cc2 (kbd-macro-query): Fix prompt string.
Richard M. Stallman <rms@gnu.org>
parents: 2708
diff changeset
200 (\\[act], \\[skip], \\[exit], \\[recenter], \\[edit]) ")))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
201 (while loop
15302
c23c9712ef5c Use executing-kbd-macro, not executing-macro.
Karl Heuer <kwzh@gnu.org>
parents: 14398
diff changeset
202 (let ((key (let ((executing-kbd-macro nil)
2707
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
203 (defining-kbd-macro nil))
14321
24189cc67176 (kbd-macro-query): Pass proper format string to message.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
204 (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
205 (read-event)))
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
206 def)
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
207 (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
208 (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
209 (cond ((eq def 'act)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
210 (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
211 ((eq def 'skip)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
212 (setq loop nil)
15302
c23c9712ef5c Use executing-kbd-macro, not executing-macro.
Karl Heuer <kwzh@gnu.org>
parents: 14398
diff changeset
213 (setq executing-kbd-macro ""))
2707
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
214 ((eq def 'exit)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
215 (setq loop nil)
15302
c23c9712ef5c Use executing-kbd-macro, not executing-macro.
Karl Heuer <kwzh@gnu.org>
parents: 14398
diff changeset
216 (setq executing-kbd-macro t))
2707
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
217 ((eq def 'recenter)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
218 (recenter nil))
2707
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
219 ((eq def 'edit)
15302
c23c9712ef5c Use executing-kbd-macro, not executing-macro.
Karl Heuer <kwzh@gnu.org>
parents: 14398
diff changeset
220 (let (executing-kbd-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
221 (recursive-edit)))
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
222 ((eq def 'quit)
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
223 (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
224 (t
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
225 (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
226 (ding))
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
227 (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
228 (princ
4661157d5c60 (kbd-macro-query): Use query-replace-map to define answers.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
229 (substitute-command-keys
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 2753
diff changeset
230 "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
231 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
232 \\[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
233 \\[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
234 \\[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
235 \\[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
236 \\[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
237 (save-excursion
0e1748cc2f32 (kbd-macro-query): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
238 (set-buffer standard-output)
0e1748cc2f32 (kbd-macro-query): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 7300
diff changeset
239 (help-mode)))))))))))
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 217
diff changeset
240
268
2dd411fe2f72 *** empty log message ***
Brian Preble <rassilon@gnu.org>
parents: 256
diff changeset
241 ;;;###autoload
273
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
242 (defun apply-macro-to-region-lines (top bottom &optional macro)
391
4b1d23627759 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 274
diff changeset
243 "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
244 of the line, and run the last keyboard macro.
273
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
245
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
246 When called from lisp, this function takes two arguments TOP and
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
247 BOTTOM, describing the current region. TOP must be before BOTTOM.
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
248 The optional third argument MACRO specifies a keyboard macro to
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
249 execute.
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
250
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
251 This is useful for quoting or unquoting included text, adding and
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
252 removing comments, or producing tables where the entries are regular.
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
253
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
254 For example, in Usenet articles, sections of text quoted from another
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
255 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
256 section of text, define a keyboard macro which inserts `>', put point
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
257 and mark at opposite ends of the quoted section, and use
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
258 `\\[apply-macro-to-region-lines]' to mark the entire section.
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
259
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
260 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
261 looked like this:
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
262
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47352
diff changeset
263 { \"foo\", foo_data, foo_function },
273
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
264 { \"bar\", bar_data, bar_function },
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
265 { \"baz\", baz_data, baz_function },
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
266
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
267 You could enter the names in this format:
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 foo
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
270 bar
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
271 baz
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
272
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
273 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
274
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
275 \\C-x (
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
276 \\M-d { \"\\C-y\", \\C-y_data, \\C-y_function },
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
277 \\C-x )
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
278
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
279 and then select the region of un-tablified names and use
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
280 `\\[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
281 "
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
282 (interactive "r")
391
4b1d23627759 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 274
diff changeset
283 (or macro
4b1d23627759 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 274
diff changeset
284 (progn
4b1d23627759 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 274
diff changeset
285 (if (null last-kbd-macro)
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 33281
diff changeset
286 (error "No keyboard macro has been defined"))
391
4b1d23627759 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 274
diff changeset
287 (setq macro last-kbd-macro)))
273
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
288 (save-excursion
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
289 (let ((end-marker (progn
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
290 (goto-char bottom)
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
291 (beginning-of-line)
427
1507978a453c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 391
diff changeset
292 (point-marker)))
1507978a453c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 391
diff changeset
293 next-line-marker)
273
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
294 (goto-char top)
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
295 (if (not (bolp))
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
296 (forward-line 1))
427
1507978a453c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 391
diff changeset
297 (setq next-line-marker (point-marker))
1507978a453c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 391
diff changeset
298 (while (< next-line-marker end-marker)
1507978a453c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 391
diff changeset
299 (goto-char next-line-marker)
274
7121f18e0114 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 273
diff changeset
300 (save-excursion
427
1507978a453c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 391
diff changeset
301 (forward-line 1)
1507978a453c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 391
diff changeset
302 (set-marker next-line-marker (point)))
1507978a453c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 391
diff changeset
303 (save-excursion
47352
d817d0837c74 (apply-macro-to-region-lines): Let-bind mark-active to
Kim F. Storm <storm@cua.dk>
parents: 38412
diff changeset
304 (let ((mark-active nil))
d817d0837c74 (apply-macro-to-region-lines): Let-bind mark-active to
Kim F. Storm <storm@cua.dk>
parents: 38412
diff changeset
305 (execute-kbd-macro (or macro last-kbd-macro)))))
427
1507978a453c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 391
diff changeset
306 (set-marker end-marker nil)
1507978a453c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 391
diff changeset
307 (set-marker next-line-marker nil))))
273
0740875c024a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 268
diff changeset
308
5307
069c54e77fd1 Don't repeat at load time any bindings that are autoloaded.
Richard M. Stallman <rms@gnu.org>
parents: 4331
diff changeset
309 ;;;###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
310
18383
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 15302
diff changeset
311 (provide 'macros)
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 15302
diff changeset
312
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52035
diff changeset
313 ;;; arch-tag: 346ed1a5-1220-4bc8-b533-961ee704361f
659
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 427
diff changeset
314 ;;; macros.el ends here