~rabbits/left

2d57d15cb6f6f3d0a41de5495a331ce4f5ccacbd — Devine Lu Linvega 25 days ago 7e6fce9
Faster markers
1 files changed, 36 insertions(+), 46 deletions(-)

M src/left.tal
M src/left.tal => src/left.tal +36 -46
@@ 104,9 104,9 @@ BRK
	;on-mouse-trap .Mouse/vector DEO2
	#00 .Mouse/state DEO
	( clear cursor )
	#40 !draw-cursor
	#40

( .. )
!draw-cursor

@untrap ( -- )



@@ 120,9 120,9 @@ BRK
		;file-new/untitled-txt ;filepath scpy
		&no-empty

	#01 !draw-filepath
	#01

( .. )
!draw-filepath

@on-console ( -> )



@@ 428,9 428,9 @@ JMP2r

	STH2
	.textarea/length LDZ2k STH2r ADD2 ROT STZ2
	#02 !draw-state
	#02

( .. )
!draw-state

@line-to-addr ( line* -- addr* )



@@ 495,9 495,9 @@ JMP2r

@select-word ( addr* -- )

	find-prev-spacer INC2 DUP2 find-next-spacer !select-range
	find-prev-spacer INC2 DUP2 find-next-spacer

( .. )
!select-range

@select-start ( addr* -- )



@@ 511,9 511,8 @@ JMP2r

	set-selection [ JMP JMP2r ]
		update-selection
		!update-nav

( .. )
!update-nav

@select-prev-marker ( -- )



@@ 529,9 528,8 @@ JMP2r

	get-marker
		DUP2 ;search slen ADD2
		!select-range

( .. )
!select-range

@reset-selection ( -- )



@@ 565,9 563,9 @@ JMP2r

	.selection/from LDZ2 get-eof .selection/length LDZ2 msfl
	update-nav
	#0000 .selection/length LDZ2 SUB2 !mod-length
	#0000 .selection/length LDZ2 SUB2

( .. )
!mod-length

@insert ( char -- )



@@ 585,9 583,9 @@ JMP2r
	.selection/from LDZ2 STH2k #0001 SUB2 get-eof #0001 msfr
	#0001 mod-length
	STH2kr STA
	STH2r INC2 !select-start
	STH2r INC2

( .. )
!select-start

@erase ( -- )



@@ 603,8 601,6 @@ JMP2r

!select-start

( .. )

@delete ( -- )

	get-eof .selection/from LDZ2 SUB2 ORA #01 JCN JMP2r


@@ 667,15 663,13 @@ JMP2r

@find-prev-spacer ( addr* -- addr* )

	&w
		#0001 SUB2 LDAk #20 GTH ?&w
	&w #0001 SUB2 LDAk #20 GTH ?&w

JMP2r

@find-next-spacer ( addr* -- addr* )

	&w
		INC2 LDAk #20 GTH ?&w
	&w INC2 LDAk #20 GTH ?&w

JMP2r



@@ 707,38 701,36 @@ JMP2r
	get-eof .scroll/addr LDZ2 find-first-marker
	&l
		LDA2k [ LIT2 0a "@ ] NEQ2 ?&continue
			INC2 DUP2 add-marker
			INC2 add-marker
			INC2
			&continue
		( reached bottom ) .nav/len LDZ #18 GTH ?&end
		INC2 GTH2k ?&l
	&end
	POP2 POP2
	!draw-navbar

( .. )
!draw-navbar

&when-search ( -- )

	get-eof ;text
	&l2
		;search OVR2 sseg #00 EQU ?&no-find
			DUP2 add-marker
			add-marker
			&no-find
		INC2 GTH2k ?&l2
	POP2 POP2
	!draw-navbar

( .. )
!draw-navbar

@add-marker ( addr* -- )
@add-marker ( addr* -- addr* )

	.nav/len LDZ #18 LTH ?&continue
		POP2 JMP2r
		&continue
	.nav/len LDZ #18 LTH [ JMP JMP2r ]

	.nav/len LDZ DUP ADD .nav/buf ADD STZ2
	.nav/len LDZk INC SWP STZ
	DUP2
	.nav/len LDZk
		INCk ROT STZ
		DUP ADD .nav/buf ADD STZ2

JMP2r



@@ 779,9 771,8 @@ JMP2r
	.selection/from LDZ2 ;search
		( length ) .selection/length LDZ2 #0020 LTH2k [ JMP SWP2 POP2 ]
		mcpy
	!update-nav

( .. )
!update-nav

(
@|drawing )


@@ 828,9 819,8 @@ JMP2r
	&end
	POP2 POP2
	#0000 .state STZ2
	!draw-scrollbar

( .. )
!draw-scrollbar

@draw-token ( str* -- str* )



@@ 942,8 932,8 @@ JMP2r

@draw-scrollbar ( -- )

	( SCROLLBAR-X0 ) #0000 .Screen/x DEO2
	( SCROLLBAR-Y0 ) #0018 .Screen/y DEO2
	#0000 .Screen/x DEO2
	#0018 .Screen/y DEO2

	#02 .Screen/auto DEO
	( bg )


@@ 955,8 945,8 @@ JMP2r
	POP2
	( fg )
	;state-icns .Screen/addr DEO2
	( SCROLLBAR-Y0 ) #0018 STH2k [ .scroll/y LDZ2 .scroll/ratio LDZ2 STH2k DIV2 ] ADD2 .Screen/y DEO2
	.Screen/height DEI2 [ count-lines STH2r DIV2 ] SUB2 STH2r SUB2 #03 SFT2 NIP INC #00
	#0018 STH2k .scroll/y LDZ2 .scroll/ratio LDZ2 STH2k DIV2 ADD2 .Screen/y DEO2
	.Screen/height DEI2 count-lines STH2r DIV2 SUB2 STH2r SUB2 #03 SFT2 NIP INC #00
	&stretch
		#05 .Screen/sprite DEO
		INC GTHk ?&stretch


@@ 994,7 984,7 @@ JMP2r
	&l
		#0010 .Screen/x DEO2
		#00 OVR #40 SFT2 #0020 ADD2 .Screen/y DEO2
		DUP get-marker INC2 LDA LIT "| EQU #03 MUL STH
		DUP get-marker INC2 LDA [ LIT "| ] EQU #03 MUL STH
		DUP [ LIT &sel $1 ] EQU #30 SFT STHr ADD INC ;draw-chr/color STA
		DUP get-marker draw-marker POP2
		INC GTHk ?&l


@@ 1090,7 1080,7 @@ JMP2r
	DUP
	( addr ) get-chr .Screen/addr DEO2
	( anchor ) get-chrw STHk .Screen/x DEI2 ADD2
	[ LIT &color 01 ] .Screen/sprite DEOk STHr #08 LTH ?&thin DEOk &thin POP2
	[ LIT &color 01 ] .Screen/sprite DEOk STHr #08 LTH [ JMP DEOk ] POP2
	.Screen/x DEO2

JMP2r


@@ 1137,9 1127,9 @@ JMP2r
	#03e8 draw-dec/parse
	#0064 draw-dec/parse
	#000a draw-dec/parse
	NIP #30 ADD !draw-chr
	NIP #30 ADD

( .. )
!draw-chr

&parse