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 readline 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
- Variables
- func AddHistory(content string) error
- func BracketIsEnclosed(leftBracket rune, line []rune) bool
- func BracketIsEnclosedByRightBracket(rightBracket rune, line []rune) bool
- func CaptureExitSignal(f func())
- func ClearScreen(w io.Writer) (int, error)
- func Debug(o ...interface{})
- func DefaultIsTerminal() bool
- func DefaultOnWidthChanged(f func())
- func DialRemote(n, addr string) error
- func GetInt(s []string, def int) int
- func GetScreenWidth() int
- func GetSize(fd int) (int, int, error)
- func GetStdin() int
- func IsBracket(r rune) bool
- func IsPrintable(key rune) bool
- func IsQuotationMark(r rune) bool
- func IsRightBracket(r rune) bool
- func IsTerminal(fd int) bool
- func IsUniqueToken(r rune) bool
- func IsWordBreak(i rune) bool
- func LastElement(input string) string
- func Line(prompt string) (string, error)
- func LineCount(screenWidth, w int) int
- func ListenRemote(n, addr string, cfg *Config, h func(*Instance), ...) error
- func LiteralIsEnclosed(enclosure rune, line []rune) bool
- func NewFillableStdin(stdin io.Reader) (io.ReadCloser, io.Writer)
- func Password(prompt string) ([]byte, error)
- func Print(p PrefixCompleterInterface, prefix string, level int, buf *bytes.Buffer)
- func ReadPassword(fd int) ([]byte, error)
- func Restore(fd int, state *State) error
- func SetAutoComplete(completer AutoCompleter)
- func SetHistoryPath(fp string)
- func SplitByLine(start, screenWidth int, rs []rune) []string
- func SplitSegment(line []rune, pos int) ([][]rune, int)
- func SuspendMe()
- func WaitForResume() chan struct{}
- type AutoCompleter
- type CancelableStdin
- type Candidate
- type CandidateList
- type Config
- type DumpListener
- type DynamicCompleteFunc
- type DynamicPrefixCompleterInterface
- type FillableStdin
- type Instance
- func (i *Instance) CaptureExitSignal()
- func (i *Instance) Clean()
- func (i *Instance) Close() error
- func (i *Instance) DisableKillWholeLine()
- func (i *Instance) EnableKillWholeLine()
- func (i *Instance) GenPasswordConfig() *Config
- func (i *Instance) HistoryDisable()
- func (i *Instance) HistoryEnable()
- func (i *Instance) IsVimMode() bool
- func (i *Instance) Line() *Result
- func (i *Instance) ReadPassword(prompt string) ([]byte, error)
- func (i *Instance) ReadPasswordEx(prompt string, l Listener) ([]byte, error)
- func (i *Instance) ReadPasswordWithConfig(cfg *Config) ([]byte, error)
- func (i *Instance) ReadSlice() ([]byte, error)
- func (i *Instance) Readline() (string, error)
- func (i *Instance) ReadlineWithDefault(what string) (string, error)
- func (i *Instance) Refresh()
- func (i *Instance) ResetHistory()
- func (i *Instance) SaveHistory(content string) error
- func (i *Instance) SetConfig(cfg *Config) *Config
- func (i *Instance) SetHistoryPath(p string)
- func (i *Instance) SetMaskRune(r rune)
- func (i *Instance) SetPrompt(s string)
- func (i *Instance) SetVimMode(on bool)
- func (i *Instance) Stderr() io.Writer
- func (i *Instance) Stdout() io.Writer
- func (i *Instance) Write(b []byte) (int, error)
- func (i *Instance) WriteStdin(val []byte) (int, error)
- type InterruptError
- type Listener
- type Message
- type MsgType
- type Operation
- func (o *Operation) Clean()
- func (o *Operation) Close()
- func (o Operation) CompleteRefresh()
- func (o *Operation) DisableKillWholeLine()
- func (o *Operation) EnableKillWholeLine()
- func (o Operation) EnterCompleteMode(offset int, candidates CandidateList)
- func (o Operation) EnterCompleteSelectMode()
- func (o Operation) EnterPasswordMode(cfg *Config) (err error)
- func (o Operation) EnterVimInsertMode()
- func (o Operation) ExitCompleteMode(revent bool)
- func (o Operation) ExitCompleteSelectMode()
- func (o Operation) ExitPasswordMode()
- func (o Operation) ExitSearchMode(revert bool)
- func (o Operation) ExitVimInsertMode()
- func (o Operation) ExitVimMode()
- func (o *Operation) GenPasswordConfig() *Config
- func (o *Operation) GetConfig() *Config
- func (o Operation) HandleCompleteSelect(r rune) bool
- func (o Operation) HandleVim(r rune, readNext func() rune) rune
- func (o Operation) HandleVimNormal(r rune, readNext func() rune) (t rune)
- func (o Operation) IsEnableVimMode() bool
- func (o Operation) IsInCompleteMode() bool
- func (o Operation) IsInCompleteSelectMode() bool
- func (o *Operation) IsNormalMode() bool
- func (o Operation) IsSearchMode() bool
- func (o Operation) OnComplete() bool
- func (o *Operation) Password(prompt string) ([]byte, error)
- func (o Operation) PasswordConfig() *Config
- func (o *Operation) PasswordEx(prompt string, l Listener) ([]byte, error)
- func (o *Operation) PasswordWithConfig(cfg *Config) ([]byte, error)
- func (o *Operation) Refresh()
- func (o *Operation) ResetHistory()
- func (o *Operation) Runes() ([]rune, error)
- func (o *Operation) SaveHistory(content string) error
- func (o Operation) SearchBackspace()
- func (o Operation) SearchChar(r rune)
- func (o Operation) SearchMode(dir int) bool
- func (o Operation) SearchRefresh(x int)
- func (o *Operation) SetBuffer(what string)
- func (op *Operation) SetConfig(cfg *Config) (*Config, error)
- func (o *Operation) SetHistoryPath(path string)
- func (o *Operation) SetMaskRune(r rune)
- func (o *Operation) SetPrompt(s string)
- func (o *Operation) SetTitle(t string)
- func (o Operation) SetVimMode(on bool)
- func (o *Operation) Slice() ([]byte, error)
- func (o *Operation) Stderr() io.Writer
- func (o *Operation) Stdout() io.Writer
- func (o *Operation) String() (string, error)
- type Painter
- type PrefixCompleter
- func (p *PrefixCompleter) Do(line []rune, pos int, index int) (newLine CandidateList, offset int)
- func (p *PrefixCompleter) GetChildren() []PrefixCompleterInterface
- func (p *PrefixCompleter) GetDynamicNames(line []rune, origLine []rune, index int) CandidateList
- func (p *PrefixCompleter) GetName() Candidate
- func (p *PrefixCompleter) IsAppendOnly() bool
- func (p *PrefixCompleter) IsDynamic() bool
- func (p *PrefixCompleter) Print(prefix string, level int, buf *bytes.Buffer)
- func (p *PrefixCompleter) SetChildren(children []PrefixCompleterInterface)
- func (p *PrefixCompleter) Tree(prefix string) string
- type PrefixCompleterInterface
- type RawMode
- type RemoteCli
- type RemoteSvr
- func (r *RemoteSvr) Close() error
- func (r *RemoteSvr) EnterRawMode() error
- func (r *RemoteSvr) ExitRawMode() error
- func (r *RemoteSvr) GetWidth() int
- func (r *RemoteSvr) GotIsTerminal(data []byte)
- func (r *RemoteSvr) GotReportWidth(data []byte)
- func (r *RemoteSvr) HandleConfig(cfg *Config)
- func (r *RemoteSvr) IsTerminal() bool
- func (r *RemoteSvr) Read(b []byte) (int, error)
- func (r *RemoteSvr) Write(b []byte) (int, error)
- type Result
- type RuneBuffer
- func (r *RuneBuffer) BackEscapeWord()
- func (r *RuneBuffer) Backspace()
- func (r *RuneBuffer) Backup()
- func (r *RuneBuffer) Clean()
- func (r *RuneBuffer) CurrentWidth(x int) int
- func (r *RuneBuffer) CursorLineCount() int
- func (r *RuneBuffer) Delete() (success bool)
- func (r *RuneBuffer) DeleteWord()
- func (r *RuneBuffer) Erase()
- func (r *RuneBuffer) FormatAsIdentifier(s []rune) ([]rune, int)
- func (r *RuneBuffer) IdxLine(width int) int
- func (r *RuneBuffer) IsCursorInEnd() bool
- func (r *RuneBuffer) Kill()
- func (r *RuneBuffer) KillFront()
- func (r *RuneBuffer) Len() int
- func (r *RuneBuffer) LineCount(width int) int
- func (r *RuneBuffer) MoveBackward()
- func (r *RuneBuffer) MoveForward()
- func (r *RuneBuffer) MoveTo(ch rune, prevChar, reverse bool) (success bool)
- func (r *RuneBuffer) MoveToEndWord()
- func (r *RuneBuffer) MoveToLineEnd()
- func (r *RuneBuffer) MoveToLineStart()
- func (r *RuneBuffer) MoveToNextWord()
- func (r *RuneBuffer) MoveToPrevWord() (success bool)
- func (r *RuneBuffer) OnWidthChange(newWidth int)
- func (r *RuneBuffer) Pos() int
- func (r *RuneBuffer) PromptLen() int
- func (r *RuneBuffer) Refresh(f func())
- func (r *RuneBuffer) Replace(ch rune)
- func (r *RuneBuffer) ReplaceRunes(s []rune, offset int, formatAsIdentifier bool, appendSpace bool)
- func (r *RuneBuffer) Reset() []rune
- func (r *RuneBuffer) Restore()
- func (r *RuneBuffer) RuneSlice(i int) []rune
- func (r *RuneBuffer) Runes() []rune
- func (r *RuneBuffer) Set(buf []rune)
- func (r *RuneBuffer) SetConfig(cfg *Config)
- func (r *RuneBuffer) SetMask(m rune)
- func (r *RuneBuffer) SetOffset(offset string)
- func (r *RuneBuffer) SetPrompt(prompt string)
- func (r *RuneBuffer) SetStyle(start, end int, style string)
- func (r *RuneBuffer) SetWithIdx(idx int, buf []rune)
- func (r *RuneBuffer) Transpose()
- func (r *RuneBuffer) WriteRune(s rune)
- func (r *RuneBuffer) WriteRunes(s []rune)
- func (r *RuneBuffer) WriteString(s string)
- func (r *RuneBuffer) Yank()
- type Runes
- func (Runes) Aggregate(candicate [][]rune) (same []rune, size int)
- func (Runes) Backspace(r []rune) []byte
- func (Runes) ColorFilter(r []rune) []rune
- func (Runes) Copy(r []rune) []rune
- func (Runes) Equal(a, b []rune) bool
- func (r Runes) EqualFold(a, b []rune) bool
- func (Runes) EqualRune(a, b rune, fold bool) bool
- func (r Runes) EqualRuneFold(a, b rune) bool
- func (Runes) HasPrefix(r, prefix []rune) bool
- func (Runes) HasPrefixFold(r, prefix []rune, formatAsIdentifier bool) bool
- func (Runes) Index(r rune, rs []rune) int
- func (rs Runes) IndexAll(r, sub []rune) int
- func (rs Runes) IndexAllBck(r, sub []rune) int
- func (rs Runes) IndexAllBckEx(r, sub []rune, fold bool) int
- func (rs Runes) IndexAllEx(r, sub []rune, fold bool) int
- func (Runes) TrimSpaceLeft(in []rune) []rune
- func (Runes) Width(r rune) int
- func (Runes) WidthAll(r []rune) (length int)
- type SegmentComplete
- type SegmentCompleter
- type State
- type TabCompleter
- type Terminal
- func (t *Terminal) Bell()
- func (t *Terminal) Close() error
- func (t *Terminal) EnterRawMode() (err error)
- func (t *Terminal) ExitRawMode() (err error)
- func (t *Terminal) GetConfig() *Config
- func (t *Terminal) GetOffset(f func(offset string))
- func (t *Terminal) IsReading() bool
- func (t *Terminal) KickRead()
- func (t *Terminal) Print(s string)
- func (t *Terminal) PrintRune(r rune)
- func (t *Terminal) ReadRune() rune
- func (t *Terminal) Readline() *Operation
- func (t *Terminal) SetConfig(c *Config) error
- func (t *Terminal) SleepToResume()
- func (t *Terminal) Write(b []byte) (int, error)
- func (t *Terminal) WriteStdin(b []byte) (int, error)
- type Termios
Constants ¶
const ( T_DATA = MsgType(iota) T_WIDTH T_WIDTH_REPORT T_ISTTY_REPORT T_RAW T_ERAW // exit raw T_EOF )
const ( S_STATE_FOUND = iota S_STATE_FAILING )
const ( S_DIR_BCK = iota S_DIR_FWD )
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 CharO = 79 CharEscapeEx = 91 CharBackspace = 127 )
const ( MetaBackward rune = -iota - 1 MetaForward MetaDelete MetaBackspace MetaTranspose )
const ( VIM_NORMAL = iota VIM_INSERT VIM_VISUAL )
Variables ¶
var ( Stdin io.ReadCloser = os.Stdin Stdout io.WriteCloser = os.Stdout Stderr io.WriteCloser = os.Stderr )
var (
ErrInterrupt = errors.New("Interrupt")
)
var LeftBracket = map[rune]rune{
')': '(',
']': '[',
'}': '{',
}
var RightBracket = map[rune]rune{
'(': ')',
'[': ']',
'{': '}',
}
var TabWidth = 4
Functions ¶
func AddHistory ¶
add history to global instance manually raise error only if `SetHistoryPath` is set with a non-empty path
func BracketIsEnclosed ¶ added in v1.0.0
func BracketIsEnclosedByRightBracket ¶ added in v1.1.0
func CaptureExitSignal ¶ added in v1.2.1
func CaptureExitSignal(f func())
func DefaultIsTerminal ¶
func DefaultIsTerminal() bool
func DefaultOnWidthChanged ¶
func DefaultOnWidthChanged(f func())
func DialRemote ¶
func GetScreenWidth ¶
func GetScreenWidth() int
func IsPrintable ¶
func IsQuotationMark ¶ added in v1.0.0
func IsRightBracket ¶ added in v1.1.0
func IsTerminal ¶
IsTerminal returns true if the given file descriptor is a terminal.
func IsUniqueToken ¶ added in v1.0.0
func IsWordBreak ¶
func LastElement ¶ added in v1.0.0
func ListenRemote ¶
func LiteralIsEnclosed ¶ added in v1.0.0
func NewFillableStdin ¶
NewFillableStdin gives you FillableStdin
func ReadPassword ¶
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 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 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 {
Do(line []rune, pos int, index int) (newLine CandidateList, 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
type Candidate ¶ added in v1.0.0
func (Candidate) StringName ¶ added in v1.0.0
type CandidateList ¶ added in v1.0.0
type CandidateList []Candidate
func Do ¶
func Do(p PrefixCompleterInterface, line []rune, pos int, index int) (newLine CandidateList, offset int)
func RetSegment ¶
func RetSegment(segments [][]rune, cands [][]rune, idx int) (CandidateList, int)
func (CandidateList) Len ¶ added in v1.0.0
func (l CandidateList) Len() int
func (CandidateList) Less ¶ added in v1.0.0
func (l CandidateList) Less(i, j int) bool
func (CandidateList) Sort ¶ added in v1.0.0
func (l CandidateList) Sort()
func (CandidateList) Swap ¶ added in v1.0.0
func (l CandidateList) Swap(i, j int)
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
// Ctrl+U
UseKillWholeLine 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) SetListener ¶
func (*Config) SetPainter ¶
type DumpListener ¶
type DumpListener struct {
// contains filtered or unexported fields
}
type DynamicCompleteFunc ¶
type DynamicCompleteFunc func(string, string, int) CandidateList
Caller type for dynamic completion
type DynamicPrefixCompleterInterface ¶
type DynamicPrefixCompleterInterface interface {
PrefixCompleterInterface
IsDynamic() bool
GetDynamicNames(line []rune, origLine []rune, index int) CandidateList
}
type FillableStdin ¶
FillableStdin is a stdin reader which can prepend some data before reading into the real stdin
func (*FillableStdin) Close ¶
func (s *FillableStdin) Close() error
type Instance ¶
func (*Instance) CaptureExitSignal ¶ added in v1.2.1
func (i *Instance) CaptureExitSignal()
call CaptureExitSignal when you want readline exit gracefully.
func (*Instance) Close ¶
we must make sure that call Close() before process exit. if there has a pending reading operation, that reading will be interrupted. so you can capture the signal and call Instance.Close(), it's thread-safe.
func (*Instance) DisableKillWholeLine ¶ added in v1.0.0
func (i *Instance) DisableKillWholeLine()
func (*Instance) EnableKillWholeLine ¶ added in v1.0.0
func (i *Instance) EnableKillWholeLine()
func (*Instance) GenPasswordConfig ¶
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) ReadPasswordEx ¶
func (*Instance) ReadPasswordWithConfig ¶
we can generate a config by `i.GenPasswordConfig()`
func (*Instance) ReadlineWithDefault ¶
func (*Instance) ResetHistory ¶
func (i *Instance) ResetHistory()
func (*Instance) SaveHistory ¶
func (*Instance) SetHistoryPath ¶
change history persistence in runtime
func (*Instance) SetMaskRune ¶
type InterruptError ¶
type InterruptError struct {
Line []rune
}
func (*InterruptError) Error ¶
func (*InterruptError) Error() string
type Listener ¶
type Message ¶
func NewMessage ¶
type Operation ¶
type Operation struct {
// contains filtered or unexported fields
}
func NewOperation ¶
func (Operation) CompleteRefresh ¶
func (o Operation) CompleteRefresh()
func (*Operation) DisableKillWholeLine ¶ added in v1.0.0
func (o *Operation) DisableKillWholeLine()
func (*Operation) EnableKillWholeLine ¶ added in v1.0.0
func (o *Operation) EnableKillWholeLine()
func (Operation) EnterCompleteMode ¶
func (o Operation) EnterCompleteMode(offset int, candidates CandidateList)
func (Operation) EnterCompleteSelectMode ¶
func (o Operation) EnterCompleteSelectMode()
func (Operation) EnterPasswordMode ¶
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 (Operation) HandleCompleteSelect ¶
func (Operation) HandleVimNormal ¶
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 (Operation) IsSearchMode ¶
func (o Operation) IsSearchMode() bool
func (Operation) OnComplete ¶
func (o Operation) OnComplete() bool
func (Operation) PasswordConfig ¶
func (o Operation) PasswordConfig() *Config
func (*Operation) PasswordEx ¶
func (*Operation) PasswordWithConfig ¶
func (*Operation) ResetHistory ¶
func (o *Operation) ResetHistory()
func (*Operation) SaveHistory ¶
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 (Operation) SearchRefresh ¶
func (o Operation) SearchRefresh(x int)
func (*Operation) SetHistoryPath ¶
func (*Operation) SetMaskRune ¶
func (Operation) SetVimMode ¶
func (o Operation) SetVimMode(on bool)
type PrefixCompleter ¶
type PrefixCompleter struct {
Name []rune
Dynamic bool
Callback DynamicCompleteFunc
Children []PrefixCompleterInterface
FormatAsIdentifier bool
AppendSpace bool
AppendOnly bool
}
func NewPrefixCompleter ¶
func NewPrefixCompleter(pc ...PrefixCompleterInterface) *PrefixCompleter
func PcItem ¶
func PcItem(name string, pc ...PrefixCompleterInterface) *PrefixCompleter
func PcItemDynamic ¶
func PcItemDynamic(callback DynamicCompleteFunc, pc ...PrefixCompleterInterface) *PrefixCompleter
func (*PrefixCompleter) Do ¶
func (p *PrefixCompleter) Do(line []rune, pos int, index int) (newLine CandidateList, offset int)
func (*PrefixCompleter) GetChildren ¶
func (p *PrefixCompleter) GetChildren() []PrefixCompleterInterface
func (*PrefixCompleter) GetDynamicNames ¶
func (p *PrefixCompleter) GetDynamicNames(line []rune, origLine []rune, index int) CandidateList
func (*PrefixCompleter) GetName ¶
func (p *PrefixCompleter) GetName() Candidate
func (*PrefixCompleter) IsAppendOnly ¶ added in v1.0.0
func (p *PrefixCompleter) IsAppendOnly() bool
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, index int) (newLine CandidateList, length int)
GetName() Candidate
GetChildren() []PrefixCompleterInterface
SetChildren(children []PrefixCompleterInterface)
IsAppendOnly() bool
}
type RemoteCli ¶
type RemoteCli struct {
// contains filtered or unexported fields
}
func (*RemoteCli) MarkIsTerminal ¶
type RemoteSvr ¶
type RemoteSvr struct {
// contains filtered or unexported fields
}
func (*RemoteSvr) EnterRawMode ¶
func (*RemoteSvr) ExitRawMode ¶
func (*RemoteSvr) GotIsTerminal ¶
func (*RemoteSvr) GotReportWidth ¶
func (*RemoteSvr) HandleConfig ¶
func (*RemoteSvr) IsTerminal ¶
type Result ¶
func (*Result) CanContinue ¶
type RuneBuffer ¶
func NewRuneBuffer ¶
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) FormatAsIdentifier ¶ added in v1.0.0
func (r *RuneBuffer) FormatAsIdentifier(s []rune) ([]rune, int)
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) ReplaceRunes ¶ added in v1.0.0
func (r *RuneBuffer) ReplaceRunes(s []rune, offset int, formatAsIdentifier bool, appendSpace bool)
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) ColorFilter ¶
func (Runes) EqualRuneFold ¶
func (Runes) HasPrefixFold ¶
func (Runes) IndexAllBck ¶
Search in runes from end to front
func (Runes) TrimSpaceLeft ¶
type SegmentComplete ¶
type SegmentComplete struct {
SegmentCompleter
}
func SegmentAutoComplete ¶
func SegmentAutoComplete(completer SegmentCompleter) *SegmentComplete
func (*SegmentComplete) Do ¶
func (c *SegmentComplete) Do(line []rune, pos int, index int) (newLine CandidateList, 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.
type TabCompleter ¶
type TabCompleter struct{}
func (*TabCompleter) Do ¶
func (t *TabCompleter) Do([]rune, int, int) (CandidateList, int)
type Terminal ¶
type Terminal struct {
// contains filtered or unexported fields
}
func NewTerminal ¶
func (*Terminal) EnterRawMode ¶
func (*Terminal) ExitRawMode ¶
func (*Terminal) SleepToResume ¶
func (t *Terminal) SleepToResume()
SleepToResume will sleep myself, and return only if I'm resumed.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
example
|
|
|
readline-demo
command
|
|
|
readline-im
command
|
|
|
readline-multiline
command
|
|
|
readline-pass-strength
command
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. |