651 lines
22 KiB
Plaintext
651 lines
22 KiB
Plaintext
|
; Sample TOOLS.INI file for:
|
||
|
;
|
||
|
; Microsoft Programmer's WorkBench Version 2.00
|
||
|
; Copyright (c), 1989-1992 Microsoft Corp.
|
||
|
;
|
||
|
;----------------------------------------------------------------------
|
||
|
; To use the macros or settings in this file, copy or merge this file
|
||
|
; with your TOOLS.INI file.
|
||
|
;
|
||
|
; Once in TOOLS.INI, the macros and editor settings in this file can
|
||
|
; be defined by initializing the appropriate tagged section. A tagged
|
||
|
; section for PWB begins with a tag, which has the form:
|
||
|
;
|
||
|
; [PWB-name]
|
||
|
;
|
||
|
; Where <name> is the name of the tagged section.
|
||
|
;
|
||
|
; To initialize a named section of TOOLS.INI, execute Arg <name>
|
||
|
; Initialize, as follows:
|
||
|
;
|
||
|
; 1. Execute the Arg function (press ALT+A).
|
||
|
; 2. Type the name of the tagged section.
|
||
|
; 3. Execute the Initialize function (press SHIFT+F8).
|
||
|
;
|
||
|
; If you want certain settings to be your default settings, copy the
|
||
|
; contents of that section to the main PWB section.
|
||
|
|
||
|
;----------------------------------------------------------------------
|
||
|
; Contents
|
||
|
;
|
||
|
; Tag Description
|
||
|
; -------------- -----------------------------------------------
|
||
|
; [pwb pwb-main] Main PWB section
|
||
|
; [pwb-4.0] Settings for MS-DOS 4.0 and 4.1
|
||
|
; [pwb-5.0] Settings for MS-DOS 5.0
|
||
|
; [pwb-..] Default file-extension settings
|
||
|
; [pwb-.bak] Settings for .BAK files
|
||
|
; [pwb-utility] Miscellaneous utility macros
|
||
|
; [pwb-emulations] Selected editor emulations
|
||
|
; [pwb-visible] Settings for visisble whitespace characters
|
||
|
; [pwb-invisible] Settings for invisisble whitespace characters
|
||
|
; [pwb-wptab] Settings for word-processor-like tab handling
|
||
|
; [pwb-notab] Settings for no tab characters
|
||
|
; [pwb-CTPL] C templates
|
||
|
; [pwb-ckeys] Key assignments for C templates
|
||
|
; [pwb-samples] Sample macros from Help
|
||
|
; [pwb-tutor] Sample macros from the PWB tutorial
|
||
|
; [pwb-abbr] Abbreviation facility
|
||
|
|
||
|
;----------------------------------------------------------------------
|
||
|
; Note - Some macros in this file assume certain conditions.
|
||
|
;
|
||
|
; All macros in this file that use regular expressions assume that the
|
||
|
; Unixre switch is set to yes, the default value for Unixre.
|
||
|
;
|
||
|
; Many macros assume that the current selection mode is stream or box
|
||
|
; mode. These macros may not work correctly in line selection mode.
|
||
|
|
||
|
;----------------------------------------------------------------------
|
||
|
[pwb pwb-main]
|
||
|
; Main section of TOOLS.INI
|
||
|
;
|
||
|
; Only this section, operating-system-specific, and file extension
|
||
|
; sections are initialized at startup. For more information on these
|
||
|
; sections, see the PWB Help under TOOLS.INI.
|
||
|
|
||
|
; Autostart is executed automatically at startup.
|
||
|
Autostart :=
|
||
|
|
||
|
;----------------------------------------------------------------------
|
||
|
; Sample operating system tagged sections
|
||
|
|
||
|
[pwb-4.0]
|
||
|
; Settings when running on MS-DOS version 4.0 or 4.1
|
||
|
|
||
|
[pwb-5.0]
|
||
|
; Settings when running on MS-DOS version 5.0
|
||
|
|
||
|
;----------------------------------------------------------------------
|
||
|
; Sample file extension tagged sections
|
||
|
|
||
|
[pwb-..]
|
||
|
; Default settings for any file extension that is not otherwise
|
||
|
; defined.
|
||
|
|
||
|
color:text 17
|
||
|
|
||
|
[pwb-.bak]
|
||
|
; It's easy to open a .BAK file by mistake, so this section defines
|
||
|
; the text color to something noticeable.
|
||
|
|
||
|
color:text 4e
|
||
|
|
||
|
;----------------------------------------------------------------------
|
||
|
[pwb-utility]
|
||
|
; Utility macros
|
||
|
|
||
|
; Window and file management
|
||
|
|
||
|
; Close all files in the active window except the current file.
|
||
|
; When multiple files have been opened in a single window, this
|
||
|
; macro removes the extra files.
|
||
|
AllBut1File := cancel :>s setfile -> closefile < =>s
|
||
|
|
||
|
; Close all windows except for the active window.
|
||
|
AllBut1Window:= cancel :>s openfile -> meta window < =>s
|
||
|
|
||
|
; Minimize all windows.
|
||
|
MinimizeAll := cancel arg minimize
|
||
|
|
||
|
; Restore all windows.
|
||
|
RestoreAll := cancel arg minimize :>s selwindow minimize ->s \
|
||
|
selwindow minimize
|
||
|
|
||
|
; Change directory to directory of current file.
|
||
|
; Requires an editable file.
|
||
|
ccd := linsert curfile arg curfilenam msearch arg meta ldelete \
|
||
|
begline arg right right setfile begline arg setfile undo
|
||
|
|
||
|
; Change directory to directory of current file.
|
||
|
; Requires an editable file.
|
||
|
; This version is slower, but does not change the current search
|
||
|
; pattern.
|
||
|
ccd2 := linsert curfile savecur curfilenam curfileext restcur \
|
||
|
:>s delete cdelete left right +>s \
|
||
|
begline arg right right setfile begline arg setfile undo
|
||
|
|
||
|
|
||
|
; Synchronized error traversal: Build Results, source, and Help.
|
||
|
;
|
||
|
; Traverses messages in the build results, showing the message, the
|
||
|
; location of the message in the source file, and help for the message
|
||
|
; in arranged windows.
|
||
|
;
|
||
|
;psync - Synchronize to next message
|
||
|
;msync - Synchronize to previous message
|
||
|
;setsync- Synchronize to message at the cursor in Build Results.
|
||
|
|
||
|
syncmsg := nextmsg -> pwbhelperr openfile arg arrangewindow
|
||
|
|
||
|
psync := cancel syncmsg
|
||
|
msync := cancel arg "-1" syncmsg
|
||
|
setsync := cancel arg "<COMPILE>" pwbwindow arg arg syncmsg
|
||
|
|
||
|
psync :Alt+Down
|
||
|
msync :Alt+Up
|
||
|
setsync :Alt+Goto
|
||
|
|
||
|
;----------------------------------------------------------------------
|
||
|
[pwb-emulations]
|
||
|
; These macros approximate selected behaviors of other editors.
|
||
|
|
||
|
; Successively go to beginning of line, top left window corner,
|
||
|
; beginning of file.
|
||
|
BRIEFHome := begline +> home +> begfile
|
||
|
|
||
|
; Successively go to end of line, end of last line in the window,
|
||
|
; end of file.
|
||
|
BRIEFEnd := endline +> meta down endline +> endfile
|
||
|
|
||
|
; Emulate an emacs-style character delete. When at the end of a line,
|
||
|
; delete the line break. Otherwise delete the character at the cursor.
|
||
|
; Note that this macro includes the line break when deleting the last
|
||
|
; character on a line.
|
||
|
|
||
|
EmacsDel := delete "-" left right ->eol emacscdel => :>eol left \
|
||
|
arg meta sdelete
|
||
|
|
||
|
;----------------------------------------------------------------------
|
||
|
[pwb-visible]
|
||
|
; Settings to make tabs, trailing spaces, and trailing lines visible.
|
||
|
|
||
|
tabdisp :250
|
||
|
traildisp :177
|
||
|
traillinesdisp:7
|
||
|
|
||
|
;----------------------------------------------------------------------
|
||
|
[pwb-invisible]
|
||
|
; Settings to make tabs, trailing spaces, and trailing lines invisible.
|
||
|
|
||
|
tabdisp :32
|
||
|
traildisp :32
|
||
|
traillinesdisp:32
|
||
|
|
||
|
;----------------------------------------------------------------------
|
||
|
[pwb-wptab]
|
||
|
; Word-processor-like settings.
|
||
|
; Because tab characters and trailing spaces are allowed, the visible
|
||
|
; whitespace settings above are recommended.
|
||
|
|
||
|
; You can change tabstops and filetab to your preference, but should
|
||
|
; have the same value for proper emulation.
|
||
|
tabstops :8
|
||
|
filetab :8
|
||
|
|
||
|
realtabs :yes
|
||
|
tabalign :yes
|
||
|
entab :0
|
||
|
trailspace:yes
|
||
|
|
||
|
; Insert a tab character in insert mode.
|
||
|
; Move the cursor right one tab stop in overtype mode.
|
||
|
tabio := insertmode +>over insertmode "\t" => \
|
||
|
:>over insertmode tab
|
||
|
tabio : Tab
|
||
|
|
||
|
; Move right one tab stop in both insert mode and overtype mode.
|
||
|
; To insert a tab in all modes, use Quote TAB (CTRL+P, TAB)
|
||
|
tab :ctrl+tab
|
||
|
|
||
|
;----------------------------------------------------------------------
|
||
|
[pwb-notab]
|
||
|
; Settings so that no new tab characters are added to the file.
|
||
|
;
|
||
|
|
||
|
Filetab :8 ;Tabs expand to 8 spaces
|
||
|
Realtabs:no ;Do not preserve tabs
|
||
|
Entab :0 ;Translate whitespace to spaces
|
||
|
|
||
|
; Note that tab characters on unmodified lines are preserved.
|
||
|
;
|
||
|
; To strip all tabs from the file, execute the TouchAll macro with
|
||
|
; these settings. To also strip trailing spaces, uncomment the next
|
||
|
; line.
|
||
|
;trailspace:no
|
||
|
|
||
|
; TouchAll - Modify all nonblank lines
|
||
|
TouchAll:= savecur \
|
||
|
begfile arg arg replace "^." newline "\\0" newline restcur
|
||
|
TouchAll:Alt+D ;Press Alt+D to touch all nonempty lines in the file
|
||
|
|
||
|
;----------------------------------------------------------------------
|
||
|
[pwb-CTPL]
|
||
|
; C template macro set for Microsoft Programmer's WorkBench
|
||
|
; Copyright (c), 1989-1992 Microsoft Corp.
|
||
|
;
|
||
|
; CTPL is a useful example of an extended system of macros to
|
||
|
; customize the PWB. You can change this set to implement your own C
|
||
|
; programming style.
|
||
|
;
|
||
|
; To install CTPL, add this section to your TOOLS.INI. When you want
|
||
|
; to activate the macros, type:
|
||
|
;
|
||
|
; Arg "ctpl" Initialize
|
||
|
;
|
||
|
; Or define the following macro in the main section of TOOLS.INI:
|
||
|
;
|
||
|
; CTPL:=arg "Ctpl" initialize
|
||
|
; CTPL:Alt+F10
|
||
|
;
|
||
|
; and press ALT+F10 to initialize the C templates.
|
||
|
;
|
||
|
; Most templates are activated by typing a C keyword and executing the
|
||
|
; DoTpl macro (Alt+T). Templates usually insert some text, then select
|
||
|
; an active area--a "tag".
|
||
|
;
|
||
|
; To fill out a tag, type the replacement text.
|
||
|
;
|
||
|
; To skip the tag, execute Cancel (Press ESC).
|
||
|
;
|
||
|
; To move back and forth among tags use the Mrec (ALT+PGUP) and Prec
|
||
|
; (ALT+PGDN) macros.
|
||
|
;
|
||
|
; Since tags are C comments, you can compile code with incompletely
|
||
|
; filled-in templates.
|
||
|
;
|
||
|
; For templates that do not have a keyword--a function or prototype,
|
||
|
; for example--CTPL defines a key assignment. This command structure
|
||
|
; minimizes the number of key bindings necessary to support the CTPL
|
||
|
; macro set.
|
||
|
;
|
||
|
; For example, the switch template uses the macro AddCase (ALT+F9) to
|
||
|
; insert a case just before the default case provided by the switch
|
||
|
; template.
|
||
|
;
|
||
|
; HINT: Sometimes you don't want the semicolon that CTPL often places
|
||
|
; after a tag. In these situations press RIGHT to extend the selection
|
||
|
; to include the semicolon as well as the tag, and it is replaced by
|
||
|
; what you type.
|
||
|
;
|
||
|
; NOTE: CTPL macros assume that the current selection mode is box or
|
||
|
; stream mode. If this becomes troublesome for you, use the mode-safe
|
||
|
; versions of the SelTag and DoTpl macros. The CTPL macros also work
|
||
|
; correctly in stream-selection mode. If you prefer stream selection,
|
||
|
; change the mode-safe versions to use the _pwbstreammode macro.
|
||
|
;
|
||
|
; NOTE: Because PWB rereads a file-extension tagged section each time
|
||
|
; you move to the file, It is not recommend to rename the CTPL section
|
||
|
; as [pwb-.C]. This works, but slows down switching to .C files.
|
||
|
|
||
|
|
||
|
; Select word
|
||
|
selword :=pword ->eof mword arg meta pword => \
|
||
|
:>eof mword pword arg meta pword
|
||
|
|
||
|
;-- The core macro for CTPL
|
||
|
; select the current word and execute it
|
||
|
DoTpl :=selword execute
|
||
|
|
||
|
; selection-mode safe DoTpl
|
||
|
;DoTpl :=_pwbboxmode selword execute
|
||
|
|
||
|
;-- simple 'pairs'
|
||
|
parens :="()" left
|
||
|
subscript :="[]" left
|
||
|
angles :="<>" left
|
||
|
quotes :="\"\"" left
|
||
|
|
||
|
;-- messages
|
||
|
notag :=arg "No more tags" message
|
||
|
nobrace :=arg "Missing right brace" message
|
||
|
nodefault :=arg "No \"default:\" found" message
|
||
|
|
||
|
;-- tag & utilities
|
||
|
tag :="/*%*/"
|
||
|
stmt :="/*%*/;"
|
||
|
|
||
|
seltag :=arg right right right right right
|
||
|
; selection-mode safe seltag
|
||
|
;seltag :=_pwbboxmode arg right right right right right
|
||
|
|
||
|
; Tag movement - Move to and select the position to be filled in.
|
||
|
;mrec - Move to and select previous tag
|
||
|
;prec - Move to and select next tag
|
||
|
mrec :=cancel left arg tag msearch ->f seltag => :>f notag
|
||
|
prec :=cancel right arg tag psearch ->f seltag => :>f notag
|
||
|
|
||
|
;-- Utilities -- redefine to change indentation styles
|
||
|
;test - condition in parentheses
|
||
|
;plist - parameter list
|
||
|
;testbreak - type of break (if any) after a test
|
||
|
test :="( " tag " )"
|
||
|
plist :="( " tag " )"
|
||
|
testbreak :=addline
|
||
|
|
||
|
;-- utilities for adding components of C constructs
|
||
|
;
|
||
|
;addline - Add a line, with same indentation as this line
|
||
|
;addstmt - Add a statement after this line
|
||
|
;addstmti - Add an indented statement after this line
|
||
|
;block - Add a statement block after this line
|
||
|
;
|
||
|
addline :=cancel begline down linsert
|
||
|
addstmt :=addline tag mrec
|
||
|
addstmti :=addline tab tag mrec
|
||
|
block :="{" addline "}" begline linsert tab tag down endline
|
||
|
|
||
|
;-- function, prototype and utilities
|
||
|
;
|
||
|
;func - Parameter list and body
|
||
|
;proto - Semicolon-terminated parameter list
|
||
|
;main - Alias of func
|
||
|
;additem - Add item to the current parameter list or 'for' control
|
||
|
;
|
||
|
func :=endline savecur plist addline block restcur prec
|
||
|
proto :=endline plist ";" mrec
|
||
|
main :=func
|
||
|
additem :=cancel left arg arg "[;:)}]" psearch -> \
|
||
|
arg arg "[^ \t]" msearch right ", " tag right mrec
|
||
|
|
||
|
;printf, fprintf, sprintf - Handy templates
|
||
|
;
|
||
|
printf :=proto quotes tag "\\n" mrec
|
||
|
fprintf :=proto "std" tag ", " quotes tag "\\n" begline prec
|
||
|
sprintf :=proto tag ", " tag ", " tag mrec mrec quotes tag \
|
||
|
endline mrec mrec
|
||
|
|
||
|
;-- conditional constructs
|
||
|
;
|
||
|
;if - Add a condition and statement block
|
||
|
;else - You usually use addelse, but this is still useful
|
||
|
;addelse - Add an else clause to the current if statement
|
||
|
;addelif - Add an else-if clause to the current if statement
|
||
|
;while - While loop
|
||
|
;for - For loop template. Use additem for comma-op items
|
||
|
;do - Do loop template
|
||
|
;queryop - "() ? : " template for the ternary operator
|
||
|
;
|
||
|
if :=endline savecur test testbreak block restcur prec
|
||
|
else :=testbreak block mrec
|
||
|
addelse :=cancel arg "}" psearch ->f testbreak "else" else => :>f nobrace
|
||
|
addelif :=cancel arg "}" psearch ->f testbreak "else if" if => :>f nobrace
|
||
|
while :=if
|
||
|
for :=if stmt " " stmt " " tag begline prec
|
||
|
do :=testbreak block " while" test endline ";" mrec
|
||
|
queryop :=savecur test " ? " tag " : " tag restcur prec
|
||
|
|
||
|
_asm :=testbreak block mrec
|
||
|
|
||
|
;-- declarations
|
||
|
;
|
||
|
enum :=endline " " tag " { " tag " } " stmt begline prec
|
||
|
typedef :=endline " " tag " " stmt begline prec
|
||
|
struct :=endline savecur " " tag testbreak block " " stmt restcur prec
|
||
|
class :=struct
|
||
|
|
||
|
;-- switch statement and components
|
||
|
; Use add-case to build the cases of the switch.
|
||
|
; Use addbreak to terminate a statement section.
|
||
|
;
|
||
|
;case - Colon-terminated placeholder
|
||
|
;addbreak - Insert a break statement after the current statement
|
||
|
;addcase - Insert case just before the next or default case
|
||
|
;switch - Condition, block, and default case.
|
||
|
;swiback - By default case labels appear at the same indentation level
|
||
|
; as the opening 'case' For indented case labels, define it
|
||
|
; as 'swiback:='
|
||
|
swiback :=backtab
|
||
|
case :=endline " " tag ":" mrec
|
||
|
addbreak:=addstmt "break;" begline
|
||
|
addcase :=cancel arg arg "\\{default:\\!case\\}" psearch ->f \
|
||
|
linsert "case" case => :>f nodefault
|
||
|
switch :=endline test testbreak block mrec right meta delete swiback \
|
||
|
"default:" addstmti "break" mrec
|
||
|
|
||
|
;-- preprocessor utilities
|
||
|
;inc - #include <x>
|
||
|
;def - #define x x
|
||
|
;pragma - #pragma x( x )
|
||
|
inc :=begline "#" endline "lude <>" left
|
||
|
def :=begline "#" endline "ine " tag " " tag begline prec
|
||
|
pragma:=begline "#" endline " " tag plist begline prec
|
||
|
|
||
|
; The OpenInclude macro opens an include file named in the next
|
||
|
; #include directive. The macro demonstrates a technique using the
|
||
|
; Lasttext function to pick up text from the file and modify it
|
||
|
; without modifying the file or the clipboard.
|
||
|
OpenInclude := \
|
||
|
up meta begline arg arg "^[ \t]*#[ \t]*include" psearch -> \
|
||
|
arg arg "[<>\"]" psearch -> right savecur psearch -> \
|
||
|
selcur lasttext begline "$INCLUDE:" openfile <n +> \
|
||
|
lastselect openfile <
|
||
|
|
||
|
; Key Assignments
|
||
|
mrec :Alt+PgUp
|
||
|
prec :Alt+PgDn
|
||
|
addcase :Alt+F9
|
||
|
addbreak :Alt+F10
|
||
|
addelse :Shift+Ctrl+E
|
||
|
addelif :Shift+Ctrl+I
|
||
|
additem :Alt+,
|
||
|
queryop :Alt+/
|
||
|
parens :Ctrl+0
|
||
|
subscript :Alt+]
|
||
|
quotes :alt+'
|
||
|
angles :Alt+>
|
||
|
addstmt :Ctrl+;
|
||
|
addstmti :Shift+Ctrl+:
|
||
|
proto :Shift+Ctrl+P
|
||
|
func :Shift+Ctrl+F
|
||
|
dotpl :Alt+T
|
||
|
|
||
|
;-------------------
|
||
|
[pwb-ckeys]
|
||
|
; Initialize this section if you've switched to another type of file
|
||
|
; and need to recover your CTPL keys.
|
||
|
mrec :=cancel left arg tag msearch ->f seltag => :>f notag
|
||
|
prec :=cancel right arg tag psearch ->f seltag => :>f notag
|
||
|
mrec :Alt+PgUp
|
||
|
prec :Alt+PgDn
|
||
|
addcase :Alt+F9
|
||
|
addbreak :Alt+F10
|
||
|
addelse :Shift+Ctrl+E
|
||
|
addelif :Shift+Ctrl+I
|
||
|
additem :Alt+,
|
||
|
queryop :Alt+/
|
||
|
parens :Ctrl+0
|
||
|
subscript :Alt+]
|
||
|
quotes :alt+'
|
||
|
angles :Alt+>
|
||
|
addstmt :Ctrl+;
|
||
|
addstmti :Shift+Ctrl+:
|
||
|
proto :Shift+Ctrl+P
|
||
|
func :Shift+Ctrl+F
|
||
|
dotpl :Alt+T
|
||
|
|
||
|
;----------------------------------------------------------------------
|
||
|
[pwb-samples]
|
||
|
; This section contains example macros from help.
|
||
|
;
|
||
|
|
||
|
; Run the program for current PWB project
|
||
|
Run :=arg "run" compile
|
||
|
|
||
|
; Debug the program for current PWB project
|
||
|
Debug:=arg "debug" compile
|
||
|
|
||
|
|
||
|
; Insert spaces to next tab stop.
|
||
|
InsertTab := arg tab sinsert
|
||
|
|
||
|
; Indent a paragraph to the next tab stop:
|
||
|
para_indent:=_pwbboxmode meta mpara down begline arg \
|
||
|
meta ppara up begline tab insert
|
||
|
|
||
|
; Move the cursor to column one, then toggle between column one and
|
||
|
; the first nonblank character on the line.
|
||
|
ToggleBegline := left ->x meta :>x begline
|
||
|
|
||
|
; Put parts of current filename on the clipboard.
|
||
|
Path2clip := Arg Curfile Copy
|
||
|
Name2clip := Arg Curfilenam Copy
|
||
|
Filename2clip := Arg Curfilenam Curfileext Copy
|
||
|
|
||
|
;-------------------
|
||
|
; Macro utilities
|
||
|
; Macro writing and debugging tools, plus convenient shorthands
|
||
|
|
||
|
; Set True return value. Side effect: cancels active arguments
|
||
|
True := cancel
|
||
|
|
||
|
; Set False return value. Side effect: turns off Meta
|
||
|
False := meta +>off meta :>off meta
|
||
|
|
||
|
; The following macros test common conditions.
|
||
|
;
|
||
|
; At beginning of line?
|
||
|
bol? := savecur begline +>no True => :>no restcur False
|
||
|
|
||
|
; Any text at cursor?
|
||
|
text? := right +>yes left False => :>yes left True
|
||
|
|
||
|
; Is the current line an empty line?
|
||
|
empty? := meta begline endline ->yes False => :>yes True
|
||
|
|
||
|
|
||
|
; Display the current macro return value on the status bar, then
|
||
|
; reset return value. Use this macro when debugging loops and
|
||
|
; conditional flow control.
|
||
|
? := +>t arg "FALSE" message => :>t arg "TRUE" message
|
||
|
|
||
|
; Refresh - force a full screen redraw
|
||
|
! := meta message
|
||
|
|
||
|
|
||
|
; These two utilities make readable find/replace macros. For example,
|
||
|
; use the phrase:
|
||
|
; replace "<junk text>" with nothing
|
||
|
; to delete <junk text> from the file.
|
||
|
With := newline
|
||
|
Nothing := " " cdelete newline
|
||
|
|
||
|
|
||
|
; Position the window so that the next tagged section of TOOLS.INI
|
||
|
; starts at the top of the window.
|
||
|
FindTag:=arg arg "^\\[[^\\]]+\\]" psearch ->none \
|
||
|
arg setwindow => :>none arg "no tag" message
|
||
|
|
||
|
; Adjust each line continuation (backslash at the end of a line) so
|
||
|
; that it appears in column 73.
|
||
|
SlashJust:=savecur begfile arg arg replace \
|
||
|
"^\\(.*[^ ]\\) +\\\\$" newline \
|
||
|
"\\(-70,1) \\\\" newline restcur
|
||
|
|
||
|
|
||
|
; Prompt for help topic to look up.
|
||
|
QueryHelp := arg "Get Help On:" prompt ->no pwbhelp => \
|
||
|
:>no arg "Query Cancelled" message
|
||
|
|
||
|
;-------------------
|
||
|
; Iterations on the file.
|
||
|
; All... - Macros that iterate over the file, one line at a time.
|
||
|
; Act - Define as the action to be performed on each line.
|
||
|
Act :=
|
||
|
|
||
|
; Perform Act on all lines of the file, starting from the end.
|
||
|
AllBackward := endfile :>s act up +>s
|
||
|
|
||
|
; Perform Act on all lines from start, including a page of blank lines
|
||
|
; at the end of the file.
|
||
|
AllForward := begfile :>s act down +>s
|
||
|
|
||
|
; Perform Act on all lines from start, testing for end-of-file at each
|
||
|
; step. Solves 'extra lines' problem of AllForward at the cost of
|
||
|
; speed.
|
||
|
AllForward2 := begfile savecur :>s restcur act \
|
||
|
down savecur begline endfile +>s
|
||
|
|
||
|
;-------------------
|
||
|
; Perform Act at each occurrence of a regular expression in the file.
|
||
|
Act :=
|
||
|
|
||
|
; Regular expression to match (example is for blank line)
|
||
|
RE := "^$"
|
||
|
|
||
|
; Perform Act at each occurrence of RE.
|
||
|
For1 := begfile :>s arg arg RE psearch -> act =>s
|
||
|
|
||
|
; Like For1, but iterates much faster with the restriction that Act
|
||
|
; cannot perform a search.
|
||
|
For2 := begfile arg arg RE :>s psearch -> act =>s
|
||
|
|
||
|
;-------------------
|
||
|
;GetMac - Load a separate file of macros or assignments.
|
||
|
;
|
||
|
;Usage: Arg 'file' getMac where <file> is the base name of
|
||
|
; a file in the INIT directory
|
||
|
;
|
||
|
GetMac := cancel lasttext begline "$INIT:" endline ".MAC" \
|
||
|
setfile <n +>Ok lasttext begline \
|
||
|
"Can't find \"" endline "\"" message => \
|
||
|
:>Ok begfile arg endfile assign -> arg refresh
|
||
|
|
||
|
;----------------------------------------------------------------------
|
||
|
[pwb-tutor]
|
||
|
; PWB Tutorial macro examples
|
||
|
CloseWindows := :>Loop Openfile -> Meta Window Window =>Loop
|
||
|
CloseWindows : SHIFT+CTRL+W
|
||
|
|
||
|
LineComment := "// "
|
||
|
RevHead := "** Revision History **"
|
||
|
RevComment := \
|
||
|
Arg Arg "Start" Mark \
|
||
|
Begfile Arg RevHead Psearch +>Found \
|
||
|
Linsert LineComment RevHead \
|
||
|
:>Found \
|
||
|
Down Linsert Begline LineComment Curdate " (" \
|
||
|
Arg "Initials" Prompt ->Quit Paste Endline ") " \
|
||
|
Arg "Comment" Prompt ->Quit Paste =>End \
|
||
|
:>Quit Meta Ldelete \
|
||
|
:>End Arg "Start" Mark
|
||
|
RevComment:CTRL+H
|
||
|
|
||
|
|
||
|
;----------------------------------------------------------------------
|
||
|
[pwb-abbr]
|
||
|
; Abbreviations - Define and expand abbreviations.
|
||
|
|
||
|
; Select the current word
|
||
|
SelWord:= pword ->eof mword arg meta pword => \
|
||
|
:>eof mword pword arg meta pword
|
||
|
|
||
|
; Delete the current word and execute it
|
||
|
Expand := selword lasttext cancel lastselect meta sdelete lasttext execute
|
||
|
Expand :Alt+T
|
||
|
|
||
|
; Simple text expansion
|
||
|
prog := "program"
|
||
|
ex := "example"
|
||
|
|
||
|
; Expand 'cmd' once to get 'command', Expand twice to get 'command line'
|
||
|
cmd := "command"
|
||
|
command:= "command line"
|
||
|
|
||
|
; Expand to the contents of the file HEADER.TPL in the INIT
|
||
|
; directory--a good technique for large boilerplate text.
|
||
|
Header := arg arg "$INIT:header.TPL" paste
|
||
|
|
||
|
|
||
|
[end]
|