about summary refs log tree commit diff stats
path: root/apps/tile/gap-buffer.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/gap-buffer.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/gap-buffer.mu')
-rw-r--r--apps/tile/gap-buffer.mu12
1 files changed, 12 insertions, 0 deletions
diff --git a/apps/tile/gap-buffer.mu b/apps/tile/gap-buffer.mu
index 75f88122..96e39aed 100644
--- a/apps/tile/gap-buffer.mu
+++ b/apps/tile/gap-buffer.mu
@@ -114,6 +114,18 @@ fn gap-to-end self: (addr gap-buffer) {
   }
 }
 
+fn gap-at-start? _self: (addr gap-buffer) -> result/eax: boolean {
+  var self/esi: (addr gap-buffer) <- copy _self
+  var left/eax: (addr grapheme-stack) <- get self, left
+  result <- grapheme-stack-empty? left
+}
+
+fn gap-at-end? _self: (addr gap-buffer) -> result/eax: boolean {
+  var self/esi: (addr gap-buffer) <- copy _self
+  var right/eax: (addr grapheme-stack) <- get self, right
+  result <- grapheme-stack-empty? right
+}
+
 fn gap-right _self: (addr gap-buffer) -> result/eax: grapheme {
 $gap-right:body: {
   var self/esi: (addr gap-buffer) <- copy _self