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) CaretCoords() f32.Point
- func (e *Editor) CaretPos() (line, col int)
- func (e *Editor) ClearSelection()
- 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) 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) 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) ScrollByRatio(gtx layout.Context, ratio 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) SetHighlights(highlights []TextRange)
- 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) UpdateTextStyles(styles []*TextStyle)
- func (e *Editor) ViewPortRatio() (float32, float32)
- 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 WithQuotePairs(quotePairs map[rune]rune) EditorOption
- func WithShaperParams(font font.Font, textSize unit.Sp, alignment text.Alignment, lineHeight unit.Sp, ...) EditorOption
- func WithSoftTab(enabled bool) EditorOption
- func WithTabWidth(tabWidth int) EditorOption
- func WithWordSeperators(seperators string) EditorOption
- func WrapLine(enabled bool) EditorOption
- type Position
- type Region
- type SelectEvent
- type TabStyle
- type TextEdit
- type TextRange
- type TextStyle
- 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 { // LineNumberGutter specifies the gap between the line number and the main text. LineNumberGutter unit.Dp // Color used to paint text TextMaterial op.CallOp // Color used to highlight the selections. SelectMaterial op.CallOp // Color used to highlight the current paragraph. LineMaterial op.CallOp // Color used to paint the line number LineNumberMaterial op.CallOp // Color used to highlight the text snippets, such as search matches. TextHighlightMaterial op.CallOp // contains filtered or unexported fields }
Editor implements an editable and scrollable text area.
func (*Editor) CaretCoords ¶ added in v0.0.2
CaretCoords returns the coordinates of the caret, relative to the editor itself.
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) 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) 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) 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) ScrollByRatio ¶ added in v0.0.2
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) SetHighlights ¶ added in v0.0.2
SetHighlights sets the texts to be highlighted.
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) UpdateTextStyles ¶ added in v0.0.2
func (*Editor) ViewPortRatio ¶ added in v0.0.2
returns start and end offset ratio of viewport
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 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 ¶ added in v0.1.0
func WithShaperParams(font font.Font, textSize unit.Sp, alignment text.Alignment, lineHeight unit.Sp, lineHeightScale float32) EditorOption
WithShaperParams set the basic shaping params for the editor.
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 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 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 Region ¶ added in v0.0.2
Region describes the position and baseline of an area of interest within shaped text.
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 TextStyle ¶ added in v0.0.2
type TextStyle struct { TextRange // Color of the text.. Color op.CallOp // Background color of the painted text in the range. Background op.CallOp }
TextStyle defines style for a range of text in the document.
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