Add fallback movements for next- and prev-node

This commit is contained in:
Skylar Hill 2023-11-04 22:40:14 -05:00
parent 5c5f7ff1ba
commit 4af941954d
1 changed files with 20 additions and 11 deletions

View File

@ -120,9 +120,14 @@
state)
(define (next-node state)
(define target (ts-node-next-sibling
(sloth-state-point-node state)
#t))
(define target (or (ts-node-next-sibling
(sloth-state-point-node state)
#t)
(false-if-exception
(ts-node-next-sibling
(ts-node-parent
(sloth-state-point-node state))
#t))))
(if target
(let ((point (ts-node-start-point target)))
(move (sloth-state-win state)
@ -131,9 +136,11 @@
state))
(define (prev-node state)
(define target (ts-node-prev-sibling
(sloth-state-point-node state)
#t))
(define target (or (ts-node-prev-sibling
(sloth-state-point-node state)
#t)
(ts-node-parent
(sloth-state-point-node state))))
(if target
(let ((point (ts-node-start-point target)))
(move (sloth-state-win state)
@ -142,13 +149,15 @@
state))
(define (down-node state)
(define nodes (ts-node-childs (sloth-state-point-node state)
#t))
(if (not (null? nodes))
(let ((point (ts-node-start-point (car nodes))))
(define target (false-if-exception
(car (ts-node-childs
(sloth-state-point-node state)
#t))))
(if target
(let ((point (ts-node-start-point target)))
(move (sloth-state-win state)
(car point) (cdr point))
(set-sloth-state-point-node state (car nodes)))
(set-sloth-state-point-node state target))
state))
(define (up-node state)