diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2022-06-02 18:35:18 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2022-06-02 18:35:18 -0700 |
commit | 283c4e58046410ca44bd5d5e7480d2d14e721976 (patch) | |
tree | 00d70345b5cf481bc71999d1f055f9130a56adc0 /text.lua | |
parent | 4f76ea37d7a24e6562fb8640935750c50de62e69 (diff) | |
download | text.love-283c4e58046410ca44bd5d5e7480d2d14e721976.tar.gz |
bugfix: pasting newlines
Diffstat (limited to 'text.lua')
-rw-r--r-- | text.lua | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/text.lua b/text.lua index 493cbea..a502994 100644 --- a/text.lua +++ b/text.lua @@ -1250,18 +1250,8 @@ function Text.keychord_pressed(chord) if chord == 'return' then local before_line = Cursor1.line local before = snapshot(before_line) - 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)}) - local scroll_down = (Cursor_y + math.floor(15*Zoom)) > App.screen.height - Lines[Cursor1.line].data = string.sub(Lines[Cursor1.line].data, 1, byte_offset-1) - Lines[Cursor1.line].fragments = nil - Cursor1.line = Cursor1.line+1 - Cursor1.pos = 1 + Text.insert_return() save_to_disk(Lines, Filename) - if scroll_down then - Screen_top1.line = Cursor1.line - Text.scroll_up_while_cursor_on_screen() - end record_undo_event({before=before, after=snapshot(before_line, Cursor1.line)}) elseif chord == 'tab' then local before = snapshot(Cursor1.line) @@ -1384,7 +1374,12 @@ function Text.keychord_pressed(chord) local before = snapshot(before_line) local s = love.system.getClipboardText() for _,code in utf8.codes(s) do - Text.insert_at_cursor(utf8.char(code)) + local c = utf8.char(code) + if c == '\n' then + Text.insert_return() + else + Text.insert_at_cursor(utf8.char(code)) + end end record_undo_event({before=before, after=snapshot(before_line, Cursor1.line)}) --== shortcuts that move the cursor @@ -1492,6 +1487,20 @@ function Text.keychord_pressed(chord) end end +function Text.insert_return() + 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)}) + local scroll_down = (Cursor_y + math.floor(15*Zoom)) > App.screen.height + Lines[Cursor1.line].data = string.sub(Lines[Cursor1.line].data, 1, byte_offset-1) + Lines[Cursor1.line].fragments = nil + Cursor1.line = Cursor1.line+1 + Cursor1.pos = 1 + if scroll_down then + Screen_top1.line = Cursor1.line + Text.scroll_up_while_cursor_on_screen() + end +end + function Text.pageup() -- duplicate some logic from love.draw local top2 = Text.to2(Screen_top1) |