(FILECREATED " 6-Mar-85 23:42:48" {IVY}<TEDIT>TEDITABBREV.;11 4815
changes to: (FNS \TEDIT.ABBREV.EXPAND)
previous date: " 1-Feb-85 19:13:33" {IVY}<TEDIT>TEDITABBREV.;10)
(* Copyright (c) 1983, 1984, 1985 by John Sybalsky & Xerox Corporation. All rights reserved.)
(PRETTYCOMPRINT TEDITABBREVCOMS)
(RPAQQ TEDITABBREVCOMS [(FILES TEDITCOMMAND)
(FNS \TEDIT.ABBREV.EXPAND \TEDIT.EXPAND.DATE \TEDIT.TRY.ABBREV)
(GLOBALVARS TEDIT.ABBREVS)
(VARS (TEDIT.ABBREVS (LIST [CONS "b" (MKSTRING (CHARACTER (CHARCODE #7]
[CONS "n" (MKSTRING (CHARACTER (CHARCODE #↑%[]
[CONS "m" (MKSTRING (CHARACTER (CHARCODE #↑\]
(QUOTE ("%"" . "``"))
(QUOTE ("DATE" . \TEDIT.EXPAND.DATE))
(QUOTE (">>DATE<<" . \TEDIT.EXPAND.DATE])
(FILESLOAD TEDITCOMMAND)
(DEFINEQ
(\TEDIT.ABBREV.EXPAND
[LAMBDA (STREAM) (* jds " 6-Mar-85 22:21")
(* Expand an abbvreviation)
(PROG ((TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of STREAM))
SEL CH# (CH NIL)
EXPANSION)
(SETQ SEL (fetch SEL of TEXTOBJ))
(SETQ CH# (SELECTQ (fetch POINT of SEL)
(LEFT (SUB1 (fetch CH# of SEL)))
(RIGHT (SUB1 (fetch CHLIM of SEL)))
0))
[COND
((ZEROP (fetch DCH of SEL)) (* Point Selection, so use the character to the left)
(COND
((ZEROP CH#) (* If we're off the front of the document, don't bother
trying.)
(RETURN)))
(\SETUPGETCH CH# TEXTOBJ)
[SETQ CH (MKSTRING (CHARACTER (\BIN STREAM]
(TEDIT.SETSEL STREAM CH# 1 (QUOTE LEFT)))
(T (* We have a selection that isn't just a caret.
Use it.)
(SETQ CH (TEDIT.SEL.AS.STRING STREAM]
(SETQ EXPANSION (\TEDIT.TRY.ABBREV CH)) (* Find the abbreviation's expansion --first try it
as-is, then try the upper-case version to be safe.)
(COND
(EXPANSION (* It exists, so insert it where the abbrev used to be)
(TEDIT.DELETE TEXTOBJ SEL) (* First, delete the thing being expanded.)
(TEDIT.INSERT STREAM EXPANSION SEL])
(\TEDIT.EXPAND.DATE
[LAMBDA (STREAM CH) (* jds " 2-Jan-85 15:33")
(* Provide the date as the expansion for an
abbreviation)
(PROG ((DATE (DATE)))
(RETURN (SUBSTRING DATE 1 (STRPOS " " (SUBSTRING DATE 2])
(\TEDIT.TRY.ABBREV
[LAMBDA (ABBREV) (* jds " 2-Jan-85 15:34")
(* Try expanding ABBREV as an abbreviation.
Return the expansion; NIL = no such abbreviation.)
(PROG (SEL CH# (CH NIL)
EXPANSION)
(SETQ EXPANSION (OR (SASSOC ABBREV TEDIT.ABBREVS)
(SASSOC (U-CASE ABBREV)
TEDIT.ABBREVS))) (* Find the abbreviation's expansion --first try it
as-is, then try the upper-case version to be safe.)
(RETURN (COND
(EXPANSION (* There's an expansion. Turn it into an insertable
string.)
(COND
((OR (STRINGP (CDR EXPANSION))
(NUMBERP (CDR EXPANSION)))
(* The abbreviation expands to a string or a number
(charcode). Insert it.)
(CDR EXPANSION))
((AND (LITATOM (CDR EXPANSION))
(GETD (CDR EXPANSION)))
(* It's a function to be called.)
(APPLY* (CDR EXPANSION)
STREAM CH))
(T (* Anything else is a form to EVAL.)
(EVAL (CDR EXPANSION])
)
(DECLARE: DOEVAL@COMPILE DONTCOPY
(GLOBALVARS TEDIT.ABBREVS)
)
(RPAQ TEDIT.ABBREVS (LIST [CONS "b" (MKSTRING (CHARACTER (CHARCODE #7]
[CONS "n" (MKSTRING (CHARACTER (CHARCODE #↑%[]
[CONS "m" (MKSTRING (CHARACTER (CHARCODE #↑\]
(QUOTE ("%"" . "``"))
(QUOTE ("DATE" . \TEDIT.EXPAND.DATE))
(QUOTE (">>DATE<<" . \TEDIT.EXPAND.DATE))))
(PUTPROPS TEDITABBREV COPYRIGHT ("John Sybalsky & Xerox Corporation" 1983 1984 1985))
(DECLARE: DONTCOPY
(FILEMAP (NIL (812 4345 (\TEDIT.ABBREV.EXPAND 822 . 2529) (\TEDIT.EXPAND.DATE 2531 . 2907) (
\TEDIT.TRY.ABBREV 2909 . 4343)))))
STOP