about summary refs log tree commit diff stats
path: root/text.lua
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2022-05-28 22:27:47 -0700
committerKartik K. Agaram <vc@akkartik.com>2022-05-28 22:27:47 -0700
commite79c895c7d261ec5e89e4930ec3296db9ba17666 (patch)
treee295e0604d652f46c930b00a57a4237cff7f57ae /text.lua
parent10c1a70dd0b57aab9e181546ac41b9909e407b32 (diff)
downloadtext.love-e79c895c7d261ec5e89e4930ec3296db9ba17666.tar.gz
move
Diffstat (limited to 'text.lua')
-rw-r--r--text.lua74
1 files changed, 38 insertions, 36 deletions
diff --git a/text.lua b/text.lua
index c2d36b9..1b1f67a 100644
--- a/text.lua
+++ b/text.lua
@@ -896,6 +896,7 @@ end
 
 -- Don't handle any keys here that would trigger love.textinput above.
 function Text.keychord_pressed(chord)
+  --== shortcuts that mutate text
   if chord == 'return' then
     local byte_offset = utf8.offset(Lines[Cursor1.line].data, Cursor1.pos)
     table.insert(Lines, Cursor1.line+1, {mode='text', data=string.sub(Lines[Cursor1.line].data, byte_offset)})
@@ -911,42 +912,6 @@ function Text.keychord_pressed(chord)
   elseif chord == 'tab' then
     Text.insert_at_cursor('\t')
     save_to_disk(Lines, Filename)
-  elseif chord == 'left' then
-    Text.left()
-  elseif chord == 'right' then
-    Text.right()
-  -- left/right by one word
-  -- C- hotkeys reserved for drawings, so we'll use M-
-  elseif chord == 'M-left' then
-    while true do
-      Text.left()
-      if Cursor1.pos == 1 then break end
-      assert(Cursor1.pos > 1)
-      local offset = utf8.offset(Lines[Cursor1.line].data, Cursor1.pos)
-      assert(offset > 1)
-      if Lines[Cursor1.line].data:sub(offset-1,offset-1) == ' ' then
-        break
-      end
-    end
-  elseif chord == 'M-right' then
-    while true do
-      Text.right()
-      if Cursor1.pos > utf8.len(Lines[Cursor1.line].data) then break end
-      local offset = utf8.offset(Lines[Cursor1.line].data, Cursor1.pos)
-      if Lines[Cursor1.line].data:sub(offset,offset) == ' ' then
-        break
-      end
-    end
-  -- paste
-  elseif chord == 'M-v' then
-    local s = love.system.getClipboardText()
-    for _,code in utf8.codes(s) do
-      Text.insert_at_cursor(utf8.char(code))
-    end
-  elseif chord == 'home' then
-    Cursor1.pos = 1
-  elseif chord == 'end' then
-    Cursor1.pos = utf8.len(Lines[Cursor1.line].data) + 1
   elseif chord == 'backspace' then
     if Cursor1.pos > 1 then
       local byte_start = utf8.offset(Lines[Cursor1.line].data, Cursor1.pos-1)
@@ -1003,6 +968,43 @@ function Text.keychord_pressed(chord)
       end
     end
     save_to_disk(Lines, Filename)
+  -- paste
+  elseif chord == 'M-v' then
+    local s = love.system.getClipboardText()
+    for _,code in utf8.codes(s) do
+      Text.insert_at_cursor(utf8.char(code))
+    end
+  --== shortcuts that move the cursor
+  elseif chord == 'left' then
+    Text.left()
+  elseif chord == 'right' then
+    Text.right()
+  -- left/right by one word
+  -- C- hotkeys reserved for drawings, so we'll use M-
+  elseif chord == 'M-left' then
+    while true do
+      Text.left()
+      if Cursor1.pos == 1 then break end
+      assert(Cursor1.pos > 1)
+      local offset = utf8.offset(Lines[Cursor1.line].data, Cursor1.pos)
+      assert(offset > 1)
+      if Lines[Cursor1.line].data:sub(offset-1,offset-1) == ' ' then
+        break
+      end
+    end
+  elseif chord == 'M-right' then
+    while true do
+      Text.right()
+      if Cursor1.pos > utf8.len(Lines[Cursor1.line].data) then break end
+      local offset = utf8.offset(Lines[Cursor1.line].data, Cursor1.pos)
+      if Lines[Cursor1.line].data:sub(offset,offset) == ' ' then
+        break
+      end
+    end
+  elseif chord == 'home' then
+    Cursor1.pos = 1
+  elseif chord == 'end' then
+    Cursor1.pos = utf8.len(Lines[Cursor1.line].data) + 1
   elseif chord == 'up' then
     assert(Lines[Cursor1.line].mode == 'text')
 --?     print('up', Cursor1.pos, Screen_top1.pos)