package complete

import "src.elv.sh/pkg/edit/complete"

Package complete implements the code completion algorithm for Elvish.

Index

Package Files

complete.go completers.go filterers.go generators.go node_utils.go raw_item.go

type ArgGenerator

type ArgGenerator func(args []string) ([]RawItem, error)

ArgGenerator is the type of functions that generate raw candidates for a command argument. It takes all the existing arguments, the last being the argument to complete, and returns raw candidates or an error.

type CodeBuffer

type CodeBuffer struct {
    Content string
    Dot     int
}

CodeBuffer is the same the type in src.elv.sh/pkg/el/codearea, replicated here to avoid an unnecessary dependency.

type ComplexItem

type ComplexItem struct {
    Stem         string   // Used in the code and the menu.
    CodeSuffix   string   // Appended to the code.
    Display      string   // How the item is displayed. If empty, defaults to Stem.
    DisplayStyle ui.Style // Use for displaying.
}

ComplexItem is an implementation of RawItem that offers customization options.

func (ComplexItem) Cook

func (ComplexItem) String

func (c ComplexItem) String() string

type Config

type Config struct {
    // An interface to access the runtime. Complete will return an error if this
    // is nil.
    PureEvaler PureEvaler
    // A function for filtering raw candidates. If nil, no filtering is done.
    Filterer Filterer
    // Used to generate candidates for a command argument. Defaults to
    // Filenames.
    ArgGenerator ArgGenerator
}

Config stores the configuration required for code completion.

type Filterer

type Filterer func(ctxName, seed string, rawItems []RawItem) []RawItem

Filterer is the type of functions that filter raw candidates.

type PlainItem

type PlainItem string

PlainItem is a simple implementation of RawItem.

func (PlainItem) Cook

func (PlainItem) String

func (p PlainItem) String() string

type PureEvaler

type PureEvaler interface {
    EachExternal(func(cmd string))
    EachSpecial(func(special string))
    EachNs(func(string))
    EachVariableInNs(string, func(string))
    PurelyEvalPrimary(pn *parse.Primary) interface{}
    PurelyEvalCompound(*parse.Compound) (string, bool)
    PurelyEvalPartialCompound(*parse.Compound, int) (string, bool)
}

PureEvaler encapsulates the functionality the completion algorithm needs from the language runtime.

type RawItem

type RawItem interface {
    String() string
    Cook(parse.PrimaryType) mode.CompletionItem
}

RawItem represents completion items before the quoting pass.

func FilterPrefix

func FilterPrefix(ctxName, seed string, items []RawItem) []RawItem

FilterPrefix filters raw items by prefix. It can be used as a Filterer in Config.

func GenerateFileNames

func GenerateFileNames(args []string) ([]RawItem, error)

GenerateFileNames returns filename candidates that are suitable for completing the last argument. It can be used in Config.ArgGenerator.

func GenerateForSudo

func GenerateForSudo(cfg Config, args []string) ([]RawItem, error)

GenerateForSudo generates candidates for sudo.

type Result

type Result struct {
    Name    string
    Replace diag.Ranging
    Items   []mode.CompletionItem
}

Result keeps the result of the completion algorithm.

func Complete

func Complete(code CodeBuffer, cfg Config) (*Result, error)

Complete runs the code completion algorithm in the given context, and returns the completion type, items and any error encountered.

Package complete imports 17 packages (graph) and is imported by 1 packages. Updated now.

.
Tools for package owners.