"io/ioutil" "os" "os/signal" "strconv" "strings" "sync" "syscall" "unicode/utf8" "github.com/elves/elvish/parse" "github.com/elves/elvish/store" "github.com/elves/elvish/sys" "github.com/elves/elvish/util" ) var Logger = util.GetLogger("[eval] ") // FnPrefix is the prefix for the variable names of functions. Defining a // function "foo" is equivalent to setting a variable named FnPrefix + "foo". const FnPrefix = "&" // Namespace is a map from name to variables. type Namespace map[string]Variable // Evaler is used to evaluate elvish sources. It maintains runtime context // shared among all evalCtx instances. type Evaler struct { Global Namespace Modules map[string]Namespace Store *store.Store Editor Editor
// Package store abstracts the persistent storage used by elvish. package store import ( "database/sql" "fmt" "net/url" "sync" "github.com/elves/elvish/util" _ "github.com/mattn/go-sqlite3" // enable the "sqlite3" SQL driver ) var Logger = util.GetLogger("[store] ") var initDB = map[string](func(*sql.DB) error){} // Store is the permanent storage backend for elvish. type Store struct { db *sql.DB Waits sync.WaitGroup } // DefaultDB returns the default database for storage. func DefaultDB(dbname string) (*sql.DB, error) { uri := "file:" + url.QueryEscape(dbname) + "?mode=rwc&cache=shared&vfs=unix-dotfile" db, err := sql.Open("sqlite3", uri) if err == nil { db.SetMaxOpenConns(1) }
import ( "bytes" "fmt" "os" "sync" "syscall" "time" "github.com/elves/elvish/eval" "github.com/elves/elvish/parse" "github.com/elves/elvish/store" "github.com/elves/elvish/sys" "github.com/elves/elvish/util" ) var Logger = util.GetLogger("[edit] ") const ( lackEOLRune = '\u23ce' lackEOL = "\033[7m" + string(lackEOLRune) + "\033[m" ) // Editor keeps the status of the line editor. type Editor struct { file *os.File writer *writer reader *Reader sigs chan os.Signal store *store.Store evaler *eval.Evaler cmdSeq int
"os" "os/signal" "runtime/pprof" "syscall" "time" "unicode/utf8" "github.com/elves/elvish/edit" "github.com/elves/elvish/eval" "github.com/elves/elvish/parse" "github.com/elves/elvish/store" "github.com/elves/elvish/sys" "github.com/elves/elvish/util" ) var Logger = util.GetLogger("[main] ") var ( log = flag.String("log", "", "a file to write debug log to") dbname = flag.String("db", "", "path to the database") cpuprofile = flag.String("cpuprofile", "", "write cpu profile to file") help = flag.Bool("help", false, "show usage help and quit") cmd = flag.Bool("c", false, "take first argument as a command to execute") ) func usage() { fmt.Println("usage: elvish [flags] [script]") fmt.Println("flags:") flag.PrintDefaults() }