|
|
1.1 root 1: �edits the shell command file [MACRO]
2:
3: Shell command execution macros for Version 4.4 and later
4:
5: Joe Steffen and Bill Paulson
6:
7: This set of macros allows convenient execution of shell commands
8: inside emacs. Shell commands are kept in a "hidden" file
9: named $HOME/.commands. Use � to edit or move the line pointer in
10: this file. Exit from M-E by ^Z. M-C displays the current line in
11: this file in case you forget. M-N and M-P move the cursor down and up,
12: respectively, in the file and display the current line. They take an
13: argument just like ^N and ^P. These commands make it easy to switch
14: between several command lines without using the M-E macro.
15: M-^E will execute the current line in the command file. If the
16: first character of the line is not '!', then any
17: output will be captured in .exec just like using �. On return
18: from execution, the current buffer will be displayed in the top window,
19: and .exec will be displayed in the lower window. The shell output can
20: then be examined as a regular buffer.
21: If the first character of the line is '!', the output will be
22: displayed on the screen as the command(s) are being executed
23: just like using �. This allows you to abort a program that is in an
24: infinite loop, or to enter program input interactively. Entering 'n'
25: in place of a space when you get the "Continue?" prompt will execute the
26: ^Xs macro described later.
27: Note that the command line can contain multiple commands separated
28: by semicolons. Since emacs allows a line to be several hundred
29: characters long, entire shell scripts can be executed.
30: Note also that you can use � while editing the command buffer
31: with �. Thus you can test the command line and quickly change it if
32: it contains an error.
33:
34: B save current buffer name
35: <$HOME/.commands
36: change to command file
37: recursively edit the command file
38: return to original buffer
39:
40: �displays the current line in shell command file [MACRO]
41: B save this buffer name
42: <$HOME/.commands
43: get the command file
44: &�� save commands line
45: 1> pull original buffer name to top of stack
46: return to the original buffer
47: 0@ display the commands line
48:
49: �displays (arg'th) next line in shell command file [MACRO]
50: B save this buffer name
51: <$HOME/.commands
52: get the command file
53: 1 move to next line
54: &�� save commands line
55: 1> pull original buffer name to top of stack
56: return to the original buffer
57: 0@ display the commands line
58:
59: �displays (arg'th) previous line in shell command file [MACRO]
60: B save this buffer name
61: <$HOME/.commands
62: get the command file
63: 1 move to previous line
64: &�� save commands line
65: 1> pull original buffer name to top of stack
66: return to the original buffer
67: 0@ display the commands line
68:
69: �executes current line in shell command file [MACRO]
70: 0<Executing Commands
71: 0 indicate that execution is in progress
72: B save this buffer name
73: <filename=
74: +F prepend "filename=<filename>;" to command
75: +<;
76: <$HOME/.commands
77: get the command file
78: &!� if the first char in the current line is a "!"
79: �! skip over the !
80: 12�- prepend the filename assignment
81: & save the commands line
82: 12�&- restore comand line
83: � mark file updated
84: 1> pull original buffer name to top of stack
85: restore buffer
86: <usilent
87: �0
turn off usilent mode (save old value)
88: � execute the line
89: <usilent
90:
restore old usilent mode value
91: !�-<Continue?
92: �ns� execute the shell if 'n' is entered
93: � otherwise exit
94: � if the first char is a $
95: �$ skip over the $
96: 12�- prepend the filename assignment
97: & save the commands line
98: 12�&- restore command line
99: � mark file updated
100: 1> pull original buffer name to top of stack
101: restore buffer
102: <usilent
103: �0
turn off usilent mode (save old value)
104: � execute the commands line & save the output
105: <usilent
106:
restore old usilent mode value
107: 1 ensure one window mode
108: <.exec
109: 20 display .exec in lower window
110: � mark it as updated to prevent junk file
111: switch to the top window
112: �
113: �� else
114: 12�- prepend the filename assignment
115: & save the commands line
116: 12�&- restore command line
117: � mark file updated
118: > pull original buffer name to top of stack
119: restore buffer
120: 0> duplicate commands line
121: 0@ display commands line
122: � execute the commands line & save the output
123: 1 ensure one window mode
124: <.exec
125: 20 display .exec in lower window
126: � mark it as updated to prevent junk file
127: switch to the top window
128: �
129: � endif
130: return to the original buffer
131:
132: sescapes to the shell (enter ^D to exit) [MACRO]
133:
134: Joe Steffen, Version 4.0
135:
136: This macro executes the shell interactively
137: instead of prompting for each command. This allows cd
138: commands to stay in effect and allows you to see the results of
139: several commands. The prompt is changed to 'emacs' to remind you
140: that you are still within emacs. Enter ^D instead of a null line to
141: return to emacs.
142: <usilent
143: �0
turn off usilent mode (save old value)
144: <export PS1; PS1='emacs ' exec ${SHELL:-/bin/sh} -i
145: � execute the shell interactively with a different prompt
146: <usilent
147:
restore old usilent mode value
148:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.