about summary refs log tree commit diff stats
path: root/apps/tile/word.mu
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2020-09-19 22:33:44 -0700
committerKartik Agaram <vc@akkartik.com>2020-09-19 22:33:44 -0700
commitf32e575e387859af74f7023f9f02b32dee839962 (patch)
tree6c8c7115a8d0397f2154338c786308fa1c0f96a0 /apps/tile/word.mu
parent4449f4878138e2d7baa2b227098e2d03d0342f39 (diff)
downloadmu-f32e575e387859af74f7023f9f02b32dee839962.tar.gz
6811 - tile: left-cursor movement
Displayed cursor position is not yet correct, but insertions happen at
the right cursor position.
Diffstat (limited to 'apps/tile/word.mu')
-rw-r--r--apps/tile/word.mu36
1 files changed, 36 insertions, 0 deletions
diff --git a/apps/tile/word.mu b/apps/tile/word.mu
index 9e683985..4c7b13dd 100644
--- a/apps/tile/word.mu
+++ b/apps/tile/word.mu
@@ -98,6 +98,42 @@ fn add-grapheme-to-word _self: (addr word), c: grapheme {
   add-grapheme-at-gap data, c
 }
 
+fn cursor-at-start? _self: (addr word) -> result/eax: boolean {
+  var self/esi: (addr word) <- copy _self
+  var data/eax: (addr gap-buffer) <- get self, data
+  result <- gap-at-start? data
+}
+
+fn cursor-at-end? _self: (addr word) -> result/eax: boolean {
+  var self/esi: (addr word) <- copy _self
+  var data/eax: (addr gap-buffer) <- get self, data
+  result <- gap-at-end? data
+}
+
+fn cursor-left _self: (addr word) {
+  var self/esi: (addr word) <- copy _self
+  var data/eax: (addr gap-buffer) <- get self, data
+  var dummy/eax: grapheme <- gap-left data
+}
+
+fn cursor-right _self: (addr word) {
+  var self/esi: (addr word) <- copy _self
+  var data/eax: (addr gap-buffer) <- get self, data
+  var dummy/eax: grapheme <- gap-right data
+}
+
+fn cursor-to-start _self: (addr word) {
+  var self/esi: (addr word) <- copy _self
+  var data/eax: (addr gap-buffer) <- get self, data
+  gap-to-start data
+}
+
+fn cursor-to-end _self: (addr word) {
+  var self/esi: (addr word) <- copy _self
+  var data/eax: (addr gap-buffer) <- get self, data
+  gap-to-end data
+}
+
 fn print-word screen: (addr screen), _self: (addr word) {
   var self/esi: (addr word) <- copy _self
   var data/eax: (addr gap-buffer) <- get self, data