package edit
import (
)
func ( *Editor, *eval.Evaler, *histStore, eval.NsBuilder) {
:= newBindingVar(emptyBindingsMap)
:= newMapBindings(, , )
:= .app
.AddNs("history",
eval.NsBuilder{
"binding": ,
}.AddGoFns("<edit:history>", map[string]interface{}{
"start": func() { notifyError(, histwalkStart(, , )) },
"up": func() { notifyError(, histwalkDo(, mode.Histwalk.Prev)) },
"down": func() { notifyError(, histwalkDo(, mode.Histwalk.Next)) },
"down-or-quit": func() {
:= histwalkDo(, mode.Histwalk.Next)
if == histutil.ErrEndOfHistory {
.SetAddon(nil, false)
} else {
notifyError(, )
}
},
"accept": func() { .SetAddon(nil, true) },
"fast-forward": .FastForward,
}).Ns())
}
func ( cli.App, *histStore, tk.Bindings) error {
:= .CodeArea().CopyState().Buffer
, := mode.NewHistwalk(, mode.HistwalkSpec{
Bindings: , Store: , Prefix: .Content[:.Dot]})
if != nil {
.SetAddon(, false)
}
return
}
var errNotInHistoryMode = errors.New("not in history mode")
func ( cli.App, func(mode.Histwalk) error) error {
, := .CopyState().Addon.(mode.Histwalk)
if ! {
return errNotInHistoryMode
}
return ()
}
func ( cli.App, error) {
if != nil {
.Notify(.Error())
}
}