Documentation

Overview

    Package complete implements the code completion algorithm for Elvish.

    Index

    Constants

    This section is empty.

    Variables

    This section is empty.

    Functions

    This section is empty.

    Types

    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 github.com/elves/elvish/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) completion.Item
                  }

                    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   []completion.Item
                          }

                            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.