Documentation ¶
Index ¶
- Constants
- Variables
- func GetKey(tty1 MinimumTty) (string, error)
- func ResetCharWidth()
- func SGR1(n1 int) int
- func SGR2(n1, n2 int) int
- func SGR3(n1, n2, n3 int) int
- func SGR4(n1, n2, n3, n4 int) int
- func SetCharWidth(c rune, width int)
- type Buffer
- func (B *Buffer) CurrentWord() (string, int)
- func (B *Buffer) CurrentWordTop() (wordTop int)
- func (B *Buffer) Delete(pos int, n int) WidthT
- func (B *Buffer) DrawFromHead()
- func (B *Buffer) GetKey() (string, error)
- func (B *Buffer) GetWidthBetween(from int, to int) WidthT
- func (B *Buffer) GotoHead()
- func (buf *Buffer) InsertAndRepaint(str string)
- func (B *Buffer) InsertString(pos int, s string) int
- func (buf *Buffer) RefreshColor() int
- func (B *Buffer) RepaintAfterPrompt()
- func (B *Buffer) RepaintAll()
- func (buf *Buffer) ReplaceAndRepaint(pos int, str string)
- func (B *Buffer) ResetViewStart()
- func (B Buffer) String() string
- func (B *Buffer) SubString(start, end int) string
- func (B *Buffer) ViewWidth() WidthT
- func (B *Buffer) Write(b []byte) (int, error)
- type Coloring
- type Editor
- type IHistory
- type KeyFuncT
- type KeyGetter
- type KeyGoFuncT
- type KeyMap
- type MinimumTty
- type Moji
- type Result
- type WidthT
Constants ¶
const ( Black = (1 << (colorCodeBitSize * 2)) + (49 << colorCodeBitSize) + 30 + iota Red Green Yellow Blue Magenta Cyan White DefaultForeGroundColor )
const ( DarkGray = (22 << (colorCodeBitSize * 2)) + (49 << colorCodeBitSize) + 30 + iota DarkRed DarkGree DarkYellow DarkBlue DarkMagenta DarkCyan DarkWhite )
const ( K_BACKSPACE = "BACKSPACE" K_CAPSLOCK = "CAPSLOCK" K_CLEAR = "CLEAR" K_CTRL = "CTRL" K_CTRL_A = "C_A" K_CTRL_B = "C_B" K_CTRL_BREAK = "C_BREAK" K_CTRL_C = "C_C" K_CTRL_D = "C_D" K_CTRL_E = "C_E" K_CTRL_F = "C_F" K_CTRL_G = "C_G" K_CTRL_H = "C_H" K_CTRL_I = "C_I" K_CTRL_J = "C_J" K_CTRL_K = "C_K" K_CTRL_L = "C_L" K_CTRL_M = "C_M" K_CTRL_N = "C_N" K_CTRL_O = "C_O" K_CTRL_P = "C_P" K_CTRL_Q = "C_Q" K_CTRL_R = "C_R" K_CTRL_S = "C_S" K_CTRL_T = "C_T" K_CTRL_U = "C_U" K_CTRL_V = "C_V" K_CTRL_W = "C_W" K_CTRL_X = "C_X" K_CTRL_Y = "C_Y" K_CTRL_Z = "C_Z" K_CTRL_UNDERBAR = "C_UNDERBAR" K_CTRL_LBRACKET = "C_[" K_CTRL_RBRACKET = "C_]" K_CTRL_BACKSLASH = "C_\\" K_CTRL_CARET = "C_^" K_DELETE = "DEL" K_DOWN = "DOWN" K_CTRL_DOWN = "C_DOWN" K_END = "END" K_ENTER = "ENTER" K_ESCAPE = "ESCAPE" K_F1 = "F1" K_F10 = "F10" K_F11 = "F11" K_F12 = "F12" K_F13 = "F13" K_F14 = "F14" K_F15 = "F15" K_F16 = "F16" K_F17 = "F17" K_F18 = "F18" K_F19 = "F19" K_F2 = "F2" K_F20 = "F20" K_F21 = "F21" K_F22 = "F22" K_F23 = "F23" K_F24 = "F24" K_F3 = "F3" K_F4 = "F4" K_F5 = "F5" K_F6 = "F6" K_F7 = "F7" K_F8 = "F8" K_F9 = "F9" K_HOME = "HOME" K_LEFT = "LEFT" K_CTRL_LEFT = "C_LEFT" K_PAGEDOWN = "PAGEDOWN" K_PAGEUP = "PAGEUP" K_PAUSE = "PAUSE" K_RIGHT = "RIGHT" K_CTRL_RIGHT = "C_RIGHT" K_SHIFT = "SHIFT" K_UP = "UP" K_CTRL_UP = "C_UP" K_ALT_A = "M_A" K_ALT_B = "M_B" K_ALT_BACKSPACE = "M_BACKSPACE" K_ALT_BREAK = "M_BREAK" K_ALT_C = "M_C" K_ALT_D = "M_D" K_ALT_E = "M_E" K_ALT_F = "M_F" K_ALT_G = "M_G" K_ALT_H = "M_H" K_ALT_I = "M_I" K_ALT_J = "M_J" K_ALT_K = "M_K" K_ALT_L = "M_L" K_ALT_M = "M_M" K_ALT_N = "M_N" K_ALT_O = "M_O" K_ALT_P = "M_P" K_ALT_Q = "M_Q" K_ALT_R = "M_R" K_ALT_S = "M_S" K_ALT_T = "M_T" K_ALT_U = "M_U" K_ALT_V = "M_V" K_ALT_W = "M_W" K_ALT_X = "M_X" K_ALT_Y = "M_Y" K_ALT_Z = "M_Z" K_ALT_OEM_2 = "M_OEM_2" )
const ( F_ACCEPT_LINE = "ACCEPT_LINE" F_BACKWARD_CHAR = "BACKWARD_CHAR" F_BACKWARD_WORD = "BACKWARD_WORD" F_BACKWARD_DELETE_CHAR = "BACKWARD_DELETE_CHAR" F_BEGINNING_OF_LINE = "BEGINNING_OF_LINE" F_CLEAR_SCREEN = "CLEAR_SCREEN" F_DELETE_CHAR = "DELETE_CHAR" F_DELETE_OR_ABORT = "DELETE_OR_ABORT" F_END_OF_LINE = "END_OF_LINE" F_FORWARD_CHAR = "FORWARD_CHAR" F_FORWARD_WORD = "FORWARD_WORD" F_HISTORY_DOWN = "HISTORY_DOWN" // for compatible F_HISTORY_UP = "HISTORY_UP" // for compatible F_NEXT_HISTORY = "NEXT_HISTORY" F_PREVIOUS_HISTORY = "PREVIOUS_HISTORY" F_INTR = "INTR" F_ISEARCH_BACKWARD = "ISEARCH_BACKWARD" F_KILL_LINE = "KILL_LINE" F_KILL_WHOLE_LINE = "KILL_WHOLE_LINE" F_PASS = "PASS" F_QUOTED_INSERT = "QUOTED_INSERT" F_REPAINT_ON_NEWLINE = "REPAINT_ON_NEWLINE" F_SWAPCHAR = "SWAPCHAR" F_UNIX_LINE_DISCARD = "UNIX_LINE_DISCARD" F_UNIX_WORD_RUBOUT = "UNIX_WORD_RUBOUT" F_YANK = "YANK" F_YANK_WITH_QUOTE = "YANK_WITH_QUOTE" F_UNDO = "UNDO" )
Variables ¶
var ( // SurrogatePairOk is true when the surrogated pair unicode is supported // If it is false, <NNNN> is displayed instead. SurrogatePairOk = isWindowsTerminal || isWezTerm || isContour // ZeroWidthJoinSequenceOk is true when ZWJ(U+200D) is supported. // If it is false, <NNNN> is displayed instead. ZeroWidthJoinSequenceOk = isWindowsTerminal || isWezTerm || isContour // VariationSequenceOk is true when Variation Sequences are supported. // If it is false, <NNNN> is displayed instead. VariationSequenceOk = isWindowsTerminal || isWezTerm || isContour // ModifierSequenceOk is false, SkinTone sequence are treated as two // character ModifierSequenceOk = isWindowsTerminal || isWezTerm )
var CtrlC = (errors.New("^C"))
CtrlC is the error when Ctrl-C is pressed.
var Delimiters = "\"'"
Delimiters means the quationmarks. The whitespace enclosed by them are not treat as parameters separator.
Functions ¶
func ResetCharWidth ¶
func ResetCharWidth()
ResetCharWidth resets the cache for the width of characters.
func SetCharWidth ¶
SetCharWidth sets the width of the character into the cache.
Types ¶
type Buffer ¶
type Buffer struct { *Editor Buffer []_Cell ViewStart int // contains filtered or unexported fields }
Buffer is ReadLine's internal data structure
func (*Buffer) CurrentWord ¶
CurrentWord returns the current word the cursor exists and word's position
func (*Buffer) CurrentWordTop ¶
CurrentWordTop returns the position of the current word the cursor exists
func (*Buffer) Delete ¶
Delete remove Buffer[pos:pos+n]. It returns the width to clear the end of line. It does not update screen.
func (*Buffer) DrawFromHead ¶
func (B *Buffer) DrawFromHead()
DrawFromHead draw all text in viewarea and move screen-cursor to the position where it should be.
func (*Buffer) GetWidthBetween ¶
GetWidthBetween returns the width between start and end
func (*Buffer) GotoHead ¶
func (B *Buffer) GotoHead()
GotoHead move screen-cursor to the top of the viewarea. It should be called before text is changed.
func (*Buffer) InsertAndRepaint ¶
InsertAndRepaint inserts str and repaint the editline.
func (*Buffer) InsertString ¶
InsertString inserts string s at pos (Do not update screen) It returns the count of runes
func (*Buffer) RefreshColor ¶ added in v0.6.0
func (*Buffer) RepaintAfterPrompt ¶
func (B *Buffer) RepaintAfterPrompt()
RepaintAfterPrompt repaints the all characters in the editline except for prompt.
func (*Buffer) RepaintAll ¶
func (B *Buffer) RepaintAll()
RepaintAll repaints the all characters in the editline including prompt.
func (*Buffer) ReplaceAndRepaint ¶
ReplaceAndRepaint replaces the string between `pos` and cursor's position to `str`
func (*Buffer) ResetViewStart ¶
func (B *Buffer) ResetViewStart()
ResetViewStart set ViewStart the new value which should be. It does not update screen.
type Editor ¶
type Editor struct { KeyMap History IHistory Writer io.Writer Out *bufio.Writer Prompt func() (int, error) Default string Cursor int LineFeed func(Result) OpenKeyGetter func() (KeyGetter, error) Coloring Coloring HistoryCycling bool }
Editor is the main class to hold the parameter for ReadLine
type IHistory ¶
IHistory is the interface ReadLine can use as container for history. It can be set to Editor.History field
type KeyGetter ¶
type KeyGetter interface { MinimumTty Close() error Size() (int, int, error) GetResizeNotifier() func() (int, int, bool) }
KeyGetter is the interface from which the ReadLine can read console input
func NewDefaultTty ¶
NewDefaultTty returns the instance for KeyGetter, which is the customized version of go-tty.TTY
type KeyGoFuncT ¶
KeyGoFuncT is the implement of KeyFuncT which has a name and a function
type KeyMap ¶
KeyMap is the class for key-bindings
var GlobalKeyMap KeyMap
GlobalKeyMap is the global keymap for users' customizing
func (*KeyMap) BindKeyClosure ¶
BindKeyClosure binds closure to key by name
func (*KeyMap) BindKeyFunc ¶
BindKeyFunc binds function to key
func (*KeyMap) BindKeySymbol ¶
BindKeySymbol assigns function to key by names.
func (*KeyMap) GetBindKey ¶
GetBindKey returns the function assigned to given key
type MinimumTty ¶ added in v0.5.1
type Moji ¶
Moji is the interface for minimum unit to edit in readline
When we make a new implement type of Moji, we have to append the code in the function: string2moji() and KeyFuncInsertSelf().
type Result ¶
type Result int
Result is the type for readline's result.
const ( // CONTINUE is returned by key-functions to continue the line editor CONTINUE Result = iota // ENTER is returned by key-functions when Enter key is pressed ENTER Result = iota // ABORT is returned by key-functions when Ctrl-D is pressed with no command-line ABORT Result = iota // INTR is returned by key-functions when Ctrl-C is pressed INTR Result = iota )