home *** CD-ROM | disk | FTP | other *** search
- # DME-WS version 1.0, copyright (C) 1988 by Bela Lubkin
- # Permission granted for personal use and adaptation. No commercial rights
- # are granted.
-
- # Developed for use with Matthew Dillon's programmable editor "DME". I used
- # DME version 1.29 and have no idea how this would work with other versions.
- # I'd like to know if there is a later version...
-
- # This is a set of macros for DME that give it a WordStar-like command set.
- # Not all of WordStar's commands were possible or desirable; the subset chosen
- # is that suitable for a programmer's editor.
- #
- # If you don't have WordStar commands burned into your circuits, I don't
- # recommend you start now; it >is< an efficient editing system but it is not
- # well represented on the Amiga and this implementation is kludgy at best. I
- # hear noise that MSS' Scribble! is WS-influenced, so if you're facile with
- # Scribble! you might be able to make sense out of this.
- #
- # I'm providing no documentation beyond this bit of rambling at the beginning,
- # some comments on weaknesses of various commands interspersed within the
- # definitions, and the definitions themselves. Another good reason not to
- # jump in unless you're already a WordStar addict.
- #
- # The WordStar command set I've used is heavily influenced by Turbo
- # Pascal, SideKick, EDWIN, and by my own personal preferences built up over
- # 4 years of using those 3 WS-alike-but-reconfigurable editors. Thus, for
- # instance, most of the ^K-prefix commands (^KC=block copy) are duplicated as
- # alt-command (^KC=alt-C); the function keys are elaborations of SideKick's;
- # etc.
- #
- # DME's block commands are line-oriented; there was nothing I could do about
- # this, so you'll have to bear with. (WordStar's are stream-oriented).
- #
- # ALL TWO-CHARACTER COMMANDS MUST BE GIVEN AS TWO >CONTROL< CHARACTERS.
- # WordStar will accept "control-Q R". DME-WS wants "control-Q control-R".
-
- # Contact me at:
- # XBBS (408) 476-4946 (5-user) (PC-Pursuit: CASJO node)
- # Pyrzqxgl (408) 476-4633 "
- # FAUG BBS (415) 595-2479 (Whatever the San Fransisco node's called)
- # BBS-JC (415) 961-7250 "
- # My own BBS soon to come -- I think.
-
-
-
-
- # Toggles used:
- # 1=^J prefix (set but not used)
- # 2=^K prefix
- # 3=^O prefix
- # 4=^P prefix (set but not used)
- # 5=^Q prefix
- # 6=search vs. replace
- # 7=scratch used by backspace
- # 8=auto-indent flag (alt-I)
-
- pageset 99
-
- map `ca-j' `resettoggle 1'
- map `ca-k' `resettoggle 2'
- map `ca-o' `resettoggle 3'
- map `ca-p' `resettoggle 4'
- map `ca-q' `resettoggle 5'
- map `cas-esc' `ca-j ca-k ca-o ca-p ca-q'
- map `a-esc' `cas-esc esc'
- map `s-esc' `a-esc'
- map `c-[' `a-esc'
- map `esc' `a-esc'
- map `c-esc' `cas-esc recall'
-
- # ^A fails if there is whitespace to the left of the cursor and extending to
- # the beginning of the line.
- map `c-a' `ifelse 3 `s-f3' `ifelse 5 `ca-q settoggle 6 escimm `findstr ' escimm `repstr ' nextr' `c-left'''
-
- map `c-b' `if 2 `a-b' if 3 `ca-o reformat' if 5 `ca-q goto block''
- map `c-c' `ifelse 2 `a-c' `ifelse 5 `ca-q bottom last' `pagedown'''
- map `c-d' `ifelse 2 `s-f2' `ifelse 5 `ca-q last' `right'''
- map `c-e' `ifelse 5 `ca-q screentop' `up''
-
- # ^F works correctly but causes disconcerting horizontal scrolling when moving
- # from within last word on line to end of line, when line is longer than
- # window width.
- map `c-f' `ifelse 5 `ca-q resettoggle 6 escimm `find '' `c-right''
-
- map `c-g' `del'
- map `c-h' `ifelse 2 `a-h' `backspace''
- map `c-i' `ifelse 3 `ca-o saveold iconify' `ifelse 5 `a-i' `tab'''
- map `c-j' `settoggle 1'
- map `c-k' `ifelse 2 `a-k' `ifelse 5 `ca-q goto end down' `settoggle 2'''
- map `c-l' `ifelse 6 nextr next'
- map `c-L' `ifelse 6 prevr prev'
- map `c-m' `enter'
- map `c-n' `ifelse b `split down down deline up' `split''
- map `c-o' `settoggle 3'
-
- # ^P doesn't do anything; I could see no reasonable way to implement it and it
- # didn't seem important in context anyway. It could probably be implemented
- # by prefixing each control-character definition with something like
- # ifelse 4 `ca-p `A' left tlate -64' `rest-of-definition'
- # or
- # ifelse 4 ``A' ca-p' `rest-of-definition'
- # if ca-p were defined as
- # map ca-p `resettoggle 4 left tlate -64 right'
- # but either choice seemed >too< obscene... (both examples insert a ^A).
- # Alternatively, enable the following definition:
- # map `c-p' `while c>32 `tlate -32' right'
- # which defines ^P as "convert the character under the cursor to a control
- # character, then go right".
- map `c-p' `settoggle 4'
-
- map `c-q' `ifelse 2 `a-q' `settoggle 5''
- map `c-r' `ifelse 2 `a-r' `ifelse 5 `ca-q top first' pageup'''
- map `c-s' `ifelse 2 `f2' `ifelse 5 `ca-q first' `left'''
-
- # ^T works correctly but resorts to tricks that may appear disconcerting on
- # screen.
- map `c-t' `ifelse r `join if !l del' `split `!' down first wright ifelse l `up deline up last bs' `split deline up last join del bs'''
-
- map `c-u' `unblock'
- map `c-v' `ifelse 2 `a-v' `insertmode toggle''
-
- # ^W scrolls the screen but cannot place the cursor correctly; different
- # scroll primitives or a conditional to test whether the cursor is at the
- # bottom of the window would be necessary.
- map `c-w' `ifelse 2 `a-w' `ifelse 3 `ca-o wordwrap toggle' `c-up'''
-
- map `c-x' `ifelse 2 `c-f2' `ifelse 5 `ca-q screenbottom' `down'''
- map `c-y' `ifelse 2 `a-y' `ifelse 5 `ca-q remeol' s-del''
-
- # ^Z scrolls the screen but cannot place the cursor correctly; different
- # scroll primitives or a conditional to test whether the cursor is at the top
- # of the window would be necessary.
- map `c-z' `c-down'
-
- map `c-]' `ref'
-
- map `backspace' `ifelse !l bs `if !t `resettoggle 7 if b `toggle 7' `!' up last join if 7 down del if !l del'''
- map `s-backspace' `backspace'
- map `c-backspace' `backspace'
- map `a-backspace' `backspace'
- map `enter' `ifelse b `split down first down deline' `split down first' if 8 `up ifelse c<>32 `down' `down `!' first split up firstnb down join del'''
- map `s-enter' `enter'
- map `c-enter' `enter'
- map `a-enter' `enter'
- map `return' `enter'
- map `s-return' `enter'
- map `c-return' `enter'
- map `a-return' `enter'
- map `help' `iconify'
- map `c-help' `source s:ws.edrc'
- map `L-lmb' `tomouse'
- map `L-mmove' `tomouse'
- map `aA-lmb' `tomouse'
- map `aA-mmove' `tomouse'
- map `saA-mmove' `tomouse'
- map `R-rmb' `iconify'
- map `aA-rmb' `iconify'
- map `c-up' `scrollup'
- map `c-down' `scrolldown'
- map `c-left' `ifelse l `up last' `wleft''
- map `c-right' `ifelse r `down first' `wright if l `up if r up last'''
- map `a-up' `repeat 5 up'
- map `a-down' `repeat 5 down'
- map `a-left' `repeat 10 left'
- map `a-right' `repeat 10 right'
- map `s-up' `top'
- map `s-down' `bottom'
- map `s-left' `first'
- map `s-right' `last'
- map `s-del' `if b `downadd up' deline first'
- map `c-del' `remeol'
- map `s- ' `` ''
- map `c- ' `` ''
- map `a- ' `` ''
- map `s-tab' `backtab'
- map `a-b' `ca-k block'
- map `a-c' `ca-k bcopy'
- map `a-h' `ca-k unblock'
- map `a-i' `ca-q toggle 8 ifelse 8 `escimm `Autoindent ON, press ESC...'' `escimm `Autoindent OFF, press ESC...'''
- map `a-k' `ca-k up block down'
- map `a-q' `ca-k quit'
- map `a-r' `ca-k escimm `insfile ''
- map `a-s' `bsource'
- map `a-v' `ca-k bmove'
- map `a-w' `ca-k escimm `bsave ''
- map `a-y' `ca-k bdelete'
- map `as-s' `unblock block block bsource'
- map `f2' `ca-k saveold'
- map `c-f2' `ca-k saveold quit'
- map `s-f2' `ca-k saveold escimm `newfile ''
- map `f3' `escimm `newfile ''
- map `s-f3' `ca-o escimm `newwindow newfile ''
-
- map `del' `del'
- map `down' `down'
- map `left' `left'
- map `right' `right'
- map `tab' `tab'
- map `up' `up'
-
- # Some hardwired DME commands that I trash..
- unmap `a-d'
- unmap `a-l'
- unmap `a-m'
- unmap `a-u'
- unmap `c-/'
- unmap `c-1'
- unmap `f1'
- unmap `f6'
- unmap `f7'
- unmap `f8'
- unmap `f9'
- unmap `f10'
-
-