forked from mirror/readline
fix bugs: reset buffer after trigger io.EOF/ErrInterrupt
This commit is contained in:
parent
7a18498f5b
commit
db2e5eae91
|
@ -203,7 +203,8 @@ func (o *Operation) ioloop() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// treat as EOF
|
// treat as EOF
|
||||||
o.buf.WriteString("^D\n")
|
o.buf.WriteString(o.cfg.EOFPrompt + "\n")
|
||||||
|
o.buf.Reset()
|
||||||
o.errchan <- io.EOF
|
o.errchan <- io.EOF
|
||||||
case CharInterrupt:
|
case CharInterrupt:
|
||||||
if o.IsSearchMode() {
|
if o.IsSearchMode() {
|
||||||
|
@ -219,7 +220,8 @@ func (o *Operation) ioloop() {
|
||||||
}
|
}
|
||||||
o.buf.MoveToLineEnd()
|
o.buf.MoveToLineEnd()
|
||||||
o.buf.Refresh(nil)
|
o.buf.Refresh(nil)
|
||||||
o.buf.WriteString("^C\n")
|
o.buf.WriteString(o.cfg.InterruptPrompt + "\n")
|
||||||
|
o.buf.Reset()
|
||||||
o.errchan <- ErrInterrupt
|
o.errchan <- ErrInterrupt
|
||||||
default:
|
default:
|
||||||
if o.IsSearchMode() {
|
if o.IsSearchMode() {
|
||||||
|
|
15
readline.go
15
readline.go
|
@ -23,6 +23,9 @@ type Config struct {
|
||||||
// If VimMode is true, readline will in vim.insert mode by default
|
// If VimMode is true, readline will in vim.insert mode by default
|
||||||
VimMode bool
|
VimMode bool
|
||||||
|
|
||||||
|
InterruptPrompt string
|
||||||
|
EOFPrompt string
|
||||||
|
|
||||||
Stdout io.Writer
|
Stdout io.Writer
|
||||||
Stderr io.Writer
|
Stderr io.Writer
|
||||||
|
|
||||||
|
@ -43,6 +46,18 @@ func (c *Config) Init() error {
|
||||||
if c.HistoryLimit <= 0 {
|
if c.HistoryLimit <= 0 {
|
||||||
c.HistoryLimit = 500
|
c.HistoryLimit = 500
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if c.InterruptPrompt == "" {
|
||||||
|
c.InterruptPrompt = "^C"
|
||||||
|
} else if c.InterruptPrompt == "\n" {
|
||||||
|
c.InterruptPrompt = ""
|
||||||
|
}
|
||||||
|
if c.EOFPrompt == "" {
|
||||||
|
c.EOFPrompt = "^D"
|
||||||
|
} else if c.EOFPrompt == "\n" {
|
||||||
|
c.EOFPrompt = ""
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue