;ELC   
;;; Compiled by pot@pot.cnuce.cnr.it on Tue Mar 18 15:38:46 2003
;;; from file /home/pot/gnu/emacs-pretest.new/lisp/edmacro.el
;;; in Emacs version 21.3
;;; with bytecomp version 2.85.4.1
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.
(if (and (boundp 'emacs-version)
	 (< (aref emacs-version (1- (length emacs-version))) ?A)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`edmacro.el' was compiled for Emacs 19.29 or later"))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


#@134 *Non-nil if edit-kbd-macro should leave 8-bit characters intact.
Default nil means to write characters above \177 in octal notation.
(defvar edmacro-eight-bits nil (#$ . -617))
(byte-code "\301B\302\301!\204\f \303	\204 \304 \305	\306\307#\210\305	\310\311#\210\312B\313B\314B\303\207" [current-load-list edmacro-mode-map boundp nil make-sparse-keymap define-key "" edmacro-finish-edit "" edmacro-insert-key edmacro-store-hook edmacro-finish-hook edmacro-original-buffer] 4)
#@325 Edit a keyboard macro.
At the prompt, type any key sequence which is bound to a keyboard macro.
Or, type `C-x e' or RET to edit the last keyboard macro, `C-h l' to edit
the last 100 keystrokes as a keyboard macro, or `M-x' to edit a macro by
its command name.
With a prefix argument, format the macro in a more concise way.
(defalias 'edit-kbd-macro #[(keys &optional prefix finish-hook store-hook) "\205I\306!\203 \307!\202 \310\203 \310\202\210 \n\311=\204+ \312\235\203C \f\2048 \313\314!\2048 \315 \210\f\206= \316\304\202\210 \n\317=\203] \320\321!\211\316\230\203W \322\323!\210\nK\202\210 \n\324>\203k \325 \304\202\210 \n\204y \322\326\327!\"\210\202\210 \n9\203\204 \nK\202\210 \n\310\306	!\204\225 \322\330\327!\"\210\331\332!\210p\333	!<\334<\335\"=\334<>?\"?\336\337!@\331\340!\210\341@!\210\342 \210\343A!\210\310B\344C\345D\346\347!L\210\346\350!EL\210\346\351!L\210\352 \210\353\354\261\210\355=\356\261\210\204*\357\n\203 \360\n!\202\361\356\261\210\362\n\206	\363\"\211\203&\203)\364\334\211A@\335\"\356\261\210\202\365c\210)\366c\210\212?\356\261\210)\367\370!\210	<=\203D\371\310!\210\372\373!.\207" [keys mac cmd store-hook last-kbd-macro oldbuf arrayp key-binding nil call-last-kbd-macro ("" [return]) y-or-n-p "No keyboard macro defined.  Create one? " keyboard-quit "" execute-extended-command read-command "Name of keyboard macro to edit: " error "No command name given" (view-lossage electric-view-lossage) recent-keys "Key sequence %s is not defined" key-description "Key sequence %s is not a keyboard macro" message "Formatting keyboard macro..." edmacro-fix-menu-commands edmacro-format-keys 1 get-buffer-create "*Edit Macro*" "Formatting keyboard macro...done" switch-to-buffer kill-all-local-variables use-local-map edmacro-mode "Edit Macro" make-local-variable edmacro-original-buffer edmacro-finish-hook edmacro-store-hook erase-buffer ";; Keyboard Macro Editor.  Press C-c C-c to finish; " "press C-x k RET to cancel.\n" ";; Original keys: " "\n" "\nCommand: " symbol-name "none" where-is-internal (keymap) "Key: " "Key: none\n" "\nMacro:\n\n" recenter (4) set-buffer-modified-p run-hooks edmacro-format-hook mmac fmt prefix fmtv buf edmacro-mode-map buffer-read-only major-mode mode-name finish-hook] 5 (#$ . 1114) "kKeyboard macro to edit (C-x e, M-x, C-h l, or keys): \nP"])
#@48 Edit the most recently defined keyboard macro.
(defalias 'edit-last-kbd-macro #[(&optional prefix) "\301\302\"\207" [prefix edit-kbd-macro call-last-kbd-macro] 3 (#$ . 3499) "P"])
#@77 Edit a keyboard macro which has been given a name by `name-last-kbd-macro'.
(defalias 'edit-named-kbd-macro #[(&optional prefix) "\301\302\"\207" [prefix edit-kbd-macro execute-extended-command] 3 (#$ . 3686) "P"])
#@595 Read the region as a keyboard macro definition.
The region is interpreted as spelled-out keystrokes, e.g., "M-x abc RET".
See documentation for `edmacro-mode' for details.
Leading/trailing "C-x (" and "C-x )" in the text are allowed and ignored.
The resulting macro is installed as the "current" keyboard macro.

In Lisp, may also be called with a single STRING argument in which case
the result is returned rather than being installed as the current macro.
The result will be a string if possible, otherwise an event vector.
Second argument NEED-VECTOR means to return an event vector always.
(defalias 'read-kbd-macro #[(start &optional end) ";\203\n \303	\"\207\303	{!\211\207" [start end last-kbd-macro edmacro-parse-keys] 3 (#$ . 3909) "r"])
#@301 Return the keyboard macro MACRO as a human-readable string.
This string is suitable for passing to `read-kbd-macro'.
Second argument VERBOSE means to put one command per line with comments.
If VERBOSE is `1', put everything on one line.  If VERBOSE is omitted
or nil, use a compact 80-column format.
(defalias 'format-kbd-macro #[(&optional macro verbose) "\203\f 9\203\f K\303\206 	\n\"\207" [macro last-kbd-macro verbose edmacro-format-keys] 3 (#$ . 4667)])
(defalias 'edmacro-finish-edit #[nil "\306=\204\n \307\310!\210\311\312!\210\313\211\211e	b\210\313\314\315!\204\353 \314\316!\203h 4\2030 \307\317!\210\320\224\320\225{\2115\321\232\204d 5\322\232?\205I \3235!\324\f!\203d \325\fK!\204d \326\327\330\f\331#!\204d \332 \210)\202\353 \314\333!\203\324 4\203w \307\334!\210\335\320\224\320\225{!\2116\321\232\204\320 6\322\232\203\222 \336\202\320 6B\3376!\2117\203\317 \3407!\203\317 \3257!\204\317 \3247!\203\276 \3257K!\204\317 \326\327\341\3426\320\"\331#!\204\317 \332 \210))\202\353 \314\343!\203\341 \344\225b\210\202\361 m\204\361 \307\345!\203\361 \320y\210\202 `)p8	d{5\346 9:;4<\n=\f\204$\204$<\204$5\321\232\204$\307\347!\2109\203 \350;!\2034;q\210\351\352!\210\3355!>\351\353!\210<\203P<>!\210\202\377\f\354=\203d>G\344V\205`>,\313\f\203|>G\344U\203w\355\f!\210\202|\f>M\210\n\203\252\f\203\377\356\f\357\"?\3136?:\203\246?@6\3606!\210?A\211?\202\217*\202\377\203\377>G\344U\203\331@\3136@:\203\325@@6\3606!\210@A\211@\202\276*\202\377A\3136A:\203\376A@6\3616\f\206\363>\"\210AA\211A\202\341*)\3628!\210\350;!\203\363;!\210=\205= .\n\207" [major-mode top no-keys keys cmd case-fold-search edmacro-mode error "This command is valid only in buffers created by `edit-kbd-macro'" run-hooks edmacro-finish-hook nil looking-at "[ 	]*\\($\\|;;\\|REM[ 	\n]\\)" "Command:[ 	]*\\([^ 	\n]*\\)[ 	]*$" "\"Command\" line not allowed in this context" 1 "" "none" intern fboundp arrayp y-or-n-p format "Command %s is already defined; %s" "proceed? " keyboard-quit "Key:\\(.*\\)$" "\"Key\" line not allowed in this context" edmacro-parse-keys t key-binding commandp "Key %s is already defined; %s" edmacro-format-keys "Macro:[ 	\n]*" 0 "Expected a `Macro:' line" buffer-modified-p "No command name or keys specified" buffer-name message "Compiling keyboard macro..." "Compiling keyboard macro...done" last-kbd-macro fmakunbound where-is-internal (keymap) global-unset-key global-set-key kill-buffer switch-to-buffer edmacro-store-hook str key b buf modp edmacro-original-buffer obuf store-hook finish-hook mac #1=#:G97269 #2=#:G97270 #3=#:G97271] 7 nil nil])
#@49 Insert the written name of a key in the buffer.
(defalias 'edmacro-insert-key #[(key) "n\203\f \301\302\"\303\261\207\301!\304\261\207" [key edmacro-format-keys t "\n" " "] 3 (#$ . 7358) "kKey to insert: "])
#@3091 \<edmacro-mode-map>Keyboard Macro Editing mode.  Press
\[edmacro-finish-edit] to save and exit.
To abort the edit, just kill this buffer with \[kill-buffer] RET.

Press \[edmacro-insert-key] to insert the name of any key by typing the key.

The editing buffer contains a "Command:" line and any number of
"Key:" lines at the top.  These are followed by a "Macro:" line
and the macro itself as spelled-out keystrokes: `C-x C-f foo RET'.

The "Command:" line specifies the command name to which the macro
is bound, or "none" for no command name.  Write "last-kbd-macro"
to refer to the current keyboard macro (as used by \[call-last-kbd-macro]).

The "Key:" lines specify key sequences to which the macro is bound,
or "none" for no key bindings.

You can edit these lines to change the places where the new macro
is stored.


Format of keyboard macros during editing:

Text is divided into "words" separated by whitespace.  Except for
the words described below, the characters of each word go directly
as characters of the macro.  The whitespace that separates words
is ignored.  Whitespace in the macro must be written explicitly,
as in "foo SPC bar RET".

 * The special words RET, SPC, TAB, DEL, LFD, ESC, and NUL represent
   special control characters.  The words must be written in uppercase.

 * A word in angle brackets, e.g., <return>, <down>, or <f1>, represents
   a function key.  (Note that in the standard configuration, the
   function key <return> and the control key RET are synonymous.)
   You can use angle brackets on the words RET, SPC, etc., but they
   are not required there.

 * Keys can be written by their ASCII code, using a backslash followed
   by up to six octal digits.  This is the only way to represent keys
   with codes above \377.

 * One or more prefixes M- (meta), C- (control), S- (shift), A- (alt),
   H- (hyper), and s- (super) may precede a character or key notation.
   For function keys, the prefixes may go inside or outside of the
   brackets:  C-<down> = <C-down>.  The prefixes may be written in
   any order:  M-C-x = C-M-x.

   Prefixes are not allowed on multi-key words, e.g., C-abc, except
   that the Meta prefix is allowed on a sequence of digits and optional
   minus sign:  M--123 = M-- M-1 M-2 M-3.

 * The `^' notation for control characters also works:  ^M = C-m.

 * Double angle brackets enclose command names:  <<next-line>> is
   shorthand for M-x next-line RET.

 * Finally, REM or ;; causes the rest of the line to be ignored as a
   comment.

Any word may be prefixed by a multiplier in the form of a decimal
number and `*':  3*<right> = <right> <right> <right>, and
10*foo = foofoofoofoofoofoofoofoofoofoo.

Multiple text keys can normally be strung together to form a word,
but you may need to add whitespace if the word would look like one
of the above notations:  `; ; ;' is a keyboard macro with three
semicolons, but `;;;' is a comment.  Likewise, `\ 1 2 3' is four
keys but `\123' is a single key written in octal, and `< right >'
is seven keys but `<right>' is a single function key.  When in
doubt, use whitespace.
(defalias 'edmacro-mode #[nil "\300\301!\207" [error "This mode can be enabled only by `edit-kbd-macro'"] 2 (#$ . 7578) nil])
(put 'edmacro-mode 'mode-class 'special)
(defalias 'edmacro-format-keys #[(macro &optional verbose) "\306!\307\310 \311 \205 \311 C\312 C#\313\314\n\233\f\203\" \315\202# \316\317@\320A\321\322\"B\323C\324DE\325=\211F\203C \317E;\203x \324GGHGHW\203w BGH\326Y\203n BGBGH\327\\I\210GT\211G\202Q *B\324H\330=\204\377B\324H\250\203\326 B\324H>\203\326 \331\332B\324\325#!\333>\203\326 \325GBGHA>\203\265 GTG\202\242 BGH\n>?\205\322 \334\332B\324G#\335Q\332BG\"B)\206\204B\324H\336=\2031\331\337!\340=\2031\325GBGH\336=\203\374 GTG\202\352 BGH\n>?\205-GI\323JIS\211I\324Y\203\"J\341PJ\202J*\332BG\"B)\206\204B\324H\336=\205\204\331\342!\340=\205\204\325GBGH\343=\203TGTGBGH\344>\203fGTG\202TBGH\n>?\205\203\341\332B\325G#\335Q\332BG\"B)K\345\346\325	L\317M\317N\317OL:\203\274L@M\347MB\"\211N\203\263NOBOLA\211L\202\227O\237,#P\332B\324P#Q\317R\317S\317T	U\317M\317N\350V\317WU:\203U@M\347MQ\"\211N\250?\205\377N\211W?\211V\203UA\211U\202\346W-\206\230\347XB\"\211R\205\230RS\332B\324S#T\347XT\"\211R\205\230	Y\317M\317N\350Z\317[Y:\203\211Y@M\347MR\"\211N\250\204|N\203|SPTQN[\317\211Z\202}\350\203\211YA\211Y\202NZ\203\225\317R\317\202\227[-\\Q\324H]PGBG^\317_G^W\203BGH\211_\250\203_\351V\203_W\203_\352U\204\331\353_!!\354=\203GBG\355ZV\204_BGTH=\203_BG\355\\H=\204GT\211G\202\256G+`\317a\\;\203\317\\\\\354=\203\250K\204\250`\325V\203\250]\250\203\250]\351V\203\250]X\203\250]\352U\204\250`\356V\203V\356`\332B\324`#\260a\357\360a\"\203s\355`a\324\355Oa\357\361a\"\204\250\357\362a\"\204\213aA\235\203\223\363\353a\335#aE\203\241\364\365\\`#\\`P\202\377\\\366=\203\362`PV\203\362B`H\367>\203\362\332BP`#\260a\370\371a!!\203\362\370\371a!!\203\343a\\\364\372a\"a`TP\202\377\363\373R\206\373Q\335#aK\203KaPa\357\335a\"\204T\325Pbc\374B\211\324PbPb\\&\204<cTcbP\\b\202c\325V\203S\364\375ca#aPc_P*\332BP\"BE\203\267C\323\232\204nC\376PCCaPC\\\203\261\\;\204\206\\9\203\261C\377\201d aG\201e \245Z\325]\201f \"\201g \\;\203\250\\\202\256\201h \\!RC\324D\202\372DaG\\\355\\\201i V\203\331F\204\331C\201j PC\325D\202\353C\323\232\204\353C\335PCDTDCaPCDaG\\D.\n\202x C.\n\207" [macro maps pkeys mdigs edmacro-eight-bits maxkey edmacro-fix-menu-commands append current-minor-mode-maps current-local-map current-global-map (end-macro 48 49 50 51 52 53 54 55 56 57 45 21 -134217683 -134217680 -134217679 -134217678 -134217677 -134217676 -134217675 -134217674 -134217673 -134217672 -134217671) 13 255 127 nil ("NUL" "TAB" "LFD" "RET" "ESC" "SPC" "DEL" "REM") vconcat [end-macro] "" 0 1 128 134217600 end-macro key-binding edmacro-subseq (digit-argument negative-argument) "M-" " " 21 [21] universal-argument "C-u " [21] 45 (48 49 50 51 52 53 54 55 56 57) apply max lookup-key t 32 92 char-to-string self-insert-command 2 30 string-match "^[ACHMsS]-." "^;;\\|^<.*>$\\|^\\\\[0-9]+$\\|^[0-9]+\\*." "^\\^.$" mapconcat format "%s * %d" execute-extended-command (return 13) commandp intern-soft "<<%s>>" #[(ch) "\250\203\315 \306\307\310\311\310\312(\nT\211	GW\203@ 	\nH\f:\203@ \f@\313\"\314U\204: (\315\316\"P(\fA\202 (.\313\317\320\321\"S\"\211)\322X\203\253 )\314=\203_ \323\202\312 )\324=\203j \325\202\312 )\326=\203u \327\202\312 )\330=\203\200 \331\202\312 )\332=\203\213 \333\202\312 )\322=\203\226 \334\202\312 \315\335)\336X\203\243 \337\202\244 \340)\\\"\202\312 )\341U\203\266 \342\202\312 )*X\203\305 \343)!\202\312 \315\344)\")P\2079\203\327 \315\345\"\207\346\347\"\207" [ch #1=#:G97298 #2=#:G97299 pf #3=#:G97300 bit "ACHMsS" -1 nil (4194304 67108864 16777216 -134217728 8388608 33554432) "" logand 0 format "%c-" lsh 1 18 32 "NUL" 9 "TAB" 10 "LFD" 13 "RET" 27 "ESC" "SPC" "C-%c" 26 96 64 127 "DEL" char-to-string "\\%o" "<%s>" error "Unrecognized item in macro: %s" #4=#:G97301 ch2 maxkey] 7] edmacro-mismatch "%d*%s" "\n" make-string case-fold-search res-words rest-mac res len verbose one-line i #5=#:G97272 #6=#:G97274 #7=#:G97275 prefix #8=#:G97278 map b #9=#:G97279 bind-len key fkey tlen tkey #10=#:G97280 #11=#:G97281 #12=#:G97282 function-key-map #13=#:G97283 #14=#:G97284 #15=#:G97285 bind first #16=#:G97286 ch text desc pos times 3 8 9 ";; " symbol-name 72 "\n "] 9])
#@206 Compare SEQ1 with SEQ2, return index of first mismatching element.
Return nil if the sequences match.  If one sequence is a prefix of the
other, the return value indicates the end of the shorted sequence.
(defalias 'edmacro-mismatch #[(cl-seq1 cl-seq2 cl-start1 cl-end1 cl-start2 cl-end2) "\306\211\211\211\f\204 G\204 G\203\346 	\fW\203\322 \nW\203\322 \203^ 	\203> 	\fS\234!\202B \fS\234	\203Q 	S\234!\202W S\234\"?\n=\202\304 	\203k 	\fS\234!\202o \fS\234\247\203\235 	\203\200 	\fS\234!\202\204 \fS\234	\203\223 	S\234!\202\231 S\234\232\202\304 	\203\252 	\fS\234!\202\256 \fS\234	\203\275 	S\234!\202\303 S\234=\203\322 \fSS\202 	\fW\204\341 \nW\205e\fS\202e<\205\357 	\233<\205\372 \n\233\f	\fW\203S\nW\203S\203i	\203*	\f\203\"\f@\202&	H!\2029\f\2035\f@\2029	H	\203R	\203I@\202N\nH!\202b\203]@\202b\nH\"?\n=\2029	\203\201	\f\203y\f@\202}	H!\202\220\f\203\214\f@\202\220	H\247\203\350	\203\254	\f\203\244\f@\202\250	H!\202\273\f\203\267\f@\202\273	H	\203\324	\203\313@\202\320\nH!\202\344\203\337@\202\344\nH\232\2029	\203 	\f\203\370\f@\202\374	H!\202\f\203\f@\202	H	\203(	\203@\202$\nH!\2028\2033@\2028\nH=\203S\fA\fA	T	\nT\n\202\376 	\fW\204b\nW\205d	*,\207" [cl-from-end cl-key cl-test-not cl-test cl-end1 cl-seq1 nil cl-end2 cl-seq2 cl-start1 cl-start2 cl-p2 cl-p1] 5 (#$ . 15322)])
#@165 Return the subsequence of SEQ from START to END.
If END is omitted, it defaults to the length of the sequence.
If START or END is negative, it counts from the end.
(defalias 'edmacro-subseq #[(seq start &optional end) ";\203\n 	\nO\207\306\n\203 \n\307W\203 \nG\211\\	\307W\203. 	\206, G\211\\<\203c 	\307V\203= 	\233\n\203] \306\nS\211	Y\203W \211A@\fB\202C \f\237)\202\222 \310!\202\222 \n\204n \206m G\311\n	Z\307]\306\"\307	\nW\203\220 \f	HI\210T	T\211\202z \f*)\207" [seq start end len res i nil 0 copy-sequence make-vector] 5 (#$ . 16849)])
(defalias 'edmacro-fix-menu-commands #[(macro &optional noerror) "\306!\203g \307\310\307\"\211\307\211\203` @\211:\204$ \n	B\202Y \n@\311=\204Y \n\312\232\2038 \313	B\202Y \n\211A@)A@\314\232\203P \315\313\n@\"	B\202Y \204Y \316\317\320\"\210A\211\204 *\321	\237!)\207\207" [macro result ev #1=#:--dolist-temp--97303 x noerror vectorp nil append help-echo (menu-bar) menu-bar (menu-bar) vector error "Macros with mouse clicks are not %s" "supported by this command" vconcat] 5])
(defalias 'edmacro-parse-keys #[(string &optional need-vector) "\306\307\310	GW\203\311\312	#\203\307\224\307\225O\306\313=\307\225\311\314=\"\203> \315=\307\313\225O!=\313\225T\306O=\311\316=\"\203f \317\320\321!\322=\203S \323\202[ \324\322!@\206[ \325=\326\327O\330#\202\357\311\331=\"\203\220 =\313\224\313\225O=\332\224\332\225OP=\311\333=\"\204\220 \334=!C\202\357=\335\232\204\237 \311\336=\"\203\250 \311\337	#\202\357=\307\211>?@\311\340=\"\203\326 >=\307H\341\236A\\>?\326\\?=\326\306O=\202\262 \311\342=\"\203\360 >\343\\>?T?=\313\306O=\344=\345\"\211A\203 AA=)\311\346=\"\203N=B\347C\306D\306E\350FCT\211CBGW\203GBCHDF\2036\307\202?E\351_D\\\352\\E\306F\202\353E!=->\307U\203[=\202\356>\354U\203\245=;\203\245\311\355=\"\203\245=G\347H\306I\306JHT\211HGGW\203\235GHH\211I>\\JBJ\202}J\237,\202\356=G\313U\204\274\356\357@\307?O=#\210\202\356\360>\343\"\307U\204\345=;\203\345\311\361=\"\203\345>\360=\307H\362\"\\\363\\C\202\356>=\307H\\C+\203\n\fKKS\211K\307Y\203	\317\"\202\366)+\202 G\364Y\203@\307H\365=\203@\313H\366=\203@\211G\326ZH\365=\203@\211GSH\367=\203@\370\326\327#L\204\322M\347N\306D\350ONT\211NMGW\203\204MNHD\371D!\205~\360D\372\"\211P\307Y\205}P\373X)\211O\204QO\205\212\350,\203\322Q\347R\306D\306SRT\211RQGW\203\311QRHD\360D\354\"\307U\203\275D\202\301D\374\\SBS\202\232S\237,\260\202\323+\207" [res pos case-fold-search string times key nil 0 [] string-match "[^ 	\n\f]+" 1 "\\([0-9]+\\)\\*." string-to-int "^<<.+>>$" vconcat key-binding [-134217608] execute-extended-command [-134217608] where-is-internal [-134217608] 2 -2 "" "^\\(\\([ACHMsS]-\\)*\\)<\\(.+\\)>$" 3 "\\<\\(NUL\\|RET\\|LFD\\|ESC\\|SPC\\|DEL\\)$" intern "REM" "^;;" "$" "^[ACHMsS]-." ((65 . 4194304) (67 . 67108864) (72 . 16777216) (77 . -134217728) (115 . 8388608) (83 . 33554432)) "^\\^.$" 67108864 assoc (("NUL" . " ") ("RET" . "") ("LFD" . "\n") ("TAB" . "	") ("ESC" . "") ("SPC" . " ") ("DEL" . "")) "^\\\\[0-7]+$" -1 t 8 -48 vector -134217728 "^-?[0-9]+$" error "%s must prefix a single character, not %s" logand "[@-_a-z]" 31 -67108864 4 24 40 41 edmacro-subseq char-valid-p 134217727 127 128 word bits prefix orig-word found #1=#:G97306 #2=#:G97307 ch n #3=#:G97308 #4=#:G97309 #5=#:G97310 x #6=#:G97311 #7=#:G97312 need-vector #8=#:G97313 #9=#:G97314 #10=#:G97315 ch2 #11=#:G97316 #12=#:G97317 #13=#:G97318] 6])
(provide 'edmacro)
