readline
readline copied to clipboard
Support multi-line edit
Would be useful to implementing something similar to how quotes works in sh/bash. That is to be able to open a quote, write some lines and then close to quote. This currently work but once you go back in history to edit a multi-line input things go wrong.
The behaviour can be reproduced using the multiline example and this patch:
diff --git a/example/readline-multiline/readline-multiline.go b/example/readline-multiline/readline-multiline.go
index 2192cf6..090753f 100644
--- a/example/readline-multiline/readline-multiline.go
+++ b/example/readline-multiline/readline-multiline.go
@@ -32,7 +32,7 @@ func main() {
rl.SetPrompt(">>> ")
continue
}
- cmd := strings.Join(cmds, " ")
+ cmd := strings.Join(cmds, "\n")
cmds = cmds[:0]
rl.SetPrompt("> ")
rl.SaveHistory(cmd)
And then run:
$ go run example/readline-multiline/readline-multiline.go
> line1
>>> line2
>>> line3;
line1
line2
line3;
# press arrow up and you get multiple lines as input
# press arrow left to try to go back into the multiline input
# the lines start to scroll up
Related to this is also #85