// NewEditor creates an Editor. func NewEditor(file *os.File, sigs chan os.Signal, ev *eval.Evaler, st *store.Store) *Editor { seq := -1 if st != nil { var err error seq, err = st.NextCmdSeq() if err != nil { // TODO(xiaq): Also report the error seq = -1 } } ed := &Editor{ file: file, writer: newWriter(file), reader: NewReader(file), sigs: sigs, store: st, evaler: ev, cmdSeq: seq, } ev.AddModule("le", makeModule(ed)) return ed }