From 0445f89e46821a120c99155fc945f9a214487b8f Mon Sep 17 00:00:00 2001 From: Productive2 <48047721+Productive2@users.noreply.github.com> Date: Fri, 19 Feb 2021 14:35:41 +0100 Subject: [PATCH] fixed bugs on linux --- src/jale/editor.nim | 10 ++++------ src/jale/plugin/editor_history.nim | 4 ++++ src/jale/renderer.nim | 2 -- src/jale/uniterm.nim | 1 + 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/jale/editor.nim b/src/jale/editor.nim index 263557e..9f3e71a 100644 --- a/src/jale/editor.nim +++ b/src/jale/editor.nim @@ -46,7 +46,7 @@ proc quit*(le: LineEditor) = le.state = esQuitting le.events.call(jeQuit) -proc forceRedraw*(le: LineEditor) = +proc redraw*(le: LineEditor) = le.forceRedraw = true # constructor @@ -89,9 +89,6 @@ proc render(editor: LineEditor, wr: var TermWriter, line: int = -1, hscroll: boo 0 ) -proc clearLine(wr: var TermWriter) = - wr.clearLine() - proc fullRender(editor: LineEditor, wr: var TermWriter) = # from the top cursor pos, it draws the entire multiline prompt, then # moves cursor to current y @@ -100,7 +97,7 @@ proc fullRender(editor: LineEditor, wr: var TermWriter) = if i < editor.rendered: wr.down(1) else: - write stdout, "\n" + wr.lf() inc editor.rendered var extraup = 0 @@ -131,7 +128,6 @@ proc read*(editor: LineEditor): string = while editor.state == esTyping: # refresh current line every time - editor.render(buffer) buffer.setCursorX(editor.content.X + editor.prompt.len()) # get key (with escapes) buffer.flush() @@ -151,6 +147,8 @@ proc read*(editor: LineEditor): string = editor.fullRender(buffer) if editor.forceRedraw: editor.forceRedraw = false + else: + editor.render(buffer) editor.events.call(jePostRead) diff --git a/src/jale/plugin/editor_history.nim b/src/jale/plugin/editor_history.nim index ba82c6a..ddb9484 100644 --- a/src/jale/plugin/editor_history.nim +++ b/src/jale/plugin/editor_history.nim @@ -37,19 +37,23 @@ proc bindHistory*(ed: LineEditor, h: History, useShift: bool = false) = let res = h.delta(-1) if res.isSome(): ed.content = res.get() + ed.redraw() ed.bindKey(downkey): let res = h.delta(1) if res.isSome(): ed.content = res.get() + ed.redraw() ed.bindKey(homekey): let res = h.toStart() if res.isSome(): ed.content = res.get() + ed.redraw() ed.bindKey(endKey): let res = h.toStart() if res.isSome(): ed.content = res.get() + ed.redraw() diff --git a/src/jale/renderer.nim b/src/jale/renderer.nim index bc0d15d..5a58f3b 100644 --- a/src/jale/renderer.nim +++ b/src/jale/renderer.nim @@ -18,5 +18,3 @@ proc renderLine*(wr: var TermWriter, prompt: string, content: string, hscroll: i content = content[lower..upper] wr &= content - - diff --git a/src/jale/uniterm.nim b/src/jale/uniterm.nim index 4335539..181595e 100644 --- a/src/jale/uniterm.nim +++ b/src/jale/uniterm.nim @@ -55,6 +55,7 @@ proc clearLine*(wr: var TermWriter) = wr &= ($27.char & "[1M" & $27.char & "[1L") else: wr &= ($27.char & "[2K") + wr.cr() proc setCursorX*(wr: var TermWriter, x: int) = when defined(windows):