Added shortcuts to move between words and lines

This commit is contained in:
Devine Lu Linvega 2023-05-01 10:21:50 -07:00
parent b4824facec
commit c7a4b0d284
1 changed files with 67 additions and 26 deletions

View File

@ -4,9 +4,6 @@
|90 @Mouse &vector $2 &x $2 &y $2 &state $1 &chord $1 |90 @Mouse &vector $2 &x $2 &y $2 &state $1 &chord $1
|a0 @File &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 |a0 @File &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2
( TODOs:
> Up and down arrows )
|0000 |0000
@page $1 @page $1
@ -54,13 +51,15 @@ BRK
DUP2 [ LIT2 "x 01 ] NEQ2 ?&no-cx POP2 edit-cut BRK &no-cx DUP2 [ LIT2 "x 01 ] NEQ2 ?&no-cx POP2 edit-cut BRK &no-cx
DUP2 [ LIT2 "c 01 ] NEQ2 ?&no-cc POP2 edit-copy BRK &no-cc DUP2 [ LIT2 "c 01 ] NEQ2 ?&no-cc POP2 edit-copy BRK &no-cc
DUP2 [ LIT2 "v 01 ] NEQ2 ?&no-cv POP2 edit-paste BRK &no-cv DUP2 [ LIT2 "v 01 ] NEQ2 ?&no-cv POP2 edit-paste BRK &no-cv
( mask shift key )
#fb AND
( arrows ) ( arrows )
DUP #10 NEQ ?&no-u select-up &no-u DUP #10 NEQ ?&no-u get-to #0001 SUB2 find-line-start select-variable &no-u
DUP #20 NEQ ?&no-d select-down &no-d DUP #20 NEQ ?&no-d get-to INC2 find-line-end select-variable &no-d
DUP #40 NEQ ?&no-l select-left &no-l DUP #40 NEQ ?&no-l select-left &no-l
DUP #80 NEQ ?&no-r select-right &no-r DUP #80 NEQ ?&no-r select-right &no-r
DUP #44 NEQ ?&no-sl .selection/b LDZ2 #0001 SUB2 select-to &no-sl DUP #42 NEQ ?&no-sbl .selection/b LDZ2 #0001 SUB2 find-word-start select-variable &no-sbl
DUP #84 NEQ ?&no-sr .selection/b LDZ2 INC2 select-to &no-sr DUP #82 NEQ ?&no-sbr .selection/b LDZ2 INC2 find-word-end select-variable &no-sbr
POP POP
( key ) ( key )
DUP #08 NEQ ?&no-bs erase &no-bs DUP #08 NEQ ?&no-bs erase &no-bs
@ -115,7 +114,7 @@ BRK
get-position select-word get-position select-word
&no-mouse2 &no-mouse2
DUP2 #0001 NEQ2 ?&no-down DUP2 #0001 NEQ2 ?&no-down
get-position select-from get-position select-variable
&no-down &no-down
DUP2 #0101 NEQ2 ?&no-drag DUP2 #0101 NEQ2 ?&no-drag
get-position select-to get-position select-to
@ -229,6 +228,12 @@ BRK
( (
@|selection ) @|selection )
@select-variable ( addr* -- )
.Controller/button DEI #04 AND ?select-to
!select-from
@select-reset ( -- ) @select-reset ( -- )
get-from get-from
@ -273,35 +278,27 @@ BRK
!redraw !redraw
@select-up ( -- )
( TODO )
JMP2r
@select-down ( -- )
( TODO )
JMP2r
@select-left ( -- ) @select-left ( -- )
.selection/length LDZ2 #0000 EQU2 ?&no-block .selection/length LDZ2 #0000 EQU2
.Controller/button DEI #04 AND #00 NEQ
ORA ?&no-block
get-from !select-from get-from !select-from
&no-block &no-block
get-from #0001 SUB2 .selection/b LDZ2 #0001 SUB2
!select-from !select-variable
@select-right ( -- ) @select-right ( -- )
.selection/length LDZ2 #0000 EQU2 ?&no-block .selection/length LDZ2 #0000 EQU2
.Controller/button DEI #04 AND #00 NEQ
ORA ?&no-block
get-to !select-from get-to !select-from
&no-block &no-block
get-from INC2 .selection/b LDZ2 INC2
!select-from !select-variable
@get-from ( -- addr* ) @get-from ( -- addr* )
@ -545,6 +542,50 @@ JMP2r
JMP2r JMP2r
@find-line-start ( addr* -- addr* )
;mem SWP2
&l
#0001 SUB2 LDAk #0a EQU ?&end
LTH2k ?&l
&end
NIP2 INC2
JMP2r
@find-line-end ( addr* -- addr* )
get-eof SWP2
&l
LDAk #0a EQU ?&end
INC2 GTH2k ?&l
&end
NIP2
JMP2r
@find-word-start ( addr* -- addr* )
;mem SWP2
&l
#0001 SUB2 LDAk #21 LTH ?&end
LTH2k ?&l
&end
NIP2 INC2
JMP2r
@find-word-end ( addr* -- addr* )
get-eof SWP2
&l
LDAk #21 LTH ?&end
INC2 GTH2k ?&l
&end
NIP2
JMP2r
( (
@|drawing ) @|drawing )