[comp.sources.amiga] v90i058: uucp 1.03D - unix compatible uucp/mail/news system, Part14/16

Amiga-Request@cs.odu.edu (Amiga Sources/Binaries Moderator) (02/04/90)

Submitted-by: overload!dillon (Matt Dillon)
Posting-number: Volume 90, Issue 058
Archive-name: unix/uucp-1.03d/part14

#!/bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 14 (of 16)."
# Contents:  man/dme.doc
# Wrapped by tadguy@xanth on Sat Feb  3 20:51:23 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'man/dme.doc' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'man/dme.doc'\"
else
echo shar: Extracting \"'man/dme.doc'\" \(44056 characters\)
sed "s/^X//" >'man/dme.doc' <<'END_OF_FILE'
X
XDME.DOC 		DME version 1.39		 Matthew Dillon
X			 4 November 1989
X
XDME, (C)Copyright 1987-89, Matthew Dillon.  All Rights Reserved.
XThis software may be distributed for non-profit only.  This software is
XFREEWARE, not shareware.
X
X    Matthew Dillon
X    891 Regal Rd
X    Berkeley, California  94708
X    USA
X
X    Source is avalable:
X
X	(1) By anonymous FTP to UCBVAX.BERKELEY.EDU (ARPANET)
X	(2) By regular mail (send a disk)
X	(3) By Electronic mail:
X	    ARPANET:	dillon@ucbvax.berkeley.edu
X	    USENET:	...!ihnp4!ucbvax!dillon
X	    (may take a while for me to respond)
X
X
X    Donations welcome but not solicited (I ain't a starving artist).
X
X    icon by Bryce Nesbitt
X
X    text markers and the text-block stack by Kevin Seghetti (some of the new
X    commands for 1.30).
X
X    AREXX interface (Bill Hawes' ARexx REXX language interpreter) ported
X    by Kim DeVaughn
X
X
X---------------------------------------------------------------------------
X
X0   Installation
XI   Overview
XII  Keymapping		key and mouse mapping
XIII Command Sequences	DME commands
XIV  File Particulars	notes on loading and saving files,
XV   Workbench Support
XVI  Revision Summary	revision numbering, changes made, etc...
XVII Compiling		compiling instructions
X
X				    0
X			       INSTALLATION
X
XThe NULL: device must be mounted to be able to use the EXECUTE command.
XThis is so EXECUTE works even if the console window goes away.	Otherwise,
Xsimply put DME in an accessable location (usually C:).  Put the dme.icon
Xfile in the same directory as DME if you want to access the application
Xfrom the workbench (dme.icon is not needed if accessed from a CLI or shell).
X
XPeople appear to have problems using the EXECUTE command when DME is run
Xfrom the workbench.  I have no solution yet.
X
XThe CONFIG program may be used to configure the default window placement,
Xsize, and color.  This program modifies the executble:
X
X    config c:dme	(or wherever you have the executable)
X
X
X				    I
X				 OVERVIEW
X
XSee REVISIONS section for revisions.  DME is an editor designed mainly for
Xprogrammers.  Although it is not a word processor, it does include many
Xword processing features such as Word-Wrap and automatic paragraph
Xformatting.  Here is a quick 'features' list:
X
X	-control language based on a rich command set accessed manually
X	 or via arbitrary mapping of keys.  (Every key may be mapped to 128
X	 different things via qualifier and mouse keys)
X
X	-General variables, reference macros as variables, ENV: enviroment
X	 variables (1.30C and beyond).
X
X	-fast visual response (it scrolls quickly)... even faster when
X	 BlitzFonts or similar text speedup utilities are installed.
X
X	-title-line statistics showing your current position in the file,
X	 file name, whether the file has been modified or not, etc...
X
X	-Multiple Windows, ability to iconify windows
X
X	-Word Wrap and automatic paragraph formatting.
X
X	-ability to map any KEY or MOUSE BUTTON combination.
X
XDME has been designed to allow easy expansion, and I intend to make many
Xfuture improvments.  It has not been designed for user friendliness, but is
Xstraight forward if you read this document [care]fully.
X
XDME can take any number of arguments.  Any argument without a '-' in front
Xof it is considered to be a file.   Normally, DME will automatically SOURCE
Xtwo script files, S:.EDRC, and the .EDRC in your current directory. These
Xfiles do not have to exist.  These script files usually contain mappings
Xand do things (for example, turn on savetabs).
X
X    FLAGS:
X	    -ffilename	    -source this script file instead of .EDRC
X
X	    -b		    -normally when multiple files are specified,
X			     DME opens them with small windows.  This opens
X			     them with normal sized windows.
X
X	    -tN     -Open the window on scan line N
X	    -lN     -Open the window offset N scan columns
X	    -wN     -Make the window N pixels wide
X	    -hN     -Make the window N pixels high
X
X
X
X				    II
X				 KEYMAPPING
X
XMOUSE BUTTONS:
X
X    The mouse buttons and combinations thereof may now be mapped.  The
X    default mappings for the mouse buttons are as follows:
X
X    Left-button:    Move cursor to current mouse position
X    Right-button:   Iconify window
X    Left-button held down while moving mouse tracks the cursor
X
X    The iconification features:
X	-Remembers original window size and placement
X	-Remembers placement of iconified window when you re-iconify later.
X
X    Currently, you will crash the machine if you run out of memory and DME
X    is unable to open the icon window or original window, so be careful.
X
X    see below for mapping the mouse buttons and mouse movement.
X
X
XKEYBOARD:
X
XThe rest of the Functional interface for DME is based on key/mouse mappings
Xand a rich command set.  Unlike other text editors, any non-qualifier key
Xin DME may have any meaning whatsoever.  It just so happens that the
Xdefault keymappings assign such things as the (return) key to the RETURN
Xfunction, the (up) key to the UP function, etc...  Keys are named by their
Xkeycap labels with the following exceptions:
X
X    the name for Back-Space is	BS
X    the name for numeric keypad keys are prepended with an NK, except for
X    the Enter key which is named 'ENTER'.
X    The four cursor control keys are labeled UP, DOWN, LEFT, and RIGHT
X    The three mouse buttons are labeled RMB, MMB, and LMB.
X
XNOTES:
X       The normal Amiga mouse has only two buttons, the Left and the Right
X       mouse buttons (LMB, RMB).  A properly installed three-button mouse
X       is also supported.
X
X       You must type commands in lower-case, except for text, which can be
X       either lower or upper case, and for upper-case alpha keys when
X       specifying keymaps (i.e.  A and s-a are the same key).  The
X       exception is the AMIGA qualifier key, which uses 'A' instead of
X       'a'(Alt).
X
X       Each key may be qualified with any combination of CTRL, ALT, SHIFT,
X       AMIGA, or any of the MOUSE buttons.  With 6 qualifiers (7 if your
X       mouse has a middle button), you can assign up to 64 (128) different
X       maps to each physical key on the keyboard.
X
X       The CAPS-LOCK, when lit, is equivalent to SHIFT only for Alpha keys.
X
X       The AMIGA-ALT (aA) combination isn't very usable since Intuition
X       uses the sequence to duplicate a Mouse SELECT.  Other AMIGA
X       sequences are used by intuition for mouse movement and other things.
X       Some other qualifier combinations may not be usable due to other
X       special sequences.
X
X       Some keys must be mapped by their lower-case keycap.  That is, to
X       map the '>' key (USA keyboard), you specify shift dot (s-.)
X
X
X    ***EXAMPLES:***
X
X    tab tab
X    a-a ALT a
X    A-a AMIGA a
X    sA-a	SHIFT AMIGA a
X    s-tab	SHIFT tab
X    c-tab	CTRL tab
X    ac-?	ALT-CTRL ?
X    s-f5	SHIFT F5
X    nk0 Numeric Keypad 0
X    cs-nk0	CTRL SHIFT Numeric Keypad 0
X    L-lmb	Left Mouse button pressed
X    L-mmove	Mouse moved while left mouse button held down
X    LR-lmb	left mouse button hit while right mouse button held down
X    s-. 	shift . ('>' for USA keyboards)
X
X    ***************
X
XMAPPING MOUSE BUTTONS
X
X    Mouse buttons serve both as QUALIFIERS and as KEYS.  Thus, you can map
X    both normal keystrokes which require a mouse button to be held down:
X
X	map L-a ((left button and an a))
X
X    as well as the mouse keys themselves:
X
X	map L-lmb   ((left mouse key))
X
X    note that you had to specify the left mouse button down qualifier L as
X    well as the left mouse button LMB.
X
X    If you map the left mouse button, and also map a sequence such as left
X    mouse button + a:
X
X	map L-lmb   tomouse
X	map L-a     ((hello))
X
X    Note that the first mapping will always get executed even if you
X    intended L-a (that is, BOTH mappings would get executed).  In order
X    to avoid confusion you might want to UNMAP the system default mapping
X    for the right mouse button (mapped to ICONIFY) if you wish to apply
X    combinations to the right mouse button.
X
X    MOUSE MOVEMENT is mapped with one or more mouse qualifiers (L, R, M),
X    plus 'MMOVE' for the key.  That is:
X
X	map LR-mmove ((moving the mouse with both buttons held down))
X
X    Or how bout capping the characters under the mouse while moving the
X    mouse?
X
X	map LR-mmove (tomouse if cl (tlate -32))
X
X
X
XDEFAULT KEYMAPPINGS:
X
X    All Printable Ascii keys mapped to their ascii equivalent. BS, DEL, UP,
X    DOWN, LEFT, RIGHT, TAB, S-TAB, and ENTER are mapped properly.  These are
X    the default system keymappings.
X
X
X    map (a-c)       (bcopy)
X    map (a-d)       (bdelete)
X    map (a-down)    (scrolldown)
X    map (a-l)       (while cu (tlate +32 right))
X    map (a-m)       (bmove)
X    map (a-r)       (nextr)
X    map (a-s)       (bsource)
X    map (a-u)       (while cl (tlate -32 right))
X    map (a-up)      (scrollup)
X    map (bs)        (bs)
X    map (c-/)       (escimm (find ))
X    map (c-])       (ref)
X    map (c-[)       (ctags)
X    map (c-1)       (goto block)
X    map (c-b)       (block)
X    map (c-c)       ()
X    map (c-del)     (remeol)
X    map (c-down)    (pagedown)
X    map (c-esc)     (recall)
X    map (c-f)       (reformat)
X    map (c-g)       (escimm (goto ))
X    map (c-i)       (insertmode on)
X    map (c-j)       (join)
X    map (c-l)       (wleft)
X    map (c-n)       (next)
X    map (c-o)       (insertmode off)
X    map (c-p)       (prev)
X    map (c-q)       (quit)
X    map (c-r)       (wright)
X    map (c-s)       (split first down)
X    map (c-u)       (unblock)
X    map (c-up)      (pageup)
X    map (c-w)       (wordwrap toggle)
X    map (del)       (del)
X    map (down)      (down)
X    map (enter)     (return)
X    map (esc)       (esc)
X    map (f1)        (escimm (insfile ))
X    map (f10)       (saveold quit)
X    map (f2)        (escimm (newfile ))
X    map (f3)        (escimm (newwindow newfile ))
X    map (f6)        (saveold iconify)
X    map (f7)        (escimm (bsave ))
X    map (f8)        (saveold escimm (newfile ))
X    map (f9)        (saveold)
X    map (L-lmb)     (tomouse)
X    map (L-mmo)     (tomouse)
X    map (left)      (left)
X    map (R-rmb)     (iconify)
X    map (return)    (return insline up firstnb down)
X    map (right)     (right)
X    map (s- )       (( ))
X    map (s-del)     (deline)
X    map (s-down)    (bottom)
X    map (s-left)    (first)
X    map (s-right)   (last)
X    map (s-tab)     (backtab)
X    map (s-up)      (top)
X    map (sa-s)      (unblock block block bsource)
X    map (tab)       (tab)
X    map (up)        (up)
X
X
X
X				    III
X			     COMMAND SEQUENCES
X
XDME has a rich command set which allows you to embed commands within
Xcommands, or specify multiple commands in a row.  A command consists of a
XKEYWORD followed by a FIXED number of arguments (0, 1, 2...).  The argument
Xdelimeter in DME is a SPACE.  Therefore, to embed strings containing spaces
Xas a single argument, you must surround the string with (string)
X(backsinglequote-string-singlequote).  TEXT to be written as if typed is
Xalso specified via a string in backquote-quotes.  For example:
X
X    right right (hello) right right (hello) enter down
X    map f4 (right right) map f5 (left left)
X    map f4 ((hello))
X
XReiterating (because this is important!)... If a command expects ONE
Xargument, then it really does expect a single argument, and any remaining
Xarguments are thought to be the next command... so:
X
X    map f4 right
X				    -right is only one word, so no need
X				     for ().
X    map f4 (right right)
X				    -we want to map f4 to two rights... we
X				     need the () or the second right will
X				     not be part of the map.
X
X    map c-del (repeat cright del)
X				    -this is already implimented as REMEOL,
X				     but shown here for clarity.
X
XSome arguments will eventually be fed through the command interpreter more
Xthan once.  The MAP command is a good example.	When you execute a MAP
Xcommand, the first run through the command interpreter installs the map
Xstring minus a set of quotes.  So, if you want to specify text, you must
Xenclose the text in two sets of ((text)) because the map string gets passed
Xthrough the command interpreter again when you hit the mapped key.  Here
Xare some more complex examples:
X
X    map f4 (right right (hello) left left)      *RIGHT*
X    map f4 right right hello left left		*WRONG*
X
X    map f4 (map f4 ((hello)))
X				    -the first time you hit F4, it's command
X				     is to re-map itself to the TEXT (hello).
X				     (gads!).
X
X    map c-i (repeat tr (( )))
X				    -example of how to embed a space in a
X				     map and repeat (goes through command
X				     interpreter three times!).
X
X
XAn easy way to fool around executing commands or making maps is either to
Xuse the ESC key (which enters command mode), or  a-S (alt-shift-s), which
XEXECUTES the current DME line that the cursor is on.... so you can use DME
Xto edit and test your new keymappings.
X
X
X				STRING VARIABLES
X
X    String variables are replaced with their contents.	Three specification
X    forms are allowed:
X
X    $varname	    - varname can only consist of a-z,A-Z,0-9,-,_
X    $(varname)      - anything not containing a '(' or ')'
X    $`varname'      - anything not containing a '`' or '''
X
X    Two special variables exist:
X
X	filename    - the current filename
X	scanf	    - the current scanf'd string (see SCANF below)
X	lineno	    - the current cursor line number (1 .. N)
X	column	    - the current cursor column number (1 .. N)
X
X    Other variables cause a search of three variable domains to find the
X    contents.  For example, if you give  $DMEFONT:
X
X	(1) An Internal variable named DMEFONT is searched for.  Internal
X	    variables are case sensitive.  (see SET, UNSET)
X
X	(2) An Enviroment variable name DMEFONT is searched for.  Enviroment
X	    variables are NOT case sensitive.  (see SETENV, UNSETENV).  The
X	    1.3 ENV: is used.
X
X	(3) A DME keymap or menu definition named DMEFONT is searched for.
X	    This allows you to say something like $sa-tab to insert the
X	    contents of the shift-alt-tab keymap.   (see MAP, UNMAP, and
X	    MENU oriented commands).
X
X    The reason for the other two forms of variable specifiction is to allow
X    one to access strangely named variables (with puncuation and other crap).
X
X    SPECIAL NOTE:  What is wrong with this command?
X
X	repeat 100 (first ($myvar))
X
X    What is wrong is that $myvar is evaluated BEFORE the repeat is
X    executed.  myvar might contain characters that would confuse the
X    command specification when.  That is, if myvar contained a '(' you
X    could get something like:	repeat 100 (fist ((())  which is obviously
X    incorrect.	By using \ you can cause $myvar to be evaluated at
X    loop-execution time rather than before:
X
X	repeat 100 (first (\$myvar))
X
X    These kinds of problems can also occur when you do keymaps... you
X    probably do not want to evaluate the variable at keymap-entry time,
X    but rather would want the variable evaluated at keymap-execution time.
X
X    On the otherhand, this is perfectly allowable:
X
X	set x (tlate +1)
X	repeat 100 ($x)
X
X    Which executes the command (tlate +1) 100 times... By NOT surrounding
X    the variable with parens (depends on the situation), the variable is
X    executed rather than inserted as text.
X
X
X			   SPECIAL CHARACTERS
X
X    ^ is used to introduce a control character.  For example, ^c would
X    embed a control-c.	You cannot embed c-@ (ascii code 0).
X
X    backslash \ is used to override special meanings.  The next character
X    is overriden.
X
X    map c-a ((^l))      -map control a to produce a control l
X    map c-a ((\\\^l))   -map control a to produce a "^l".  The first
X			 \ overides the second, and the third overides
X			 the ^.
X
XCOMMAND LIST:
X
X    (text)          -enter text as if typed.
X    key 	    -execute a keymap as a macro (example:  c-a)
X    header-item     -execute a menu item as a macro (example: Project-Save)
X		     (case independant)
X    ADDPATH path    -Add the specified symbolic directory to DME's special
X		     search path (see REF and CTAGS).
X    ARPINSFILE	    -INSFILE filerequestor, only if ARP.LIBRARY installed
X    ARPLOAD	    -NEWFILE filerequestor, only if ARP.LIBRARY installed
X    ARPSAVE	    -SAVEAS  filerequestor, only if ARP.LIBRARY installed
X    BACK	    -same as BS
X    BACKTAB	    -backward tab
X    BCOPY	    -copy block before cursor line
X    BDELETE	    -delete the block
X    BLOCK	    -Set start or end of block
X    BMOVE	    -move block before cursor line
X    BOTTOM	    -Move to Bottom of File
X    BS		    -backspace, (delete char to left of cursor)
X    BSAVE file	    -save the block to a file
X    BSOURCE	    -source current text block as if it were a script file
X    CHFILENAME name -change the name of the working file
X    CTAGS	    -search for the tag under the cursor (see below)
X    DEL 	    -delete, (deletes char under cursor)
X    DELINE	    -delete line
X    DOWN	    -cursor down
X    DOWNADD	    -cursor down.  If at bottom of text, add a line.
X    ESC 	    -toggle manual command entry mode
X    ESCIMM arg	    -go into command entry mode prompting with a
X		     predefined string.
X    EXECUTE comm    -Execute a CLI command
X    FIND string     -SET the search pattern and do a NEXT
X    FINDR s1 s2     -Set find and replace patterns and do one find/rep.
X    FINDSTR string  -SET the search string pattern
X    FIRST	    -move to column 1
X    FIRSTNB	    -Move to first non-blank in line.
X    GOTO BLOCK	    -Goto the beginning of the marked block.
X    GOTO START	    -same as GOTO BLOCK.  undefined if no block
X    GOTO END	    -goes to the END of the marked block.  undef. if no blk.
X    GOTO [+/-]N     -Goto an absolute or relative line number
X    HEIGHT N	    -set height in PIXELS for any new windows
X    ICONIFY	    -iconify the window
X    IF cnd act	    -IF/WHILE/IFELSE.. SEE BELOW
X    IFELSE cnd ifact elseact
X    IGNORECASE what -set case ignore for seaches.  what = on, off, or toggle
X    INSERTMODE what -set INSERTMODE.  what = on, off, or toggle
X    INSFILE name    -insert a file into the current text.
X    INSLINE	    -insert line
X    JOIN	    -join next line to line at cursor
X    LAST	    -move one beyond the last non-space in a line.
X    LEFT	    -cursor left
X    LEFTEDGE N	    -set leftedge on the screen in PIXELS for any new window
X    MAP key map     -map a key to a keymap
X    MARGIN N	    -set WordWrap and paragraph formatting margin
X		     (related to WORDWRAP and REFORMAT)
X    MENUADD hdr item cmd    -add menu item
X    MENUDEL hdr item	    -delete menu item
X    MENUDELHDR hdr	    -delete menu header
X    MENUCLEAR		    -delete entire menu
X    MENUON		    -enable menus  (multiple calls are stacked)
X    MENUOFF		    -disable menus (multiple calls are stacked)
X    NEWFILE name    -replace current text with new file
X    NEWWINDOW	    -open newwindow
X    NEXT	    -find next occurance of search pattern
X    NEXTR	    -find next occurance and replace
X    NULL	    -no operation
X    PAGEDOWN	    -pagedown a partial page (see PAGESET)
X    PAGESET n	    -n PERCENT (0 to 100). page step size relative to the
X		     current number of rows in the window.
X    PAGEUP	    -pageup a partial page (see PAGESET)
X    PING n	    -set a text marker (0-9).
X    PONG n	    -move to a previously set text marker (0-9)
X    PREV	    -find previous occurance of search pattern
X    PREVR	    -find previous occurance and replace
X    PUSHMARK	    -push the currently marked block onto a stack and
X		     unhighlight the block
X    POPMARK	    -pop the block stack and highlight the popped block
X    PURGEMARK	    -clear the mark stack
X    QUIT	    -quit
X    RECALL	    -recall most recently entered command.  Must be used
X		     from a keymap (c-esc).
X    REF 	    -reference string under cursor (see below)
X    REFORMAT	    -reformat paragraph using the margin.
X    REMEOL	    -Remove text under and beyond the cursor.
X    REMPATH wild    -Remove one or more symbolic directorys from DME's
X		     special path... a */? wildcard is acceptable.
X    REPEAT cnt comm -SEE BELOW
X    REPSTR string   -SET the replace string pattern
X    RESETTOGGLE N   -clear toggle array entry N(0..31)
X    RESIZE cols rows-Resize current window. E.G:  (resize 70 23)
X    RETURN	    -same as (FIRST DOWNADD)
X    RIGHT	    -cursor right
X    RX		    -ARexx macro, no args   (RX macname)
X    RX1 	    -ARexx macro, one arg   (RX1 macname arg1)
X    RX2 	    -ARexx macro, two args  (RX2 macname arg1 arg2)
X    SAVEAS file     -save current text under a different name (title
X		     line name does not change)
X    SAVEMAP file    -save user keymappings
X    SAVEOLD	    -save current text under current name
X    SAVESMAP file   -save all keymappings, including system keymaps
X    SAVETABS on/off -Optimize file saves by crunching spaces to tabs.
X		     The default is OFF.
X    SCANF ctlstr    -scan the string at the current text position (C scanf)
X		     example:	(scanf %s)          SEE BELOW
X    SCREENBOTTOM    -Move cursor to the bottom of the screen.
X    SCREENTOP	    -Move cursor to the top of the screen
X    SCROLLUP	    -Scroll up without moving cursor
X    SCROLLDOWN	    -Scroll down without moving cursor
X
X    SET var str     -create/modify an internal variable (access w/ $)
X    SETENV var str  -create/modify an enviroment variable (1.3 ENV:)
X    SETFONT font sz -Set the window's font.  ex:   (setfont topaz.font 11)
X    SETPARCOL col   -Set the left margin for word wrap mode paragraphing.
X    SETTOGGLE N     -set toggle array entry N  (0..255)
X    SOURCE file     -source a script file. '#' in first column for comment
X    SPLIT	    -Split line at cursor
X    SWAPMARK	    -PUSHMARK, swap top two marks on stack, POPMARK
X    TAB 	    -forward tab
X    TABSTOP N	    -Set tab stops every N.  does not effect text load
X    TLATE [+/-]N    -translate character by +N or -N, or set character
X		     to exactly N if no + or -. (e.g. TLATE +65 TLATE 3)
X    TMPHEIGHT N     -set window height for next window only, pixels
X    TMPWIDTH  N     -set window width for next window only,  pixels
X    TOGGLE N	    -flip toggle array entry N (0..255)  (See IF)
X    TOMOUSE	    -moves cursor to mouse position
X    TOP 	    -Move to Top of File
X    TOPEDGE N	    -set topedge in the screen in PIXELS for any new window
X    UNBLOCK	    -clear the block markers for the current window
X    UNDO	    -undo current line (must be mapped to a key to work)
X    UNMAP key	    -unmap a key
X    UP		    -cursor up
X    UNSET var	    -delete an internal variable
X    UNSETENV var    -delete an enviroment variable
X    WHILE cnd act   -(see below)
X    WIDTH N	    -set width in PIXELS for any new window
X    WLEFT	    -move to beginning of previous word.  If in the
X		     middle of a word, move to beginning of current word.
X    WORDWRAP on/off/toggle
X		    -Word Wrap mode (related to MARGIN)
X    WRIGHT	    -move to beginning of next word
X
X
X	-------------------------------------------------------------
X    -------------    More Info on Complicated Commands	-----------------
X	-------------------------------------------------------------
X
X    MENUOFF/ON	    -This command will enable/disable menus.  Users
X		     who have a whole bunch of MENUADD commands in
X		     their .EDRC should note that disabling menus at
X		     the beginning will speed up the MENUADD commands.
X		     Then reenable menus at the end.  These calls are
X		     stackable in that if you call MENUOFF, say, twice,
X		     it will take two MENUON commands to restore
X		     menus.  The reverse is not true.
X
X    CTAGS   (c-[)   -(1.30B and beyond) Compatible with Aztec's CTAGS
X		     program.  This command searches for the subroutine
X		     name under the cursor in the associated tags file
X		     ("tags" in the directory holding the file currently
X		     being edited).  Also, the file "tags" in directories
X		     specified by the special DME path (see ADDPATH and
X		     REMPATH) will be searched.
X
X		     If the tag is found, it loads the file the subroutine
X		     resides in if neccesary, then WindowToFront()'s the
X		     window, ActivateWindow()s it, and GOTO's the line
X		     where the subroutine starts.  The search within the
X		     source file is anchored to the left column.  If the
X		     file is already loaded, it is not reloaded.
X
X		     This enables a programmer to quickly trace subroutines
X		     over an arbitrary number of files.
X
X		     The tags file contains one or more lines of the following
X		     format:
X
X		     subroutine-name file-name /^search-pattern
X		     (that's a slash and a carrot, then the pattern)
X
X		     -- EXAMPLE of 'TAGS' file:
X		     setpen cmd1.c /^setpen(
X		     do_up cmd1.c /^do_up(
X		     --
X
X		    SPECIAL NOTE:  CTAGS will work even if you are not in
X		    the directory containing the file.	You can thus place
X		    a tags file in the directory containing the files it
X		    references, and the filenames WITHIN the tags file need
X		    not be a full path.
X
X    REF     (c-])   -(1.28d and beyond).  This is a very powerful new
X		     command that allows you to bring up a reference to
X		     a keyword with a single keystroke.  This is useful for
X		     programmers who have on-line documentation or fully
X		     commented include files.  DME opens a window just big
X		     enough to fit the reference.
X
X		     NOTE:  The new CTAGS command may be more suited to
X		     your application.
X
X		     The reference keyword is the alpha-numeric string
X		     currently under the cursor.  REF will search the
X		     file DME.REFS in the directories listed by the
X		     special DME path (see ADDPATH and REMPATH).  The
X		     file must be built by the user and each line has the
X		     following format:
X
X		     (keyword) (nolines/endstring) (file) (searchstr/##seekpos)
X
X		     Surrounding the keywords with `' or () is optional if
X		     the keyword does not contain spaces.
X
X			keyword     -keyword under cursor
X			nolines/ends-either a number (the number of lines
X				     in the reference) or a string denoting
X				     the end of the reference when found.
X			file	    -the file containing the reference
X				     material
X			searchstr/##-search string in file that indicates
X				     the beginning of the reference, or
X				     two hashes (##) and the seek position
X				     in decimal (like ##2343).  The latter
X				     method is used mainly for reference-
X				     generator programs.
X
X		     Upon finding a successful keyword match the specified
X		     file is openned and the seach string searched for.  If
X		     a seek position was specified no search is made and a
X		     seek is made to the beginning of the reference.  If
X		     found, the indicated number of lines (if a number
X		     is specified for <nolines/ends>) or until a match with
X		     the endstring (if a string was specified) will be
X		     placed in a temporary file and a new DME window
X		     brought up. The temporary file is then deleted.
X
X		     When looking for matches, the compare is anchored at
X		     the beginning of each line in the file.  Thus, any
X		     spaces in front of the string in the file must be
X		     duplicated.
X
X		     T: must be assigned to a temporary directory, usually
X		     RAM:   See the included example DME.REFS file.  The
X		     most common things referenced are the autodocs and
X		     commented include files.
X
X		     Some modification of the included DME.REFS.* files may
X		     be required due to differences in include file and
X		     autodoc format.
X
X    SCANF ctlstr    -This is equivalent to the C scanf() function with the
X		     restriction that only one conversion is allowed, that
X		     conversion being a string.  Thus:
X
X		     scanf %s	    will place the string under the
X				    cursor in the variable $scanf
X
X		     scanf %4s	    The first four chars of the string.
X
X		     scanf %[0123456789]
X				    will scan the string while it contains
X				    specified chars (e.g. scan a number)
X
X		     scanf %[~,]    will scan the string until it finds
X				    a ','.
X
X		    The variable $scanf may be used as an argument in any
X		    command.  Example:	(insfile $scanf).
X
X		    NOTE:  If using $scanf in a macro, you probably want
X		    to precede it with a \ to prevent it from being
X		    evaluated at macro-creation time.
X
X
X    REPEAT N arg    -Repeat (arg) N times.  Apart from being a number, N
X		     can also be one of:
X
X			line	Current line # (lines begin at 1)
X			lbot	#lines to the bottom, including current line
X			cleft	column # (cols begin at 0)
X			cright	#chars to eol, including current char under cursor
X			tr	#char positions to next tab
X			tl	#char positions to next back tab
X
X		    Certain commands can abort a REPEAT loop.
X		    Specifically, any FIND[R], NEXT[R], or PREV[R] in which
X		    the search string is NOT found will abort a REPEAT.
X		    Most operations which can go out of bounds, such as
X		    UP, LEFT, RIGHT, DOWN, also abort a repeat.
X
X		    Specifying -1 as N causes REPEAT to go on forever
X		    (well, actually, 0xFFFFFFFF times) or until an abort.
X
X    IF [!]condition arg
X    WHILE [!]condition arg
X    IFELSE [!]condition arg else arg
X
X	    If the specified condition is true, execute the argument.  For
X	    WHILE, the argument is executed until the condition is false
X	    (be careful!).
X
X	    the optional '!' inverts the logic.
X
X	    Conditions:
X
X
X	    #	    if toggle entry # is SET.  there are 256 toggles (0..255)
X	    t	    if On line 1
X	    b	    if On last line
X	    l	    if At column 0
X	    r	    if At end of line (spaces below and beyond)
X	    m	    if Text has been modified
X	    i	    if in insert mode
X	    x[<=>]# if column position (starts at 1) is (any OR combo of
X		    <, =, or >) than some number.  Example:   x<=20
X	    y[<=>]# if Line number (starts at 1) is (same as for x)
X	    cl	    character under cursor is lower case alpha
X	    cu	    character under cursor is upper case alpha
X	    ca	    character under cursor is alpha-numeric
X	    cn	    character under cursor is numeric
X	    c[<=>]# character under cursor is ascii code # (# in decimal)
X		    optional conditionals as in 'x' and 'y'.
X	    cb	    cursor within a block
X
X	Example: simulating an insert mode toggle: ALT-i (not CTL-i)
X
X    map a-i (ifelse 0 (toggle 0 insertmode OFF) (toggle 0 insertmode ON))
X
X	Example: while lower case, map to upper case and move right.
X
X    map c-U (while cl (tlate -32 right))
X
X	Example: Search/Replace all of text.
X
X    map c-R (escimm (findstr ) escimm (repstr ) repeat -1 nextr)
X
X     if c<32 ((char under cursor is smaller than 32))
X     if c<>32 ((char under cursor is not equal to 32))
X     while !b down
X
X
X				    IV
X			     FILE PARTICULARS
X
XNo Matter what you set internal tabs to, tabs in disk files will be 8.
XThis allows you to use your favorite tabs stops (mine are 4) and still
Xhave your disk files compatible with TYPE, a printer, etc...  DME by
Xdefault doesn't bother to optimize when writing out files and simply uses
Xspaces. If you (SAVETABS on) before saving (or in your S:.EDRC, etc...),
XDME will attempt to optimize the file by placing TABS in appropriate
Xplaces.  DME will not place any TABS after the first single, back, or
Xdouble quote is encountered in a line.	If this does not cover every
Xsituation in your particular application that you want to be *sure* no tabs
Xwill occur in sensitive sections, then you should not use (SAVETABS on).
X
XIt should be noted that since DME removes spaces at the end of the line,
Xediting UUENCODED ascii files will not work for uuencoded lines which end
Xwith a space.  The nominal fix is to add an extra character after each
Xuuencoded line (anything) in the proper column, which is ignored by the
XUUDECODE program.
X
XThe command to save the current document under the default name is SAVEOLD,
X*not* SAVE.  SAVE is not a valid command.  This is to prevent people who
Xhave not read the documentation from assuming 'save' takes an argument (and
Xscrewing up their work).  SAVEOLD does NOT take an argument, SAVEAS does.
X
XSAVEOLD/SAVEAS do not automatically backup the destination file.  If you
Xare working in an enviroment where you are worried about ensuring a viable
Xcopy can be recovered if your Amiga crashes in the middle of the save, you
Xcan write a macro to save the file into two places.  Usually, people backup
Xtheir working disks so this is not neccesary.
X
XWorkbench Support:  If DME is run from the workbench, it will automatically
Xconstruct an icon file when you save a document.  If run from a CLI, no
Xicon file is generated.
X
X				    V
X			      WORKBENCH SUPPORT
X
XDME V1.26 and beyond support the workbench in the following way:  (1) you
Xcan click on the DME icon to bring up DME with the file "unnamed".  (2) you
Xcan select one or more standard ascii documents which have DME as the
Xdefault tool.  If DME has no knowlege of a text icon, it uses its own.
XCommand line arguments are passed to DME via the tooltypes entries for
XDME's application icon or via individual document icons.  The following
Xformat is used:  (This is a hack, no?)
X
X    ARG=flag
X
X    See the OVERVIEW section for allowed flags.  Only one argument per line
X    is allowed (sorry).  The tooltypes for the application icon are
X    processed first, then the tooltypes for each document icon are
X    processed before each file is loaded.
X
X    ARG= -t10
X    ARG= -l10
X
X    Note: the 'config' program may be used to modify an executable and
X    set the default window size and attributes.
X
X				    VI
X			      REVISION SUMMARY
X
XV????
X    - didn't restore pr_ConsoleDevice after an execute!
X
XV1.39
X    - NEW COMMAND, 'setparcol'.  Set paragraph left margin for reformat
X      command and word wrap mode.  The default is -1 (same as original
X      format), else a column number.
X
X    - case sensitive bug fixed.. used to always be case insensitive
X      no matter which option you chose.
X
X    - search-and-replace bug fixed... cursor positioned to END of
X      replaced string to prevent improper operation when replace
X      string is a superset of the search string.
X
X    - Menus more compact.
X
XV1.38
X    - Removed fix in 1.37, use '1.4libpatch' if running under 1.4A16.
X
X    - FIXED AREXX BUG... DMe would crash if ARexx was installed for
X      V's 1.37 and 1.36
X
XV1.37
X    - 1.4a16 crashes on OpenLibrary() where the library does not
X      exist.  Doesn't try to open arex if running under 1.4
X      (for now, this is a temporary stopgap)
X
XV1.36
X    -Removed dres.library IPC.	Removed dres.library requirement.  (ARexx IPC
X     still in of course).  Source now compilable under Lattice C and Manx C.
X
XV1.35a
X    -can change block pen now and DME updates the title using the correct
X     color.
X
XV1.35
X    -Bug in 1.34 fixed, would only work if dres.library was installed
X	OOOPPS.
X
XV1.34
X    -New variables $fpath and $fname have been added.  $fpath is the path
X     part of the current filename, including trailing / or : (if any).
X     $fname is anything after that.  For example:
X
X	FILE		fpath	    fname
X	s:.edrc 	s:	     .edrc
X	blah			     blah	 (path = "")
X	/poof		/	     poof
X
X
XV1.33	RELEASE
X    -You can now run <nil: >nil: DME and close the console window that
X     you ran it from.  The execute command now requires the NULL: device
X     to be mounted or an error will occur.
X
X    -space -> tab conversion does not take place after the first control
X     character (<32), as well as the first quote ("), open paren ((), or
X     single quote (') that it didn't before.
X
XV1.32		    (small fixes)
X    -Fixed workbench bugs, DME would exit if it could not find the
X     executables disk object.  No longer does so.
X
XV1.31	RELEASE
X    -Added new variables $lineno and $colno
X    -Added CD command, ARPLOAD automatically CD's to DIR part of
X     requester.
X    -Added IPC support (my own ipc)
X    -Fixed bug in BMOVE (when the source block is an entire file)
X
XV1.30C	LIMITED
X    -MAJOR!	Macros, Internal variables, and ENV: enviroment variables
X		may be specified with $varname, $(varname), or $`varname'.
X
X    -New commands:  SET, SETENV, UNSET, UNSETENV    (variable support)
X
X    -REFS window bug fixed I hope (made window slightly too small).
X    -SAVE[S]MAP bug fixed for space mappings
X    -CTAGS doesn't modify the window title if the window is iconified
X     (allows you to make the following map: map <somemap> (iconify ctags)
X
X
XV1.30B	Limited release
X    -Kim fixed a bug in splitpath
X    -added CTAGS command... support for Aztec's CTAGS program
X    -added ADDPATH command... special directory paths for DME
X    -added REMPATH
X
X	REFS no longer searches fixed directories, but looks at the
X	ADDPATH directories.  CTAGS also looks at the ADDPATH
X	directories.  CTAGS supports arbitrary directory specifications
X	and is intelligent about where to look for the TAGS file.
X
X
XV1.30	RELEASE
X    -a couple small bugs fixed
X    -fixed text bug that sometimes overwrites the right border
X    -added new commands
X	SETFONT     (for all of text, static fonts only)
X	IGNORECASE  (for searches)
X    -added new commands (AREXX support, Kim DeVaughn)
X	RX, RX1, RX2
X    -added new commands (by Kevin Speghetti)
X	PUSHMARK, POPMARK, SWAPMARK, PURGEMARK	    block marker stack
X	PING, PONG				    text markers (0-9)
X
X	note: block marks on the stack, ping and pong, do not track text
X	changes (bug).
X
X    -Many commands will now work while the text window is iconified
X     without having to uniconify it.
X
XV1.29E
X    -Fixed low memory bug in do_bomve() again.
X    -Fixed arp file requestor problems.
X    -added ARPINSFILE command.
XV1.29D
X    -Fixed low memory bug in do_bmove()...
XV1.29C
X    -highlighted icon window if file modified
XV1.29B
X    -INLINE FILENAME:
X     added $filename variable.	$scanf and $filename can now be embedded
X     anywhere on the command line.
X    - ^x added (control-character), so you do not have to embed actual
X     control characters in your macros.
X    - \ overide added (\^x) produces "^x" instead of control-x, etc...
X
XV1.29  RELEASE
X
X    -Foreign keyboards supported better.
X    -Iconify window is activated rather than not activated.
X    -can keymap keys which normally produce nothing.
X    -blocks are displayed in a different color
X    -can now move/copy across windows
X    -can now resize window while file loading
X    -new commands ARPLOAD ARPSAVE   (uses ARP filerequestor if arp.library)
X     MENUADD MENUDEL MENUDELHDR MENUCLEAR MENUOFF MENUON
X
X    minor bugs fixed, major remodeling of the source (this is what I
X    use my vacation for!)
X
X    menus:  the right mouse button may be mapped only if there is no
X    menu, Else is used as the menu selector.  NOTE! It is much faster
X    to surround a set of MENUADD commands in a source file with
X    MENUOFF at the beginning and MENUON at the end.  You can also specify
X    menu items as macros in other commands (example: project-save)
X
XV1.28h SMALL RELEASE	references work better
X
XV1.28g SMALL RELEASE	Fixed NK0 bug in 1.28f plus keymap problems in 1.28f
X
XV1.28f RELEASE
X    Fixed macro bug created in 1.28e... could not specify macros on the
X    command line.
X
XV1.28e INTERNAL/BETA
X    New Commands:   REF     (c-])   -cross reference the word under the
X				     cursor and bring up a new window
X				     containing a description for that
X				     word.  See docs above.
X
X    -The keymapping has been fixed and should now work on any foreign
X     keyboard.
X    -MAJOR ADDITION:  () may be used instead of `' to enclose commands.
X     One can enclose the other ... that is, to get the "'" character you
X     can say (this is a charlie's day).
X
XV1.28c RELEASE
X    New Commands:   CHFILENAME	    -change default filename for a window
X		    RECALL  (c-esc) -recall command line (e.g. you make a
X				     mistake).	Must be used from a keymap,
X				     default is c-esc.
X
X		    SCANF	    -C scanf (single string only).  Extract
X				     strings from the text for use in any
X				     arbitrary command.
X
X    Command Parser: $scanf	    -as an argument by itself is recognized
X				     to be the extracted string from scanf.
X				     Currently, the variable name (after
X				     the dollar) can be anything since only
X				     one variable exists, but use '$scanf'
X				     for future compatibility.
X
X    -Many Bug fixes (mainly benign bugs)
X    -^C (CONTROL C) now recognized when typed in a window.  c-c is mapped
X     to () = no action.
X    -Please look at the revised default keymappings listed in these docs.
X
X
XV1.28 LIMITED RELEASE
X    New Commands :  SCROLLUP	(a-up)
X		    SCROLLDOWN	(a-down)
X    Modified Cmds:  ESCIMM
X	The execution of commands specified by an ESCIMM is blocked until
X	the user hits return on the ESCIMM command line.
X
X		    BCOPY
X	No longer unblocks the block.
X
X    -Title bar status line no longer blinks when it changes
X    -Key releases no longer effect operation
XV1.27 RELEASE
X    -macros run about 20% faster due to hashing of the command table
X    -Maximum # of toggles raised to 256 (see IF/WHILE)
X    -small fixes to the code (nothing major)
X    -child windows inherit tab stops, insert mode, and wordwrap mode
X    -MOUSE BUTTONS AND MOVEMENT CAN NOW BE MAPPED
X    -New Commands: ICONIFY	(used to be hardwired.  Is now a command)
X    -Extended Commands: GOTO	(GOTO END of block)
XV1.26 Beta, minimal Release
X    -Workbench support
X    -New Command:   EXECUTE
XV1.25 RELEASE
X    -BSAVE does NOT UNBLOCK after saving (switch in functionality yet again)
X    -various bugs fixed (IF, tabs on file save)
X    -New Commands: MARGIN, REFORMAT, WORDWRAP, RESIZE,
X		   TOPEDGE, LEFTEDGE, WIDTH, HEIGHT
X    -Command line options added for setting the window size and an optional
X     specified script file (when specified, local .EDRC not sourced).
X
X    -Enhanced Commands: IF  ..more control with conditions, addition of
X			      a couple more specifications.
X		       JOIN .. functionality slightly changed
X    -keymaps may now be used as macros in other commands. (macros)
X    -New keymaps added to the default set.
X    -Mouse movement cleaned up a little.
X
XV1.24 Internal
X
XV1.23 RELEASE
X    -S:.EDRC now sourced instead of C:.EDRC
X    -User keymappings now work in COMMAND mode (when you hit ESC).
X    -You can now map the Amiga keys ('A' for Amiga, since 'a' is alt).
X    -Enhanced Commands: IF/IFELSE/WHILE (optional '!' in front of cond)
X			new condition 'cb' 'character is in selected block'
X			GOTO block  (goto beginning of block)
X    -NewCommands:    PAGESET SAVETABS
X    -Writing TABS (always 8) out to disk to save space now supported.
X
XV1.22 RELEASE (BUF FIXES FROM 1.20)
X    -'newfile' fixed
XV1.21 RELEASE (BUG FIXES FROM 1.20)
X    -iconify and window handling fixed
X    -left mouse button now tracks the mouse.
XV1.20 RELEASE
X    -bug fixes: bsave now unmarks the block, bdelete now sets 'modified' flag.
X	    (other small fixes).
X    -enhancements: overwrite mode status indicator, find, find-replace now
X	    completely implemented (yahhoo!!!)
X    -changed commands:	FIND NEXT PREV: no longer loop back to the top of
X	    file or top->bottom in the case of PREV.  DELINE will now delete
X	    text on the line if there is only one line of text.
X    -enhanced commands: GOTO REPEAT
X    -new commands: SAVEMAP SAVESMAP TOGGLE SETTOGGLE RESETTOGGLE TLATE
X		   IF IFELSE WHILE BSOURCE
X		   FINDSTR REPSTR FINDR NEXTR PREVR
X		   NEWWINDOW
X    -new keymappings: (see a-s, a-S, f3)
X    -window iconification with mouse menu button.
X
X
XV1.12 RELEASE
X    -cursor is now pen #3 rather than #1.
X    -changeover to AZTEC C, smaller executable.
X    -now maps shift space to a space.
X    -new commands: REMEOL, WLEFT, WRIGHT
X    -display bug fixes (SPLIT)
X    -FIND/PREV/NEXT will now abort a REPEAT if string not found.
X
XV1.11 RELEASE NOTES
X    -Bug fixes (mainly graphical mistakes).
X    -User keymappings are disabled in command mode (so you can unmap
X      single ascii characters you may have mapped).
X    -Illegal key combinations no longer give garbage (e.g. ALT-CURSOR-DOWN)
X      you can, of course, still map them to anything you wish.
X    -Save now checks for error conditions on write.
X    -Uses Default Console Keymap (i.e. no longer assumes USA)... but there
X      *is* some stangeness.
X
XV1.00 RELEASE NOTES
X    -has find, but no replace function
X    -assumes USA keyboard		    (fixed 1.11)
X    -disk files written out use spaces instead of tabs&spaces
X
X
X				    VII
X				COMPILING
X
XDME now compiles under either Manx C or Lattice C (V5.02 and beyond).
Xdres.library is no longer required.
X
END_OF_FILE
if test 44056 -ne `wc -c <'man/dme.doc'`; then
    echo shar: \"'man/dme.doc'\" unpacked with wrong size!
fi
# end of 'man/dme.doc'
fi
echo shar: End of archive 14 \(of 16\).
cp /dev/null ark14isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 16 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0
-- 
Submissions to comp.sources.amiga and comp.binaries.amiga should be sent to:
	amiga@cs.odu.edu	
or	amiga@xanth.cs.odu.edu	( obsolescent mailers may need this address )
or	...!uunet!xanth!amiga	( very obsolescent mailers need this address )

Comments, questions, and suggestions should be addressed to ``amiga-request''
(please only use ``amiga'' for actual submissions) at the above addresses.