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 ¶
This section is empty.
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 ReadEvents ¶
type ReadEvents struct { GuiEvents chan gui.Event GuiEventHandler func(gui.Event) error IntEvents chan os.Signal RawEvents 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 after it has been normalised by the parser StyleInput Style = iota // help information StyleHelp // terminal prompt StylePromptCPUStep StylePromptVideoStep StylePromptConfirm // 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 // non-error information from a command. distinct from StyleFeedback // because some terminal may need to do some additional output processing // (eg. inserting an additional newline) StyleFeedbackNonInteractive // information as a result of an error. errors can be generated by the // emulation or the debugger StyleError )
List of print styles
func (Style) IncludeInScriptOutput ¶
IncludeInScriptOutput returns true if print styles is to be included in the output of a script recording
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. |