about summary refs log tree commit diff stats
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
parent10c1a70dd0b57aab9e181546ac41b9909e407b32 (diff)
downloadlines.love-e79c895c7d261ec5e89e4930ec3296db9ba17666.tar.gz
move
-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)
file?h=v1.5.3&id=bbbd9cb0033bf376eff1001a0edda4a83546eaab'>^
2c5ea01d ^
b0a216f5 ^








ec598fc7 ^








b0a216f5 ^










94c5d83e ^


dee6cfa6 ^
e9e4b4ff ^
b0a216f5 ^
3a1e1f28 ^
b0a216f5 ^

e9e4b4ff ^
3a1e1f28 ^
e9e4b4ff ^





e9e4b4ff ^
3a1e1f28 ^
50a0cb1c ^
e9e4b4ff ^
fde932f2 ^
85fd5288 ^
4ade06a6 ^

85fd5288 ^
0c2c782d ^

30ae2137 ^
b0a216f5 ^
4ade06a6 ^
b0a216f5 ^
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112