package complete
import (
)
var pathSeparator = string(filepath.Separator)
func ( []string) ([]RawItem, error) {
return generateFileNames([len()-1], false)
}
func ( Config, []string) ([]RawItem, error) {
switch {
case len() < 2:
return nil, errNoCompletion
case len() == 2:
return generateExternalCommands([1], .PureEvaler)
default:
return .ArgGenerator([1:])
}
}
func ( string, PureEvaler) ([]RawItem, error) {
if fsutil.DontSearch() {
return generateFileNames(, true)
}
var []RawItem
.EachExternal(func( string) { = append(, PlainItem()) })
return , nil
}
func ( string, PureEvaler) ([]RawItem, error) {
if fsutil.DontSearch() {
return generateFileNames(, true)
}
var []RawItem
:= func( string) { = append(, PlainItem()) }
if strings.HasPrefix(, "e:") {
.EachExternal(func( string) {
("e:" + )
})
return , nil
}
.EachSpecial()
.EachExternal()
, := eval.SplitSigil()
, := eval.SplitIncompleteQNameNs()
if == "" {
.EachVariableInNs(, func( string) {
switch {
case strings.HasSuffix(, eval.FnSuffix):
(
+ [:len()-len(eval.FnSuffix)])
case strings.HasSuffix(, eval.NsSuffix):
( + )
default:
= append(, noQuoteItem(++" = "))
}
})
}
return , nil
}
func ( string, bool) ([]RawItem, error) {
var []RawItem
, := filepath.Split()
:=
if == "" {
= "."
}
, := ioutil.ReadDir()
if != nil {
return nil, fmt.Errorf("cannot list directory %s: %v", , )
}
:= lscolors.GetColorist()
for , := range {
:= .Name()
if dotfile() != dotfile() {
continue
}
if && (.Mode()&0111) == 0 {
continue
}
:= +
:= " "
if .IsDir() {
+= pathSeparator
= ""
} else if .Mode()&os.ModeSymlink != 0 {
, := os.Stat()
if == nil && .IsDir() {
+= pathSeparator
= ""
}
}
= append(, ComplexItem{
Stem: ,
CodeSuffix: ,
DisplayStyle: ui.StyleFromSGR(.GetStyle()),
})
}
return , nil
}
func ( interface{}) []RawItem {
var []RawItem
vals.IterateKeys(, func( interface{}) bool {
if , := .(string); {
= append(, PlainItem())
}
return true
})
return
}
func ( string) bool {
return strings.HasPrefix(, ".")
}