cmd/ethereum: fix line editing setup and history
This commit is contained in:
parent
80985f97da
commit
0395c174ca
@ -63,6 +63,7 @@ type jsre struct {
|
||||
ethereum *eth.Ethereum
|
||||
xeth *xeth.XEth
|
||||
ps1 string
|
||||
atexit func()
|
||||
|
||||
prompter
|
||||
}
|
||||
@ -77,11 +78,13 @@ func newJSRE(ethereum *eth.Ethereum) *jsre {
|
||||
js.prompter = dumbterm{bufio.NewReader(os.Stdin)}
|
||||
} else {
|
||||
lr := liner.NewLiner()
|
||||
lr.SetCtrlCAborts(true)
|
||||
defer lr.Close()
|
||||
js.withHistory(func(hist *os.File) { lr.ReadHistory(hist) })
|
||||
defer js.withHistory(func(hist *os.File) { hist.Truncate(0); lr.WriteHistory(hist) })
|
||||
lr.SetCtrlCAborts(true)
|
||||
js.prompter = lr
|
||||
js.atexit = func() {
|
||||
js.withHistory(func(hist *os.File) { hist.Truncate(0); lr.WriteHistory(hist) })
|
||||
lr.Close()
|
||||
}
|
||||
}
|
||||
return js
|
||||
}
|
||||
@ -100,7 +103,6 @@ func (self *jsre) UnlockAccount(addr []byte) bool {
|
||||
}
|
||||
// TODO: allow retry
|
||||
if err := self.ethereum.AccountManager().Unlock(addr, pass); err != nil {
|
||||
fmt.Println("Unlocking failed: ", err)
|
||||
return false
|
||||
} else {
|
||||
fmt.Println("Account is now unlocked for this session.")
|
||||
@ -127,7 +129,7 @@ func (self *jsre) interactive() {
|
||||
for {
|
||||
input, err := self.Prompt(self.ps1)
|
||||
if err != nil {
|
||||
return
|
||||
break
|
||||
}
|
||||
if input == "" {
|
||||
continue
|
||||
@ -136,7 +138,7 @@ func (self *jsre) interactive() {
|
||||
self.setIndent()
|
||||
if indentCount <= 0 {
|
||||
if input == "exit" {
|
||||
return
|
||||
break
|
||||
}
|
||||
hist := str[:len(str)-1]
|
||||
self.AppendHistory(hist)
|
||||
@ -144,6 +146,9 @@ func (self *jsre) interactive() {
|
||||
str = ""
|
||||
}
|
||||
}
|
||||
if self.atexit != nil {
|
||||
self.atexit()
|
||||
}
|
||||
}
|
||||
|
||||
func (self *jsre) withHistory(op func(*os.File)) {
|
||||
|
Loading…
Reference in New Issue
Block a user