Documentation
¶
Index ¶
- func SetDebug(enable bool)
- type BeforePasteHook
- type ChangeEvent
- type CommandHandler
- type Completion
- type CompletionCandidate
- type CompletionContext
- type CompletionPopup
- type Completor
- type EditRange
- type Editor
- func (e *Editor) AddDecorations(styles ...decoration.Decoration)
- func (e *Editor) CaretCoords() f32.Point
- func (e *Editor) CaretPos() (line, col int)
- func (e *Editor) ClearDecorations(source string)
- func (e *Editor) ClearSelection()
- func (e *Editor) ColorPalette() *color.ColorPalette
- func (e *Editor) ConvertPos(line, col int) int
- func (e *Editor) Delete(graphemeClusters int) (deletedRunes int)
- func (e *Editor) DeleteLine() (deletedRunes int)
- func (e *Editor) GetCompletionContext() CompletionContext
- func (e *Editor) GetReader() io.ReadSeeker
- func (e *Editor) GutterWidth() int
- func (e *Editor) Insert(s string) (insertedRunes int)
- func (e *Editor) InsertLine(s string) (insertedRunes int)
- func (e *Editor) Layout(gtx layout.Context, lt *text.Shaper) layout.Dimensions
- func (e *Editor) Len() int
- func (e *Editor) MoveCaret(startDelta, endDelta int)
- func (e *Editor) PaintOverlay(gtx layout.Context, position image.Point, w layout.Widget)
- func (e *Editor) ReadOnly() bool
- func (e *Editor) ReadUntil(direction int, seperator func(r rune) bool) string
- func (e *Editor) RegisterCommand(srcTag any, filter key.Filter, handler CommandHandler)
- func (e *Editor) RemoveCommands(tag any)
- func (e *Editor) ReplaceAll(texts []TextRange, newStr string) int
- func (e *Editor) Scroll(gtx layout.Context, xRatio, yRatio float32)
- func (e *Editor) ScrollRatio() (minX, maxX float32, minY, maxY float32)
- func (e *Editor) SelectedText() string
- func (e *Editor) Selection() (start, end int)
- func (e *Editor) SelectionLen() int
- func (e *Editor) SetCaret(start, end int)
- func (e *Editor) SetSyntaxTokens(tokens ...syntax.Token)
- func (e *Editor) SetText(s string)
- func (e *Editor) TabStyle() (TabStyle, int)
- func (e *Editor) Text() string
- func (e *Editor) Update(gtx layout.Context) (EditorEvent, bool)
- func (e *Editor) WithOptions(opts ...EditorOption)
- type EditorEvent
- type EditorOption
- func AddBeforePasteHook(hook BeforePasteHook) EditorOption
- func ReadOnlyMode(enabled bool) EditorOption
- func WithAutoCompletion(completor Completion) EditorOption
- func WithBracketPairs(bracketPairs map[rune]rune) EditorOption
- func WithColorScheme(scheme syntax.ColorScheme) EditorOption
- func WithFont(font font.Font) EditorOption
- func WithLineHeight(lineHeight unit.Sp, lineHeightScale float32) EditorOption
- func WithLineNumber(enabled bool) EditorOption
- func WithLineNumberGutterGap(gap unit.Dp) EditorOption
- func WithQuotePairs(quotePairs map[rune]rune) EditorOption
- func WithShaperParams(font font.Font, textSize unit.Sp, alignment text.Alignment, lineHeight unit.Sp, ...) EditorOptiondeprecated
- func WithSoftTab(enabled bool) EditorOption
- func WithTabWidth(tabWidth int) EditorOption
- func WithTextAlignment(align text.Alignment) EditorOption
- func WithTextSize(textSize unit.Sp) EditorOption
- func WithWordSeperators(seperators string) EditorOption
- func WrapLine(enabled bool) EditorOption
- type HoverEvent
- type Position
- type SelectEvent
- type TabStyle
- type TextEdit
- type TextRange
- type Trigger
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type BeforePasteHook ¶ added in v0.1.0
BeforePasteHook defines a hook to be called before pasting text to transform the text.
type ChangeEvent ¶ added in v0.0.2
type ChangeEvent struct{}
A ChangeEvent is generated for every user change to the text.
type CommandHandler ¶ added in v0.2.0
type CommandHandler func(gtx layout.Context, evt key.Event) EditorEvent
CommandHandler defines a callback function for the specific key event. It returns an EditorEvent if there is any.
type Completion ¶ added in v0.2.0
type Completion interface { // AddCompletors adds Completors to Completion. Completors should run independently and return // candidates to Completion. A popup is also required to present the cadidates to user. AddCompletor(completor Completor, popup CompletionPopup) error // OnText update the completion context. If there is no ongoing session, it should start one. OnText(ctx CompletionContext) // OnConfirm set a callback which is called when the user selected the candidates. OnConfirm(idx int) // Cancel cancels the current completion session. Cancel() // IsActive reports if the completion popup is visible. IsActive() bool // Offset returns the offset used to locate the popup when painting. Offset() image.Point // Layout layouts the completion selection box as popup near the caret. Layout(gtx layout.Context) layout.Dimensions }
Completion is the main auto-completion interface for the editor. A Completion object schedules flow between the editor, the visual popup widget and completion algorithms(the Completor).
type CompletionCandidate ¶ added in v0.2.1
type CompletionCandidate struct { // Label is a short text shown to user to indicate // what the candicate looks like. Label string // TextEdit is the real text with range info to be // inserted into the editor. TextEdit TextEdit // A short description of the candicate. Description string // Kind of the candicate, for example, function, // class, keywords etc. Kind string }
CompletionCandidate are results returned from Completor, to be presented to the user to select from.
type CompletionContext ¶ added in v0.2.0
type CompletionContext struct { // The last key input. Input string // // Prefix is the text before the caret. // Prefix string // // Suffix is the text after the caret. // Suffix string // Coordinates of the caret. Scroll off will change after we update the position, // so we use doc view position instead of viewport position. Coords image.Point // The position of the caret in line/column and selection range. Position Position }
type CompletionPopup ¶ added in v0.2.0
type CompletionPopup interface {
Layout(gtx layout.Context, items []CompletionCandidate) layout.Dimensions
}
type Completor ¶ added in v0.2.0
type Completor interface { Trigger() Trigger Suggest(ctx CompletionContext) []CompletionCandidate }
Completor defines a interface that each of the delegated completor must implement.
type Editor ¶ added in v0.0.2
type Editor struct {
// contains filtered or unexported fields
}
Editor implements an editable and scrollable text area.
func (*Editor) AddDecorations ¶ added in v0.3.0
func (e *Editor) AddDecorations(styles ...decoration.Decoration)
func (*Editor) CaretCoords ¶ added in v0.0.2
CaretCoords returns the coordinates of the caret, relative to the editor itself.
func (*Editor) ClearDecorations ¶ added in v0.3.0
func (*Editor) ClearSelection ¶ added in v0.0.2
func (e *Editor) ClearSelection()
ClearSelection clears the selection, by setting the selection end equal to the selection start.
func (*Editor) ColorPalette ¶ added in v0.3.0
func (e *Editor) ColorPalette() *color.ColorPalette
func (*Editor) ConvertPos ¶ added in v0.2.2
ConvertPos convert a line/col position to rune offset.
func (*Editor) Delete ¶ added in v0.0.2
Delete runes from the caret position. The sign of the argument specifies the direction to delete: positive is forward, negative is backward.
If there is a selection, it is deleted and counts as a single grapheme cluster.
func (*Editor) DeleteLine ¶ added in v0.1.0
DeleteLine delete the current line, and place the caret at the start of the next line.
func (*Editor) GetCompletionContext ¶ added in v0.2.0
func (e *Editor) GetCompletionContext() CompletionContext
GetCompletionContext returns a context from the current caret position. This is usually used in the condition of a key triggered completion.
func (*Editor) GetReader ¶ added in v0.3.0
func (e *Editor) GetReader() io.ReadSeeker
GetReader returns a io.ReadSeeker to the caller to read the text buffer. This is the preferred way to read from the editor, especially when reading from multiple goroutines.
func (*Editor) GutterWidth ¶ added in v0.3.0
GutterWidth returns the width of the gutter in pixel, which can be used to guide to set the horizontal offset when laying out a horizontal scrollbar.
func (*Editor) InsertLine ¶ added in v0.1.0
InsertLine insert a line of text before the current line, and place the caret at the start of the current line.
This single line insertion is mainly for paste operation after copying/cutting the current line(paragraph) when there is no selection, but it can also used outside of the editor to insert a entire line(paragraph).
func (*Editor) MoveCaret ¶ added in v0.0.2
MoveCaret moves the caret (aka selection start) and the selection end relative to their current positions. Positive distances moves forward, negative distances moves backward. Distances are in grapheme clusters, which closely match what users perceive as "characters" even when the characters are multiple code points long.
func (*Editor) PaintOverlay ¶ added in v0.3.0
PaintOverlay draws a overlay widget over the main editor area.
func (*Editor) ReadUntil ¶ added in v0.2.2
ReadUntil reads in the specified direction from the current caret position until the seperator returns false. It returns the read text.
func (*Editor) RegisterCommand ¶ added in v0.2.0
func (e *Editor) RegisterCommand(srcTag any, filter key.Filter, handler CommandHandler)
RegisterCommand register an extra command handler responding to key events. If there is an existing handler, it appends to the existing ones. Only the last key filter is checked during event handling. This method is expected to be invoked dynamically during layout.
func (*Editor) RemoveCommands ¶ added in v0.2.0
RemoveCommands unregister command handlers from tag.
func (*Editor) ReplaceAll ¶ added in v0.0.2
ReplaceAll replaces all texts specifed in TextRange with newStr. It returns the number of occurrences replaced.
func (*Editor) Scroll ¶ added in v0.3.0
Scroll scrolls the horizontal or vertical scrollbar, using ratio related to the rendered document size.
func (*Editor) ScrollRatio ¶ added in v0.3.0
ScrollRatio returns the viewport's start and end scrolling offset in ratio relating to the reandered document coordinate space.
func (*Editor) SelectedText ¶ added in v0.0.2
SelectedText returns the currently selected text (if any) from the editor.
func (*Editor) Selection ¶ added in v0.0.2
Selection returns the start and end of the selection, as rune offsets. start can be > end.
func (*Editor) SelectionLen ¶ added in v0.0.2
SelectionLen returns the length of the selection, in runes; it is equivalent to utf8.RuneCountInString(e.SelectedText()).
func (*Editor) SetCaret ¶ added in v0.0.2
SetCaret moves the caret to start, and sets the selection end to end. start and end are in runes, and represent offsets into the editor text.
func (*Editor) SetSyntaxTokens ¶ added in v0.3.0
func (*Editor) Text ¶ added in v0.0.2
Text returns the contents of the editor. This method is not concurrent safe, and you should use the Reader returned from GetReader to read from multiple goroutines.
func (*Editor) Update ¶ added in v0.0.2
func (e *Editor) Update(gtx layout.Context) (EditorEvent, bool)
Update the state of the editor in response to input events. Update consumes editor input events until there are no remaining events or an editor event is generated. To fully update the state of the editor, callers should call Update until it returns false.
func (*Editor) WithOptions ¶ added in v0.1.0
func (e *Editor) WithOptions(opts ...EditorOption)
WithOptions applies various options to configure the editor.
type EditorEvent ¶ added in v0.0.2
type EditorEvent interface {
// contains filtered or unexported methods
}
type EditorOption ¶ added in v0.1.0
type EditorOption func(*Editor)
EditorOption defines a function to configure the editor.
func AddBeforePasteHook ¶ added in v0.1.0
func AddBeforePasteHook(hook BeforePasteHook) EditorOption
func ReadOnlyMode ¶ added in v0.1.0
func ReadOnlyMode(enabled bool) EditorOption
ReadOnlyMode controls whether the contents of the editor can be altered by user interaction. If set to true, the editor will allow selecting text and copying it interactively, but not modifying it.
func WithAutoCompletion ¶ added in v0.2.0
func WithAutoCompletion(completor Completion) EditorOption
func WithBracketPairs ¶ added in v0.1.1
func WithBracketPairs(bracketPairs map[rune]rune) EditorOption
WithBracketPairs configures a set of bracket pairs that can be auto-completed when the left half is entered.
func WithColorScheme ¶ added in v0.3.0
func WithColorScheme(scheme syntax.ColorScheme) EditorOption
WithColorScheme configures the color scheme used for styling syntax tokens. Syntax highlight implementations should align with the token types used in the ColorScheme.
func WithFont ¶ added in v0.3.0
func WithFont(font font.Font) EditorOption
Set font to use for the editor.
func WithLineHeight ¶ added in v0.3.0
func WithLineHeight(lineHeight unit.Sp, lineHeightScale float32) EditorOption
func WithLineNumber ¶ added in v0.3.0
func WithLineNumber(enabled bool) EditorOption
WithLineNumber configures whether to show line number or not.
func WithLineNumberGutterGap ¶ added in v0.3.0
func WithLineNumberGutterGap(gap unit.Dp) EditorOption
func WithQuotePairs ¶ added in v0.1.1
func WithQuotePairs(quotePairs map[rune]rune) EditorOption
WithQuotePairs configures a set of quote pairs that can be auto-completed when the left half is entered.
func WithShaperParams
deprecated
added in
v0.1.0
func WithSoftTab ¶ added in v0.1.0
func WithSoftTab(enabled bool) EditorOption
WithSoftTab controls the behaviour when user try to insert a Tab character. If set to true, the editor will insert the amount of space characters specified by TabWidth, else the editor insert a \t character.
func WithTabWidth ¶ added in v0.1.0
func WithTabWidth(tabWidth int) EditorOption
WithTabWidth set how many spaces to represent a tab character. In the case of soft tab, this determines the number of space characters to insert into the editor. While for hard tab, this controls the maximum width of the 'tab' glyph to expand to.
func WithTextAlignment ¶ added in v0.3.0
func WithTextAlignment(align text.Alignment) EditorOption
func WithTextSize ¶ added in v0.3.0
func WithTextSize(textSize unit.Sp) EditorOption
Set size of the text.
func WithWordSeperators ¶ added in v0.1.0
func WithWordSeperators(seperators string) EditorOption
WithWordSeperators configures a set of characters that will be used as word separators when doing word related operations, like navigating or deleting by word.
func WrapLine ¶ added in v0.1.0
func WrapLine(enabled bool) EditorOption
WrapLine configures whether the displayed text will be broken into lines or not.
type HoverEvent ¶ added in v0.3.0
A HoverEvent is generated if the pointer hovers and keep still or maybe some small movement for some time.
type Position ¶ added in v0.2.2
type Position struct { // Line number of the caret where the typing is happening. Line int // Column is the rune offset from the start of the line. Column int // Runes is the rune offset in the editor text of the input. Runes int }
Position is a position in the eidtor. Line/column and Runes may not be set at the same time depending on the use cases.
type SelectEvent ¶ added in v0.0.2
type SelectEvent struct{}
A SelectEvent is generated when the user selects some text, or changes the selection (e.g. with a shift-click), including if they remove the selection. The selected text is not part of the event, on the theory that it could be a relatively expensive operation (for a large editor), most applications won't actually care about it, and those that do can call Editor.SelectedText() (which can be empty).
type TextEdit ¶ added in v0.2.2
TextEdit is the text with range info to be inserted into the editor, used in auto-completion.
func NewTextEditWithPos ¶ added in v0.2.2
func NewTextEditWithRuneOffset ¶ added in v0.2.2
type TextRange ¶ added in v0.0.2
type TextRange struct { // offset of the start rune in the document. Start int // offset of the end rune in the document. End int }
TextRange contains the range of text of interest in the document. It can used for search, styling text, or any other purposes.
type Trigger ¶ added in v0.2.0
type Trigger struct { // Characters that must be present before the caret to trigger the completion. // If it is empty, any character will trigger the completion. Characters []string // Trigger completion even the caret is in side of comment. Comment bool // Trigger completion even the caret is in side of string(quote pair). String bool // Special key binding triggers the completion. KeyBinding struct { Name key.Name Modifiers key.Modifiers } }
Trigger
Source Files
¶
Directories
¶
Path | Synopsis |
---|---|
addons
|
|
internal
|
|
gesture/fling
This package is copied from Gio internal fling package: https://github.com/gioui/gio/tree/main/internal/fling.
|
This package is copied from Gio internal fling package: https://github.com/gioui/gio/tree/main/internal/fling. |
stroke
Package stroke converts complex strokes to gioui.org/op/clip operations.
|
Package stroke converts complex strokes to gioui.org/op/clip operations. |
textstyle
|
|