Implementation of arrow keys
This commit is contained in:
@@ -1,20 +1,20 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
|
||||
|
||||
(FILECREATED "30-Nov-2025 08:45:15" {WMEDLEY}<library>sketch>SKETCH-EDIT.;17 110086
|
||||
(FILECREATED " 1-Dec-2025 23:22:35" {WMEDLEY}<library>SKETCH>SKETCH-EDIT.;20 113366
|
||||
|
||||
:EDIT-BY rmk
|
||||
|
||||
:CHANGES-TO (FNS \SKED.INSERT.CHARS.TO.STR SK.GETSYNTAX SK.WORD.BREAK.CLASS
|
||||
\SKED.DELETE.WORD.FROM.STRING \SKED.INSERT)
|
||||
:CHANGES-TO (FNS \SKED.INSERT.UNDO \SKED.INSERT.ACTION \SKED.INSERT.CHARS.TO.STR \SKED.INSERT
|
||||
CHAR.BEGIN \SKED.ARROWKEYS)
|
||||
(VARS SKETCH-EDITCOMS)
|
||||
|
||||
:PREVIOUS-DATE "29-Nov-2025 17:19:43" {WMEDLEY}<library>sketch>SKETCH-EDIT.;8)
|
||||
:PREVIOUS-DATE "30-Nov-2025 08:45:15" {WMEDLEY}<library>SKETCH>SKETCH-EDIT.;17)
|
||||
|
||||
|
||||
(PRETTYCOMPRINT SKETCH-EDITCOMS)
|
||||
|
||||
(RPAQQ SKETCH-EDITCOMS
|
||||
((COMS (* selection functions)
|
||||
((COMS (* ; "selection functions")
|
||||
(FNS BUTLAST CHAR.BEGIN CLOSEST.CHAR CLOSEST.LINE FLASHW HILITE.LINE HILITE.TEXT
|
||||
IN.TEXT.EXTEND INIMAGEOBJ INTEXT NEW.TEXT.EXTEND NEW.TEXT.SELECTIONP NTHCHARWIDTH
|
||||
NTHLOCALREGION ONCHAR SHOW.EXTENDED.SELECTION.FEEDBACK SHOW.FEEDBACK
|
||||
@@ -28,23 +28,24 @@
|
||||
SELECTION.HIGHLIGHT.SHADE)
|
||||
(GLOBALVARS IN.TEXT.FEEDBACK.CURSOR NEW.TEXT.FEEDBACK.CURSOR NEW.TEXT.FEEDBACK.SHADE
|
||||
SELECTION.HIGHLIGHT.SHADE))
|
||||
(COMS (* editting functions)
|
||||
(FNS WB.EDITOR SK.TTYENTRYFN SK.TTYEXITFN SKED.INSERT \SKED.INSERT FIRST.N.ELEMENTS
|
||||
SKED.CREATE.NEW.TEXTBOX SKED.CHARACTERPOSITION SKED.LINE.AND.CHAR#
|
||||
\SKED.DELETE.WORD.FROM.STRING \SKED.INSERT.CHARS.TO.STR JOINCHARS
|
||||
STRINGFROMCHARACTERS GETALLCHARS CLEANUP.EDIT SKED.NEW.TEXTELT))
|
||||
(COMS (* line adding functions)
|
||||
(COMS (* ; "editing functions")
|
||||
(FNS WB.EDITOR SK.TTYENTRYFN SK.TTYEXITFN SKED.INSERT \SKED.INSERT \SKED.ARROWKEYS
|
||||
\SKED.INSERT.ACTION \SKED.INSERT.UNDO FIRST.N.ELEMENTS SKED.CREATE.NEW.TEXTBOX
|
||||
SKED.CHARACTERPOSITION SKED.LINE.AND.CHAR# \SKED.DELETE.WORD.FROM.STRING
|
||||
\SKED.INSERT.CHARS.TO.STR JOINCHARS STRINGFROMCHARACTERS GETALLCHARS CLEANUP.EDIT
|
||||
SKED.NEW.TEXTELT))
|
||||
(COMS (* ; "line adding functions")
|
||||
(FNS MAP.SCREEN.POSITION.ONTO.GRID NEAREST.ON.GRID SK.MIDDLE.TITLEFN WB.BUTTON.HANDLER
|
||||
WB.ADD.NEW.POINT WB.DRAWLINE WB.RUBBERBAND.POSITION SK.RUBBERBAND.FEEDBACKFN
|
||||
RESET.LINE.BEING.INPUT)
|
||||
[P (* Was MODERNIZE loaded before?)
|
||||
[P (* ; "Was MODERNIZE loaded before?")
|
||||
(CL:WHEN (GETD 'MODERNWINDOW.SETUP)
|
||||
(MODERNWINDOW.SETUP 'WB.BUTTON.HANDLER))]
|
||||
(FNS NEAREST.EXISTING.POSITION WB.NEARPT LASTMOUSEPOSITION))))
|
||||
|
||||
|
||||
|
||||
(* selection functions)
|
||||
(* ; "selection functions")
|
||||
|
||||
(DEFINEQ
|
||||
|
||||
@@ -61,10 +62,13 @@
|
||||
(BUTLAST (CDR LST])
|
||||
|
||||
(CHAR.BEGIN
|
||||
[LAMBDA (CHAR# LINE# TEXTELT STRM) (* rrb "14-Jan-85 15:40")
|
||||
|
||||
(* determines the x position of the first bit of character CHAR# in LINE# of
|
||||
TEXTELT.)
|
||||
[LAMBDA (CHAR# LINE# TEXTELT STRM) (* ; "Edited 1-Dec-2025 00:22 by rmk")
|
||||
(* rrb "14-Jan-85 15:40")
|
||||
|
||||
(* ;; "determines the x position of the first bit of character CHAR# in LINE# of TEXTELT.")
|
||||
|
||||
(* determines the x position of the first bit of character CHAR# in LINE# of
|
||||
TEXTELT.)
|
||||
|
||||
(PROG ((LTEXT (fetch (SCREENELT LOCALPART) of TEXTELT))
|
||||
TEXT XPOS LFONT LREGION)
|
||||
@@ -74,26 +78,21 @@
|
||||
of LTEXT)
|
||||
LINE#]
|
||||
(COND
|
||||
((EQ CHAR# 0) (* before the first character.)
|
||||
((EQ CHAR# 0) (* ; "before the first character.")
|
||||
(RETURN XPOS)))
|
||||
(SETQ LFONT (fetch (LOCALTEXT LOCALFONT) of LTEXT))
|
||||
(RETURN (IPLUS XPOS (COND
|
||||
((IMAGESTREAMTYPEP STRM 'HARDCOPY)
|
||||
|
||||
(* hardcopy streams must pass the stream so correction in widths is accounted
|
||||
for.)
|
||||
|
||||
(* ;
|
||||
"hardcopy streams must pass the stream so correction in widths is accounted for.")
|
||||
(DSPFONT LFONT STRM)
|
||||
(STRINGWIDTH (SUBSTRING TEXT 1 CHAR#)
|
||||
STRM))
|
||||
((FONTP LFONT)
|
||||
(for I from 1 to CHAR# sum (CHARWIDTH (CHCON1 (NTHCHAR TEXT I))
|
||||
LFONT)))
|
||||
(T
|
||||
|
||||
(* if it is printed in shade, put cursor a percentage of the way across the
|
||||
area.)
|
||||
|
||||
(STRINGWIDTH (SUBSTRING TEXT 1 CHAR#)
|
||||
LFONT))
|
||||
(T (* ;
|
||||
"if it is printed in shade, put cursor a percentage of the way across the area.")
|
||||
(IQUOTIENT (ITIMES CHAR# (fetch (REGION WIDTH) of LREGION))
|
||||
(NCHARS TEXT])
|
||||
|
||||
@@ -745,7 +744,7 @@
|
||||
|
||||
|
||||
|
||||
(* editting functions)
|
||||
(* ; "editing functions")
|
||||
|
||||
(DEFINEQ
|
||||
|
||||
@@ -808,7 +807,7 @@
|
||||
(\SKED.INSERT CHARCODES SKW ATSCALE])
|
||||
|
||||
(\SKED.INSERT
|
||||
[LAMBDA (CHARCODES SKW ATSCALE) (* ; "Edited 29-Nov-2025 21:41 by rmk")
|
||||
[LAMBDA (CHARCODES SKW ATSCALE) (* ; "Edited 1-Dec-2025 13:23 by rmk")
|
||||
(* ; "Edited 12-Nov-2025 14:49 by rmk")
|
||||
(* ; "Edited 10-Nov-2025 15:32 by rmk")
|
||||
(* ; "Edited 20-Feb-87 17:28 by rrb")
|
||||
@@ -822,46 +821,36 @@
|
||||
SKW ATSCALE)
|
||||
(SKED.INSERT (NTH CHARCODES 201)
|
||||
SKW ATSCALE))
|
||||
((\SKED.INSERT.ACTION CHARCODES SKW))
|
||||
(T (PROG ((SELECTION (WINDOWPROP SKW 'SELECTION))
|
||||
(EXTENSION (WINDOWPROP SKW 'EXTENDSELECTION))
|
||||
TEXTELT ELTTYPE GTEXTELT FIRSTLINE# FIRSTCHAR# LASTLINE# LASTCHAR# STRLST NEWSTRS
|
||||
NEWELT STRPIECE NEWLINE# NEWCHAR# SKCONTEXT PTRCHAR# CONTROLCHARTAIL)
|
||||
(COND
|
||||
((EQ (SK.GETSYNTAX (CAR CHARCODES))
|
||||
:UNDO)
|
||||
|
||||
(* ;; "user typed an undo Avoid the overhead of inserting no characters and allow undo to be typed without a selection.")
|
||||
|
||||
(SETQ CONTROLCHARTAIL 'UNDO)
|
||||
(GO UNDO)))
|
||||
(COND
|
||||
((NULL SELECTION) (* ;
|
||||
(CL:UNLESS SELECTION (* ;
|
||||
"add a new text element with these characters.")
|
||||
(STATUSPRINT SKW "
|
||||
" "Indicate the position the typing should go with the left button.")
|
||||
(RETURN)))
|
||||
(RETURN))
|
||||
(SKED.CLEAR.SELECTION SKW NIL T)
|
||||
(SKED.REMOVE.OTHER.SELECTIONS SKW)
|
||||
[COND
|
||||
((AND (MEMB (CAR CHARCODES)
|
||||
(CHARCODE (EOL LINEFEED)))
|
||||
(KEYDOWNP 'CTRL)) (* ;
|
||||
(CL:WHEN (AND (MEMB (CAR CHARCODES)
|
||||
(CHARCODE (EOL LINEFEED)))
|
||||
(KEYDOWNP 'CTRL)) (* ;
|
||||
"user hit control CR. create a new text or textbox.")
|
||||
(SKED.CREATE.NEW.TEXTBOX [COND
|
||||
((NEW.TEXT.SELECTIONP SELECTION)
|
||||
NIL)
|
||||
(T (fetch (SCREENELT INDIVIDUALGLOBALPART)
|
||||
of (fetch (TEXTELTSELECTION SKTEXTELT)
|
||||
of SELECTION]
|
||||
(SKED.CREATE.NEW.TEXTBOX (CL:UNLESS (NEW.TEXT.SELECTIONP SELECTION)
|
||||
(fetch (SCREENELT INDIVIDUALGLOBALPART)
|
||||
of (fetch (TEXTELTSELECTION SKTEXTELT)
|
||||
of SELECTION)))
|
||||
SKW
|
||||
(CDR CHARCODES))
|
||||
(RETURN))
|
||||
[COND
|
||||
[(NEW.TEXT.SELECTIONP SELECTION) (* ;
|
||||
"selection is in open space, create a new text element.")
|
||||
(* ;
|
||||
"merge the characters into strings of each line.")
|
||||
(SETQ ELTTYPE 'TEXT)
|
||||
(SETQ CONTROLCHARTAIL (\SKED.INSERT.CHARS.TO.STR CHARCODES NIL SKW))
|
||||
(SETQ CONTROLCHARTAIL (\SKED.INSERT.CHARS.TO.STR CHARCODES NIL SKW SELECTION))
|
||||
(COND
|
||||
((OR NEWSTRS STRPIECE) (* ;
|
||||
"if there are any new characters, add a new text element.")
|
||||
@@ -943,15 +932,14 @@
|
||||
[CHARCODES (SETQ CONTROLCHARTAIL (\SKED.INSERT.CHARS.TO.STR
|
||||
CHARCODES
|
||||
(EQ ELTTYPE 'TEXTBOX)
|
||||
SKW))
|
||||
(SETQ NEWCHAR# (COND
|
||||
(STRPIECE (NCHARS STRPIECE))
|
||||
(T 0)))
|
||||
SKW SELECTION))
|
||||
(SETQ NEWCHAR# (CL:IF STRPIECE
|
||||
(NCHARS STRPIECE)
|
||||
0))
|
||||
(SETQ NEWLINE# (ADD1 (LENGTH NEWSTRS]
|
||||
(T (SETQ NEWCHAR# FIRSTCHAR#)
|
||||
(SETQ NEWLINE# FIRSTLINE#]
|
||||
(COND
|
||||
((EQ LINE# LASTLINE#) (* ;
|
||||
(CL:WHEN (EQ LINE# LASTLINE#) (* ;
|
||||
"on the last, copy the part before and the part after as one")
|
||||
(SETQ NEWSTRS (COND
|
||||
[STRPIECE (NCONC1
|
||||
@@ -967,16 +955,15 @@
|
||||
]
|
||||
[(NEQ LASTCHAR# (NCHARS STR))
|
||||
(NCONC1 NEWSTRS (SUBSTRING STR (ADD1 LASTCHAR#]
|
||||
(T NEWSTRS]
|
||||
(T NEWSTRS))))]
|
||||
|
||||
(* ;; "any other windows that had this selection have had it deleted already so this doesn't do anything for them.")
|
||||
|
||||
[COND
|
||||
((IGREATERP NEWLINE# (LENGTH NEWSTRS))
|
||||
(CL:WHEN (IGREATERP NEWLINE# (LENGTH NEWSTRS))
|
||||
|
||||
(* ;; "this corresponds to deleting every thing in a line. Make sure that if it is the last line that the selection is reset")
|
||||
|
||||
(COND
|
||||
[COND
|
||||
((EQ (SETQ NEWLINE# (LENGTH NEWSTRS))
|
||||
0)
|
||||
(SETQ NEWCHAR# 0)
|
||||
@@ -989,22 +976,22 @@
|
||||
[(WINDOWPROP SKW 'CHANGEDTEXTELT)
|
||||
(* ;
|
||||
"make the history event for this edit so that it will restore the original text element")
|
||||
(PROG ((INITSELECTION (WINDOWPROP SKW 'CHANGEDTEXTELT NIL)))
|
||||
(COND
|
||||
((POSITIONP INITSELECTION)
|
||||
(LET ((INITSELECTION (WINDOWPROP SKW 'CHANGEDTEXTELT NIL)))
|
||||
(COND
|
||||
((POSITIONP INITSELECTION)
|
||||
(* ;
|
||||
"this text element was typing that was never officially added, don't record the deletion either.")
|
||||
(SK.DELETE.ELEMENT (LIST TEXTELT)
|
||||
SKW
|
||||
'DON'T))
|
||||
(T (* ;
|
||||
(SK.DELETE.ELEMENT (LIST TEXTELT)
|
||||
SKW
|
||||
'DON'T))
|
||||
(T (* ;
|
||||
"selection was existing text, record this as a delete event.")
|
||||
(SK.DELETE.ELEMENT
|
||||
(LIST TEXTELT)
|
||||
SKW
|
||||
(LIST (fetch (SCREENELT GLOBALPART)
|
||||
of (fetch (TEXTELTSELECTION SKTEXTELT)
|
||||
of INITSELECTION]
|
||||
(SK.DELETE.ELEMENT (LIST TEXTELT)
|
||||
SKW
|
||||
(LIST (fetch (SCREENELT GLOBALPART)
|
||||
of (fetch (TEXTELTSELECTION
|
||||
SKTEXTELT)
|
||||
of INITSELECTION]
|
||||
(T (SK.DELETE.ELEMENT (LIST TEXTELT)
|
||||
SKW)))
|
||||
(SKED.SET.SELECTION (SK.SCALE.POSITION.INTO.VIEWER
|
||||
@@ -1016,7 +1003,7 @@
|
||||
(RETURN NIL))
|
||||
((EQ ELTTYPE 'TEXTBOX) (* ; "deleted everything in a textbox")
|
||||
NIL)))
|
||||
(T (SETQ NEWCHAR# (NCHARS (CAR (LAST NEWSTRS]
|
||||
(T (SETQ NEWCHAR# (NCHARS (CAR (LAST NEWSTRS])
|
||||
(SETQ PTRCHAR# (SKED.CHARACTERPOSITION NEWSTRS NEWLINE# NEWCHAR#))
|
||||
(COND
|
||||
((WINDOWPROP SKW 'CHANGEDTEXTELT)
|
||||
@@ -1061,43 +1048,18 @@
|
||||
of NEWELT))
|
||||
PTRCHAR#]
|
||||
(SETQ NEWLINE# (CAR NEWLINE#]
|
||||
UNDO
|
||||
|
||||
(* ;; "Cleanup")
|
||||
|
||||
(COND
|
||||
((NULL CONTROLCHARTAIL) (* ;
|
||||
"set the selection to where the characters were just inserted.")
|
||||
(SKED.SET.SELECTION (CREATE.TEXT.SELECTION NEWELT NEWLINE# NEWCHAR# NIL NIL
|
||||
(WINDOWPROP SKW 'DSP))
|
||||
SKW))
|
||||
[(EQ CONTROLCHARTAIL 'UNDO) (* ;
|
||||
((EQ CONTROLCHARTAIL 'UNDO) (* ;
|
||||
"user types in an undo after some characters or while selection was in the middle of text.")
|
||||
(PROG (INITSELECTION EDITEDELT)
|
||||
(COND
|
||||
((SETQ INITSELECTION (WINDOWPROP SKW 'CHANGEDTEXTELT NIL))
|
||||
(* ;
|
||||
"in the middle of editing, undo these edits.")
|
||||
[SETQ EDITEDELT (fetch (SCREENELT GLOBALPART)
|
||||
of (OR NEWELT (fetch (TEXTELTSELECTION SKTEXTELT)
|
||||
of (OR SELECTION (ERROR
|
||||
"NO SELECTION WHEN THERE SHOULD BE"
|
||||
]
|
||||
(* ;
|
||||
"add event to history list so the undo can be undone.")
|
||||
(COND
|
||||
((POSITIONP INITSELECTION) (* ;
|
||||
"add an ADD event because previously there was nothing here.")
|
||||
(SK.ADD.HISTEVENT 'ADD (LIST EDITEDELT)
|
||||
SKW)
|
||||
(SK.CHECK.END.INITIAL.EDIT SKW EDITEDELT))
|
||||
(T (SK.ENTER.EDIT.CHANGE SKW (fetch (SCREENELT GLOBALPART)
|
||||
of (fetch (TEXTELTSELECTION
|
||||
SKTEXTELT)
|
||||
of INITSELECTION))
|
||||
EDITEDELT)))
|
||||
(SK.UNDO.LAST SKW)
|
||||
(SKED.SET.SELECTION INITSELECTION SKW))
|
||||
(T (* ;
|
||||
"haven't edited any characters in the current element, just undo the last thing.")
|
||||
(SK.UNDO.LAST SKW]
|
||||
(\SKED.INSERT.UNDO NEWELT SELECTION))
|
||||
(T
|
||||
(* ;; "user typed a character command to create a new text box. Create it and put the remaining characters in it and set the cursor there.")
|
||||
|
||||
@@ -1110,6 +1072,94 @@
|
||||
SKW
|
||||
(CDR CONTROLCHARTAIL])
|
||||
|
||||
(\SKED.ARROWKEYS
|
||||
[LAMBDA (ACTION SKW SELECTION) (* ; "Edited 1-Dec-2025 22:24 by rmk")
|
||||
|
||||
(* ;; "Move the caret left/right/up/down according to the arrow keys")
|
||||
|
||||
(CL:UNLESS SELECTION
|
||||
(SETQ SELECTION (WINDOWPROP SKW 'SELECTION)))
|
||||
(CL:WHEN (AND SELECTION (NOT (POSITIONP SELECTION)))
|
||||
(LET* [(CHAR# (fetch (TEXTELTSELECTION SKCHAR#) of SELECTION))
|
||||
(LINE# (fetch (TEXTELTSELECTION SKLINE#) of SELECTION))
|
||||
(TEXTELT (fetch (TEXTELTSELECTION SKTEXTELT) of SELECTION))
|
||||
(SKLEFT (fetch (TEXTELTSELECTION SKLEFT) of SELECTION))
|
||||
(LINES (fetch (TEXT LISTOFCHARACTERS) of (fetch (SCREENELT INDIVIDUALGLOBALPART)
|
||||
of TEXTELT]
|
||||
(SELECTQ ACTION
|
||||
(:ONECHAR.BACKWARD
|
||||
(if (EQ CHAR# 0)
|
||||
then (add LINE# -1)
|
||||
[SETQ CHAR# (NCHARS (CAR (NTH LINES LINE#]
|
||||
else (add CHAR# -1)))
|
||||
(:ONECHAR.FORWARD
|
||||
(if [EQ CHAR# (NCHARS (CAR (NTH LINES LINE#]
|
||||
then (add LINE# 1)
|
||||
(SETQ CHAR# 1)
|
||||
else (add CHAR# 1)))
|
||||
(:LINE.UP (add LINE# -1)
|
||||
(SETQ CHAR# (CLOSEST.CHAR SKLEFT LINE# TEXTELT SKW)))
|
||||
(:LINE.DOWN (add LINE# 1)
|
||||
(SETQ CHAR# (CLOSEST.CHAR SKLEFT LINE# TEXTELT SKW)))
|
||||
(SHOULDNT))
|
||||
(CL:WHEN (<= 1 LINE# (LENGTH LINES))
|
||||
(SKED.SELECTION.FEEDBACK SKW)
|
||||
(SKED.SET.SELECTION (create TEXTELTSELECTION
|
||||
using SELECTION SKCHAR# _ CHAR# SKLINE# _ LINE# SKLEFT _
|
||||
(CHAR.BEGIN CHAR# LINE# (fetch (TEXTELTSELECTION
|
||||
SKTEXTELT)
|
||||
of SELECTION)
|
||||
SKW)
|
||||
SKBOTTOM _ (LINE.BEGIN LINE# TEXTELT))
|
||||
SKW))))])
|
||||
|
||||
(\SKED.INSERT.ACTION
|
||||
[LAMBDA (CHARCODES SKW) (* ; "Edited 1-Dec-2025 22:28 by rmk")
|
||||
(LET [(ACTION (SK.GETSYNTAX (CAR CHARCODES]
|
||||
(SELECTQ ACTION
|
||||
(:UNDO (\SKED.INSERT.UNDO SKW)
|
||||
T)
|
||||
((:ONECHAR.BACKWARD :ONECHAR.FORWARD :LINE.UP :LINE.DOWN)
|
||||
(\SKED.ARROWKEYS ACTION SKW)
|
||||
T)
|
||||
NIL])
|
||||
|
||||
(\SKED.INSERT.UNDO
|
||||
[LAMBDA (SKW NEWELT SELECTION) (* ; "Edited 1-Dec-2025 23:21 by rmk")
|
||||
(* ; "Edited 1-Dec-2025 12:56 by rmk")
|
||||
(* ; "Edited 1-Dec-2025 12:48 by rmk")
|
||||
(CL:UNLESS SELECTION
|
||||
(SETQ SELECTION (WINDOWPROP SKW 'SELECTION)))
|
||||
(PROG (INITSELECTION EDITEDELT)
|
||||
(COND
|
||||
((SETQ INITSELECTION (WINDOWPROP SKW 'CHANGEDTEXTELT NIL))
|
||||
(* ;
|
||||
"in the middle of editing, undo these edits.")
|
||||
[SETQ EDITEDELT (fetch (SCREENELT GLOBALPART) of (OR NEWELT (fetch (TEXTELTSELECTION
|
||||
SKTEXTELT)
|
||||
of (OR SELECTION
|
||||
(ERROR
|
||||
"NO SELECTION WHEN THERE SHOULD BE"
|
||||
]
|
||||
(* ;
|
||||
"add event to history list so the undo can be undone.")
|
||||
(COND
|
||||
((POSITIONP INITSELECTION) (* ;
|
||||
"add an ADD event because previously there was nothing here.")
|
||||
(SK.ADD.HISTEVENT 'ADD (LIST EDITEDELT)
|
||||
SKW)
|
||||
(SK.CHECK.END.INITIAL.EDIT SKW EDITEDELT))
|
||||
(T (SK.ENTER.EDIT.CHANGE SKW (fetch (SCREENELT GLOBALPART)
|
||||
of (fetch (TEXTELTSELECTION SKTEXTELT) of
|
||||
INITSELECTION
|
||||
))
|
||||
EDITEDELT)))
|
||||
(SK.UNDO.LAST SKW)
|
||||
(SKED.SET.SELECTION INITSELECTION SKW))
|
||||
(T (* ;
|
||||
"haven't edited any characters in the current element, just undo the last thing.")
|
||||
(SK.UNDO.LAST SKW])
|
||||
|
||||
(FIRST.N.ELEMENTS
|
||||
[LAMBDA (LST N) (* rrb "20-Jan-86 18:05")
|
||||
|
||||
@@ -1299,7 +1349,7 @@
|
||||
(T (RETURN (SUBSTRING STRING 1 END])
|
||||
|
||||
(\SKED.INSERT.CHARS.TO.STR
|
||||
[LAMBDA (CHARCODES INCLUDECR SKW) (* ; "Edited 30-Nov-2025 08:43 by rmk")
|
||||
[LAMBDA (CHARCODES INCLUDECR SKW SELECTION) (* ; "Edited 1-Dec-2025 00:42 by rmk")
|
||||
(* ; "Edited 24-Nov-2025 08:40 by rmk")
|
||||
(* ; "Edited 12-Nov-2025 14:50 by rmk")
|
||||
(* ; "Edited 10-Nov-2025 16:35 by rmk")
|
||||
@@ -1308,6 +1358,8 @@
|
||||
|
||||
(* ;; "takes a list of characters and makes it into strings on the free variable NEWSTRS. The variable STRPIECE is set to the last line of characters. NEWSTRS is a list of the strings that precede this one which is used in the case of backspace onto the previous line.")
|
||||
|
||||
(* ;; "SELECTION is for the actions that move the type-in")
|
||||
|
||||
(PROG (LINELST THISLINE REMAININGCHARS)
|
||||
(for CHAR in CHARCODES
|
||||
do (SELECTQ (SK.GETSYNTAX CHAR)
|
||||
@@ -1381,9 +1433,6 @@
|
||||
((:WORDDELETE.FORWARD :CHARDELETE.FORWARD)
|
||||
(* ; "Not implemented, no-ops")
|
||||
NIL)
|
||||
((:ONECHAR.BACKWARD :ONECHAR.FORWARD :LINE.UP :LINE.DOWN)
|
||||
(* ; "Arrow keys: not implemented")
|
||||
NIL)
|
||||
(:DELETE (* ;
|
||||
"delete selection. Here that means don't insert anything."))
|
||||
(:UNDO
|
||||
@@ -1474,7 +1523,7 @@
|
||||
|
||||
|
||||
|
||||
(* line adding functions)
|
||||
(* ; "line adding functions")
|
||||
|
||||
(DEFINEQ
|
||||
|
||||
@@ -1833,7 +1882,7 @@
|
||||
(WINDOWPROP SKW 'INPUTLINE NIL])
|
||||
)
|
||||
|
||||
(* Was MODERNIZE loaded before?)
|
||||
(* ; "Was MODERNIZE loaded before?")
|
||||
|
||||
(CL:WHEN (GETD 'MODERNWINDOW.SETUP)
|
||||
(MODERNWINDOW.SETUP 'WB.BUTTON.HANDLER))
|
||||
@@ -1870,26 +1919,27 @@
|
||||
YCOORD _ (LASTMOUSEY WIN])
|
||||
)
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (2553 39141 (BUTLAST 2563 . 2911) (CHAR.BEGIN 2913 . 4838) (CLOSEST.CHAR 4840 . 9063) (
|
||||
CLOSEST.LINE 9065 . 9627) (FLASHW 9629 . 9786) (HILITE.LINE 9788 . 10607) (HILITE.TEXT 10609 . 12257)
|
||||
(IN.TEXT.EXTEND 12259 . 15532) (INIMAGEOBJ 15534 . 16039) (INTEXT 16041 . 16538) (NEW.TEXT.EXTEND
|
||||
16540 . 18759) (NEW.TEXT.SELECTIONP 18761 . 18941) (NTHCHARWIDTH 18943 . 19200) (NTHLOCALREGION 19202
|
||||
. 19440) (ONCHAR 19442 . 19837) (SHOW.EXTENDED.SELECTION.FEEDBACK 19839 . 20774) (SHOW.FEEDBACK 20776
|
||||
. 21266) (SHOW.FEEDBACK.BOX 21268 . 22322) (SELECTION.POSITION 22324 . 23116) (SKED.CLEAR.SELECTION
|
||||
23118 . 23641) (SKETCH.CLEANUP 23643 . 25557) (SK.ENTER.EDIT.CHANGE 25559 . 27104) (
|
||||
SKED.REMOVE.OTHER.SELECTIONS 27106 . 27533) (SKED.EXTEND.SELECTION 27535 . 29000) (SKED.MOVE.SELECTION
|
||||
29002 . 34072) (CREATE.TEXT.SELECTION 34074 . 34590) (SKED.SELECTION.FEEDBACK 34592 . 36248) (
|
||||
SKED.SET.EXTENDSELECTION 36250 . 36567) (SKED.SET.SELECTION 36569 . 36969) (LINE.BEGIN 36971 . 37525)
|
||||
(SELECTION.GREATERP 37527 . 38322) (SK.GETSYNTAX 38324 . 39139)) (39983 87597 (WB.EDITOR 39993 . 41374
|
||||
) (SK.TTYENTRYFN 41376 . 41916) (SK.TTYEXITFN 41918 . 42444) (SKED.INSERT 42446 . 42874) (\SKED.INSERT
|
||||
42876 . 64878) (FIRST.N.ELEMENTS 64880 . 65147) (SKED.CREATE.NEW.TEXTBOX 65149 . 71678) (
|
||||
SKED.CHARACTERPOSITION 71680 . 72467) (SKED.LINE.AND.CHAR# 72469 . 74100) (
|
||||
\SKED.DELETE.WORD.FROM.STRING 74102 . 75266) (\SKED.INSERT.CHARS.TO.STR 75268 . 83979) (JOINCHARS
|
||||
83981 . 84368) (STRINGFROMCHARACTERS 84370 . 84695) (GETALLCHARS 84697 . 85038) (CLEANUP.EDIT 85040 .
|
||||
85492) (SKED.NEW.TEXTELT 85494 . 87595)) (87632 108640 (MAP.SCREEN.POSITION.ONTO.GRID 87642 . 89091) (
|
||||
NEAREST.ON.GRID 89093 . 89637) (SK.MIDDLE.TITLEFN 89639 . 91582) (WB.BUTTON.HANDLER 91584 . 99406) (
|
||||
WB.ADD.NEW.POINT 99408 . 102737) (WB.DRAWLINE 102739 . 106973) (WB.RUBBERBAND.POSITION 106975 . 107892
|
||||
) (SK.RUBBERBAND.FEEDBACKFN 107894 . 108398) (RESET.LINE.BEING.INPUT 108400 . 108638)) (108822 110063
|
||||
(NEAREST.EXISTING.POSITION 108832 . 109034) (WB.NEARPT 109036 . 109921) (LASTMOUSEPOSITION 109923 .
|
||||
110061)))))
|
||||
(FILEMAP (NIL (2849 39635 (BUTLAST 2859 . 3207) (CHAR.BEGIN 3209 . 5332) (CLOSEST.CHAR 5334 . 9557) (
|
||||
CLOSEST.LINE 9559 . 10121) (FLASHW 10123 . 10280) (HILITE.LINE 10282 . 11101) (HILITE.TEXT 11103 .
|
||||
12751) (IN.TEXT.EXTEND 12753 . 16026) (INIMAGEOBJ 16028 . 16533) (INTEXT 16535 . 17032) (
|
||||
NEW.TEXT.EXTEND 17034 . 19253) (NEW.TEXT.SELECTIONP 19255 . 19435) (NTHCHARWIDTH 19437 . 19694) (
|
||||
NTHLOCALREGION 19696 . 19934) (ONCHAR 19936 . 20331) (SHOW.EXTENDED.SELECTION.FEEDBACK 20333 . 21268)
|
||||
(SHOW.FEEDBACK 21270 . 21760) (SHOW.FEEDBACK.BOX 21762 . 22816) (SELECTION.POSITION 22818 . 23610) (
|
||||
SKED.CLEAR.SELECTION 23612 . 24135) (SKETCH.CLEANUP 24137 . 26051) (SK.ENTER.EDIT.CHANGE 26053 . 27598
|
||||
) (SKED.REMOVE.OTHER.SELECTIONS 27600 . 28027) (SKED.EXTEND.SELECTION 28029 . 29494) (
|
||||
SKED.MOVE.SELECTION 29496 . 34566) (CREATE.TEXT.SELECTION 34568 . 35084) (SKED.SELECTION.FEEDBACK
|
||||
35086 . 36742) (SKED.SET.EXTENDSELECTION 36744 . 37061) (SKED.SET.SELECTION 37063 . 37463) (LINE.BEGIN
|
||||
37465 . 38019) (SELECTION.GREATERP 38021 . 38816) (SK.GETSYNTAX 38818 . 39633)) (40480 90869 (
|
||||
WB.EDITOR 40490 . 41871) (SK.TTYENTRYFN 41873 . 42413) (SK.TTYEXITFN 42415 . 42941) (SKED.INSERT 42943
|
||||
. 43371) (\SKED.INSERT 43373 . 62845) (\SKED.ARROWKEYS 62847 . 65302) (\SKED.INSERT.ACTION 65304 .
|
||||
65748) (\SKED.INSERT.UNDO 65750 . 68291) (FIRST.N.ELEMENTS 68293 . 68560) (SKED.CREATE.NEW.TEXTBOX
|
||||
68562 . 75091) (SKED.CHARACTERPOSITION 75093 . 75880) (SKED.LINE.AND.CHAR# 75882 . 77513) (
|
||||
\SKED.DELETE.WORD.FROM.STRING 77515 . 78679) (\SKED.INSERT.CHARS.TO.STR 78681 . 87251) (JOINCHARS
|
||||
87253 . 87640) (STRINGFROMCHARACTERS 87642 . 87967) (GETALLCHARS 87969 . 88310) (CLEANUP.EDIT 88312 .
|
||||
88764) (SKED.NEW.TEXTELT 88766 . 90867)) (90908 111916 (MAP.SCREEN.POSITION.ONTO.GRID 90918 . 92367) (
|
||||
NEAREST.ON.GRID 92369 . 92913) (SK.MIDDLE.TITLEFN 92915 . 94858) (WB.BUTTON.HANDLER 94860 . 102682) (
|
||||
WB.ADD.NEW.POINT 102684 . 106013) (WB.DRAWLINE 106015 . 110249) (WB.RUBBERBAND.POSITION 110251 .
|
||||
111168) (SK.RUBBERBAND.FEEDBACKFN 111170 . 111674) (RESET.LINE.BEING.INPUT 111676 . 111914)) (112102
|
||||
113343 (NEAREST.EXISTING.POSITION 112112 . 112314) (WB.NEARPT 112316 . 113201) (LASTMOUSEPOSITION
|
||||
113203 . 113341)))))
|
||||
STOP
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user