(FILECREATED "22-Jan-88 15:59:42" {ICE}<KOOMEN>LISPUSERS>KOTO>QEDIT.;9 30284  

      changes to:  (FNS QE-PLACE-ENTRIES QE-PROMPTPRINT QE-RELEASE-EDITOR QE-CREATE-EDITOR 
QE-INIT-EDITOR QE-RESHAPEFN QE-SLIDE-ENTRY QEDIT QEDIT.CURRENT.QUEUE QEDIT.RESET QE-ACQUIRE-EDITOR 
QE-ADJUST-SCROLL-PARAMS QE-BUTTONEVENTFN QE-CLOSEFN QE-DISPLAY-ENTRY QE-MARKASCHANGED QE-REPAINTFN 
QE-WHENSELECTEDFN QE-CMD-ADD QE-RUN-EDITOR QE-CMD-EDIT QE-CMD-DELETE QE-CMD-LEFT QE-CMD-RIGHT 
QE-DISPLAY-ENTRIES QE-FOCUS-SELECTION QE-MARK-VISIBLE-ENTRIES QE-MOUSE-IN-ENTRYP QE-REDISPLAY-ENTRY 
QE-RESET-DSP QE-SCROLLFN QE-SELECT-ENTRY QE-TOGGLE-ENTRY QE-CMD-INSERT) (VARS QEDITCOMS) (RECORDS 
QEDITOR QENTRY)

      previous date: "22-Jan-88 13:44:55" {ICE}<KOOMEN>LISPUSERS>KOTO>QEDIT.;7)


(* Copyright (c) 1987, 1988 by Johannes A. G. M. Koomen. All rights reserved.)

(PRETTYCOMPRINT QEDITCOMS)

(RPAQQ QEDITCOMS ((* ;; "Interface") (FNS QEDIT QEDIT.CURRENT.QUEUE QEDIT.RESET) (INITVARS (
*QEDITPROPS* (QUOTE (TITLE "Queue Editor" LABELFONT (HELVETICA 8))))) (* ;; "Implementation") (COMS (
DECLARE: DONTCOPY (RECORDS QEDITOR QENTRY)) (INITRECORDS QEDITOR QENTRY)) (FNS QE-ACQUIRE-EDITOR 
QE-ADJUST-SCROLL-PARAMS QE-BUTTONEVENTFN QE-CLOSEFN QE-CMD-INSERT QE-CMD-EDIT QE-CMD-DELETE 
QE-CMD-LEFT QE-CMD-RIGHT QE-COLLECT-QUEUE QE-COMPUTE-LABEL QE-CREATE-EDITOR QE-CREATE-ENTRIES 
QE-CREATE-ENTRY QE-DISPLAY-ENTRIES QE-DISPLAY-ENTRIES-AUX QE-DISPLAY-ENTRY QE-FOCUS-SELECTION 
QE-INIT-EDITOR QE-MARKASCHANGED QE-MARK-VISIBLE-ENTRIES QE-MAX-INDEX-WIDTH QE-MAX-LABEL-WIDTH 
QE-MOUSE-IN-ENTRYP QE-MOUSED-ENTRY QE-PLACE-ENTRIES QE-PROMPTPRINT QE-REDISPLAY-ENTRY 
QE-RELEASE-EDITOR QE-REPAINTFN QE-RESET-DSP QE-RESHAPEFN QE-RUN-EDITOR QE-SCROLLFN QE-SELECT-ENTRY 
QE-SLIDE-ENTRY QE-TOGGLE-ENTRY QE-UNMARKASCHANGED QE-WHENSELECTEDFN) (INITVARS (*QEDITORS*)) (
GLOBALVARS *QEDITORS*) (DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA) (
NLAML) (LAMA QE-PROMPTPRINT)))))



(* ;; "Interface")

(DEFINEQ

(QEDIT
(LAMBDA (QUEUE PROPS) (* Koomen "11-Dec-87 14:43") (* ; "Edited 27-Nov-87 14:36 by Koomen") (* ;; 
"Brings up a QEditor for rearranging the elements of QUEUE.") (* ;; 
"PROPS is a proplist customizing this particular editing session.  The following props are currently supported:"
) (* ;; "   TITLE - a string indicating the window title of the QEditor") (* ;; 
"   CONTEXT - a Lisp object given as extra argument to the following functions") (* ;; 
"   LABELFN - (labelfn qelt context) returns a label for displaying qelt") (* ;; 
"   LABELFONT - a font spec -- defaults to (HELVETICA 8)") (* ;; 
"   ADDFN - (addfn context) returns a new queue element") (* ;; 
"   EDITFN - (editfn qelt context) returns a (possibly different) queue element ") (* ;; 
"   DELETEFN - (deletefn qelt context) returns T iff the element can be deleted") (* ;; "") (* ;; 
"Default props are taken from the freevar *QEDITPROPS*") (LET ((QEDITOR (QE-ACQUIRE-EDITOR))) (
RESETLST (RESETSAVE NIL (BQUOTE (QE-RELEASE-EDITOR (\, QEDITOR)))) (QE-RUN-EDITOR (QE-INIT-EDITOR 
QEDITOR (MKLIST QUEUE) (APPEND PROPS *QEDITPROPS*)))))))

(QEDIT.CURRENT.QUEUE
(LAMBDA NIL (* Koomen "11-Dec-87 16:54") (DECLARE (SPECVARS QEDITOR)) (if (AND (BOUNDP (QUOTE QEDITOR)
) (type? QEDITOR QEDITOR)) then (QE-COLLECT-QUEUE QEDITOR) else (ERROR "No current QEdit in progress")
)))

(QEDIT.RESET
(LAMBDA NIL (* Koomen "11-Dec-87 14:52") (* ; "Edited 27-Nov-87 14:43 by Koomen") (if (for QEDITOR in 
*QEDITORS* thereis (NEQ (fetch (QEDITOR QUEUE) of QEDITOR) (QUOTE RELEASED))) then (QE-PROMPTPRINT NIL
 "Can't reset QEdit while edits in progress") NIL else (SETQ *QEDITORS*) T)))
)

(RPAQ? *QEDITPROPS* (QUOTE (TITLE "Queue Editor" LABELFONT (HELVETICA 8))))



(* ;; "Implementation")

(DECLARE: DONTCOPY 
[DECLARE: EVAL@COMPILE 

(DATATYPE QEDITOR (QUEUE TITLE ENTRIES ENTRYCNT SELECTION LABELFONT LABELFN INSERTFN EDITFN DELETEFN
 XOFFSET YOFFSET WINDOW DSP PROMPTWINDOW MENU COMMAND USERCONTEXT CHANGES? UNDOLIST REDOLIST))

(DATATYPE QENTRY (ELEMENT LABEL LABELWIDTH INDEX BIGBOX LBLBOX ORDBOX INVBOX OBSBOX VISIBLE? 
SELECTED?))
]
(/DECLAREDATATYPE (QUOTE QEDITOR) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER 
POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER 
POINTER POINTER)) (QUOTE ((QEDITOR 0 POINTER) (QEDITOR 2 POINTER) (QEDITOR 4 POINTER) (QEDITOR 6 
POINTER) (QEDITOR 8 POINTER) (QEDITOR 10 POINTER) (QEDITOR 12 POINTER) (QEDITOR 14 POINTER) (QEDITOR 
16 POINTER) (QEDITOR 18 POINTER) (QEDITOR 20 POINTER) (QEDITOR 22 POINTER) (QEDITOR 24 POINTER) (
QEDITOR 26 POINTER) (QEDITOR 28 POINTER) (QEDITOR 30 POINTER) (QEDITOR 32 POINTER) (QEDITOR 34 POINTER
) (QEDITOR 36 POINTER) (QEDITOR 38 POINTER) (QEDITOR 40 POINTER))) (QUOTE 42))
(/DECLAREDATATYPE (QUOTE QENTRY) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER 
POINTER POINTER POINTER POINTER)) (QUOTE ((QENTRY 0 POINTER) (QENTRY 2 POINTER) (QENTRY 4 POINTER) (
QENTRY 6 POINTER) (QENTRY 8 POINTER) (QENTRY 10 POINTER) (QENTRY 12 POINTER) (QENTRY 14 POINTER) (
QENTRY 16 POINTER) (QENTRY 18 POINTER) (QENTRY 20 POINTER))) (QUOTE 22))
)
(/DECLAREDATATYPE (QUOTE QEDITOR) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER 
POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER 
POINTER POINTER)) (QUOTE ((QEDITOR 0 POINTER) (QEDITOR 2 POINTER) (QEDITOR 4 POINTER) (QEDITOR 6 
POINTER) (QEDITOR 8 POINTER) (QEDITOR 10 POINTER) (QEDITOR 12 POINTER) (QEDITOR 14 POINTER) (QEDITOR 
16 POINTER) (QEDITOR 18 POINTER) (QEDITOR 20 POINTER) (QEDITOR 22 POINTER) (QEDITOR 24 POINTER) (
QEDITOR 26 POINTER) (QEDITOR 28 POINTER) (QEDITOR 30 POINTER) (QEDITOR 32 POINTER) (QEDITOR 34 POINTER
) (QEDITOR 36 POINTER) (QEDITOR 38 POINTER) (QEDITOR 40 POINTER))) (QUOTE 42))
(/DECLAREDATATYPE (QUOTE QENTRY) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER 
POINTER POINTER POINTER POINTER)) (QUOTE ((QENTRY 0 POINTER) (QENTRY 2 POINTER) (QENTRY 4 POINTER) (
QENTRY 6 POINTER) (QENTRY 8 POINTER) (QENTRY 10 POINTER) (QENTRY 12 POINTER) (QENTRY 14 POINTER) (
QENTRY 16 POINTER) (QENTRY 18 POINTER) (QENTRY 20 POINTER))) (QUOTE 22))
(DEFINEQ

(QE-ACQUIRE-EDITOR
(LAMBDA NIL (* ; "Edited 27-Nov-87 15:09 by Koomen") (for QEDITOR in *QEDITORS* when (EQ (QUOTE 
RELEASED) (fetch (QEDITOR QUEUE) of QEDITOR)) do (RETURN QEDITOR) finally (SETQ QEDITOR (
QE-CREATE-EDITOR)) (SETQ *QEDITORS* (NCONC1 *QEDITORS* QEDITOR)) (RETURN QEDITOR))))

(QE-ADJUST-SCROLL-PARAMS
(LAMBDA (QEDITOR WIDTH HEIGHT XOFFSET YOFFSET) (* ; "Edited 25-Nov-87 16:15 by Koomen") (replace (
QEDITOR XOFFSET) of QEDITOR with XOFFSET) (replace (QEDITOR YOFFSET) of QEDITOR with YOFFSET) (
WINDOWPROP (fetch (QEDITOR WINDOW) of QEDITOR) (QUOTE EXTENT) (CREATEREGION 0 0 WIDTH HEIGHT))))

(QE-BUTTONEVENTFN
(LAMBDA (WINDOW) (* ; "Edited 21-Jan-88 23:13 by Koomen") (DECLARE (GLOBALVARS LASTMOUSEBUTTONS)) (
PROG ((QEDITOR (WINDOWPROP WINDOW (QUOTE QEDITOR))) (BUTTON (if (LASTMOUSESTATE (ONLY LEFT)) then (
QUOTE LEFT) elseif (LASTMOUSESTATE (ONLY MIDDLE)) then (QUOTE MIDDLE)))) (TOTOPW WINDOW) (if (AND 
QEDITOR BUTTON) then (QE-SLIDE-ENTRY QEDITOR (QE-MOUSED-ENTRY QEDITOR) BUTTON)))))

(QE-CLOSEFN
(LAMBDA (WINDOW) (* ; "Edited 27-Nov-87 11:42 by Koomen") (PROG ((QEDITOR (WINDOWPROP WINDOW (QUOTE 
QEDITOR)))) (if QEDITOR then (if (fetch (QEDITOR COMMAND) of QEDITOR) then (RETURN (QUOTE DON'T)) else
 (replace (QEDITOR COMMAND) of QEDITOR with (QUOTE Done)))))))

(QE-CMD-INSERT
(LAMBDA (QEDITOR) (* Koomen "22-Jan-88 13:41") (PROG (NEWENTRY ENTRIES) (if (NULL (fetch (QEDITOR 
INSERTFN) of QEDITOR)) then (QE-PROMPTPRINT QEDITOR "Don't know how to insert elements") (RETURN)) (
SETQ NEWENTRY (APPLY* (fetch (QEDITOR INSERTFN) of QEDITOR) (fetch (QEDITOR USERCONTEXT) of QEDITOR)))
 (if (NULL NEWENTRY) then (QE-PROMPTPRINT QEDITOR "Nothing to insert") (RETURN)) (SETQ NEWENTRY (
QE-CREATE-ENTRY QEDITOR NEWENTRY)) (SETQ ENTRIES (fetch (QEDITOR ENTRIES) of QEDITOR)) (if (NULL 
ENTRIES) then (replace (QEDITOR ENTRIES) of QEDITOR with (LIST NEWENTRY)) else (for ENTRYP on ENTRIES 
when (fetch (QENTRY SELECTED?) of (CAR ENTRYP)) do (RPLNODE ENTRYP NEWENTRY (CONS (CAR ENTRYP) (CDR 
ENTRYP))) (RETURN) finally (replace (QEDITOR ENTRIES) of QEDITOR with (CONS NEWENTRY ENTRIES)))) (add 
(fetch (QEDITOR ENTRYCNT) of QEDITOR) 1) (QE-MARKASCHANGED QEDITOR) (QE-PLACE-ENTRIES QEDITOR) (
QE-DISPLAY-ENTRIES QEDITOR) (QE-SELECT-ENTRY QEDITOR NEWENTRY))))

(QE-CMD-EDIT
(LAMBDA (QEDITOR) (* ; "Edited 22-Jan-88 00:15 by Koomen") (PROG (ENTRY RESULT OLDLABEL NEWLABEL) (
SETQ ENTRY (fetch (QEDITOR SELECTION) of QEDITOR)) (if (NULL ENTRY) then (QE-PROMPTPRINT QEDITOR 
"Nothing selected") (RETURN)) (if (NULL (fetch (QEDITOR EDITFN) of QEDITOR)) then (QE-PROMPTPRINT 
QEDITOR "QEdit selection cannot be edited") (RETURN)) (SETQ RESULT (APPLY* (fetch (QEDITOR EDITFN) of 
QEDITOR) (fetch (QENTRY ELEMENT) of ENTRY) (fetch (QEDITOR USERCONTEXT) of QEDITOR))) (if RESULT then 
(replace (QENTRY ELEMENT) of ENTRY with RESULT) (SETQ OLDLABEL (fetch (QENTRY LABEL) of ENTRY)) (
QE-COMPUTE-LABEL QEDITOR ENTRY) (SETQ NEWLABEL (fetch (QENTRY LABEL) of ENTRY)) (if (NOT (EQUAL 
NEWLABEL OLDLABEL)) then (QE-PLACE-ENTRIES QEDITOR) (QE-DISPLAY-ENTRIES QEDITOR))))))

(QE-CMD-DELETE
(LAMBDA (QEDITOR) (* ; "Edited 21-Jan-88 23:43 by Koomen") (* ;; 
"Delete the current selection provided there is a DELETEP function returning T") (PROG ((OLDENTRY (
fetch (QEDITOR SELECTION) of QEDITOR))) (if (NULL OLDENTRY) then (QE-PROMPTPRINT QEDITOR 
"Nothing selected") elseif (AND (fetch (QEDITOR DELETEFN) of QEDITOR) (APPLY* (fetch (QEDITOR DELETEFN
) of QEDITOR) (fetch (QENTRY ELEMENT) of OLDENTRY) (fetch (QEDITOR USERCONTEXT) of QEDITOR))) then (
replace (QEDITOR ENTRIES) of QEDITOR with (DREMOVE OLDENTRY (fetch (QEDITOR ENTRIES) of QEDITOR))) (
add (fetch (QEDITOR ENTRYCNT) of QEDITOR) -1) (replace (QEDITOR SELECTION) of QEDITOR with NIL) (
QE-MARKASCHANGED QEDITOR) (QE-PLACE-ENTRIES QEDITOR) (QE-DISPLAY-ENTRIES QEDITOR) else (QE-PROMPTPRINT
 QEDITOR "QEdit selection cannot be deleted")))))

(QE-CMD-LEFT
(LAMBDA (QEDITOR) (* ; "Edited 21-Jan-88 23:00 by Koomen") (* ;; 
"Moves the current selection one place to the left, if possible.  Returns the new current selection.")
 (PROG ((LEFT) (RIGHT (fetch (QEDITOR SELECTION) of QEDITOR)) (ENTRIES (fetch (QEDITOR ENTRIES) of 
QEDITOR))) (if (NULL RIGHT) then (QE-PROMPTPRINT QEDITOR "Nothing selected") (RETURN)) (if (EQ RIGHT (
CAR ENTRIES)) then (QE-PROMPTPRINT QEDITOR "Can't move selection further left") (RETURN RIGHT)) (do (
SETQ LEFT (pop ENTRIES)) repeatuntil (EQ RIGHT (CAR ENTRIES))) (swap (fetch (QENTRY LABEL) of LEFT) (
fetch (QENTRY LABEL) of RIGHT)) (swap (fetch (QENTRY ELEMENT) of LEFT) (fetch (QENTRY ELEMENT) of 
RIGHT)) (QE-MARKASCHANGED QEDITOR) (QE-REDISPLAY-ENTRY QEDITOR RIGHT) (QE-REDISPLAY-ENTRY QEDITOR LEFT
) (RETURN (QE-SELECT-ENTRY QEDITOR LEFT)))))

(QE-CMD-RIGHT
(LAMBDA (QEDITOR) (* ; "Edited 21-Jan-88 23:03 by Koomen") (PROG ((LEFT (fetch (QEDITOR SELECTION) of 
QEDITOR)) (RIGHT) (ENTRIES (fetch (QEDITOR ENTRIES) of QEDITOR))) (if (NULL LEFT) then (QE-PROMPTPRINT
 QEDITOR "Nothing selected") (RETURN)) (do (SETQ RIGHT (CADR ENTRIES)) repeatuntil (EQ LEFT (pop 
ENTRIES))) (if (NULL RIGHT) then (QE-PROMPTPRINT QEDITOR "Can't move selection further right") (RETURN
 LEFT)) (swap (fetch (QENTRY LABEL) of LEFT) (fetch (QENTRY LABEL) of RIGHT)) (swap (fetch (QENTRY 
ELEMENT) of LEFT) (fetch (QENTRY ELEMENT) of RIGHT)) (QE-MARKASCHANGED QEDITOR) (QE-REDISPLAY-ENTRY 
QEDITOR LEFT) (QE-REDISPLAY-ENTRY QEDITOR RIGHT) (RETURN (QE-SELECT-ENTRY QEDITOR RIGHT)))))

(QE-COLLECT-QUEUE
(LAMBDA (QEDITOR) (* Koomen "25-May-87 12:05") (for ENTRY in (fetch (QEDITOR ENTRIES) of QEDITOR) 
collect (fetch (QENTRY ELEMENT) of ENTRY))))

(QE-COMPUTE-LABEL
(LAMBDA (QEDITOR ENTRY) (* ; "Edited 27-Nov-87 11:57 by Koomen") (PROG ((LABEL (OR (AND (fetch (
QEDITOR LABELFN) of QEDITOR) (APPLY* (fetch (QEDITOR LABELFN) of QEDITOR) (fetch (QENTRY ELEMENT) of 
ENTRY) (fetch (QEDITOR USERCONTEXT) of QEDITOR))) (fetch (QENTRY ELEMENT) of ENTRY))) (LABELFONT (
fetch (QEDITOR LABELFONT) of QEDITOR))) (replace (QENTRY LABEL) of ENTRY with LABEL) (replace (QENTRY 
LABELWIDTH) of ENTRY with (STRINGWIDTH LABEL LABELFONT)) (RETURN ENTRY))))

(QE-CREATE-EDITOR
(LAMBDA NIL (* Koomen "22-Jan-88 14:30") (LET* ((QEDITMENU (create MENU ITEMS ← (QUOTE (("<--" Left 
"Moves selected entry to the left") ("-->" Right "Moves selected entry to the right") (Insert Insert 
"Insert a new entry before the selected one") (Edit Edit "Edit the selected entry") (Delete Delete 
"Delete the selected entry") (Abort Abort "Abort Queue Editor, returning original queue") (Done Done 
"Exit Queue Editor, returning current queue"))) MENUFONT ← (QUOTE (MODERN 12)) CENTERFLG ← T 
WHENSELECTEDFN ← (FUNCTION QE-WHENSELECTEDFN))) (QEDITWINDOW (CREATEMENUEDWINDOW QEDITMENU 
"Queue Editor"))) (WINDOWADDPROP QEDITWINDOW (QUOTE CLOSEFN) (FUNCTION QE-CLOSEFN)) (WINDOWADDPROP 
QEDITWINDOW (QUOTE REPAINTFN) (FUNCTION QE-REPAINTFN)) (WINDOWADDPROP QEDITWINDOW (QUOTE RESHAPEFN) (
FUNCTION QE-RESHAPEFN)) (WINDOWPROP QEDITWINDOW (QUOTE BUTTONEVENTFN) (FUNCTION QE-BUTTONEVENTFN)) (
WINDOWPROP QEDITWINDOW (QUOTE SCROLLFN) (FUNCTION QE-SCROLLFN)) (WINDOWPROP QEDITWINDOW (QUOTE 
SCROLLEXTENTUSE) (QUOTE (LIMIT . LIMIT))) (create QEDITOR MENU ← QEDITMENU WINDOW ← QEDITWINDOW DSP ← 
(WINDOWPROP QEDITWINDOW (QUOTE DSP)) PROMPTWINDOW ← (GETPROMPTWINDOW QEDITWINDOW)))))

(QE-CREATE-ENTRIES
(LAMBDA (QEDITOR) (* ; "Edited 27-Nov-87 17:15 by Koomen") (PROG ((ENTRIES (for ELEMENT in (fetch (
QEDITOR QUEUE) of QEDITOR) collect (QE-CREATE-ENTRY QEDITOR ELEMENT)))) (replace (QEDITOR ENTRIES) of 
QEDITOR with ENTRIES) (replace (QEDITOR ENTRYCNT) of QEDITOR with (LENGTH ENTRIES)) (replace (QEDITOR 
SELECTION) of QEDITOR with NIL))))

(QE-CREATE-ENTRY
(LAMBDA (QEDITOR ELEMENT) (* Koomen "26-May-87 00:20") (QE-COMPUTE-LABEL QEDITOR (create QENTRY 
ELEMENT ← ELEMENT))))

(QE-DISPLAY-ENTRIES
(LAMBDA (QEDITOR) (* ; "Edited 21-Jan-88 23:46 by Koomen") (QE-RESET-DSP QEDITOR) (
QE-DISPLAY-ENTRIES-AUX QEDITOR (fetch (QEDITOR ENTRIES) of QEDITOR) (QE-MARK-VISIBLE-ENTRIES QEDITOR))
 (QE-SELECT-ENTRY QEDITOR (fetch (QEDITOR SELECTION) of QEDITOR))))

(QE-DISPLAY-ENTRIES-AUX
(LAMBDA (QEDITOR ENTRIES N) (* ; "Edited 25-Nov-87 16:15 by Koomen") (* ;; 
"Recursively display the entries (back to front) [first N, if non-NIL]") (if (AND ENTRIES (OR (NULL N)
 (IGREATERP N 0))) then (QE-DISPLAY-ENTRIES-AUX QEDITOR (CDR ENTRIES) (AND N (SUB1 N))) (
QE-DISPLAY-ENTRY QEDITOR (CAR ENTRIES)))))

(QE-DISPLAY-ENTRY
(LAMBDA (QEDITOR ENTRY) (* ; "Edited 21-Jan-88 21:51 by Koomen") (DECLARE (GLOBALVARS BLACKSHADE)) (if
 (fetch (QENTRY VISIBLE?) of ENTRY) then (LET ((DSP (fetch (QEDITOR DSP) of QEDITOR))) (with REGION (
fetch (QENTRY BIGBOX) of ENTRY) (GRAYBOXAREA LEFT BOTTOM WIDTH HEIGHT 1 BLACKSHADE DSP)) (with REGION 
(fetch (QENTRY LBLBOX) of ENTRY) (MOVETO LEFT BOTTOM DSP)) (PRINTOUT DSP (fetch (QENTRY LABEL) of 
ENTRY)) (with REGION (fetch (QENTRY ORDBOX) of ENTRY) (MOVETO LEFT BOTTOM DSP)) (PRINTOUT DSP (fetch (
QENTRY INDEX) of ENTRY)) (replace (QENTRY SELECTED?) of ENTRY with NIL)))))

(QE-FOCUS-SELECTION
(LAMBDA (QEDITOR COMMAND) (* ; "Edited 22-Jan-88 00:18 by Koomen") (PROG (QENTRY QENTRYBOX QEDITWINDOW
 QEDITREGION) (if (AND (SETQ QENTRY (fetch (QEDITOR SELECTION) of QEDITOR)) (NOT (SUBREGIONP (SETQ 
QEDITREGION (DSPCLIPPINGREGION NIL (SETQ QEDITWINDOW (fetch (QEDITOR WINDOW) of QEDITOR)))) (SETQ 
QENTRYBOX (fetch (QENTRY BIGBOX) of QENTRY))))) then (SCROLLW QEDITWINDOW (QUOTIENT (DIFFERENCE (with 
REGION QEDITREGION (PLUS LEFT RIGHT)) (with REGION QENTRYBOX (PLUS LEFT RIGHT))) 2) 0) (if COMMAND 
then (QE-PROMPTPRINT QEDITOR "Queue Editor command `" COMMAND "' ignored")) (RETURN T)))))

(QE-INIT-EDITOR
(LAMBDA (QEDITOR QUEUE PROPS) (* Koomen "22-Jan-88 14:29") (LET ((QEDITMENU (fetch (QEDITOR MENU) of 
QEDITOR)) (QEDITWINDOW (fetch (QEDITOR WINDOW) of QEDITOR))) (PUTMENUPROP QEDITMENU (QUOTE QEDITOR) 
QEDITOR) (WINDOWPROP QEDITWINDOW (QUOTE QEDITOR) QEDITOR) (WINDOWPROP QEDITWINDOW (QUOTE TITLE) (
replace (QEDITOR TITLE) of QEDITOR with (LISTGET PROPS (QUOTE TITLE)))) (replace (QEDITOR QUEUE) of 
QEDITOR with (MKLIST QUEUE)) (replace (QEDITOR LABELFN) of QEDITOR with (LISTGET PROPS (QUOTE LABELFN)
)) (replace (QEDITOR LABELFONT) of QEDITOR with (FONTCREATE (LISTGET PROPS (QUOTE LABELFONT)))) (
replace (QEDITOR INSERTFN) of QEDITOR with (OR (LISTGET PROPS (QUOTE INSERTFN)) (LISTGET PROPS (QUOTE 
ADDFN)))) (replace (QEDITOR EDITFN) of QEDITOR with (LISTGET PROPS (QUOTE EDITFN))) (replace (QEDITOR 
DELETEFN) of QEDITOR with (LISTGET PROPS (QUOTE DELETEFN))) (replace (QEDITOR USERCONTEXT) of QEDITOR 
with (LISTGET PROPS (QUOTE CONTEXT))) (replace (QEDITOR COMMAND) of QEDITOR with NIL) (replace (
QEDITOR CHANGES?) of QEDITOR with NIL) (DSPFONT (fetch (QEDITOR LABELFONT) of QEDITOR) (fetch (QEDITOR
 DSP) of QEDITOR)) (CLEARW QEDITWINDOW) (CLEARW (fetch (QEDITOR PROMPTWINDOW) of QEDITOR)) QEDITOR)))

(QE-MARKASCHANGED
(LAMBDA (QEDITOR) (* Koomen "11-Dec-87 15:04") (* ; "Edited 27-Nov-87 17:10 by Koomen") (if (NOT (
fetch (QEDITOR CHANGES?) of QEDITOR)) then (replace (QEDITOR CHANGES?) of QEDITOR with T) (WINDOWPROP 
(fetch (QEDITOR WINDOW) of QEDITOR) (QUOTE TITLE) (CONCAT "* " (fetch (QEDITOR TITLE) of QEDITOR)))) 
QEDITOR))

(QE-MARK-VISIBLE-ENTRIES
(LAMBDA (QEDITOR) (* ; "Edited 22-Jan-88 00:19 by Koomen") (for ENTRY in (fetch (QEDITOR ENTRIES) of 
QEDITOR) bind (LASTINDEX ← 0) (CLIPPINGREGION ← (DSPCLIPPINGREGION NIL (fetch (QEDITOR WINDOW) of 
QEDITOR))) do (if (replace (QENTRY VISIBLE?) of ENTRY with (REGIONSINTERSECTP CLIPPINGREGION (fetch (
QENTRY BIGBOX) of ENTRY))) then (SETQ LASTINDEX (fetch (QENTRY INDEX) of ENTRY))) finally (RETURN 
LASTINDEX))))

(QE-MAX-INDEX-WIDTH
(LAMBDA (QEDITOR) (* ; "Edited 27-Nov-87 17:05 by Koomen") (STRINGWIDTH (TIMES (fetch (QEDITOR 
ENTRYCNT) of QEDITOR) 10) (fetch (QEDITOR LABELFONT) of QEDITOR))))

(QE-MAX-LABEL-WIDTH
(LAMBDA (QEDITOR) (* Koomen "26-May-87 00:14") (for ENTRY in (fetch (QEDITOR ENTRIES) of QEDITOR) bind
 (W ← (STRINGWIDTH "Some Label" (fetch (QEDITOR LABELFONT) of QEDITOR))) do (SETQ W (IMAX W (fetch (
QENTRY LABELWIDTH) of ENTRY))) finally (RETURN W))))

(QE-MOUSE-IN-ENTRYP
(LAMBDA (QEDITOR ENTRY) (* ; "Edited 21-Jan-88 22:23 by Koomen") (LET ((QWINDOW (fetch (QEDITOR WINDOW
) of QEDITOR))) (INSIDEP (fetch (QENTRY BIGBOX) of ENTRY) (LASTMOUSEX QWINDOW) (LASTMOUSEY QWINDOW))))
)

(QE-MOUSED-ENTRY
(LAMBDA (QEDITOR) (* Koomen "25-May-87 12:44") (for ENTRY in (fetch (QEDITOR ENTRIES) of QEDITOR) 
thereis (QE-MOUSE-IN-ENTRYP QEDITOR ENTRY))))

(QE-PLACE-ENTRIES
(LAMBDA (QEDITOR) (* Koomen "22-Jan-88 15:59") (PROG (DSP ENTRIES FONT FONTHEIGHT LABEL-W INDEX-W 
BIGBOX-H YOFFSET REGION XOFFSET BIGBOX-W XLBLOFFSET YLBLOFFSET X Y LASTBOX NEXTBOX XVISIBLE YVISIBLE) 
(SETQ DSP (fetch (QEDITOR DSP) of QEDITOR)) (SETQ ENTRIES (fetch (QEDITOR ENTRIES) of QEDITOR)) (SETQ 
FONT (fetch (QEDITOR LABELFONT) of QEDITOR)) (SETQ FONTHEIGHT (FONTHEIGHT FONT)) (SETQ LABEL-W (
QE-MAX-LABEL-WIDTH QEDITOR)) (SETQ INDEX-W (QE-MAX-INDEX-WIDTH QEDITOR)) (SETQ BIGBOX-H (QUOTIENT (
TIMES FONTHEIGHT 7) 2)) (SETQ YOFFSET (ADD1 (QUOTIENT BIGBOX-H 2))) (SETQ BIGBOX-W (PLUS LABEL-W 
INDEX-W 8)) (SETQ XOFFSET (PLUS INDEX-W 8)) (SETQ REGION (DSPCLIPPINGREGION NIL DSP)) (SETQ XVISIBLE (
ADD1 (QUOTIENT (DIFFERENCE (fetch (REGION WIDTH) of REGION) BIGBOX-W) XOFFSET))) (SETQ YVISIBLE (ADD1 
(QUOTIENT (DIFFERENCE (fetch (REGION HEIGHT) of REGION) BIGBOX-H) YOFFSET))) (if (LESSP YVISIBLE 
XVISIBLE) then (LET ((NEWXOFFSET (QUOTIENT (DIFFERENCE (fetch (REGION WIDTH) of REGION) BIGBOX-W) 
YVISIBLE))) (add BIGBOX-W (DIFFERENCE NEWXOFFSET XOFFSET)) (SETQ XOFFSET NEWXOFFSET))) (SETQ 
XLBLOFFSET 3) (SETQ YLBLOFFSET (DIFFERENCE BIGBOX-H (PLUS FONTHEIGHT 2))) (SETQ X 4) (SETQ Y 4) (for 
ENTRY in ENTRIES as I from 1 do (replace (QENTRY INDEX) of ENTRY with I) (SETQ LASTBOX NEXTBOX) (SETQ 
NEXTBOX (CREATEREGION X Y BIGBOX-W BIGBOX-H)) (replace (QENTRY BIGBOX) of ENTRY with NEXTBOX) (replace
 (QENTRY INVBOX) of ENTRY with (CREATEREGION (ADD1 X) (ADD1 Y) (DIFFERENCE BIGBOX-W 2) (DIFFERENCE 
BIGBOX-H 2))) (LET ((LABEL-X (PLUS X XLBLOFFSET)) (LABEL-Y (PLUS Y YLBLOFFSET))) (replace (QENTRY 
LBLBOX) of ENTRY with (CREATEREGION LABEL-X LABEL-Y LABEL-W FONTHEIGHT))) (SETQ INDEX-W (STRINGWIDTH I
 FONT)) (LET ((INDEX-X (DIFFERENCE (PLUS X BIGBOX-W) (PLUS INDEX-W 4))) (INDEX-Y (PLUS Y 3))) (replace
 (QENTRY ORDBOX) of ENTRY with (CREATEREGION INDEX-X INDEX-Y INDEX-W FONTHEIGHT))) (if LASTBOX then (
with REGION (INTERSECTREGIONS LASTBOX NEXTBOX) (replace (QENTRY OBSBOX) of ENTRY with (CREATEREGION (
ADD1 LEFT) (ADD1 BOTTOM) WIDTH HEIGHT)))) (add X XOFFSET) (add Y YOFFSET)) (QE-ADJUST-SCROLL-PARAMS 
QEDITOR (PLUS X BIGBOX-W) (PLUS Y BIGBOX-H) XOFFSET YOFFSET))))

(QE-PROMPTPRINT
(LAMBDA PROMPTCNT (* Koomen "22-Jan-88 14:28") (if (LESSP PROMPTCNT 1) then (SHOULDNT 
"Missing QEditor arg") else (LET ((QEDITOR (ARG PROMPTCNT 1))) (if (type? QEDITOR QEDITOR) then (LET (
(PROMPTW (fetch (QEDITOR PROMPTWINDOW) of QEDITOR))) (CLEARW PROMPTW) (for I from 2 to PROMPTCNT do (
printout PROMPTW (ARG PROMPTCNT I)))) else (TERPRI PROMPTWINDOW) (for I from 2 to PROMPTCNT do (
printout PROMPTWINDOW (ARG PROMPTCNT I))) (TERPRI PROMPTWINDOW))))))

(QE-REDISPLAY-ENTRY
(LAMBDA (QEDITOR ENTRY) (* ; "Edited 21-Jan-88 23:39 by Koomen") (* ;; 
"ENTRY's label has changed, so deselect if necessary and reprint label") (DECLARE (GLOBALVARS 
BLACKSHADE)) (if (fetch (QENTRY VISIBLE?) of ENTRY) then (QE-TOGGLE-ENTRY QEDITOR ENTRY) (PROG ((DSP (
fetch (QEDITOR DSP) of QEDITOR)) (LBLBOX (fetch (QENTRY LBLBOX) of ENTRY))) (DSPFILL LBLBOX WHITESHADE
 (QUOTE REPLACE) DSP) (with REGION LBLBOX (MOVETO LEFT BOTTOM DSP)) (PRINTOUT DSP (fetch (QENTRY LABEL
) of ENTRY))))))

(QE-RELEASE-EDITOR
(LAMBDA (QEDITOR) (* Koomen "22-Jan-88 14:43") (* ;; 
"Done editing, so squirrel it away for future use.  Break the circular links for GC purposes ") (
DECLARE (GLOBALVARS *QEDITORS*)) (LET ((QEDITMENU (fetch (QEDITOR MENU) of QEDITOR)) (QEDITWINDOW (
fetch (QEDITOR WINDOW) of QEDITOR)) (PROMPTW (fetch (QEDITOR PROMPTWINDOW) of QEDITOR))) (PUTMENUPROP 
QEDITMENU (QUOTE QEDITOR) NIL) (WINDOWPROP QEDITWINDOW (QUOTE QEDITOR) NIL) (if (OPENWP QEDITWINDOW) 
then (CLOSEW QEDITWINDOW)) (if (OPENWP PROMPTW) then (CLOSEW PROMPTW)) (replace (QEDITOR QUEUE) of 
QEDITOR with (QUOTE RELEASED)))))

(QE-REPAINTFN
(LAMBDA (WINDOW) (* ; "Edited 21-Jan-88 22:12 by Koomen") (PROG ((QEDITOR (WINDOWPROP WINDOW (QUOTE 
QEDITOR)))) (if QEDITOR then (QE-DISPLAY-ENTRIES QEDITOR)))))

(QE-RESET-DSP
(LAMBDA (QEDITOR) (* ; "Edited 21-Jan-88 22:01 by Koomen") (PROG* ((DSP (fetch (QEDITOR DSP) of 
QEDITOR))) (DSPRIGHTMARGIN MAX.SMALLP DSP) (DSPFILL NIL NIL NIL DSP) (with REGION (DSPCLIPPINGREGION 
NIL DSP) (MOVETO (PLUS LEFT 4) (DIFFERENCE TOP (PLUS (FONTHEIGHT (fetch (QEDITOR LABELFONT) of QEDITOR
)) 2)) DSP)) (printout DSP (fetch (QEDITOR ENTRYCNT) of QEDITOR) " elements"))))

(QE-RESHAPEFN
(LAMBDA (WINDOW OLDBM OLDREG) (* ; "Edited 21-Jan-88 22:07 by Koomen") (PROG ((QEDITOR (WINDOWPROP 
WINDOW (QUOTE QEDITOR)))) (if QEDITOR then (QE-PLACE-ENTRIES QEDITOR) (QE-DISPLAY-ENTRIES QEDITOR) 
else (BITBLT OLDBM (fetch (REGION LEFT) of OLDREG) (fetch (REGION BOTTOM) of OLDREG) WINDOW)))))

(QE-RUN-EDITOR
(LAMBDA (QEDITOR) (* Koomen "22-Jan-88 13:38") (while T bind COMMAND first (QE-CREATE-ENTRIES QEDITOR)
 (QE-PLACE-ENTRIES QEDITOR) (QE-DISPLAY-ENTRIES QEDITOR) eachtime (BLOCK) when (SETQ COMMAND (fetch (
QEDITOR COMMAND) of QEDITOR)) do (QE-PROMPTPRINT QEDITOR) (SELECTQ COMMAND (Left (OR (
QE-FOCUS-SELECTION QEDITOR COMMAND) (QE-CMD-LEFT QEDITOR))) (Right (OR (QE-FOCUS-SELECTION QEDITOR 
COMMAND) (QE-CMD-RIGHT QEDITOR))) (Insert (OR (QE-FOCUS-SELECTION QEDITOR COMMAND) (QE-CMD-INSERT 
QEDITOR))) (Edit (OR (QE-FOCUS-SELECTION QEDITOR COMMAND) (QE-CMD-EDIT QEDITOR))) (Delete (OR (
QE-FOCUS-SELECTION QEDITOR COMMAND) (QE-CMD-DELETE QEDITOR))) (Abort (RETURN (fetch (QEDITOR QUEUE) of
 QEDITOR))) (Done (RETURN (QE-COLLECT-QUEUE QEDITOR))) (Display (QE-DISPLAY-ENTRIES QEDITOR)) (
QE-PROMPTPRINT QEDITOR "Queue Editor command `" COMMAND "' not yet implemented.")) (replace (QEDITOR 
COMMAND) of QEDITOR with NIL))))

(QE-SCROLLFN
(LAMBDA (WINDOW XDELTA YDELTA CONTINUOUSFLG) (* ; "Edited 22-Jan-88 00:20 by Koomen") (* ;; 
"Adjust XDELTA and YDELTA such that scrolling always takes place along the diagonal axis, rather than along the horizontal or vertical axes"
) (PROG (QEDITOR DSP XOFFSET YOFFSET OLDREG NEWREG EXTENT TOSTARTFLG THUMBFLG DX DY) (SETQ QEDITOR (
WINDOWPROP WINDOW (QUOTE QEDITOR))) (if (NULL QEDITOR) then (RETURN)) (SETQ DSP (fetch (QEDITOR DSP) 
of QEDITOR)) (SETQ XOFFSET (fetch (QEDITOR XOFFSET) of QEDITOR)) (SETQ YOFFSET (fetch (QEDITOR YOFFSET
) of QEDITOR)) (SETQ OLDREG (DSPCLIPPINGREGION NIL DSP)) (SETQ NEWREG (COPY OLDREG)) (SETQ EXTENT (
WINDOWPROP WINDOW (QUOTE EXTENT))) (if (LESSP XDELTA 0) then (SETQ TOSTARTFLG T) (SETQ DX (MINUS 
XDELTA)) else (SETQ DX XDELTA)) (if (LESSP YDELTA 0) then (SETQ TOSTARTFLG T) (SETQ DY (MINUS YDELTA))
 else (SETQ DY YDELTA)) (if CONTINUOUSFLG then (SETQ DX XOFFSET) (SETQ DY YOFFSET) elseif (FLOATP DX) 
then (SETQ DY DX) (SETQ THUMBFLG T) elseif (FLOATP DY) then (SETQ DX (SETQ DY (DIFFERENCE 1 DY))) (
SETQ THUMBFLG T) elseif (ZEROP DX) then (SETQ DX (QUOTIENT (TIMES DY XOFFSET) YOFFSET)) else (SETQ DY 
(QUOTIENT (TIMES DX YOFFSET) XOFFSET))) (replace (REGION LEFT) of NEWREG with (if THUMBFLG then (FIX (
DIFFERENCE (TIMES DX (fetch (REGION WIDTH) of EXTENT)) (TIMES .5 (fetch (REGION WIDTH) of NEWREG)))) 
elseif TOSTARTFLG then (PLUS (fetch (REGION LEFT) of NEWREG) DX) else (DIFFERENCE (fetch (REGION LEFT)
 of NEWREG) DX))) (replace (REGION BOTTOM) of NEWREG with (if THUMBFLG then (FIX (DIFFERENCE (TIMES DY
 (fetch (REGION HEIGHT) of EXTENT)) (TIMES .5 (fetch (REGION HEIGHT) of NEWREG)))) elseif TOSTARTFLG 
then (PLUS (fetch (REGION BOTTOM) of NEWREG) DY) else (DIFFERENCE (fetch (REGION BOTTOM) of NEWREG) DY
))) (MAKEWITHINREGION NEWREG (WINDOWPROP WINDOW (QUOTE EXTENT))) (if (NOT (EQUAL NEWREG OLDREG)) then 
(PROG ((NEWDSPX (PLUS (DSPXOFFSET NIL DSP) (DIFFERENCE (fetch (REGION LEFT) of OLDREG) (fetch (REGION 
LEFT) of NEWREG)))) (NEWDSPY (PLUS (DSPYOFFSET NIL DSP) (DIFFERENCE (fetch (REGION BOTTOM) of OLDREG) 
(fetch (REGION BOTTOM) of NEWREG))))) (UNINTERRUPTABLY (DSPCLIPPINGREGION NEWREG DSP) (DSPXOFFSET 
NEWDSPX DSP) (DSPYOFFSET NEWDSPY DSP))) (QE-DISPLAY-ENTRIES QEDITOR)))))

(QE-SELECT-ENTRY
(LAMBDA (QEDITOR NEW-SELECTION) (* ; "Edited 21-Jan-88 23:56 by Koomen") (LET ((OLD-SELECTION (fetch (
QEDITOR SELECTION) of QEDITOR))) (if OLD-SELECTION then (QE-TOGGLE-ENTRY QEDITOR OLD-SELECTION)) (if 
NEW-SELECTION then (QE-TOGGLE-ENTRY QEDITOR NEW-SELECTION T)) (replace (QEDITOR SELECTION) of QEDITOR 
with NEW-SELECTION) (if (AND NEW-SELECTION (NEQ NEW-SELECTION OLD-SELECTION)) then (QE-FOCUS-SELECTION
 QEDITOR)) NEW-SELECTION)))

(QE-SLIDE-ENTRY
(LAMBDA (QEDITOR ENTRY BUTTON) (* Koomen "22-Jan-88 14:43") (* ;; "Selects ENTRY.") (* ;; 
"If BUTTON = LEFT and mouse leaves ENTRY's region, deselects ENTRY and returns.") (* ;; 
"If BUTTON = MIDDLE and mouse leaves ENTRY's region on the right, moves selection to the right if possible and loops."
) (* ;; 
"If BUTTON = MIDDLE and mouse leaves ENTRY's region on the left, moves selection to the left if possible and loops."
) (DECLARE (GLOBALVARS LASTMOUSEBUTTONS LASTMOUSEX LASTMOUSEY)) (bind X Y REG (L-OK ← T) (R-OK ← T) (
QR ← (WINDOWREGION (fetch (QEDITOR WINDOW) of QEDITOR))) first (QE-PROMPTPRINT QEDITOR) (
QE-SELECT-ENTRY QEDITOR ENTRY) while (AND ENTRY (if (EQ BUTTON (QUOTE LEFT)) then (MOUSESTATE (ONLY 
LEFT)) elseif (EQ BUTTON (QUOTE MIDDLE)) then (MOUSESTATE (ONLY MIDDLE)))) do (SETQ REG (fetch (QENTRY
 BIGBOX) of ENTRY)) (SETQ X (LASTMOUSEX (fetch (QEDITOR WINDOW) of QEDITOR))) (SETQ Y (LASTMOUSEY (
fetch (QEDITOR WINDOW) of QEDITOR))) (if (INSIDEP REG X Y) then (* ; "sit tight") elseif (EQ BUTTON (
QUOTE LEFT)) then (QE-SELECT-ENTRY QEDITOR) (RETURN) elseif (NOT (INSIDEP QR LASTMOUSEX LASTMOUSEY)) 
then (* ; "sit tight") elseif (AND (LESSP X (fetch (REGION LEFT) of REG)) (LESSP Y (fetch (REGION TOP)
 of REG))) then (if L-OK then (QE-PROMPTPRINT QEDITOR) (if (EQ ENTRY (SETQ ENTRY (QE-CMD-LEFT QEDITOR)
)) then (SETQ L-OK) else (SETQ R-OK T))) elseif (AND (GREATERP X (fetch (REGION RIGHT) of REG)) (
GREATERP Y (fetch (REGION BOTTOM) of REG))) then (if R-OK then (QE-PROMPTPRINT QEDITOR) (if (EQ ENTRY 
(SETQ ENTRY (QE-CMD-RIGHT QEDITOR))) then (SETQ R-OK) else (SETQ L-OK T)))))))

(QE-TOGGLE-ENTRY
(LAMBDA (QEDITOR ENTRY SELECT?) (* ; "Edited 21-Jan-88 23:17 by Koomen") (if (AND (fetch (QENTRY 
VISIBLE?) of ENTRY) (NEQ SELECT? (fetch (QENTRY SELECTED?) of ENTRY))) then (LET ((DSP (fetch (QEDITOR
 DSP) of QEDITOR)) (BOX (fetch (QENTRY INVBOX) of ENTRY))) (DSPFILL BOX BLACKSHADE (QUOTE INVERT) DSP)
 (if (SETQ BOX (fetch (QENTRY OBSBOX) of ENTRY)) then (DSPFILL BOX BLACKSHADE (QUOTE INVERT) DSP))) (
replace (QENTRY SELECTED?) of ENTRY with SELECT?))))

(QE-UNMARKASCHANGED
(LAMBDA (QEDITOR) (* ; "Edited 27-Nov-87 17:11 by Koomen") (replace (QEDITOR CHANGES?) of QEDITOR with
 NIL) (WINDOWPROP (fetch (QEDITOR WINDOW) of QEDITOR) (fetch (QEDITOR TITLE) of QEDITOR)) QEDITOR))

(QE-WHENSELECTEDFN
(LAMBDA (ITEM MENU) (* Koomen "11-Dec-87 14:53") (* ; "Edited 25-Nov-87 16:53 by Koomen") (PROG ((
QEDITOR (GETMENUPROP MENU (QUOTE QEDITOR)))) (if QEDITOR then (if (fetch (QEDITOR COMMAND) of QEDITOR)
 then (QE-PROMPTPRINT QEDITOR "Queue Editor busy, executing `" (fetch (QEDITOR COMMAND) of QEDITOR) 
"'") else (replace (QEDITOR COMMAND) of QEDITOR with (CADR ITEM)))))))
)

(RPAQ? *QEDITORS* )
(DECLARE: DOEVAL@COMPILE DONTCOPY

(GLOBALVARS *QEDITORS*)
)
(DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS 

(ADDTOVAR NLAMA )

(ADDTOVAR NLAML )

(ADDTOVAR LAMA QE-PROMPTPRINT)
)
(PUTPROPS QEDIT COPYRIGHT ("Johannes A. G. M. Koomen" 1987 1988))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (2000 3664 (QEDIT 2010 . 3124) (QEDIT.CURRENT.QUEUE 3126 . 3360) (QEDIT.RESET 3362 . 
3662)) (6232 29964 (QE-ACQUIRE-EDITOR 6242 . 6536) (QE-ADJUST-SCROLL-PARAMS 6538 . 6858) (
QE-BUTTONEVENTFN 6860 . 7263) (QE-CLOSEFN 7265 . 7547) (QE-CMD-INSERT 7549 . 8536) (QE-CMD-EDIT 8538
 . 9338) (QE-CMD-DELETE 9340 . 10170) (QE-CMD-LEFT 10172 . 11011) (QE-CMD-RIGHT 11013 . 11731) (
QE-COLLECT-QUEUE 11733 . 11898) (QE-COMPUTE-LABEL 11900 . 12397) (QE-CREATE-EDITOR 12399 . 13599) (
QE-CREATE-ENTRIES 13601 . 13964) (QE-CREATE-ENTRY 13966 . 14105) (QE-DISPLAY-ENTRIES 14107 . 14385) (
QE-DISPLAY-ENTRIES-AUX 14387 . 14726) (QE-DISPLAY-ENTRY 14728 . 15335) (QE-FOCUS-SELECTION 15337 . 
15956) (QE-INIT-EDITOR 15958 . 17191) (QE-MARKASCHANGED 17193 . 17528) (QE-MARK-VISIBLE-ENTRIES 17530
 . 17974) (QE-MAX-INDEX-WIDTH 17976 . 18163) (QE-MAX-LABEL-WIDTH 18165 . 18445) (QE-MOUSE-IN-ENTRYP 
18447 . 18678) (QE-MOUSED-ENTRY 18680 . 18845) (QE-PLACE-ENTRIES 18847 . 21047) (QE-PROMPTPRINT 21049
 . 21526) (QE-REDISPLAY-ENTRY 21528 . 22044) (QE-RELEASE-EDITOR 22046 . 22659) (QE-REPAINTFN 22661 . 
22841) (QE-RESET-DSP 22843 . 23243) (QE-RESHAPEFN 23245 . 23559) (QE-RUN-EDITOR 23561 . 24500) (
QE-SCROLLFN 24502 . 26762) (QE-SELECT-ENTRY 26764 . 27223) (QE-SLIDE-ENTRY 27225 . 28855) (
QE-TOGGLE-ENTRY 28857 . 29336) (QE-UNMARKASCHANGED 29338 . 29564) (QE-WHENSELECTEDFN 29566 . 29962))))
)
STOP