Documentation
¶
Overview ¶
Package terminal defines the operations required for command-line interaction with the debugger.
For flexibility, terminal interaction happens through the Terminal interface. There are two reference implementations of this interface: the PlainTerminal and the ColorTerminal, found respectively in the plainterm and colorterm sub-packages.
Index ¶
Constants ¶
const ( UserInterrupt = "user interrupt" UserAbort = "user abort" )
Sentinal errors.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Broker ¶
type Broker interface {
GetTerminal() Terminal
}
Broker implementations can identify a terminal.
type Input ¶
type Input interface {
// the TermRead loop should listenfor events on eventChannel and call
// eventHandler with the received event as the argument.
//
// for example, where someChannel is private to the Input implementation
//
// select {
// case <- someChannel
// case ev := <-eventChannel:
// return 0, eventHandler(ev)
// }
TermRead(buffer []byte, prompt Prompt, events *ReadEvents) (int, error)
// TermReadCheck() returns true if there is input to be read. not all
// terminals will be able to implement this meaningfully. returning false
// is fine.
TermReadCheck() bool
// IsInteractive() should return true for implementations that require user
// interaction. implementations that don't require a user to interact with
// the debugger should return false.
IsInteractive() bool
}
Input defines the operations required by an interface that allows input.
type Prompt ¶
type Prompt struct {
Content string
Type PromptType
// valid for PromptTypeCPUStep and PromptTypeVideoStep
CPURdy bool
Recording bool
}
Prompt specifies the prompt text and the prompt style. For CPUStep and VideoStep prompt types thre is some additional information that can be used to decorate the prompt.
type PromptType ¶ added in v0.3.4
type PromptType int
PromptType identifies the type of information in the prompt.
const ( PromptTypeCPUStep PromptType = iota PromptTypeVideoStep PromptTypeConfirm )
List of prompt types.
type ReadEvents ¶
type ReadEvents struct {
GuiEvents chan gui.Event
GuiEventHandler func(gui.Event) error
IntEvents chan os.Signal
// RawEvents allows functions to be pushed into the debugger goroutine
RawEvents chan func()
// RawEventsImm is a variation of RawEvents that returns control to the
// input loop as soon as the function is run.
//
// Useful when pushed function have side-effects that must be serviced by
// the input loop immediately.
RawEventsImm chan func()
}
ReadEvents encapsulates the event channels that need to be monitored during a TermRead.
type Style ¶
type Style int
Style is used to identify the category of text being sent to the Terminal.TermPrint() function. The terminal implementation can interpret this how it sees fit - the most likely treatment is to print different styles in different colours.
const ( // input from the user being echoed back to the user. echoed input has been // "normalised" (eg. capitalised, leading space removed, etc.) StyleEcho Style = iota // information from the internal help system. StyleHelp // non-error information from a command. StyleFeedback // disassembly output at CPU cycle boundaries. StyleCPUStep // disassembly output at video cycle boundaries. StyleVideoStep // information about the machine. StyleInstrument // information as a result of an error. errors can be generated by the // emulation or the debugger. StyleError // information from the internal logging system. StyleLog )
List of terminal styles.
type TabCompletion ¶
TabCompletion defines the operations required for tab completion. A good implementation can be found in the commandline sub-package.
type Terminal ¶
type Terminal interface {
// Userinterfaces, by definition, embed the Input and Output interfaces
Input
Output
// initialise the terminal. not all terminal implementations will need to
// do anything.
Initialise() error
// restore the terminal to it's original state, if possible. for example,
// we could use this to make sure the terminal is returned to canonical
// mode. not all terminal implementations will need to do anything.
CleanUp()
// register the tab completion engine to use with the UserInput
// implementation
RegisterTabCompletion(TabCompletion)
// Silence all input and output (except error messages)
Silence(silenced bool)
}
Terminal defines the operations required by the debugger's command line interface.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package colorterm implements the Terminal interface for the gopher2600 debugger.
|
Package colorterm implements the Terminal interface for the gopher2600 debugger. |
|
easyterm
Package easyterm is a wrapper for "github.com/pkg/term/termios".
|
Package easyterm is a wrapper for "github.com/pkg/term/termios". |
|
easyterm/ansi
Package ansi defines ANSI control codes for styles and colours.
|
Package ansi defines ANSI control codes for styles and colours. |
|
Package commandline facilitates parsing of command line input.
|
Package commandline facilitates parsing of command line input. |
|
Package plainterm implements the Terminal interface for the gopher2600 debugger.
|
Package plainterm implements the Terminal interface for the gopher2600 debugger. |