|
|
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.