forked from mirror/readline
[history] fix bug that check equals with previous command (#49)
This commit is contained in:
parent
1e0917c739
commit
dc5da28fbf
14
history.go
14
history.go
|
@ -66,11 +66,16 @@ func (o *opHistory) historyUpdatePath(path string) {
|
||||||
r := bufio.NewReader(o.fd)
|
r := bufio.NewReader(o.fd)
|
||||||
total := 0
|
total := 0
|
||||||
for ; ; total++ {
|
for ; ; total++ {
|
||||||
line, err := r.ReadSlice('\n')
|
line, err := r.ReadString('\n')
|
||||||
if err != nil {
|
if err != nil {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
o.Push([]rune(strings.TrimSpace(string(line))))
|
// ignore the empty line
|
||||||
|
line = strings.TrimSpace(line)
|
||||||
|
if len(line) == 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
o.Push([]rune(line))
|
||||||
o.Compact()
|
o.Compact()
|
||||||
}
|
}
|
||||||
if total > o.cfg.HistoryLimit {
|
if total > o.cfg.HistoryLimit {
|
||||||
|
@ -214,13 +219,13 @@ func (o *opHistory) debug() {
|
||||||
// save history
|
// save history
|
||||||
func (o *opHistory) New(current []rune) (err error) {
|
func (o *opHistory) New(current []rune) (err error) {
|
||||||
current = runes.Copy(current)
|
current = runes.Copy(current)
|
||||||
|
|
||||||
// if just use last command without modify
|
// if just use last command without modify
|
||||||
// just clean lastest history
|
// just clean lastest history
|
||||||
if back := o.history.Back(); back != nil {
|
if back := o.history.Back(); back != nil {
|
||||||
prev := back.Prev()
|
prev := back.Prev()
|
||||||
if prev != nil {
|
if prev != nil {
|
||||||
use := o.showItem(o.current.Value.(*hisItem))
|
if runes.Equal(current, prev.Value.(*hisItem).Source) {
|
||||||
if runes.Equal(use, prev.Value.(*hisItem).Source) {
|
|
||||||
o.current = o.history.Back()
|
o.current = o.history.Back()
|
||||||
o.current.Value.(*hisItem).Clean()
|
o.current.Value.(*hisItem).Clean()
|
||||||
o.historyVer++
|
o.historyVer++
|
||||||
|
@ -228,6 +233,7 @@ func (o *opHistory) New(current []rune) (err error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(current) == 0 {
|
if len(current) == 0 {
|
||||||
o.current = o.history.Back()
|
o.current = o.history.Back()
|
||||||
if o.current != nil {
|
if o.current != nil {
|
||||||
|
|
Loading…
Reference in New Issue