go-prompt: github.com/c-bata/go-prompt Index | Examples | Files | Directories

package prompt

import "github.com/c-bata/go-prompt"

Index

Examples

Package Files

buffer.go completion.go document.go emacs.go filter.go history.go input.go input_posix.go key.go key_bind.go key_bind_func.go key_string.go option.go output.go output_posix.go output_vt100.go prompt.go render.go shortcut.go signal_posix.go

Variables

var (
    // NewStandardOutputWriter returns ConsoleWriter object to write to stdout.
    // This generates VT100 escape sequences because almost terminal emulators
    // in POSIX OS built on top of a VT100 specification.
    // Deprecated: Please use NewStdoutWriter
    NewStandardOutputWriter = NewStdoutWriter
)
var SwitchKeyBindMode = OptionSwitchKeyBindMode

SwitchKeyBindMode to set a key bind mode. Deprecated: Please use OptionSwitchKeyBindMode.

func Choose Uses

func Choose(prefix string, choices []string, opts ...Option) string

Choose to the shortcut of input function to select from string array. Deprecated: Maybe anyone want to use this.

func DeleteBeforeChar Uses

func DeleteBeforeChar(buf *Buffer)

DeleteBeforeChar Go to Backspace

func DeleteChar Uses

func DeleteChar(buf *Buffer)

DeleteChar Delete character under the cursor

func DeleteWord Uses

func DeleteWord(buf *Buffer)

DeleteWord Delete word before the cursor

func GoLeftChar Uses

func GoLeftChar(buf *Buffer)

GoLeftChar Backward one character

func GoLeftWord Uses

func GoLeftWord(buf *Buffer)

GoLeftWord Backward one word

func GoLineBeginning Uses

func GoLineBeginning(buf *Buffer)

GoLineBeginning Go to the beginning of the line

func GoLineEnd Uses

func GoLineEnd(buf *Buffer)

GoLineEnd Go to the End of the line

func GoRightChar Uses

func GoRightChar(buf *Buffer)

GoRightChar Forward one character

func GoRightWord Uses

func GoRightWord(buf *Buffer)

GoRightWord Forward one word

func Input Uses

func Input(prefix string, completer Completer, opts ...Option) string

Input get the input data from the user and return it.

type ASCIICode Uses

type ASCIICode struct {
    Key       Key
    ASCIICode []byte
}

ASCIICode is the type contains Key and it's ascii byte array.

type ASCIICodeBind Uses

type ASCIICodeBind struct {
    ASCIICode []byte
    Fn        KeyBindFunc
}

ASCIICodeBind represents which []byte should do what operation

type Buffer Uses

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

Buffer emulates the console buffer.

func NewBuffer Uses

func NewBuffer() (b *Buffer)

NewBuffer is constructor of Buffer struct.

func (*Buffer) CursorDown Uses

func (b *Buffer) CursorDown(count int)

CursorDown move cursor to the next line. (for multi-line edit).

func (*Buffer) CursorLeft Uses

func (b *Buffer) CursorLeft(count int)

CursorLeft move to left on the current line.

func (*Buffer) CursorRight Uses

func (b *Buffer) CursorRight(count int)

CursorRight move to right on the current line.

func (*Buffer) CursorUp Uses

func (b *Buffer) CursorUp(count int)

CursorUp move cursor to the previous line. (for multi-line edit).

func (*Buffer) Delete Uses

func (b *Buffer) Delete(count int) (deleted string)

Delete specified number of characters and Return the deleted text.

func (*Buffer) DeleteBeforeCursor Uses

func (b *Buffer) DeleteBeforeCursor(count int) (deleted string)

DeleteBeforeCursor delete specified number of characters before cursor and return the deleted text.

func (*Buffer) DisplayCursorPosition Uses

func (b *Buffer) DisplayCursorPosition() int

DisplayCursorPosition returns the cursor position on rendered text on terminal emulators. So if Document is "日本(cursor)語", DisplayedCursorPosition returns 4 because '日' and '本' are double width characters.

func (*Buffer) Document Uses

func (b *Buffer) Document() (d *Document)

Document method to return document instance from the current text and cursor position.

func (*Buffer) InsertText Uses

func (b *Buffer) InsertText(v string, overwrite bool, moveCursor bool)

InsertText insert string from current line.

func (*Buffer) JoinNextLine Uses

func (b *Buffer) JoinNextLine(separator string)

JoinNextLine joins the next line to the current one by deleting the line ending after the current line.

func (*Buffer) NewLine Uses

func (b *Buffer) NewLine(copyMargin bool)

NewLine means CR.

func (*Buffer) SwapCharactersBeforeCursor Uses

func (b *Buffer) SwapCharactersBeforeCursor()

SwapCharactersBeforeCursor swaps the last two characters before the cursor.

func (*Buffer) Text Uses

func (b *Buffer) Text() string

Text returns string of the current line.

type Color Uses

type Color int

Color represents color on terminal.

const (
    // DefaultColor represents a default color.
    DefaultColor Color = iota

    // Black represents a black.
    Black
    // DarkRed represents a dark red.
    DarkRed
    // DarkGreen represents a dark green.
    DarkGreen
    // Brown represents a brown.
    Brown
    // DarkBlue represents a dark blue.
    DarkBlue
    // Purple represents a purple.
    Purple
    // Cyan represents a cyan.
    Cyan
    // LightGray represents a light gray.
    LightGray

    // DarkGray represents a dark gray.
    DarkGray
    // Red represents a red.
    Red
    // Green represents a green.
    Green
    // Yellow represents a yellow.
    Yellow
    // Blue represents a blue.
    Blue
    // Fuchsia represents a fuchsia.
    Fuchsia
    // Turquoise represents a turquoise.
    Turquoise
    // White represents a white.
    White
)

type Completer Uses

type Completer func(Document) []Suggest

Completer should return the suggest item from Document.

type CompletionManager Uses

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

CompletionManager manages which suggestion is now selected.

func NewCompletionManager Uses

func NewCompletionManager(completer Completer, max uint16) *CompletionManager

NewCompletionManager returns initialized CompletionManager object.

func (*CompletionManager) Completing Uses

func (c *CompletionManager) Completing() bool

Completing returns whether the CompletionManager selects something one.

func (*CompletionManager) GetSelectedSuggestion Uses

func (c *CompletionManager) GetSelectedSuggestion() (s Suggest, ok bool)

GetSelectedSuggestion returns the selected item.

func (*CompletionManager) GetSuggestions Uses

func (c *CompletionManager) GetSuggestions() []Suggest

GetSuggestions returns the list of suggestion.

func (*CompletionManager) Next Uses

func (c *CompletionManager) Next()

Next to select the next suggestion item.

func (*CompletionManager) Previous Uses

func (c *CompletionManager) Previous()

Previous to select the previous suggestion item.

func (*CompletionManager) Reset Uses

func (c *CompletionManager) Reset()

Reset to select nothing.

func (*CompletionManager) Update Uses

func (c *CompletionManager) Update(in Document)

Update to update the suggestions.

type ConsoleParser Uses

type ConsoleParser interface {
    // Setup should be called before starting input
    Setup() error
    // TearDown should be called after stopping input
    TearDown() error
    // GetKey returns Key correspond to input byte codes.
    GetKey(b []byte) Key
    // GetWinSize returns WinSize object to represent width and height of terminal.
    GetWinSize() *WinSize
    // Read returns byte array.
    Read() ([]byte, error)
}

ConsoleParser is an interface to abstract input layer.

type ConsoleWriter Uses

type ConsoleWriter interface {

    // WriteRaw to write raw byte array.
    WriteRaw(data []byte)
    // Write to write safety byte array by removing control sequences.
    Write(data []byte)
    // WriteStr to write raw string.
    WriteRawStr(data string)
    // WriteStr to write safety string by removing control sequences.
    WriteStr(data string)
    // Flush to flush buffer.
    Flush() error

    // EraseScreen erases the screen with the background colour and moves the cursor to home.
    EraseScreen()
    // EraseUp erases the screen from the current line up to the top of the screen.
    EraseUp()
    // EraseDown erases the screen from the current line down to the bottom of the screen.
    EraseDown()
    // EraseStartOfLine erases from the current cursor position to the start of the current line.
    EraseStartOfLine()
    // EraseEndOfLine erases from the current cursor position to the end of the current line.
    EraseEndOfLine()
    // EraseLine erases the entire current line.
    EraseLine()

    // ShowCursor stops blinking cursor and show.
    ShowCursor()
    // HideCursor hides cursor.
    HideCursor()
    // CursorGoTo sets the cursor position where subsequent text will begin.
    CursorGoTo(row, col int)
    // CursorUp moves the cursor up by 'n' rows; the default count is 1.
    CursorUp(n int)
    // CursorDown moves the cursor down by 'n' rows; the default count is 1.
    CursorDown(n int)
    // CursorForward moves the cursor forward by 'n' columns; the default count is 1.
    CursorForward(n int)
    // CursorBackward moves the cursor backward by 'n' columns; the default count is 1.
    CursorBackward(n int)
    // AskForCPR asks for a cursor position report (CPR).
    AskForCPR()
    // SaveCursor saves current cursor position.
    SaveCursor()
    // UnSaveCursor restores cursor position after a Save Cursor.
    UnSaveCursor()

    // ScrollDown scrolls display down one line.
    ScrollDown()
    // ScrollUp scroll display up one line.
    ScrollUp()

    // SetTitle sets a title of terminal window.
    SetTitle(title string)
    // ClearTitle clears a title of terminal window.
    ClearTitle()

    // SetColor sets text and background colors. and specify whether text is bold.
    SetColor(fg, bg Color, bold bool)
}

ConsoleWriter is an interface to abstract output layer.

func NewStderrWriter Uses

func NewStderrWriter() ConsoleWriter

NewStderrWriter returns ConsoleWriter object to write to stderr. This generates VT100 escape sequences because almost terminal emulators in POSIX OS built on top of a VT100 specification.

func NewStdoutWriter Uses

func NewStdoutWriter() ConsoleWriter

NewStdoutWriter returns ConsoleWriter object to write to stdout. This generates VT100 escape sequences because almost terminal emulators in POSIX OS built on top of a VT100 specification.

type DisplayAttribute Uses

type DisplayAttribute int

DisplayAttribute represents display attributes like Blinking, Bold, Italic and so on.

const (
    // DisplayReset reset all display attributes.
    DisplayReset DisplayAttribute = iota
    // DisplayBold set bold or increases intensity.
    DisplayBold
    // DisplayLowIntensity decreases intensity. Not widely supported.
    DisplayLowIntensity
    // DisplayItalic set italic. Not widely supported.
    DisplayItalic
    // DisplayUnderline set underline
    DisplayUnderline
    // DisplayBlink set blink (less than 150 per minute).
    DisplayBlink
    // DisplayRapidBlink set blink (more than 150 per minute). Not widely supported.
    DisplayRapidBlink
    // DisplayReverse swap foreground and background colors.
    DisplayReverse
    // DisplayInvisible set invisible.  Not widely supported.
    DisplayInvisible
    // DisplayCrossedOut set characters legible, but marked for deletion. Not widely supported.
    DisplayCrossedOut
    // DisplayDefaultFont set primary(default) font
    DisplayDefaultFont
)

type Document Uses

type Document struct {
    Text string
    // contains filtered or unexported fields
}

Document has text displayed in terminal and cursor position.

func NewDocument Uses

func NewDocument() *Document

NewDocument return the new empty document.

func (*Document) CurrentLine Uses

func (d *Document) CurrentLine() string

CurrentLine return the text on the line where the cursor is. (when the input consists of just one line, it equals `text`.

Code:

d := &Document{
    Text: `Hello! my name is c-bata.
This is a example of Document component.
This component has texts displayed in terminal and cursor position.
`,
    cursorPosition: len(`Hello! my name is c-bata.
This is a exam`),
}
fmt.Println(d.CurrentLine())

Output:

This is a example of Document component.

func (*Document) CurrentLineAfterCursor Uses

func (d *Document) CurrentLineAfterCursor() string

CurrentLineAfterCursor returns the text from the cursor until the end of the line.

Code:

d := &Document{
    Text: `Hello! my name is c-bata.
This is a example of Document component.
This component has texts displayed in terminal and cursor position.
`,
    cursorPosition: len(`Hello! my name is c-bata.
This is a exam`),
}
fmt.Println(d.CurrentLineAfterCursor())

Output:

ple of Document component.

func (*Document) CurrentLineBeforeCursor Uses

func (d *Document) CurrentLineBeforeCursor() string

CurrentLineBeforeCursor returns the text from the start of the line until the cursor.

Code:

d := &Document{
    Text: `Hello! my name is c-bata.
This is a example of Document component.
This component has texts displayed in terminal and cursor position.
`,
    cursorPosition: len(`Hello! my name is c-bata.
This is a exam`),
}
fmt.Println(d.CurrentLineBeforeCursor())

Output:

This is a exam

func (*Document) CursorPositionCol Uses

func (d *Document) CursorPositionCol() (col int)

CursorPositionCol returns the current column. (0-based.)

Code:

d := &Document{
    Text: `Hello! my name is c-bata.
This is a example of Document component.
This component has texts displayed in terminal and cursor position.
`,
    cursorPosition: len(`Hello! my name is c-bata.
This is a exam`),
}
fmt.Println("CursorPositionCol", d.CursorPositionCol())

Output:

CursorPositionCol 14

func (*Document) CursorPositionRow Uses

func (d *Document) CursorPositionRow() (row int)

CursorPositionRow returns the current row. (0-based.)

Code:

d := &Document{
    Text: `Hello! my name is c-bata.
This is a example of Document component.
This component has texts displayed in terminal and cursor position.
`,
    cursorPosition: len(`Hello! my name is c-bata.
This is a exam`),
}
fmt.Println("CursorPositionRow", d.CursorPositionRow())

Output:

CursorPositionRow 1

func (*Document) DisplayCursorPosition Uses

func (d *Document) DisplayCursorPosition() int

DisplayCursorPosition returns the cursor position on rendered text on terminal emulators. So if Document is "日本(cursor)語", DisplayedCursorPosition returns 4 because '日' and '本' are double width characters.

Code:

d := &Document{
    Text:           `Hello! my name is c-bata.`,
    cursorPosition: len(`Hello`),
}
fmt.Println("DisplayCursorPosition", d.DisplayCursorPosition())

Output:

DisplayCursorPosition 5

Code:

d := &Document{
    Text:           `こんにちは、芝田 将です。`,
    cursorPosition: 3,
}
fmt.Println("DisplayCursorPosition", d.DisplayCursorPosition())

Output:

DisplayCursorPosition 6

func (*Document) FindEndOfCurrentWord Uses

func (d *Document) FindEndOfCurrentWord() int

FindEndOfCurrentWord returns an index relative to the cursor position. pointing to the end of the current word. Return 0 if nothing was found.

func (*Document) FindEndOfCurrentWordUntilSeparator Uses

func (d *Document) FindEndOfCurrentWordUntilSeparator(sep string) int

FindEndOfCurrentWordUntilSeparator is almost the same as FindEndOfCurrentWord. But this can specify Separator. Return 0 if nothing was found.

func (*Document) FindEndOfCurrentWordUntilSeparatorIgnoreNextToCursor Uses

func (d *Document) FindEndOfCurrentWordUntilSeparatorIgnoreNextToCursor(sep string) int

FindEndOfCurrentWordUntilSeparatorIgnoreNextToCursor is almost the same as FindEndOfCurrentWordWithSpace. But this can specify Separator. Return 0 if nothing was found.

func (*Document) FindEndOfCurrentWordWithSpace Uses

func (d *Document) FindEndOfCurrentWordWithSpace() int

FindEndOfCurrentWordWithSpace is almost the same as FindEndOfCurrentWord. The only difference is to ignore contiguous spaces.

func (*Document) FindStartOfPreviousWord Uses

func (d *Document) FindStartOfPreviousWord() int

FindStartOfPreviousWord returns an index relative to the cursor position pointing to the start of the previous word. Return 0 if nothing was found.

func (*Document) FindStartOfPreviousWordUntilSeparator Uses

func (d *Document) FindStartOfPreviousWordUntilSeparator(sep string) int

FindStartOfPreviousWordUntilSeparator is almost the same as FindStartOfPreviousWord. But this can specify Separator. Return 0 if nothing was found.

func (*Document) FindStartOfPreviousWordUntilSeparatorIgnoreNextToCursor Uses

func (d *Document) FindStartOfPreviousWordUntilSeparatorIgnoreNextToCursor(sep string) int

FindStartOfPreviousWordUntilSeparatorIgnoreNextToCursor is almost the same as FindStartOfPreviousWordWithSpace. But this can specify Separator. Return 0 if nothing was found.

func (*Document) FindStartOfPreviousWordWithSpace Uses

func (d *Document) FindStartOfPreviousWordWithSpace() int

FindStartOfPreviousWordWithSpace is almost the same as FindStartOfPreviousWord. The only difference is to ignore contiguous spaces.

func (*Document) GetCharRelativeToCursor Uses

func (d *Document) GetCharRelativeToCursor(offset int) (r rune)

GetCharRelativeToCursor return character relative to cursor position, or empty string

func (*Document) GetCursorDownPosition Uses

func (d *Document) GetCursorDownPosition(count int, preferredColumn int) int

GetCursorDownPosition return the relative cursor position (character index) where we would be if the user pressed the arrow-down button.

func (*Document) GetCursorLeftPosition Uses

func (d *Document) GetCursorLeftPosition(count int) int

GetCursorLeftPosition returns the relative position for cursor left.

func (*Document) GetCursorRightPosition Uses

func (d *Document) GetCursorRightPosition(count int) int

GetCursorRightPosition returns relative position for cursor right.

func (*Document) GetCursorUpPosition Uses

func (d *Document) GetCursorUpPosition(count int, preferredColumn int) int

GetCursorUpPosition return the relative cursor position (character index) where we would be if the user pressed the arrow-up button.

func (*Document) GetEndOfLinePosition Uses

func (d *Document) GetEndOfLinePosition() int

GetEndOfLinePosition returns relative position for the end of this line.

func (*Document) GetWordAfterCursor Uses

func (d *Document) GetWordAfterCursor() string

GetWordAfterCursor returns the word after the cursor. If we have whitespace after the cursor this returns an empty string.

Code:

d := &Document{
    Text: `Hello! my name is c-bata.
This is a example of Document component.
`,
    cursorPosition: len(`Hello! my name is c-bata.
This is a exam`),
}
fmt.Println(d.GetWordAfterCursor())

Output:

ple

func (*Document) GetWordAfterCursorUntilSeparator Uses

func (d *Document) GetWordAfterCursorUntilSeparator(sep string) string

GetWordAfterCursorUntilSeparator returns the text after the cursor until next separator.

Code:

d := &Document{
    Text:           `hello,i am c-bata,thank you for using go-prompt`,
    cursorPosition: len(`hello,i a`),
}
fmt.Println(d.GetWordAfterCursorUntilSeparator(","))

Output:

m c-bata

func (*Document) GetWordAfterCursorUntilSeparatorIgnoreNextToCursor Uses

func (d *Document) GetWordAfterCursorUntilSeparatorIgnoreNextToCursor(sep string) string

GetWordAfterCursorUntilSeparatorIgnoreNextToCursor returns the word after the cursor. Unlike GetWordAfterCursor, it returns string containing space

Code:

d := &Document{
    Text:           `hello,i am c-bata,thank you for using go-prompt`,
    cursorPosition: len(`hello`),
}
fmt.Println(d.GetWordAfterCursorUntilSeparatorIgnoreNextToCursor(","))

Output:

,i am c-bata

func (*Document) GetWordAfterCursorWithSpace Uses

func (d *Document) GetWordAfterCursorWithSpace() string

GetWordAfterCursorWithSpace returns the word after the cursor. Unlike GetWordAfterCursor, it returns string containing space

Code:

d := &Document{
    Text: `Hello! my name is c-bata.
This is a example of Document component.
`,
    cursorPosition: len(`Hello! my name is c-bata.
This is a`),
}
fmt.Println(d.GetWordAfterCursorWithSpace())

Output:

 example

func (*Document) GetWordBeforeCursor Uses

func (d *Document) GetWordBeforeCursor() string

GetWordBeforeCursor returns the word before the cursor. If we have whitespace before the cursor this returns an empty string.

Code:

d := &Document{
    Text: `Hello! my name is c-bata.
This is a example of Document component.
`,
    cursorPosition: len(`Hello! my name is c-bata.
This is a exam`),
}
fmt.Println(d.GetWordBeforeCursor())

Output:

exam

func (*Document) GetWordBeforeCursorUntilSeparator Uses

func (d *Document) GetWordBeforeCursorUntilSeparator(sep string) string

GetWordBeforeCursorUntilSeparator returns the text before the cursor until next separator.

Code:

d := &Document{
    Text:           `hello,i am c-bata`,
    cursorPosition: len(`hello,i am c`),
}
fmt.Println(d.GetWordBeforeCursorUntilSeparator(","))

Output:

i am c

func (*Document) GetWordBeforeCursorUntilSeparatorIgnoreNextToCursor Uses

func (d *Document) GetWordBeforeCursorUntilSeparatorIgnoreNextToCursor(sep string) string

GetWordBeforeCursorUntilSeparatorIgnoreNextToCursor returns the word before the cursor. Unlike GetWordBeforeCursor, it returns string containing space

Code:

d := &Document{
    Text:           `hello,i am c-bata,thank you for using go-prompt`,
    cursorPosition: len(`hello,i am c-bata,`),
}
fmt.Println(d.GetWordBeforeCursorUntilSeparatorIgnoreNextToCursor(","))

Output:

i am c-bata,

func (*Document) GetWordBeforeCursorWithSpace Uses

func (d *Document) GetWordBeforeCursorWithSpace() string

GetWordBeforeCursorWithSpace returns the word before the cursor. Unlike GetWordBeforeCursor, it returns string containing space

Code:

d := &Document{
    Text: `Hello! my name is c-bata.
This is a example of Document component.
`,
    cursorPosition: len(`Hello! my name is c-bata.
This is a example `),
}
fmt.Println(d.GetWordBeforeCursorWithSpace())

Output:

example

func (*Document) LineCount Uses

func (d *Document) LineCount() int

LineCount return the number of lines in this document. If the document ends with a trailing \n, that counts as the beginning of a new line.

func (*Document) Lines Uses

func (d *Document) Lines() []string

Lines returns the array of all the lines.

func (*Document) OnLastLine Uses

func (d *Document) OnLastLine() bool

OnLastLine returns true when we are at the last line.

func (*Document) TextAfterCursor Uses

func (d *Document) TextAfterCursor() string

TextAfterCursor returns the text after the cursor.

Code:

d := &Document{
    Text: `Hello! my name is c-bata.
This is a example of Document component.
This component has texts displayed in terminal and cursor position.
`,
    cursorPosition: len(`Hello! my name is c-bata.
This is a exam`),
}
fmt.Println(d.TextAfterCursor())

Output:

ple of Document component.
This component has texts displayed in terminal and cursor position.

func (*Document) TextBeforeCursor Uses

func (d *Document) TextBeforeCursor() string

TextBeforeCursor returns the text before the cursor.

Code:

d := &Document{
    Text: `Hello! my name is c-bata.
This is a example of Document component.
This component has texts displayed in terminal and cursor position.
`,
    cursorPosition: len(`Hello! my name is c-bata.
This is a exam`),
}
fmt.Println(d.TextBeforeCursor())

Output:

Hello! my name is c-bata.
This is a exam

func (*Document) TranslateIndexToPosition Uses

func (d *Document) TranslateIndexToPosition(index int) (row int, col int)

TranslateIndexToPosition given an index for the text, return the corresponding (row, col) tuple. (0-based. Returns (0, 0) for index=0.)

func (*Document) TranslateRowColToIndex Uses

func (d *Document) TranslateRowColToIndex(row int, column int) (index int)

TranslateRowColToIndex given a (row, col), return the corresponding index. (Row and col params are 0-based.)

type Exec Uses

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

Exec is the struct contains user input context.

type Executor Uses

type Executor func(string)

Executor is called when user input something text.

type Filter Uses

type Filter func([]Suggest, string, bool) []Suggest

Filter is the type to filter the prompt.Suggestion array.

type History Uses

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

History stores the texts that are entered.

func NewHistory Uses

func NewHistory() *History

NewHistory returns new history object.

func (*History) Add Uses

func (h *History) Add(input string)

Add to add text in history.

func (*History) Clear Uses

func (h *History) Clear()

Clear to clear the history.

func (*History) Newer Uses

func (h *History) Newer(buf *Buffer) (new *Buffer, changed bool)

Newer saves a buffer of current line and get a buffer of next line by up-arrow. The changes of line buffers are stored until new history is created.

func (*History) Older Uses

func (h *History) Older(buf *Buffer) (new *Buffer, changed bool)

Older saves a buffer of current line and get a buffer of previous line by up-arrow. The changes of line buffers are stored until new history is created.

type Key Uses

type Key int

Key is the type express the key inserted from user. go:generate stringer -type=Key

const (
    Escape Key = iota

    ControlA
    ControlB
    ControlC
    ControlD
    ControlE
    ControlF
    ControlG
    ControlH
    ControlI
    ControlJ
    ControlK
    ControlL
    ControlM
    ControlN
    ControlO
    ControlP
    ControlQ
    ControlR
    ControlS
    ControlT
    ControlU
    ControlV
    ControlW
    ControlX
    ControlY
    ControlZ

    ControlSpace
    ControlBackslash
    ControlSquareClose
    ControlCircumflex
    ControlUnderscore
    ControlLeft
    ControlRight
    ControlUp
    ControlDown

    Up
    Down
    Right
    Left

    ShiftLeft
    ShiftUp
    ShiftDown
    ShiftRight

    Home
    End
    Delete
    ShiftDelete
    ControlDelete
    PageUp
    PageDown
    BackTab
    Insert
    Backspace

    // Aliases.
    Tab
    Enter

    F1
    F2
    F3
    F4
    F5
    F6
    F7
    F8
    F9
    F10
    F11
    F12
    F13
    F14
    F15
    F16
    F17
    F18
    F19
    F20
    F21
    F22
    F23
    F24

    // Matches any key.
    Any

    // Special
    CPRResponse
    Vt100MouseEvent
    WindowsMouseEvent
    BracketedPaste

    // Key which is ignored. (The key binding for this key should not do anything.)
    Ignore

    // Key is not defined
    NotDefined
)

func (Key) String Uses

func (i Key) String() string

type KeyBind Uses

type KeyBind struct {
    Key Key
    Fn  KeyBindFunc
}

KeyBind represents which key should do what operation.

type KeyBindFunc Uses

type KeyBindFunc func(*Buffer)

KeyBindFunc receives buffer and processed it.

type KeyBindMode Uses

type KeyBindMode string

KeyBindMode to switch a key binding flexibly.

const (
    // CommonKeyBind is a mode without any keyboard shortcut
    CommonKeyBind KeyBindMode = "common"
    // EmacsKeyBind is a mode to use emacs-like keyboard shortcut
    EmacsKeyBind KeyBindMode = "emacs"
)

type Option Uses

type Option func(prompt *Prompt) error

Option is the type to replace default parameters. prompt.New accepts any number of options (this is functional option pattern).

func OptionAddASCIICodeBind Uses

func OptionAddASCIICodeBind(b ...ASCIICodeBind) Option

OptionAddASCIICodeBind to set a custom key bind.

func OptionAddKeyBind Uses

func OptionAddKeyBind(b ...KeyBind) Option

OptionAddKeyBind to set a custom key bind.

func OptionCompletionWordSeparator Uses

func OptionCompletionWordSeparator(x string) Option

OptionCompletionWordSeparator to set word separators. Enable only ' ' if empty.

func OptionDescriptionBGColor Uses

func OptionDescriptionBGColor(x Color) Option

OptionDescriptionBGColor to change a background color of description text in drop down suggestions.

func OptionDescriptionTextColor Uses

func OptionDescriptionTextColor(x Color) Option

OptionDescriptionTextColor to change a background color of description text in drop down suggestions.

func OptionHistory Uses

func OptionHistory(x []string) Option

OptionHistory to set history expressed by string array.

func OptionInputBGColor Uses

func OptionInputBGColor(x Color) Option

OptionInputBGColor to change a color of background which is input by user

func OptionInputTextColor Uses

func OptionInputTextColor(x Color) Option

OptionInputTextColor to change a color of text which is input by user

func OptionLivePrefix Uses

func OptionLivePrefix(f func() (prefix string, useLivePrefix bool)) Option

OptionLivePrefix to change the prefix dynamically by callback function

func OptionMaxSuggestion Uses

func OptionMaxSuggestion(x uint16) Option

OptionMaxSuggestion specify the max number of displayed suggestions.

func OptionParser Uses

func OptionParser(x ConsoleParser) Option

OptionParser to set a custom ConsoleParser object. An argument should implement ConsoleParser interface.

func OptionPrefix Uses

func OptionPrefix(x string) Option

OptionPrefix to set prefix string.

func OptionPrefixBackgroundColor Uses

func OptionPrefixBackgroundColor(x Color) Option

OptionPrefixBackgroundColor to change a background color of prefix string

func OptionPrefixTextColor Uses

func OptionPrefixTextColor(x Color) Option

OptionPrefixTextColor change a text color of prefix string

func OptionPreviewSuggestionBGColor Uses

func OptionPreviewSuggestionBGColor(x Color) Option

OptionPreviewSuggestionBGColor to change a background color which is completed

func OptionPreviewSuggestionTextColor Uses

func OptionPreviewSuggestionTextColor(x Color) Option

OptionPreviewSuggestionTextColor to change a text color which is completed

func OptionScrollbarBGColor Uses

func OptionScrollbarBGColor(x Color) Option

OptionScrollbarBGColor to change a background color of scrollbar.

func OptionScrollbarThumbColor Uses

func OptionScrollbarThumbColor(x Color) Option

OptionScrollbarThumbColor to change a thumb color on scrollbar.

func OptionSelectedDescriptionBGColor Uses

func OptionSelectedDescriptionBGColor(x Color) Option

OptionSelectedDescriptionBGColor to change a background color of description which is selected inside suggestions drop down box.

func OptionSelectedDescriptionTextColor Uses

func OptionSelectedDescriptionTextColor(x Color) Option

OptionSelectedDescriptionTextColor to change a text color of description which is selected inside suggestions drop down box.

func OptionSelectedSuggestionBGColor Uses

func OptionSelectedSuggestionBGColor(x Color) Option

OptionSelectedSuggestionBGColor to change a background color for completed text which is selected inside suggestions drop down box.

func OptionSelectedSuggestionTextColor Uses

func OptionSelectedSuggestionTextColor(x Color) Option

OptionSelectedSuggestionTextColor to change a text color for completed text which is selected inside suggestions drop down box.

func OptionShowCompletionAtStart Uses

func OptionShowCompletionAtStart() Option

OptionShowCompletionAtStart to set completion window is open at start.

func OptionSuggestionBGColor Uses

func OptionSuggestionBGColor(x Color) Option

OptionSuggestionBGColor change a background color in drop down suggestions.

func OptionSuggestionTextColor Uses

func OptionSuggestionTextColor(x Color) Option

OptionSuggestionTextColor to change a text color in drop down suggestions.

func OptionSwitchKeyBindMode Uses

func OptionSwitchKeyBindMode(m KeyBindMode) Option

OptionSwitchKeyBindMode set a key bind mode.

func OptionTitle Uses

func OptionTitle(x string) Option

OptionTitle to set title displayed at the header bar of terminal.

func OptionWriter Uses

func OptionWriter(x ConsoleWriter) Option

OptionWriter to set a custom ConsoleWriter object. An argument should implement ConsoleWriter interface.

type PosixParser Uses

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

PosixParser is a ConsoleParser implementation for POSIX environment.

func NewStandardInputParser Uses

func NewStandardInputParser() *PosixParser

NewStandardInputParser returns ConsoleParser object to read from stdin.

func (*PosixParser) GetKey Uses

func (t *PosixParser) GetKey(b []byte) Key

GetKey returns Key correspond to input byte codes.

func (*PosixParser) GetWinSize Uses

func (t *PosixParser) GetWinSize() *WinSize

GetWinSize returns WinSize object to represent width and height of terminal.

func (*PosixParser) Read Uses

func (t *PosixParser) Read() ([]byte, error)

Read returns byte array.

func (*PosixParser) Setup Uses

func (t *PosixParser) Setup() error

Setup should be called before starting input

func (*PosixParser) TearDown Uses

func (t *PosixParser) TearDown() error

TearDown should be called after stopping input

type PosixWriter Uses

type PosixWriter struct {
    VT100Writer
    // contains filtered or unexported fields
}

PosixWriter is a ConsoleWriter implementation for POSIX environment. To control terminal emulator, this outputs VT100 escape sequences.

func (*PosixWriter) Flush Uses

func (w *PosixWriter) Flush() error

Flush to flush buffer

type Prompt Uses

type Prompt struct {
    ASCIICodeBindings []ASCIICodeBind
    // contains filtered or unexported fields
}

Prompt is core struct of go-prompt.

func New Uses

func New(executor Executor, completer Completer, opts ...Option) *Prompt

New returns a Prompt with powerful auto-completion.

func (*Prompt) Input Uses

func (p *Prompt) Input() string

Input just returns user input text.

func (*Prompt) Run Uses

func (p *Prompt) Run()

Run starts prompt.

type Render Uses

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

Render to render prompt information from state of Buffer.

func (*Render) BreakLine Uses

func (r *Render) BreakLine(buffer *Buffer)

BreakLine to break line.

func (*Render) Render Uses

func (r *Render) Render(buffer *Buffer, completion *CompletionManager)

Render renders to the console.

func (*Render) Setup Uses

func (r *Render) Setup()

Setup to initialize console output.

func (*Render) TearDown Uses

func (r *Render) TearDown()

TearDown to clear title and erasing.

func (*Render) UpdateWinSize Uses

func (r *Render) UpdateWinSize(ws *WinSize)

UpdateWinSize called when window size is changed.

type Suggest Uses

type Suggest struct {
    Text        string
    Description string
}

Suggest is printed when completing.

func FilterContains Uses

func FilterContains(completions []Suggest, sub string, ignoreCase bool) []Suggest

FilterContains checks whether the completion.Text contains sub.

func FilterFuzzy Uses

func FilterFuzzy(completions []Suggest, sub string, ignoreCase bool) []Suggest

FilterFuzzy checks whether the completion.Text fuzzy matches sub. Fuzzy searching for "dog" is equivalent to "*d*o*g*". This search term would match, for example, "Good food is gone"

^  ^      ^

func FilterHasPrefix Uses

func FilterHasPrefix(completions []Suggest, sub string, ignoreCase bool) []Suggest

FilterHasPrefix checks whether the string completions.Text begins with sub.

func FilterHasSuffix Uses

func FilterHasSuffix(completions []Suggest, sub string, ignoreCase bool) []Suggest

FilterHasSuffix checks whether the completion.Text ends with sub.

type VT100Writer Uses

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

VT100Writer generates VT100 escape sequences.

func (*VT100Writer) AskForCPR Uses

func (w *VT100Writer) AskForCPR()

AskForCPR asks for a cursor position report (CPR).

func (*VT100Writer) ClearTitle Uses

func (w *VT100Writer) ClearTitle()

ClearTitle clears a title of terminal window.

func (*VT100Writer) CursorBackward Uses

func (w *VT100Writer) CursorBackward(n int)

CursorBackward moves the cursor backward by 'n' columns; the default count is 1.

func (*VT100Writer) CursorDown Uses

func (w *VT100Writer) CursorDown(n int)

CursorDown moves the cursor down by 'n' rows; the default count is 1.

func (*VT100Writer) CursorForward Uses

func (w *VT100Writer) CursorForward(n int)

CursorForward moves the cursor forward by 'n' columns; the default count is 1.

func (*VT100Writer) CursorGoTo Uses

func (w *VT100Writer) CursorGoTo(row, col int)

CursorGoTo sets the cursor position where subsequent text will begin.

func (*VT100Writer) CursorUp Uses

func (w *VT100Writer) CursorUp(n int)

CursorUp moves the cursor up by 'n' rows; the default count is 1.

func (*VT100Writer) EraseDown Uses

func (w *VT100Writer) EraseDown()

EraseDown erases the screen from the current line down to the bottom of the screen.

func (*VT100Writer) EraseEndOfLine Uses

func (w *VT100Writer) EraseEndOfLine()

EraseEndOfLine erases from the current cursor position to the end of the current line.

func (*VT100Writer) EraseLine Uses

func (w *VT100Writer) EraseLine()

EraseLine erases the entire current line.

func (*VT100Writer) EraseScreen Uses

func (w *VT100Writer) EraseScreen()

EraseScreen erases the screen with the background colour and moves the cursor to home.

func (*VT100Writer) EraseStartOfLine Uses

func (w *VT100Writer) EraseStartOfLine()

EraseStartOfLine erases from the current cursor position to the start of the current line.

func (*VT100Writer) EraseUp Uses

func (w *VT100Writer) EraseUp()

EraseUp erases the screen from the current line up to the top of the screen.

func (*VT100Writer) HideCursor Uses

func (w *VT100Writer) HideCursor()

HideCursor hides cursor.

func (*VT100Writer) SaveCursor Uses

func (w *VT100Writer) SaveCursor()

SaveCursor saves current cursor position.

func (*VT100Writer) ScrollDown Uses

func (w *VT100Writer) ScrollDown()

ScrollDown scrolls display down one line.

func (*VT100Writer) ScrollUp Uses

func (w *VT100Writer) ScrollUp()

ScrollUp scroll display up one line.

func (*VT100Writer) SetColor Uses

func (w *VT100Writer) SetColor(fg, bg Color, bold bool)

SetColor sets text and background colors. and specify whether text is bold.

func (*VT100Writer) SetDisplayAttributes Uses

func (w *VT100Writer) SetDisplayAttributes(fg, bg Color, attrs ...DisplayAttribute)

SetDisplayAttributes to set VT100 display attributes.

func (*VT100Writer) SetTitle Uses

func (w *VT100Writer) SetTitle(title string)

SetTitle sets a title of terminal window.

func (*VT100Writer) ShowCursor Uses

func (w *VT100Writer) ShowCursor()

ShowCursor stops blinking cursor and show.

func (*VT100Writer) UnSaveCursor Uses

func (w *VT100Writer) UnSaveCursor()

UnSaveCursor restores cursor position after a Save Cursor.

func (*VT100Writer) Write Uses

func (w *VT100Writer) Write(data []byte)

Write to write safety byte array by removing control sequences.

func (*VT100Writer) WriteRaw Uses

func (w *VT100Writer) WriteRaw(data []byte)

WriteRaw to write raw byte array

func (*VT100Writer) WriteRawStr Uses

func (w *VT100Writer) WriteRawStr(data string)

WriteRawStr to write raw string

func (*VT100Writer) WriteStr Uses

func (w *VT100Writer) WriteStr(data string)

WriteStr to write safety string by removing control sequences.

type WinSize Uses

type WinSize struct {
    Row uint16
    Col uint16
}

WinSize represents the width and height of terminal.

Directories

PathSynopsis
completer
_example/exec-command
_example/http-prompt
_example/live-prefix
_example/simple-echo
_example/simple-echo/cjk-cyrillic
internal/bisect
internal/debug
internal/strings

Package prompt imports 16 packages (graph) and is imported by 44 packages. Updated 2018-12-14. Refresh now. Tools for package owners.