README

Build Status Software License Version GoDoc OpenCollective OpenCollective

A powerful readline library in Linux macOS Windows Solaris

Guide

Repos using readline

cockroachdb robertkrimen/otto empire mehrdadrad/mylg knq/usql youtube/doorman bom-d-van/harp abiosoft/ishell Netflix/hal-9001 docker/go-p9p

Feedback

If you have any questions, please submit a github issue and any pull requests is welcomed :)

Backers

Love Readline? Help me keep it alive by donating funds to cover project expenses!
[Become a backer]

Sponsors

Become a sponsor and get your logo here on our Github page. [Become a sponsor]

Expand ▾ Collapse ▴

Documentation

Overview

    Readline is a pure go implementation for GNU-Readline kind library.

    example:

    rl, err := readline.New("> ")
    if err != nil {
    	panic(err)
    }
    defer rl.Close()
    
    for {
    	line, err := rl.Readline()
    	if err != nil { // io.EOF
    		break
    	}
    	println(line)
    }
    

    Package terminal provides support functions for dealing with terminals, as commonly found on UNIX systems.

    Putting a terminal into raw mode is the most common requirement:

    oldState, err := terminal.MakeRaw(0)
    if err != nil {
            panic(err)
    }
    defer terminal.Restore(0, oldState)
    

    Index

    Constants

    View Source
    const (
    	T_DATA = MsgType(iota)
    	T_WIDTH
    	T_WIDTH_REPORT
    	T_ISTTY_REPORT
    	T_RAW
    	T_ERAW // exit raw
    	T_EOF
    )
    View Source
    const (
    	S_STATE_FOUND = iota
    	S_STATE_FAILING
    )
    View Source
    const (
    	S_DIR_BCK = iota
    	S_DIR_FWD
    )
    View Source
    const (
    	CharLineStart = 1
    	CharBackward  = 2
    	CharInterrupt = 3
    	CharDelete    = 4
    	CharLineEnd   = 5
    	CharForward   = 6
    	CharBell      = 7
    	CharCtrlH     = 8
    	CharTab       = 9
    	CharCtrlJ     = 10
    	CharKill      = 11
    	CharCtrlL     = 12
    	CharEnter     = 13
    	CharNext      = 14
    	CharPrev      = 16
    	CharBckSearch = 18
    	CharFwdSearch = 19
    	CharTranspose = 20
    	CharCtrlU     = 21
    	CharCtrlW     = 23
    	CharCtrlY     = 25
    	CharCtrlZ     = 26
    	CharEsc       = 27
    	CharEscapeEx  = 91
    	CharBackspace = 127
    )
    View Source
    const (
    	MetaBackward rune = -iota - 1
    	MetaForward
    	MetaDelete
    	MetaBackspace
    	MetaTranspose
    )
    View Source
    const (
    	VIM_NORMAL = iota
    	VIM_INSERT
    	VIM_VISUAL
    )

    Variables

    View Source
    var (
    	Stdin  io.ReadCloser  = os.Stdin
    	Stdout io.WriteCloser = os.Stdout
    	Stderr io.WriteCloser = os.Stderr
    )
    View Source
    var (
    	ErrInterrupt = errors.New("Interrupt")
    )
    View Source
    var TabWidth = 4

    Functions

    func AddHistory

    func AddHistory(content string) error

      add history to global instance manually raise error only if `SetHistoryPath` is set with a non-empty path

      func ClearScreen

      func ClearScreen(w io.Writer) (int, error)

        ClearScreen clears the console screen

        func Debug

        func Debug(o ...interface{})

          append log info to another file

          func DefaultIsTerminal

          func DefaultIsTerminal() bool

          func DefaultOnWidthChanged

          func DefaultOnWidthChanged(f func())

          func DialRemote

          func DialRemote(n, addr string) error

          func Do

          func Do(p PrefixCompleterInterface, line []rune, pos int) (newLine [][]rune, offset int)

          func GetInt

          func GetInt(s []string, def int) int

          func GetScreenWidth

          func GetScreenWidth() int

          func GetSize

          func GetSize(fd int) (int, int, error)

            GetSize returns the dimensions of the given terminal.

            func GetStdin

            func GetStdin() int

            func IsPrintable

            func IsPrintable(key rune) bool

            func IsTerminal

            func IsTerminal(fd int) bool

              IsTerminal returns true if the given file descriptor is a terminal.

              func IsWordBreak

              func IsWordBreak(i rune) bool

              func Line

              func Line(prompt string) (string, error)

                readline with global configs

                func LineCount

                func LineCount(screenWidth, w int) int

                  calculate how many lines for N character

                  func ListenRemote

                  func ListenRemote(n, addr string, cfg *Config, h func(*Instance), onListen ...func(net.Listener) error) error

                  func NewFillableStdin

                  func NewFillableStdin(stdin io.Reader) (io.ReadCloser, io.Writer)

                    NewFillableStdin gives you FillableStdin

                    func Password

                    func Password(prompt string) ([]byte, error)

                    func Print

                    func Print(p PrefixCompleterInterface, prefix string, level int, buf *bytes.Buffer)

                    func ReadPassword

                    func ReadPassword(fd int) ([]byte, error)

                      ReadPassword reads a line of input from a terminal without local echo. This is commonly used for inputting passwords and other sensitive data. The slice returned does not include the \n.

                      func Restore

                      func Restore(fd int, state *State) error

                      func RetSegment

                      func RetSegment(segments [][]rune, cands [][]rune, idx int) ([][]rune, int)

                      func SetAutoComplete

                      func SetAutoComplete(completer AutoCompleter)

                        set auto completer to global instance

                        func SetHistoryPath

                        func SetHistoryPath(fp string)

                          let readline load history from filepath and try to persist history into disk set fp to "" to prevent readline persisting history to disk so the `AddHistory` will return nil error forever.

                          func SplitByLine

                          func SplitByLine(start, screenWidth int, rs []rune) []string

                          func SplitSegment

                          func SplitSegment(line []rune, pos int) ([][]rune, int)

                          func SuspendMe

                          func SuspendMe()

                            SuspendMe use to send suspend signal to myself, when we in the raw mode. For OSX it need to send to parent's pid For Linux it need to send to myself

                            func WaitForResume

                            func WaitForResume() chan struct{}

                              WaitForResume need to call before current process got suspend. It will run a ticker until a long duration is occurs, which means this process is resumed.

                              Types

                              type AutoCompleter

                              type AutoCompleter interface {
                              	// Readline will pass the whole line and current offset to it
                              	// Completer need to pass all the candidates, and how long they shared the same characters in line
                              	// Example:
                              	//   [go, git, git-shell, grep]
                              	//   Do("g", 1) => ["o", "it", "it-shell", "rep"], 1
                              	//   Do("gi", 2) => ["t", "t-shell"], 2
                              	//   Do("git", 3) => ["", "-shell"], 3
                              	Do(line []rune, pos int) (newLine [][]rune, length int)
                              }

                              func SegmentFunc

                              func SegmentFunc(f func([][]rune, int) [][]rune) AutoCompleter

                              type CancelableStdin

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

                              func NewCancelableStdin

                              func NewCancelableStdin(r io.Reader) *CancelableStdin

                              func (*CancelableStdin) Close

                              func (c *CancelableStdin) Close() error

                              func (*CancelableStdin) Read

                              func (c *CancelableStdin) Read(b []byte) (n int, err error)

                              type Config

                              type Config struct {
                              	// prompt supports ANSI escape sequence, so we can color some characters even in windows
                              	Prompt string
                              
                              	// readline will persist historys to file where HistoryFile specified
                              	HistoryFile string
                              	// specify the max length of historys, it's 500 by default, set it to -1 to disable history
                              	HistoryLimit           int
                              	DisableAutoSaveHistory bool
                              	// enable case-insensitive history searching
                              	HistorySearchFold bool
                              
                              	// AutoCompleter will called once user press TAB
                              	AutoComplete AutoCompleter
                              
                              	// Any key press will pass to Listener
                              	// NOTE: Listener will be triggered by (nil, 0, 0) immediately
                              	Listener Listener
                              
                              	Painter Painter
                              
                              	// If VimMode is true, readline will in vim.insert mode by default
                              	VimMode bool
                              
                              	InterruptPrompt string
                              	EOFPrompt       string
                              
                              	FuncGetWidth func() int
                              
                              	Stdin       io.ReadCloser
                              	StdinWriter io.Writer
                              	Stdout      io.Writer
                              	Stderr      io.Writer
                              
                              	EnableMask bool
                              	MaskRune   rune
                              
                              	// erase the editing line after user submited it
                              	// it use in IM usually.
                              	UniqueEditLine bool
                              
                              	// filter input runes (may be used to disable CtrlZ or for translating some keys to different actions)
                              	// -> output = new (translated) rune and true/false if continue with processing this one
                              	FuncFilterInputRune func(rune) (rune, bool)
                              
                              	// force use interactive even stdout is not a tty
                              	FuncIsTerminal      func() bool
                              	FuncMakeRaw         func() error
                              	FuncExitRaw         func() error
                              	FuncOnWidthChanged  func(func())
                              	ForceUseInteractive bool
                              	// contains filtered or unexported fields
                              }

                              func (Config) Clone

                              func (c Config) Clone() *Config

                              func (*Config) Init

                              func (c *Config) Init() error

                              func (*Config) SetListener

                              func (c *Config) SetListener(f func(line []rune, pos int, key rune) (newLine []rune, newPos int, ok bool))

                              func (*Config) SetPainter

                              func (c *Config) SetPainter(p Painter)

                              type DumpListener

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

                              func (*DumpListener) OnChange

                              func (d *DumpListener) OnChange(line []rune, pos int, key rune) (newLine []rune, newPos int, ok bool)

                              type DynamicCompleteFunc

                              type DynamicCompleteFunc func(string) []string

                                Caller type for dynamic completion

                                type DynamicPrefixCompleterInterface

                                type DynamicPrefixCompleterInterface interface {
                                	PrefixCompleterInterface
                                	IsDynamic() bool
                                	GetDynamicNames(line []rune) [][]rune
                                }

                                type FillableStdin

                                type FillableStdin struct {
                                	sync.Mutex
                                	// contains filtered or unexported fields
                                }

                                  FillableStdin is a stdin reader which can prepend some data before reading into the real stdin

                                  func (*FillableStdin) Close

                                  func (s *FillableStdin) Close() error

                                  func (*FillableStdin) Read

                                  func (s *FillableStdin) Read(p []byte) (n int, err error)

                                    Read will read from the local buffer and if no data, read from stdin

                                    type Instance

                                    type Instance struct {
                                    	Config    *Config
                                    	Terminal  *Terminal
                                    	Operation *Operation
                                    }

                                    func HandleConn

                                    func HandleConn(cfg Config, conn net.Conn) (*Instance, error)

                                    func New

                                    func New(prompt string) (*Instance, error)

                                    func NewEx

                                    func NewEx(cfg *Config) (*Instance, error)

                                    func (*Instance) Clean

                                    func (i *Instance) Clean()

                                    func (*Instance) Close

                                    func (i *Instance) Close() error

                                      we must make sure that call Close() before process exit.

                                      func (*Instance) GenPasswordConfig

                                      func (i *Instance) GenPasswordConfig() *Config

                                      func (*Instance) HistoryDisable

                                      func (i *Instance) HistoryDisable()

                                        HistoryDisable the save of the commands into the history

                                        func (*Instance) HistoryEnable

                                        func (i *Instance) HistoryEnable()

                                          HistoryEnable the save of the commands into the history (default on)

                                          func (*Instance) IsVimMode

                                          func (i *Instance) IsVimMode() bool

                                          func (*Instance) Line

                                          func (i *Instance) Line() *Result

                                          func (*Instance) ReadPassword

                                          func (i *Instance) ReadPassword(prompt string) ([]byte, error)

                                          func (*Instance) ReadPasswordEx

                                          func (i *Instance) ReadPasswordEx(prompt string, l Listener) ([]byte, error)

                                          func (*Instance) ReadPasswordWithConfig

                                          func (i *Instance) ReadPasswordWithConfig(cfg *Config) ([]byte, error)

                                            we can generate a config by `i.GenPasswordConfig()`

                                            func (*Instance) ReadSlice

                                            func (i *Instance) ReadSlice() ([]byte, error)

                                              same as readline

                                              func (*Instance) Readline

                                              func (i *Instance) Readline() (string, error)

                                                err is one of (nil, io.EOF, readline.ErrInterrupt)

                                                func (*Instance) ReadlineWithDefault

                                                func (i *Instance) ReadlineWithDefault(what string) (string, error)

                                                func (*Instance) Refresh

                                                func (i *Instance) Refresh()

                                                func (*Instance) ResetHistory

                                                func (i *Instance) ResetHistory()

                                                func (*Instance) SaveHistory

                                                func (i *Instance) SaveHistory(content string) error

                                                func (*Instance) SetConfig

                                                func (i *Instance) SetConfig(cfg *Config) *Config

                                                func (*Instance) SetHistoryPath

                                                func (i *Instance) SetHistoryPath(p string)

                                                  change history persistence in runtime

                                                  func (*Instance) SetMaskRune

                                                  func (i *Instance) SetMaskRune(r rune)

                                                  func (*Instance) SetPrompt

                                                  func (i *Instance) SetPrompt(s string)

                                                  func (*Instance) SetVimMode

                                                  func (i *Instance) SetVimMode(on bool)

                                                    switch VimMode in runtime

                                                    func (*Instance) Stderr

                                                    func (i *Instance) Stderr() io.Writer

                                                      readline will refresh automatic when write through Stdout()

                                                      func (*Instance) Stdout

                                                      func (i *Instance) Stdout() io.Writer

                                                        readline will refresh automatic when write through Stdout()

                                                        func (*Instance) Write

                                                        func (i *Instance) Write(b []byte) (int, error)

                                                        func (*Instance) WriteStdin

                                                        func (i *Instance) WriteStdin(val []byte) (int, error)

                                                          WriteStdin prefill the next Stdin fetch Next time you call ReadLine() this value will be writen before the user input ie :

                                                          i := readline.New()
                                                          i.WriteStdin([]byte("test"))
                                                          _, _= i.Readline()
                                                          

                                                          gives

                                                          > test[cursor]

                                                          type InterruptError

                                                          type InterruptError struct {
                                                          	Line []rune
                                                          }

                                                          func (*InterruptError) Error

                                                          func (*InterruptError) Error() string

                                                          type Listener

                                                          type Listener interface {
                                                          	OnChange(line []rune, pos int, key rune) (newLine []rune, newPos int, ok bool)
                                                          }

                                                          func FuncListener

                                                          func FuncListener(f func(line []rune, pos int, key rune) (newLine []rune, newPos int, ok bool)) Listener

                                                          type Message

                                                          type Message struct {
                                                          	Type MsgType
                                                          	Data []byte
                                                          }

                                                          func NewMessage

                                                          func NewMessage(t MsgType, data []byte) *Message

                                                          func ReadMessage

                                                          func ReadMessage(r io.Reader) (*Message, error)

                                                          func (*Message) WriteTo

                                                          func (m *Message) WriteTo(w io.Writer) (int, error)

                                                          type MsgType

                                                          type MsgType int16

                                                          type Operation

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

                                                          func NewOperation

                                                          func NewOperation(t *Terminal, cfg *Config) *Operation

                                                          func (*Operation) Clean

                                                          func (o *Operation) Clean()

                                                          func (*Operation) Close

                                                          func (o *Operation) Close()

                                                          func (Operation) CompleteRefresh

                                                          func (o Operation) CompleteRefresh()

                                                          func (Operation) EnterCompleteMode

                                                          func (o Operation) EnterCompleteMode(offset int, candidate [][]rune)

                                                          func (Operation) EnterCompleteSelectMode

                                                          func (o Operation) EnterCompleteSelectMode()

                                                          func (Operation) EnterPasswordMode

                                                          func (o Operation) EnterPasswordMode(cfg *Config) (err error)

                                                          func (Operation) EnterVimInsertMode

                                                          func (o Operation) EnterVimInsertMode()

                                                          func (Operation) ExitCompleteMode

                                                          func (o Operation) ExitCompleteMode(revent bool)

                                                          func (Operation) ExitCompleteSelectMode

                                                          func (o Operation) ExitCompleteSelectMode()

                                                          func (Operation) ExitPasswordMode

                                                          func (o Operation) ExitPasswordMode()

                                                          func (Operation) ExitSearchMode

                                                          func (o Operation) ExitSearchMode(revert bool)

                                                          func (Operation) ExitVimInsertMode

                                                          func (o Operation) ExitVimInsertMode()

                                                          func (Operation) ExitVimMode

                                                          func (o Operation) ExitVimMode()

                                                          func (*Operation) GenPasswordConfig

                                                          func (o *Operation) GenPasswordConfig() *Config

                                                          func (*Operation) GetConfig

                                                          func (o *Operation) GetConfig() *Config

                                                          func (Operation) HandleCompleteSelect

                                                          func (o Operation) HandleCompleteSelect(r rune) bool

                                                          func (Operation) HandleVim

                                                          func (o Operation) HandleVim(r rune, readNext func() rune) rune

                                                          func (Operation) HandleVimNormal

                                                          func (o Operation) HandleVimNormal(r rune, readNext func() rune) (t rune)

                                                          func (Operation) IsEnableVimMode

                                                          func (o Operation) IsEnableVimMode() bool

                                                          func (Operation) IsInCompleteMode

                                                          func (o Operation) IsInCompleteMode() bool

                                                          func (Operation) IsInCompleteSelectMode

                                                          func (o Operation) IsInCompleteSelectMode() bool

                                                          func (*Operation) IsNormalMode

                                                          func (o *Operation) IsNormalMode() bool

                                                          func (Operation) IsSearchMode

                                                          func (o Operation) IsSearchMode() bool

                                                          func (Operation) OnComplete

                                                          func (o Operation) OnComplete() bool

                                                          func (*Operation) Password

                                                          func (o *Operation) Password(prompt string) ([]byte, error)

                                                          func (Operation) PasswordConfig

                                                          func (o Operation) PasswordConfig() *Config

                                                          func (*Operation) PasswordEx

                                                          func (o *Operation) PasswordEx(prompt string, l Listener) ([]byte, error)

                                                          func (*Operation) PasswordWithConfig

                                                          func (o *Operation) PasswordWithConfig(cfg *Config) ([]byte, error)

                                                          func (*Operation) Refresh

                                                          func (o *Operation) Refresh()

                                                          func (*Operation) ResetHistory

                                                          func (o *Operation) ResetHistory()

                                                          func (*Operation) Runes

                                                          func (o *Operation) Runes() ([]rune, error)

                                                          func (*Operation) SaveHistory

                                                          func (o *Operation) SaveHistory(content string) error

                                                            if err is not nil, it just mean it fail to write to file other things goes fine.

                                                            func (Operation) SearchBackspace

                                                            func (o Operation) SearchBackspace()

                                                            func (Operation) SearchChar

                                                            func (o Operation) SearchChar(r rune)

                                                            func (Operation) SearchMode

                                                            func (o Operation) SearchMode(dir int) bool

                                                            func (Operation) SearchRefresh

                                                            func (o Operation) SearchRefresh(x int)

                                                            func (*Operation) SetBuffer

                                                            func (o *Operation) SetBuffer(what string)

                                                            func (*Operation) SetConfig

                                                            func (op *Operation) SetConfig(cfg *Config) (*Config, error)

                                                            func (*Operation) SetHistoryPath

                                                            func (o *Operation) SetHistoryPath(path string)

                                                            func (*Operation) SetMaskRune

                                                            func (o *Operation) SetMaskRune(r rune)

                                                            func (*Operation) SetPrompt

                                                            func (o *Operation) SetPrompt(s string)

                                                            func (*Operation) SetTitle

                                                            func (o *Operation) SetTitle(t string)

                                                            func (Operation) SetVimMode

                                                            func (o Operation) SetVimMode(on bool)

                                                            func (*Operation) Slice

                                                            func (o *Operation) Slice() ([]byte, error)

                                                            func (*Operation) Stderr

                                                            func (o *Operation) Stderr() io.Writer

                                                            func (*Operation) Stdout

                                                            func (o *Operation) Stdout() io.Writer

                                                            func (*Operation) String

                                                            func (o *Operation) String() (string, error)

                                                            type Painter

                                                            type Painter interface {
                                                            	Paint(line []rune, pos int) []rune
                                                            }

                                                            type PrefixCompleter

                                                            type PrefixCompleter struct {
                                                            	Name     []rune
                                                            	Dynamic  bool
                                                            	Callback DynamicCompleteFunc
                                                            	Children []PrefixCompleterInterface
                                                            }

                                                            func NewPrefixCompleter

                                                            func NewPrefixCompleter(pc ...PrefixCompleterInterface) *PrefixCompleter

                                                            func PcItem

                                                            func PcItem(name string, pc ...PrefixCompleterInterface) *PrefixCompleter

                                                            func (*PrefixCompleter) Do

                                                            func (p *PrefixCompleter) Do(line []rune, pos int) (newLine [][]rune, offset int)

                                                            func (*PrefixCompleter) GetChildren

                                                            func (p *PrefixCompleter) GetChildren() []PrefixCompleterInterface

                                                            func (*PrefixCompleter) GetDynamicNames

                                                            func (p *PrefixCompleter) GetDynamicNames(line []rune) [][]rune

                                                            func (*PrefixCompleter) GetName

                                                            func (p *PrefixCompleter) GetName() []rune

                                                            func (*PrefixCompleter) IsDynamic

                                                            func (p *PrefixCompleter) IsDynamic() bool

                                                            func (*PrefixCompleter) Print

                                                            func (p *PrefixCompleter) Print(prefix string, level int, buf *bytes.Buffer)

                                                            func (*PrefixCompleter) SetChildren

                                                            func (p *PrefixCompleter) SetChildren(children []PrefixCompleterInterface)

                                                            func (*PrefixCompleter) Tree

                                                            func (p *PrefixCompleter) Tree(prefix string) string

                                                            type PrefixCompleterInterface

                                                            type PrefixCompleterInterface interface {
                                                            	Print(prefix string, level int, buf *bytes.Buffer)
                                                            	Do(line []rune, pos int) (newLine [][]rune, length int)
                                                            	GetName() []rune
                                                            	GetChildren() []PrefixCompleterInterface
                                                            	SetChildren(children []PrefixCompleterInterface)
                                                            }

                                                            type RawMode

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

                                                            func (*RawMode) Enter

                                                            func (r *RawMode) Enter() (err error)

                                                            func (*RawMode) Exit

                                                            func (r *RawMode) Exit() error

                                                            type RemoteCli

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

                                                            func NewRemoteCli

                                                            func NewRemoteCli(conn net.Conn) (*RemoteCli, error)

                                                            func (*RemoteCli) Close

                                                            func (r *RemoteCli) Close()

                                                            func (*RemoteCli) MarkIsTerminal

                                                            func (r *RemoteCli) MarkIsTerminal(is bool)

                                                            func (*RemoteCli) Serve

                                                            func (r *RemoteCli) Serve() error

                                                            func (*RemoteCli) ServeBy

                                                            func (r *RemoteCli) ServeBy(source io.Reader) error

                                                            func (*RemoteCli) Write

                                                            func (r *RemoteCli) Write(b []byte) (int, error)

                                                            type RemoteSvr

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

                                                            func NewRemoteSvr

                                                            func NewRemoteSvr(conn net.Conn) (*RemoteSvr, error)

                                                            func (*RemoteSvr) Close

                                                            func (r *RemoteSvr) Close() error

                                                            func (*RemoteSvr) EnterRawMode

                                                            func (r *RemoteSvr) EnterRawMode() error

                                                            func (*RemoteSvr) ExitRawMode

                                                            func (r *RemoteSvr) ExitRawMode() error

                                                            func (*RemoteSvr) GetWidth

                                                            func (r *RemoteSvr) GetWidth() int

                                                            func (*RemoteSvr) GotIsTerminal

                                                            func (r *RemoteSvr) GotIsTerminal(data []byte)

                                                            func (*RemoteSvr) GotReportWidth

                                                            func (r *RemoteSvr) GotReportWidth(data []byte)

                                                            func (*RemoteSvr) HandleConfig

                                                            func (r *RemoteSvr) HandleConfig(cfg *Config)

                                                            func (*RemoteSvr) IsTerminal

                                                            func (r *RemoteSvr) IsTerminal() bool

                                                            func (*RemoteSvr) Read

                                                            func (r *RemoteSvr) Read(b []byte) (int, error)

                                                            func (*RemoteSvr) Write

                                                            func (r *RemoteSvr) Write(b []byte) (int, error)

                                                            type Result

                                                            type Result struct {
                                                            	Line  string
                                                            	Error error
                                                            }

                                                            func (*Result) CanBreak

                                                            func (l *Result) CanBreak() bool

                                                            func (*Result) CanContinue

                                                            func (l *Result) CanContinue() bool

                                                            type RuneBuffer

                                                            type RuneBuffer struct {
                                                            	sync.Mutex
                                                            	// contains filtered or unexported fields
                                                            }

                                                            func NewRuneBuffer

                                                            func NewRuneBuffer(w io.Writer, prompt string, cfg *Config, width int) *RuneBuffer

                                                            func (*RuneBuffer) BackEscapeWord

                                                            func (r *RuneBuffer) BackEscapeWord()

                                                            func (*RuneBuffer) Backspace

                                                            func (r *RuneBuffer) Backspace()

                                                            func (*RuneBuffer) Backup

                                                            func (r *RuneBuffer) Backup()

                                                            func (*RuneBuffer) Clean

                                                            func (r *RuneBuffer) Clean()

                                                            func (*RuneBuffer) CurrentWidth

                                                            func (r *RuneBuffer) CurrentWidth(x int) int

                                                            func (*RuneBuffer) CursorLineCount

                                                            func (r *RuneBuffer) CursorLineCount() int

                                                            func (*RuneBuffer) Delete

                                                            func (r *RuneBuffer) Delete() (success bool)

                                                            func (*RuneBuffer) DeleteWord

                                                            func (r *RuneBuffer) DeleteWord()

                                                            func (*RuneBuffer) Erase

                                                            func (r *RuneBuffer) Erase()

                                                            func (*RuneBuffer) IdxLine

                                                            func (r *RuneBuffer) IdxLine(width int) int

                                                            func (*RuneBuffer) IsCursorInEnd

                                                            func (r *RuneBuffer) IsCursorInEnd() bool

                                                            func (*RuneBuffer) Kill

                                                            func (r *RuneBuffer) Kill()

                                                            func (*RuneBuffer) KillFront

                                                            func (r *RuneBuffer) KillFront()

                                                            func (*RuneBuffer) Len

                                                            func (r *RuneBuffer) Len() int

                                                            func (*RuneBuffer) LineCount

                                                            func (r *RuneBuffer) LineCount(width int) int

                                                            func (*RuneBuffer) MoveBackward

                                                            func (r *RuneBuffer) MoveBackward()

                                                            func (*RuneBuffer) MoveForward

                                                            func (r *RuneBuffer) MoveForward()

                                                            func (*RuneBuffer) MoveTo

                                                            func (r *RuneBuffer) MoveTo(ch rune, prevChar, reverse bool) (success bool)

                                                            func (*RuneBuffer) MoveToEndWord

                                                            func (r *RuneBuffer) MoveToEndWord()

                                                            func (*RuneBuffer) MoveToLineEnd

                                                            func (r *RuneBuffer) MoveToLineEnd()

                                                            func (*RuneBuffer) MoveToLineStart

                                                            func (r *RuneBuffer) MoveToLineStart()

                                                            func (*RuneBuffer) MoveToNextWord

                                                            func (r *RuneBuffer) MoveToNextWord()

                                                            func (*RuneBuffer) MoveToPrevWord

                                                            func (r *RuneBuffer) MoveToPrevWord() (success bool)

                                                            func (*RuneBuffer) OnWidthChange

                                                            func (r *RuneBuffer) OnWidthChange(newWidth int)

                                                            func (*RuneBuffer) Pos

                                                            func (r *RuneBuffer) Pos() int

                                                            func (*RuneBuffer) PromptLen

                                                            func (r *RuneBuffer) PromptLen() int

                                                            func (*RuneBuffer) Refresh

                                                            func (r *RuneBuffer) Refresh(f func())

                                                            func (*RuneBuffer) Replace

                                                            func (r *RuneBuffer) Replace(ch rune)

                                                            func (*RuneBuffer) Reset

                                                            func (r *RuneBuffer) Reset() []rune

                                                            func (*RuneBuffer) Restore

                                                            func (r *RuneBuffer) Restore()

                                                            func (*RuneBuffer) RuneSlice

                                                            func (r *RuneBuffer) RuneSlice(i int) []rune

                                                            func (*RuneBuffer) Runes

                                                            func (r *RuneBuffer) Runes() []rune

                                                            func (*RuneBuffer) Set

                                                            func (r *RuneBuffer) Set(buf []rune)

                                                            func (*RuneBuffer) SetConfig

                                                            func (r *RuneBuffer) SetConfig(cfg *Config)

                                                            func (*RuneBuffer) SetMask

                                                            func (r *RuneBuffer) SetMask(m rune)

                                                            func (*RuneBuffer) SetOffset

                                                            func (r *RuneBuffer) SetOffset(offset string)

                                                            func (*RuneBuffer) SetPrompt

                                                            func (r *RuneBuffer) SetPrompt(prompt string)

                                                            func (*RuneBuffer) SetStyle

                                                            func (r *RuneBuffer) SetStyle(start, end int, style string)

                                                            func (*RuneBuffer) SetWithIdx

                                                            func (r *RuneBuffer) SetWithIdx(idx int, buf []rune)

                                                            func (*RuneBuffer) Transpose

                                                            func (r *RuneBuffer) Transpose()

                                                            func (*RuneBuffer) WriteRune

                                                            func (r *RuneBuffer) WriteRune(s rune)

                                                            func (*RuneBuffer) WriteRunes

                                                            func (r *RuneBuffer) WriteRunes(s []rune)

                                                            func (*RuneBuffer) WriteString

                                                            func (r *RuneBuffer) WriteString(s string)

                                                            func (*RuneBuffer) Yank

                                                            func (r *RuneBuffer) Yank()

                                                            type Runes

                                                            type Runes struct{}

                                                            func (Runes) Aggregate

                                                            func (Runes) Aggregate(candicate [][]rune) (same []rune, size int)

                                                            func (Runes) Backspace

                                                            func (Runes) Backspace(r []rune) []byte

                                                            func (Runes) ColorFilter

                                                            func (Runes) ColorFilter(r []rune) []rune

                                                            func (Runes) Copy

                                                            func (Runes) Copy(r []rune) []rune

                                                            func (Runes) Equal

                                                            func (Runes) Equal(a, b []rune) bool

                                                            func (Runes) EqualFold

                                                            func (r Runes) EqualFold(a, b []rune) bool

                                                            func (Runes) EqualRune

                                                            func (Runes) EqualRune(a, b rune, fold bool) bool

                                                            func (Runes) EqualRuneFold

                                                            func (r Runes) EqualRuneFold(a, b rune) bool

                                                            func (Runes) HasPrefix

                                                            func (Runes) HasPrefix(r, prefix []rune) bool

                                                            func (Runes) HasPrefixFold

                                                            func (Runes) HasPrefixFold(r, prefix []rune) bool

                                                            func (Runes) Index

                                                            func (Runes) Index(r rune, rs []rune) int

                                                            func (Runes) IndexAll

                                                            func (rs Runes) IndexAll(r, sub []rune) int

                                                              Search in runes from front to end

                                                              func (Runes) IndexAllBck

                                                              func (rs Runes) IndexAllBck(r, sub []rune) int

                                                                Search in runes from end to front

                                                                func (Runes) IndexAllBckEx

                                                                func (rs Runes) IndexAllBckEx(r, sub []rune, fold bool) int

                                                                func (Runes) IndexAllEx

                                                                func (rs Runes) IndexAllEx(r, sub []rune, fold bool) int

                                                                func (Runes) TrimSpaceLeft

                                                                func (Runes) TrimSpaceLeft(in []rune) []rune

                                                                func (Runes) Width

                                                                func (Runes) Width(r rune) int

                                                                func (Runes) WidthAll

                                                                func (Runes) WidthAll(r []rune) (length int)

                                                                type SegmentComplete

                                                                type SegmentComplete struct {
                                                                	SegmentCompleter
                                                                }

                                                                func SegmentAutoComplete

                                                                func SegmentAutoComplete(completer SegmentCompleter) *SegmentComplete

                                                                func (*SegmentComplete) Do

                                                                func (c *SegmentComplete) Do(line []rune, pos int) (newLine [][]rune, offset int)

                                                                type SegmentCompleter

                                                                type SegmentCompleter interface {
                                                                	// a
                                                                	// |- a1
                                                                	// |--- a11
                                                                	// |- a2
                                                                	// b
                                                                	// input:
                                                                	//   DoTree([], 0) [a, b]
                                                                	//   DoTree([a], 1) [a]
                                                                	//   DoTree([a, ], 0) [a1, a2]
                                                                	//   DoTree([a, a], 1) [a1, a2]
                                                                	//   DoTree([a, a1], 2) [a1]
                                                                	//   DoTree([a, a1, ], 0) [a11]
                                                                	//   DoTree([a, a1, a], 1) [a11]
                                                                	DoSegment([][]rune, int) [][]rune
                                                                }

                                                                type State

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

                                                                  State contains the state of a terminal.

                                                                  func GetState

                                                                  func GetState(fd int) (*State, error)

                                                                    GetState returns the current state of a terminal which may be useful to restore the terminal after a signal.

                                                                    func MakeRaw

                                                                    func MakeRaw(fd int) (*State, error)

                                                                      MakeRaw put the terminal connected to the given file descriptor into raw mode and returns the previous state of the terminal so that it can be restored.

                                                                      type TabCompleter

                                                                      type TabCompleter struct{}

                                                                      func (*TabCompleter) Do

                                                                      func (t *TabCompleter) Do([]rune, int) ([][]rune, int)

                                                                      type Terminal

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

                                                                      func NewTerminal

                                                                      func NewTerminal(cfg *Config) (*Terminal, error)

                                                                      func (*Terminal) Bell

                                                                      func (t *Terminal) Bell()

                                                                      func (*Terminal) Close

                                                                      func (t *Terminal) Close() error

                                                                      func (*Terminal) EnterRawMode

                                                                      func (t *Terminal) EnterRawMode() (err error)

                                                                      func (*Terminal) ExitRawMode

                                                                      func (t *Terminal) ExitRawMode() (err error)

                                                                      func (*Terminal) GetConfig

                                                                      func (t *Terminal) GetConfig() *Config

                                                                      func (*Terminal) GetOffset

                                                                      func (t *Terminal) GetOffset(f func(offset string))

                                                                      func (*Terminal) IsReading

                                                                      func (t *Terminal) IsReading() bool

                                                                      func (*Terminal) KickRead

                                                                      func (t *Terminal) KickRead()

                                                                      func (*Terminal) Print

                                                                      func (t *Terminal) Print(s string)

                                                                      func (*Terminal) PrintRune

                                                                      func (t *Terminal) PrintRune(r rune)

                                                                      func (*Terminal) ReadRune

                                                                      func (t *Terminal) ReadRune() rune

                                                                        return rune(0) if meet EOF

                                                                        func (*Terminal) Readline

                                                                        func (t *Terminal) Readline() *Operation

                                                                        func (*Terminal) SetConfig

                                                                        func (t *Terminal) SetConfig(c *Config) error

                                                                        func (*Terminal) SleepToResume

                                                                        func (t *Terminal) SleepToResume()

                                                                          SleepToResume will sleep myself, and return only if I'm resumed.

                                                                          func (*Terminal) Write

                                                                          func (t *Terminal) Write(b []byte) (int, error)

                                                                          func (*Terminal) WriteStdin

                                                                          func (t *Terminal) WriteStdin(b []byte) (int, error)

                                                                            WriteStdin prefill the next Stdin fetch Next time you call ReadLine() this value will be writen before the user input

                                                                            type Termios

                                                                            type Termios syscall.Termios

                                                                            Directories

                                                                            Path Synopsis
                                                                            example
                                                                            readline-pass-strength
                                                                            This is a small example using readline to read a password and check it's strength while typing using the zxcvbn library.
                                                                            This is a small example using readline to read a password and check it's strength while typing using the zxcvbn library.
                                                                            deprecated.
                                                                            deprecated.