edit

package
v0.10.1 Latest Latest
Warning

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

Go to latest
Published: Sep 18, 2017 License: BSD-2-Clause Imports: 37 Imported by: 0

Documentation

Overview

Package edit implements a command line editor.

Index

Constants

View Source
const (
	S_IWOTH = 0x2 // Writable by other
	S_IXGRP = 0x8 // Executable by group
	S_IXOTH = 0x1 // Executable by other
)

Weirdly, permission masks for group and other are missing on platforms other than linux, darwin and netbsd. So we replicate some of them here.

View Source
const PreviewBytes = 64 * 1024

PreviewBytes is the maximum number of bytes to preview a file.

Variables

View Source
var (
	// ErrCompleterMustBeFn is thrown if the user has put a non-function entry
	// in $edit:completer, and that entry needs to be used for completion.
	// TODO(xiaq): Detect the type violation when the user modifies
	// $edit:completer.
	ErrCompleterMustBeFn = errors.New("completer must be fn")
	// ErrCompleterArgMustBeString is thrown when a builtin argument completer
	// is called with non-string arguments.
	ErrCompleterArgMustBeString = errors.New("arguments to arg completers must be string")
	// ErrTooFewArguments is thrown when a builtin argument completer is called
	// with too few arguments.
	ErrTooFewArguments = errors.New("too few arguments")
)
View Source
var (
	ErrNotRegular   = errors.New("no preview for non-regular file")
	ErrNotValidUTF8 = errors.New("no preview for non-utf8 file")
)

Errors displayed in the preview area.

View Source
var ErrStoreOffline = errors.New("store offline")

ErrStoreOffline is thrown when an operation requires the storage backend, but it is offline.

View Source
var PinnedScore = math.Inf(1)

PinnedScore is a special value of Score in storedefs.Dir to represent that the directory is pinned.

Functions

func CommandHistory added in v0.10.0

func CommandHistory(ec *eval.EvalCtx, args []eval.Value, opts map[string]eval.Value)

func InsertAtDot added in v0.10.0

func InsertAtDot(ec *eval.EvalCtx, args []eval.Value, opts map[string]eval.Value)

func NarrowRead added in v0.10.0

func NarrowRead(ec *eval.EvalCtx, args []eval.Value, opts map[string]eval.Value)

func ReplaceInput added in v0.10.0

func ReplaceInput(ec *eval.EvalCtx, args []eval.Value, opts map[string]eval.Value)

func Wordify added in v0.10.0

func Wordify(ec *eval.EvalCtx, args []eval.Value, opts map[string]eval.Value)

Types

type BindingTable

type BindingTable struct {
	eval.Map
}

BindingTable is a special Map that converts its key to ui.Key and ensures that its values satisfy eval.CallableValue.

func (BindingTable) Assoc added in v0.10.0

func (bt BindingTable) Assoc(k, v eval.Value) eval.Value

Assoc converts the index to ui.Key, ensures that the value is CallableValue, uses the Assoc of the inner Map and converts the result to a BindingTable.

func (BindingTable) IndexOne

func (bt BindingTable) IndexOne(idx eval.Value) eval.Value

IndexOne converts the index to ui.Key and uses the IndexOne of the inner Map.

func (BindingTable) Repr

func (bt BindingTable) Repr(indent int) string

Repr returns the representation of the binding table as if it were an ordinary map keyed by strings.

type BuiltinFn added in v0.4.0

type BuiltinFn struct {
	// contains filtered or unexported fields
}

BuiltinFn records an editor builtin.

func (*BuiltinFn) Call added in v0.4.0

func (bf *BuiltinFn) Call(ec *eval.EvalCtx, args []eval.Value, opts map[string]eval.Value)

Call calls a builtin function.

func (*BuiltinFn) Equal added in v0.10.0

func (bf *BuiltinFn) Equal(a interface{}) bool

Equal compares based on identity.

func (*BuiltinFn) Hash added in v0.10.0

func (bf *BuiltinFn) Hash() uint32

func (*BuiltinFn) Kind added in v0.4.0

func (*BuiltinFn) Kind() string

Kind returns "fn".

func (*BuiltinFn) Repr added in v0.4.0

func (bf *BuiltinFn) Repr(int) string

Repr returns the representation of a builtin function as a variable name.

type CursorOnModeLiner added in v0.6.0

type CursorOnModeLiner interface {
	CursorOnModeLine() bool
}

CursorOnModeLiner is an optional interface that modes can implement. If a mode does and the method returns true, the cursor is placed on the modeline when that mode is active.

type Editor

type Editor struct {
	// contains filtered or unexported fields
}

Editor keeps the status of the line editor.

func NewEditor

func NewEditor(in *os.File, out *os.File, sigs chan os.Signal, ev *eval.Evaler, daemon *api.Client) *Editor

NewEditor creates an Editor.

func (*Editor) Active added in v0.4.0

func (ed *Editor) Active() bool

Active returns the activeness of the Editor.

func (*Editor) ActiveMutex added in v0.4.0

func (ed *Editor) ActiveMutex() *sync.Mutex

ActiveMutex returns a mutex that must be used when changing the activeness of the Editor.

func (*Editor) CallFn added in v0.3.0

func (ed *Editor) CallFn(fn eval.CallableValue, args ...eval.Value)

CallFn calls an Fn, displaying its outputs and possible errors as editor notifications. It is the preferred way to call a Fn while the editor is active.

func (*Editor) Notify added in v0.4.0

func (ed *Editor) Notify(format string, args ...interface{})

Notify adds one notification entry. It is concurrency-safe.

func (*Editor) ReadLine

func (ed *Editor) ReadLine() (line string, err error)

ReadLine reads a line interactively.

type History added in v0.3.0

type History struct {
	// contains filtered or unexported fields
}

History implements the $le:history variable. It is list-like.

func (History) Equal added in v0.10.0

func (hv History) Equal(a interface{}) bool

Equal returns true as long as the rhs is also of type History.

func (History) Hash added in v0.10.0

func (hv History) Hash() uint32

func (History) IndexOne added in v0.3.0

func (hv History) IndexOne(idx eval.Value) eval.Value

func (History) Iterate added in v0.3.0

func (hv History) Iterate(f func(eval.Value) bool)

func (History) Kind added in v0.3.0

func (hv History) Kind() string

func (History) Len added in v0.3.0

func (hv History) Len() int

func (History) Repr added in v0.3.0

func (hv History) Repr(int) string

type ListRenderer added in v0.6.0

type ListRenderer interface {
	// ListRender renders the listing under the given constraint of width and
	// maximum height. It returns a rendered buffer.
	ListRender(width, maxHeight int) *buffer
}

ListRenderer is a mode with a listing that handles the rendering itself. NOTE(xiaq): This interface is being deprecated in favor of Lister.

type Lister

type Lister interface {
	List(maxHeight int) renderer
}

Lister is a mode with a listing.

type Mode

type Mode interface {
	ModeLine() renderer
	Binding(map[string]eval.Variable, ui.Key) eval.CallableValue
}

Mode is an editor mode.

type Placeholderer added in v0.2.0

type Placeholderer interface {
	Placeholder() string
}

type Pos added in v0.6.0

type Pos struct {
	// contains filtered or unexported fields
}

Pos is the position within a buffer.

type Writer added in v0.6.0

type Writer struct {
	// contains filtered or unexported fields
}

Writer renders the editor UI.

Notes

Bugs

  • after calling extendRight, the widths of some lines can exceed b.width.

Directories

Path Synopsis
Package highlight implements syntax highlighting for Elvish code.
Package highlight implements syntax highlighting for Elvish code.
Package history provides utilities for the command history.
Package history provides utilities for the command history.
Package nodeutil provides utilities for inspecting the AST.
Package nodeutil provides utilities for inspecting the AST.
Package tty provides terminal functionality for the Elvish editor.
Package tty provides terminal functionality for the Elvish editor.
Package ui contains types that may be used by different editor frontends.
Package ui contains types that may be used by different editor frontends.

Jump to

Keyboard shortcuts

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