Documentation
¶
Overview ¶
Package oviewer provides a pager for terminals.
oviewer displays the contents of the file or reader etc... on the current terminal screen. After running a Run, oviewer does not return until the user finishes running. So if you want to do something in concurrent, you need to use goroutine.
There is also a simple usage example below: https://github.com/noborus/mdviewer/
package main import ( "github.com/noborus/ov/oviewer" ) func main() { ov, err := oviewer.Open("main.go") if err != nil { panic(err) } if err := ov.Run(); err != nil { panic(err) } }
Index ¶
- Constants
- Variables
- func ContentsToStr(lc contents) (string, widthPos)
- func DuplicateKeyBind(k KeyBind) string
- func KeyBindString(k KeyBind) string
- func NewChunk(start int64) *chunk
- func NewStore() *store
- func RangeStyle(lc contents, start int, end int, s OVStyle)
- func RawStrToContents(str string, tabWidth int) contents
- func SetShrinkContent(shrink rune)
- func StrToContents(str string, tabWidth int) contents
- func ToTcellStyle(s OVStyle) tcell.Style
- type Command
- type Compressed
- type Config
- type Converter
- type Document
- func (m *Document) BackSearch(ctx context.Context, searcher Searcher, chunkNum int, line int) (int, error)
- func (m *Document) BackSearchChunk(ctx context.Context, searcher Searcher, chunkNum int, line int) (int, error)
- func (m *Document) BackSearchChunkNonMatch(ctx context.Context, searcher Searcher, chunkNum int, line int) (int, error)
- func (m *Document) BackSearchLine(ctx context.Context, searcher Searcher, lineNum int) (int, error)
- func (m *Document) BufEOF() bool
- func (m *Document) BufEndNum() int
- func (m *Document) BufStartNum() int
- func (m *Document) ClearCache()
- func (m *Document) ControlFile(file *os.File) error
- func (m *Document) ControlLog() error
- func (m *Document) ControlReader(r io.Reader, reload func() *bufio.Reader) error
- func (m *Document) CurrentLN() int
- func (m *Document) Export(w io.Writer, start int, end int) error
- func (m *Document) GetLine(n int) string
- func (m *Document) Line(n int) ([]byte, error)
- func (m *Document) LineStr(n int) (string, error)
- func (m *Document) LineString(n int) string
- func (m *Document) NewCache() error
- func (m *Document) Search(ctx context.Context, searcher Searcher, chunkNum int, lineNum int) (int, error)
- func (m *Document) SearchChunk(ctx context.Context, searcher Searcher, chunkNum int, lineNum int) (int, error)
- func (m *Document) SearchChunkNonMatch(ctx context.Context, searcher Searcher, chunkNum int, lineNum int) (int, error)
- func (m *Document) SearchLine(ctx context.Context, searcher Searcher, lineNum int) (int, error)
- func (m *Document) WaitEOF()
- type Eventer
- type Input
- type InputMode
- type KeyBind
- type LineC
- type LineNumber
- type LogDocument
- type OVPromptConfig
- type OVPromptConfigNormal
- type OVStyle
- type Root
- func (root *Root) AddDocument(m *Document)
- func (root *Root) BackSearch(str string)
- func (root *Root) Cancel(context.Context)
- func (root *Root) Close()
- func (root *Root) CloseAllFilter()
- func (root *Root) CloseDocument(_ *Document)
- func (root *Root) CopySelect(context.Context)
- func (root *Root) DocumentLen() int
- func (root *Root) ExpandColumn(ctx context.Context, cursor int) error
- func (root *Root) Filter(str string, nonMatch bool)
- func (root *Root) MoveBottom()
- func (root *Root) MoveLine(num int)
- func (root *Root) MoveTop()
- func (root *Root) Paste(context.Context)
- func (root *Root) Quit(context.Context)
- func (root *Root) Reload(context.Context)
- func (root *Root) Run() error
- func (root *Root) Search(str string)
- func (root *Root) SetConfig(config Config)
- func (root *Root) SetDocument(docNum int) error
- func (root *Root) SetKeyHandler(ctx context.Context, name string, keys []string, handler func(context.Context)) error
- func (root *Root) SetWatcher(watcher *fsnotify.Watcher)
- func (root *Root) ShrinkColumn(ctx context.Context, cursor int) error
- func (root *Root) Suspend()
- func (root *Root) TailSync(ctx context.Context)
- func (root *Root) ViewSync(context.Context)
- func (root *Root) WriteLog()
- func (root *Root) WriteOriginal()
- func (root *Root) WriteQuit(ctx context.Context)
- type RulerType
- type SCR
- type Searcher
Examples ¶
Constants ¶
const ( Unspecified specifiedAlign = iota RightAlign LeftAlign )
const ( // Colors256 is the index of the 256 color. 8-bit colors. 0-255. Colors256 = 5 // ColorsRGB is the index of the RGB color. 24-bit colors. r:0-255 g:0-255 b:0-255. ColorsRGB = 2 )
const ( DocNormal = iota DocHelp DocLog DocFilter )
document type.
const ( COLS = 80 ROWS = 24 )
virtual terminal size.
const EOFC rune = '~'
EOFC is the EOF character.
const FormFeed = "\f"
FormFeed is the delimiter that separates the sections. The default delimiter that separates single output from watch.
const MaxWriteLog int = 10
MaxWriteLog is the maximum number of lines to output to the log when the debug flag is enabled.
const MinStartX = -10
const MouseFlags = tcell.MouseDragEvents
MouseFlags represents which events of the mouse should be captured. Set the mode to MouseDragEvents when the mouse is enabled in oviewer. Does not track mouse movements except when dragging.
const QuitSmallCountDown = 10
QuitSmallCountDown is the countdown to quit if the output fits on one screen. UpdateInterval(50 * time.Millisecond) * 10 = 500ms.
Variables ¶
var ( // MemoryLimit is a number that limits the chunks to load into memory. MemoryLimit int // MemoryLimitFile is a number that limits the chunks loading a file into memory. MemoryLimitFile int // OverStrikeStyle represents the overstrike style. OverStrikeStyle tcell.Style // OverLineStyle represents the overline underline style. OverLineStyle tcell.Style // SkipExtract is a flag to skip extracting compressed files. SkipExtract bool )
var ( // Redirect to standard output. // echo "t" | ov> out STDOUTPIPE *os.File // Redirects the error output of ov --exec. // ov --exec -- command 2> out STDERRPIPE *os.File )
ov output destination.
var ( // ErrOutOfRange indicates that value is out of range. ErrOutOfRange = errors.New("out of range") // ErrNotInMemory indicates that value is not in memory. ErrNotInMemory = errors.New("not in memory") // ErrFatalCache indicates that the cache value had a fatal error. ErrFatalCache = errors.New("fatal error in cache value") // ErrMissingFile indicates that the file does not exist. ErrMissingFile = errors.New("missing filename") // ErrIsDirectory indicates that specify a directory instead of a file. ErrIsDirectory = errors.New("is a directory") // ErrNotFound indicates not found. ErrNotFound = errors.New("not found") // ErrNotTerminal indicates that it is not a terminal. ErrNotTerminal = errors.New("not a terminal") // ErrCancel indicates cancel. ErrCancel = errors.New("cancel") // ErrInvalidNumber indicates an invalid number. ErrInvalidNumber = errors.New("invalid number") // ErrFailedKeyBind indicates keybinding failed. ErrFailedKeyBind = errors.New("failed to set keybind") // ErrSignalCatch indicates that the signal has been caught. ErrSignalCatch = errors.New("signal catch") // ErrAlreadyClose indicates that it is already closed. ErrAlreadyClose = errors.New("already closed") // ErrCannotClose indicates that it cannot be closed. ErrCannotClose = errors.New("cannot close") // ErrRequestClose indicates that the request is to close. ErrRequestClose = errors.New("request close") // ErrNoColumn indicates that cursor specified a nonexistent column. ErrNoColumn = errors.New("no column") // ErrNoDelimiter indicates that the line containing the delimiter could not be found. ErrNoDelimiter = errors.New("no delimiter") // ErrNoMoreSection indicates that the section could not be found. ErrNoMoreSection = errors.New("no more section") // ErrOverScreen indicates that the specified screen is out of range. ErrOverScreen = errors.New("over screen") // ErrOutOfChunk indicates that the specified Chunk is out of range. ErrOutOfChunk = errors.New("out of chunk") // ErrNotLoaded indicates that it cannot be loaded. ErrNotLoaded = errors.New("not loaded") // ErrEOFreached indicates that EOF has been reached. ErrEOFreached = errors.New("EOF reached") // ErrPreventReload indicates that reload is prevented. ErrPreventReload = errors.New("prevent reload") // ErrOverChunkLimit indicates that the chunk limit has been exceeded. ErrOverChunkLimit = errors.New("over chunk limit") // ErrAlreadyLoaded indicates that the chunk already loaded. ErrAlreadyLoaded = errors.New("chunk already loaded") // ErrEvictedMemory indicates that it has been evicted from memory. ErrEvictedMemory = errors.New("evicted memory") // ErrNotAlignMode indicates that it is not an align mode. ErrNotAlignMode = errors.New("not an align mode") // ErrNoColumnSelected indicates that no column is selected. ErrNoColumnSelected = errors.New("no column selected") // ErrInvalidSGR indicates that the SGR is invalid. ErrInvalidSGR = errors.New("invalid SGR") // ErrNotSupport indicates that it is not supported. ErrNotSupport = errors.New("not support") // ErrInvalidDocumentNum indicates that the document number is invalid. ErrInvalidDocumentNum = errors.New("invalid document number") )
var ChunkSize = 10000
ChunkSize is the unit of number of lines to split the file.
var DefaultContent = content{ // contains filtered or unexported fields }
DefaultContent is a blank Content.
var EOFContent = content{ // contains filtered or unexported fields }
EOFContent is EOFC only.
var Shrink rune = '…'
Shrink is a character that represents a shrunk column.
var ShrinkContent = content{ // contains filtered or unexported fields }
ShrinkContent is a content that represents a shrunk column.
var SpaceContent = content{ // contains filtered or unexported fields }
SpaceContent is a space character.
var UpdateInterval = 50 * time.Millisecond
UpdateInterval is the update interval that calls eventUpdate().
var WheelScrollNum = 2
WheelScrollNum is the number of lines to scroll with the mouse wheel.
Functions ¶
func ContentsToStr ¶ added in v0.9.5
func ContentsToStr(lc contents) (string, widthPos)
ContentsToStr returns a converted string and byte position, as well as the content position conversion table.
func DuplicateKeyBind ¶ added in v0.39.0
func KeyBindString ¶
KeyBindString returns keybind as a string for help.
func RangeStyle ¶ added in v0.9.0
RangeStyle applies the style to the specified range. Apply style to contents.
func RawStrToContents ¶ added in v0.37.0
RawStrToContents converts a single-line string into a one line of contents. Does not interpret escape sequences. 1 Content matches the characters displayed on the screen.
func SetShrinkContent ¶ added in v0.37.0
func SetShrinkContent(shrink rune)
SetShrinkContent sets the shrink character.
func StrToContents ¶ added in v0.9.5
StrToContents converts a single-line string into a one line of contents. Parse escape sequences, etc. 1 Content matches the characters displayed on the screen.
func ToTcellStyle ¶ added in v0.10.0
func ToTcellStyle(s OVStyle) tcell.Style
ToTcellStyle convert from OVStyle to tcell style.
Types ¶
type Command ¶ added in v0.20.0
type Command struct {
// contains filtered or unexported fields
}
Command is the structure of the command.
func NewCommand ¶ added in v0.20.0
NewCommand return the structure of Command.
type Compressed ¶ added in v0.8.9
type Compressed int
Compressed represents the type of compression.
const ( // UNCOMPRESSED is an uncompressed format. UNCOMPRESSED Compressed = iota // GZIP is gzip compressed format. GZIP // BZIP2 is bzip2 compressed format. BZIP2 // ZSTD is zstd compressed format. ZSTD // LZ4 is lz4 compressed format. LZ4 // XZ is xz compressed format. XZ )
func (Compressed) String ¶ added in v0.8.9
func (c Compressed) String() string
String returns the string representation of the compressed format.
type Config ¶
type Config struct { // KeyBinding Keybind map[string][]string // Mode represents the operation of the customized mode. Mode map[string]general // ViewMode represents the view mode. // ViewMode sets several settings together and can be easily switched. ViewMode string // Default keybindings. Disabled if the default keybinding is "disable". DefaultKeyBind string // StyleColumnRainbow is the style that applies to the column rainbow color highlight. StyleColumnRainbow []OVStyle // StyleMultiColorHighlight is the style that applies to the multi color highlight. StyleMultiColorHighlight []OVStyle // Prompt is the prompt setting. Prompt OVPromptConfig // StyleHeader is the style that applies to the header. StyleHeader OVStyle // StyleBody is the style that applies to the body. StyleBody OVStyle // StyleLineNumber is a style that applies line number. StyleLineNumber OVStyle // StyleSearchHighlight is the style that applies to the search highlight. StyleSearchHighlight OVStyle // StyleColumnHighlight is the style that applies to the column highlight. StyleColumnHighlight OVStyle // StyleMarkLine is a style that marked line. StyleMarkLine OVStyle // StyleSectionLine is a style that section delimiter line. StyleSectionLine OVStyle // StyleVerticalHeader is a style that applies to the vertical header. StyleVerticalHeader OVStyle // StyleJumpTargetLine is the line that displays the search results. StyleJumpTargetLine OVStyle // StyleAlternate is a style that applies line by line. StyleAlternate OVStyle // StyleOverStrike is a style that applies to overstrike. StyleOverStrike OVStyle // StyleOverLine is a style that applies to overstrike underlines. StyleOverLine OVStyle // StyleRuler is a style that applies to the ruler. StyleRuler OVStyle // StyleHeaderBorder is the style that applies to the boundary line of the header. // The boundary line of the header refers to the visual separator between the header and the rest of the content. StyleHeaderBorder OVStyle // StyleSectionHeaderBorder is the style that applies to the boundary line of the section header. // The boundary line of the section header is the line that separates different sections in the header. StyleSectionHeaderBorder OVStyle // StyleVerticalHeaderBorder is the style that applies to the boundary character of the vertical header. // The boundary character of the vertical header refers to the visual separator that delineates the vertical header from the rest of the content. StyleVerticalHeaderBorder OVStyle // General represents the general behavior. General general // BeforeWriteOriginal specifies the number of lines before the current position. // 0 is the top of the current screen BeforeWriteOriginal int // AfterWriteOriginal specifies the number of lines after the current position. // 0 specifies the bottom of the screen. AfterWriteOriginal int // MemoryLimit is a number that limits chunk loading. MemoryLimit int // MemoryLimitFile is a number that limits the chunks loading a file into memory. MemoryLimitFile int // DisableMouse indicates whether mouse support is disabled. DisableMouse bool // IsWriteOriginal indicates whether the current screen should be written on quit. IsWriteOriginal bool // QuitSmall indicates whether to quit if the output fits on one screen. QuitSmall bool // QuitSmallFilter indicates whether to quit if the output fits on one screen and a filter is applied. QuitSmallFilter bool // CaseSensitive is case-sensitive if true. CaseSensitive bool // SmartCaseSensitive indicates whether lowercase search should ignore case. SmartCaseSensitive bool // RegexpSearch indicates whether to use regular expression search. RegexpSearch bool // Incsearch indicates whether to use incremental search. Incsearch bool // NotifyEOF specifies the number of times to notify EOF. NotifyEOF int // ShrinkChar specifies the character to display when the column is shrunk. ShrinkChar string // DisableColumnCycle indicates whether to disable column cycling. DisableColumnCycle bool // Debug indicates whether to enable debug output. Debug bool }
Config represents the settings of ov.
type Converter ¶ added in v0.37.0
type Converter interface {
// contains filtered or unexported methods
}
Converter is an interface for converting escape sequences, etc.
type Document ¶
type Document struct { // FileName is the file name to display. FileName string // Caption is an additional caption to display after the file name. Caption string // CFormat is a compressed format. CFormat Compressed // WatchMode indicates if watch mode is enabled. WatchMode bool // contains filtered or unexported fields }
Document represents a document with various properties and methods for handling file operations, caching, synchronization, and display settings.
func NewDocument ¶
NewDocument creates and initializes a new Document with default settings. It returns a pointer to the Document and an error if the cache initialization fails.
func OpenDocument ¶ added in v0.10.1
OpenDocument opens a file specified by fileName and returns a Document. If the fileName is "-", it reads from stdin. It returns an error if the file cannot be opened, is a directory, or if there are issues initializing the Document.
func STDINDocument ¶ added in v0.10.1
STDINDocument creates and returns a Document that reads from stdin. It returns a pointer to the Document and an error if the Document initialization fails.
func (*Document) BackSearch ¶ added in v0.20.0
func (m *Document) BackSearch(ctx context.Context, searcher Searcher, chunkNum int, line int) (int, error)
BackSearch searches backward from the specified line.
func (*Document) BackSearchChunk ¶ added in v0.34.0
func (m *Document) BackSearchChunk(ctx context.Context, searcher Searcher, chunkNum int, line int) (int, error)
BackSearchChunk searches backward from the specified line.
func (*Document) BackSearchChunkNonMatch ¶ added in v0.34.0
func (m *Document) BackSearchChunkNonMatch(ctx context.Context, searcher Searcher, chunkNum int, line int) (int, error)
BackSearchChunkNonMatch returns unmatched line number.
func (*Document) BackSearchLine ¶ added in v0.10.1
BackSearchLine does a backward search on the document and returns a matching line number.
func (*Document) BufEOF ¶
BufEOF checks if the end of the file (EOF) has been reached in the document buffer. Returns: - A boolean value: true if EOF is reached, false otherwise.
func (*Document) BufStartNum ¶ added in v0.30.0
BufStartNum returns the starting line number of the buffer.
func (*Document) ClearCache ¶
func (m *Document) ClearCache()
ClearCache clears the LRU cache of the document. It does not take any parameters and does not return any values.
func (*Document) ControlFile ¶ added in v0.20.0
ControlFile controls file read and loads in chunks. ControlFile can be reloaded by file name.
func (*Document) ControlLog ¶ added in v0.20.0
ControlLog controls log. ControlLog is only supported reload.
func (*Document) ControlReader ¶ added in v0.20.0
ControlReader is the controller for io.Reader. Assuming call from Exec. reload executes the argument function.
func (*Document) CurrentLN ¶ added in v0.10.0
CurrentLN returns the currently displayed line number.
func (*Document) GetLine ¶
GetLine returns one line from buffer. Deprecated: Use Document.LineString instead.
func (*Document) LineString ¶ added in v0.20.0
LineString returns one line from buffer. Deprecated: Use Document.LineStr instead.
func (*Document) NewCache ¶
NewCache initializes a new LRU cache for the Document. It returns an error if the cache cannot be created.
func (*Document) Search ¶ added in v0.20.0
func (m *Document) Search(ctx context.Context, searcher Searcher, chunkNum int, lineNum int) (int, error)
Search searches for the search term and moves to the nearest matching line.
func (*Document) SearchChunk ¶ added in v0.34.0
func (m *Document) SearchChunk(ctx context.Context, searcher Searcher, chunkNum int, lineNum int) (int, error)
SearchChunk searches forward from the specified line.
func (*Document) SearchChunkNonMatch ¶ added in v0.34.0
func (m *Document) SearchChunkNonMatch(ctx context.Context, searcher Searcher, chunkNum int, lineNum int) (int, error)
SearchChunkNonMatch returns unmatched line number.
func (*Document) SearchLine ¶ added in v0.10.1
SearchLine searches the document and returns the matching line number.
type Eventer ¶ added in v0.13.0
type Eventer interface { // Mode returns the input mode. Mode() InputMode // Prompt returns the prompt string in the input field. Prompt() string // Confirm returns the event when the input is confirmed. Confirm(i string) tcell.Event // Up returns strings when the up key is pressed during input. Up(i string) string // Down returns strings when the down key is pressed during input. Down(i string) string }
Eventer is a generic interface for inputs.
type Input ¶
type Input struct { Event Eventer // Candidate is prepared when the history is used as an input candidate. // Header and SkipLines use numbers up and down instead of candidate. DelimiterCandidate *candidate ModeCandidate *candidate SearchCandidate *candidate GoCandidate *candidate TabWidthCandidate *candidate WatchCandidate *candidate WriteBACandidate *candidate SectionDelmCandidate *candidate SectionStartCandidate *candidate MultiColorCandidate *candidate JumpTargetCandidate *candidate SaveBufferCandidate *candidate ConverterCandidate *candidate // contains filtered or unexported fields }
Input represents the status of various inputs. Retain each input list to save the input history.
type InputMode ¶
type InputMode int
InputMode represents the state of the input.
const ( // Normal is normal mode. Normal InputMode = iota ViewMode // ViewMode is a view selection input mode. Search // Search is a search input mode. Backsearch // Backsearch is a backward search input mode. Filter // Filter is a filter input mode. Goline // Goline is a move input mode. Header // Header is the number of headers input mode. Delimiter // Delimiter is a delimiter input mode. TabWidth // TabWidth is the tab number input mode. Watch // Watch is the watch interval input mode. SkipLines // SkipLines is the number of lines to skip. WriteBA // WriteBA is the number of ranges to write at quit. SectionDelimiter // SectionDelimiter is a section delimiter input mode. SectionStart // SectionStart is a section start position input mode. MultiColor // MultiColor is multi-word coloring. JumpTarget // JumpTarget is the position to display the search results. SaveBuffer // SaveBuffer is the save buffer. SectionNum // SectionNum is the section number. ConvertType // ConvertType is the convert type. VerticalHeader // VerticalHeader is the number of vertical headers input mode. HeaderColumn // HeaderColumn is the number of vertical header columns input mode. )
type KeyBind ¶
KeyBind is the mapping of action and key.
func GetKeyBinds ¶
GetKeyBinds returns the current key mapping based on the provided configuration. If the default key bindings are not disabled in the configuration, it initializes the key bindings with the default values and then overwrites them with any custom key bindings specified in the configuration file.
Parameters:
- config: The configuration object that contains the key binding settings.
Returns:
- KeyBind: A map where the keys are action names and the values are slices of strings representing the keys assigned to those actions.
type LineC ¶ added in v0.15.0
type LineC struct {
// contains filtered or unexported fields
}
LineC is one line of information. Contains content, string, location information.
type LineNumber ¶ added in v0.15.0
type LineNumber struct {
// contains filtered or unexported fields
}
LineNumber is Number of logical lines and number of wrapping lines on the screen.
type LogDocument ¶ added in v0.34.0
type LogDocument struct { *Document // contains filtered or unexported fields }
func NewLogDoc ¶ added in v0.5.0
func NewLogDoc() (*LogDocument, error)
NewLogDoc generates a document for log. NewLogDoc makes LogDoc the output destination of go's standard logger.
type OVPromptConfig ¶ added in v0.31.0
type OVPromptConfig struct { // Normal is the normal prompt setting. Normal OVPromptConfigNormal }
OVPromptConfig is the prompt setting.
type OVPromptConfigNormal ¶ added in v0.31.0
type OVPromptConfigNormal struct { // ShowFilename controls whether to display filename. ShowFilename bool // InvertColor controls whether the text is colored and inverted. InvertColor bool // ProcessOfCount controls whether to display the progress of the count. ProcessOfCount bool }
OVPromptConfigNormal is the normal prompt setting.
type OVStyle ¶ added in v0.11.0
type OVStyle struct { // Background is a color name string. Background string // Foreground is a color name string. Foreground string // UnderlineColor is a underline color name string. UnderlineColor string // UnderlineStyle is a underline style. UnderlineStyle string // VerticalAlignType is a vertical align type. VerticalAlignType int // If true, add blink. Blink bool // If true, add bold. Bold bool // If true, add dim. Dim bool // If true, add italic. Italic bool // If true, add reverse. Reverse bool // If true, add underline. Underline bool // If true, add strike through. StrikeThrough bool // If true, add overline (not yet supported). OverLine bool // If true, sub blink. UnBlink bool // If true, sub bold. UnBold bool // If true, sub dim. UnDim bool // If true, sub italic. UnItalic bool // If true, sub reverse. UnReverse bool // If true, sub underline. UnUnderline bool // If true, sub strike through. UnStrikeThrough bool // if true, sub overline (not yet supported). UnOverLine bool }
OVStyle represents a style in addition to the original style.
type Root ¶
type Root struct { // tcell.Screen is the root screen. tcell.Screen // Doc is the current document. Doc *Document // Original string. OriginStr string // DocList is the list of documents. DocList []*Document // Config is the configuration of ov. Config // Original position at the start of search. OriginPos int // CurrentDoc is the index of the current document. CurrentDoc int // contains filtered or unexported fields }
Root is the root structure of the oviewer.
func ExecCommand ¶ added in v0.8.9
ExecCommand return the structure of oviewer. ExecCommand executes the command and opens stdout/stderr as document. Deprecated: use NewCommand and [Exec] instead.
Example ¶
package main import ( "os/exec" "github.com/noborus/ov/oviewer" ) func main() { command := exec.Command("ls", "-alF") ov, err := oviewer.ExecCommand(command) if err != nil { panic(err) } if err := ov.Run(); err != nil { panic(err) } }
Output:
func NewOviewer ¶
NewOviewer return the structure of oviewer. NewOviewer requires one or more documents.
Example ¶
package main import ( "bytes" "github.com/noborus/ov/oviewer" ) func main() { doc, err := oviewer.NewDocument() if err != nil { panic(err) } s := "Hello, World!" if err := doc.ControlReader(bytes.NewBufferString(s), nil); err != nil { panic(err) } ov, err := oviewer.NewOviewer(doc) if err != nil { panic(err) } if err := ov.Run(); err != nil { panic(err) } }
Output:
func NewRoot ¶ added in v0.9.0
NewRoot returns the structure of the oviewer. NewRoot is a simplified version that can be used externally.
Example ¶
package main import ( "strings" "github.com/noborus/ov/oviewer" ) func main() { r := strings.NewReader(strings.Repeat("north\n", 99)) ov, err := oviewer.NewRoot(r) if err != nil { panic(err) } if err := ov.Run(); err != nil { panic(err) } }
Output:
func Open ¶
Open reads the file named of the argument and return the structure of oviewer. If there is no file name, create Root from standard input. If there is only one file name, create Root from that file, but return an error if the open is an error. If there is more than one file name, create Root from multiple files.
Example ¶
package main import ( "github.com/noborus/ov/oviewer" ) func main() { ov, err := oviewer.Open("example_test.go") if err != nil { panic(err) } if err := ov.Run(); err != nil { panic(err) } }
Output:
func (*Root) AddDocument ¶ added in v0.8.0
AddDocument fires the eventAddDocument event.
func (*Root) BackSearch ¶
BackSearch fires a backward search event. This is for calling Search from the outside. Normally, the event is executed from Confirm.
func (*Root) CloseAllFilter ¶ added in v0.34.0
func (root *Root) CloseAllFilter()
func (*Root) CloseDocument ¶ added in v0.8.0
CloseDocument fires the eventCloseDocument event.
func (*Root) CopySelect ¶ added in v0.6.0
CopySelect fires the eventCopySelect event.
func (*Root) DocumentLen ¶ added in v0.9.0
DocumentLen returns the number of Docs.
func (*Root) ExpandColumn ¶ added in v0.37.0
ExpandColumn expands the specified column.
func (*Root) MoveBottom ¶
func (root *Root) MoveBottom()
MoveBottom fires the event of moving to bottom.
func (*Root) Search ¶
Search fires a forward search event. This is for calling Search from the outside. Normally, the event is executed from Confirm.
func (*Root) SetDocument ¶
SetDocument fires the eventDocument event.
func (*Root) SetKeyHandler ¶ added in v0.9.6
func (root *Root) SetKeyHandler(ctx context.Context, name string, keys []string, handler func(context.Context)) error
SetKeyHandler assigns a new key handler.
func (*Root) SetWatcher ¶ added in v0.8.9
SetWatcher sets file monitoring.
func (*Root) ShrinkColumn ¶ added in v0.37.0
ShrinkColumn shrinks the specified column.
func (*Root) Suspend ¶ added in v0.9.5
func (root *Root) Suspend()
Suspend fires the eventAppSuspend event.
func (*Root) WriteLog ¶ added in v0.7.1
func (root *Root) WriteLog()
WriteLog write to the log terminal.
func (*Root) WriteOriginal ¶
func (root *Root) WriteOriginal()
WriteOriginal writes to the original terminal.
type SCR ¶ added in v0.15.0
type SCR struct {
// contains filtered or unexported fields
}
SCR contains the screen information.
type Searcher ¶ added in v0.10.1
type Searcher interface { // Match searches for bytes. Match(target []byte) bool // MatchString searches for strings. MatchString(target string) bool // FindAll searches for strings and returns the index of the match. FindAll(target string) [][]int // String returns the search word. String() string }
Searcher interface provides a match method that determines if the search word matches the argument string.
Source Files
¶
- action.go
- config.go
- content.go
- control.go
- convert_align.go
- convert_es.go
- convert_raw.go
- doc.go
- doclist.go
- document.go
- draw.go
- event.go
- exec.go
- filter.go
- help.go
- input.go
- input_converter.go
- input_delimiter.go
- input_goto.go
- input_header.go
- input_header_column.go
- input_jumptarget.go
- input_multicolor.go
- input_normal.go
- input_savebuffer.go
- input_search.go
- input_section_delimiter.go
- input_section_num.go
- input_section_start.go
- input_skip.go
- input_tabwidth.go
- input_vertical_header.go
- input_viewmode.go
- input_watch.go
- input_writeba.go
- keybind.go
- logdoc.go
- mouse.go
- move.go
- move_leftright.go
- move_updown.go
- oviewer.go
- ovstyle.go
- prepare_draw.go
- reader.go
- render.go
- save.go
- search.go
- search_move.go
- status_line.go
- store.go
- suspend.go
- uncompress.go
- utils.go