complete

package
v0.15.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 24, 2021 License: BSD-2-Clause Imports: 17 Imported by: 0

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL