package edit
import (
)
func ( *cli.AppSpec, *eval.Evaler) {
.Highlighter = highlight.NewHighlighter(highlight.Config{
Check: func( parse.Tree) error { return check(, ) },
HasCommand: func( string) bool { return hasCommand(, ) },
})
}
func ( *eval.Evaler, parse.Tree) error {
:= .CheckTree(, nil)
if == nil {
return nil
}
return
}
func ( *eval.Evaler, string) bool {
if eval.IsBuiltinSpecial[] {
return true
}
if fsutil.DontSearch() {
return isDirOrExecutable() || hasExternalCommand()
}
, := eval.SplitSigil()
if != "" {
return hasExternalCommand()
}
, := eval.SplitQName()
switch {
case == "":
if hasFn(.Builtin(), ) || hasFn(.Global(), ) {
return true
}
case == "e:":
return hasExternalCommand()
default:
if hasQualifiedFn(, , ) {
return true
}
}
return hasExternalCommand()
}
func ( *eval.Evaler, string, string) bool {
if == "" {
return false
}
, := .Global().Index()
if ! {
, = .Builtin().Index()
if ! {
return false
}
}
, := .(*eval.Ns)
if ! {
return false
}
:= eval.SplitQNameSegs()
for , := range [:len()-1] {
, = .Index()
if ! {
return false
}
, = .(*eval.Ns)
if ! {
return false
}
}
return hasFn(, [len()-1])
}
func ( *eval.Ns, string) bool {
, := .Index( + eval.FnSuffix)
if ! {
return false
}
_, = .(eval.Callable)
return
}
func ( string) bool {
, := os.Stat()
return == nil && (.IsDir() || .Mode()&0111 != 0)
}
func ( string) bool {
, := exec.LookPath()
return == nil
}