(FILECREATED "30-Sep-85 17:00:23" {ERIS}<TEDIT>TEDITABBREV.;7 6410 changes to: (VARS TEDITABBREVCOMS) previous date: "27-Aug-85 15:35:32" {ERIS}<TEDIT>TEDITABBREV.;6) (* 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 357,146] [CONS "n" (MKSTRING (CHARACTER (CHARCODE 357,44] [CONS "m" (MKSTRING (CHARACTER (CHARCODE 357,45] [CONS "T" (MKSTRING (CHARACTER (CHARCODE 357,57] [CONS "d" (MKSTRING (CHARACTER (CHARCODE 357,60] [CONS "D" (MKSTRING (CHARACTER (CHARCODE 357,61] [CONS "s" (MKSTRING (CHARACTER (CHARCODE 0,247] [CONS "'" (MKSTRING (CHARACTER (CHARCODE 0,271] [CONS "`" (MKSTRING (CHARACTER (CHARCODE 0,251] [CONS "%"" (MKSTRING (PACKC (CHARCODE (0,251 0,251] [CONS "~" (MKSTRING (PACKC (CHARCODE (0,271 0,271] [CONS "1/4" (MKSTRING (CHARACTER (CHARCODE 0,274] [CONS "1/2" (MKSTRING (CHARACTER (CHARCODE 0,275] [CONS "3/4" (MKSTRING (CHARACTER (CHARCODE 0,276] (QUOTE ("DATE" . \TEDIT.EXPAND.DATE)) (QUOTE (">>DATE<<" . \TEDIT.EXPAND.DATE]) (FILESLOAD TEDITCOMMAND) (DEFINEQ (\TEDIT.ABBREV.EXPAND [LAMBDA (STREAM) (* jds "27-Aug-85 15:09") (* 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 RIGHT))) (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 STREAM)) (* 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) (replace \INSERTPCVALID of TEXTOBJ with NIL) (* Force it to abandon caching) (TEDIT.DELETE TEXTOBJ SEL) (* First, delete the thing being expanded.) (TEDIT.INSERT STREAM EXPANSION SEL]) (\TEDIT.EXPAND.DATE [LAMBDA (STREAM CH) (* jds "13-Aug-85 09:15") (* Provide the date as the expansion for an abbreviation) (PROG* ((DATE (\UNPACKDATE)) (YEAR (pop DATE)) (MONTH (pop DATE)) (DAY (pop DATE))) (RETURN (CONCAT (CAR (NTH (QUOTE (January February March April May June July August September October November December)) (ADD1 MONTH))) " " DAY ", " YEAR]) (\TEDIT.TRY.ABBREV [LAMBDA (ABBREV STREAM) (* jds "11-Jul-85 12:46") (* 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 357,146] [CONS "n" (MKSTRING (CHARACTER (CHARCODE 357,44] [CONS "m" (MKSTRING (CHARACTER (CHARCODE 357,45] [CONS "T" (MKSTRING (CHARACTER (CHARCODE 357,57] [CONS "d" (MKSTRING (CHARACTER (CHARCODE 357,60] [CONS "D" (MKSTRING (CHARACTER (CHARCODE 357,61] [CONS "s" (MKSTRING (CHARACTER (CHARCODE 0,247] [CONS "'" (MKSTRING (CHARACTER (CHARCODE 0,271] [CONS "`" (MKSTRING (CHARACTER (CHARCODE 0,251] [CONS "%"" (MKSTRING (PACKC (CHARCODE (0,251 0,251] [CONS "~" (MKSTRING (PACKC (CHARCODE (0,271 0,271] [CONS "1/4" (MKSTRING (CHARACTER (CHARCODE 0,274] [CONS "1/2" (MKSTRING (CHARACTER (CHARCODE 0,275] [CONS "3/4" (MKSTRING (CHARACTER (CHARCODE 0,276] (QUOTE ("DATE" . \TEDIT.EXPAND.DATE)) (QUOTE (">>DATE<<" . \TEDIT.EXPAND.DATE)))) (PUTPROPS TEDITABBREV COPYRIGHT ("John Sybalsky & Xerox Corporation" 1983 1984 1985)) (DECLARE: DONTCOPY (FILEMAP (NIL (1441 5358 (\TEDIT.ABBREV.EXPAND 1451 . 3322) (\TEDIT.EXPAND.DATE 3324 . 3920) ( \TEDIT.TRY.ABBREV 3922 . 5356))))) STOP