Documentation ¶
Index ¶
- Constants
- Variables
- func BufferComplete(b *Buffer) ([]string, []string)
- func ByteOffset(pos Loc, buf *Buffer) int
- func DiffLA(a, b Loc, buf *LineArray) int
- func ExecuteTextEvent(t *TextEvent, buf *SharedBuffer)
- func FileComplete(b *Buffer) ([]string, []string)
- func GetArg(b *Buffer) (string, int)
- func GetWord(b *Buffer) ([]byte, int)
- func InBounds(pos Loc, buf *Buffer) bool
- func SetMessager(m Messager)
- func WriteLog(s string)
- type BufType
- type Buffer
- func GetLogBuf() *Buffer
- func NewBuffer(r io.Reader, size int64, path string, startcursor Loc, btype BufType) *Buffer
- func NewBufferFromFile(path string, btype BufType) (*Buffer, error)
- func NewBufferFromFileAtLoc(path string, btype BufType, cursorLoc Loc) (*Buffer, error)
- func NewBufferFromString(text, path string, btype BufType) *Buffer
- func NewBufferFromStringAtLoc(text, path string, btype BufType, cursorLoc Loc) *Buffer
- func (b *Buffer) AddCursor(c *Cursor)
- func (b *Buffer) AddMessage(m *Message)
- func (b *Buffer) ApplyBackup(fsize int64) (bool, bool)
- func (b *Buffer) Autocomplete(c Completer) bool
- func (b *Buffer) Backup() error
- func (b *Buffer) ClearAllMessages()
- func (b *Buffer) ClearCursors()
- func (b *Buffer) ClearMatches()
- func (b *Buffer) ClearMessages(owner string)
- func (b *Buffer) Close()
- func (b *Buffer) CycleAutocomplete(forward bool)
- func (b *Buffer) DiffStatus(lineN int) DiffStatus
- func (b *Buffer) ExternallyModified() bool
- func (b *Buffer) FileType() string
- func (b *Buffer) FindMatchingBrace(braceType [2]rune, start Loc) (Loc, bool, bool)
- func (b *Buffer) FindNext(s string, start, end, from Loc, down bool, useRegex bool) ([2]Loc, bool, error)
- func (b *Buffer) Fini()
- func (b *Buffer) GetActiveCursor() *Cursor
- func (b *Buffer) GetCursor(n int) *Cursor
- func (b *Buffer) GetCursors() []*Cursor
- func (b *Buffer) GetName() string
- func (b *Buffer) GetSuggestions()
- func (b *Buffer) IndentString(tabsize int) string
- func (b *Buffer) Insert(start Loc, text string)
- func (b *Buffer) Line(i int) string
- func (b *Buffer) MergeCursors()
- func (b *Buffer) Modified() bool
- func (b *Buffer) MoveLinesDown(start int, end int)
- func (b *Buffer) MoveLinesUp(start int, end int)
- func (b *Buffer) NumCursors() int
- func (b *Buffer) ReOpen() error
- func (b *Buffer) RelocateCursors()
- func (b *Buffer) Remove(start, end Loc)
- func (b *Buffer) RemoveBackup()
- func (b *Buffer) RemoveCursor(i int)
- func (b *Buffer) ReplaceRegex(start, end Loc, search *regexp.Regexp, replace []byte) (int, int)
- func (b *Buffer) RequestBackup()
- func (b *Buffer) Retab()
- func (b *Buffer) RuneAt(loc Loc) rune
- func (b *Buffer) Save() error
- func (b *Buffer) SaveAs(filename string) error
- func (b *Buffer) SaveAsWithSudo(filename string) error
- func (b *Buffer) SaveWithSudo() error
- func (b *Buffer) Serialize() error
- func (b *Buffer) SetCurCursor(n int)
- func (b *Buffer) SetCursors(c []*Cursor)
- func (b *Buffer) SetDiffBase(diffBase []byte)
- func (b *Buffer) SetName(s string)
- func (b *Buffer) SetOption(option, value string) error
- func (b *Buffer) SetOptionNative(option string, nativeValue interface{}) error
- func (b *Buffer) Size() int
- func (b *Buffer) Unserialize() error
- func (b *Buffer) UpdateCursors()
- func (b *Buffer) UpdateDiff(callback func(bool))
- func (b *Buffer) UpdateModTime() (err error)
- func (b *Buffer) UpdateRules()
- func (b *Buffer) WordAt(loc Loc) []byte
- func (b *Buffer) Write(bytes []byte) (n int, err error)
- type Completer
- type Cursor
- func (c *Cursor) AddLineToSelection()
- func (c *Cursor) AddWordToSelection()
- func (c *Cursor) Buf() *Buffer
- func (c *Cursor) CopySelection(target clipboard.Register)
- func (c *Cursor) DeleteSelection()
- func (c *Cursor) Deselect(start bool)
- func (c *Cursor) Down()
- func (c *Cursor) DownN(amount int)
- func (c *Cursor) End()
- func (c *Cursor) GetCharPosInLine(b []byte, visualPos int) int
- func (c *Cursor) GetSelection() []byte
- func (c *Cursor) GetVisualX() int
- func (c *Cursor) Goto(b Cursor)
- func (c *Cursor) GotoLoc(l Loc)
- func (c *Cursor) HasSelection() bool
- func (c *Cursor) IsStartOfText() bool
- func (c *Cursor) Left()
- func (c *Cursor) Relocate()
- func (c *Cursor) ResetSelection()
- func (c *Cursor) Right()
- func (c *Cursor) RuneUnder(x int) rune
- func (c *Cursor) SelectLine()
- func (c *Cursor) SelectTo(loc Loc)
- func (c *Cursor) SelectWord()
- func (c *Cursor) SetBuf(b *Buffer)
- func (c *Cursor) SetSelectionEnd(pos Loc)
- func (c *Cursor) SetSelectionStart(pos Loc)
- func (c *Cursor) Start()
- func (c *Cursor) StartOfText()
- func (c *Cursor) StoreVisualX()
- func (c *Cursor) Up()
- func (c *Cursor) UpN(amount int)
- func (c *Cursor) WordLeft()
- func (c *Cursor) WordRight()
- type Delta
- type DiffStatus
- type Element
- type EventHandler
- func (eh *EventHandler) ApplyDiff(new string)
- func (eh *EventHandler) DoTextEvent(t *TextEvent, useUndo bool)
- func (eh *EventHandler) Execute(t *TextEvent)
- func (eh *EventHandler) Insert(start Loc, textStr string)
- func (eh *EventHandler) InsertBytes(start Loc, text []byte)
- func (eh *EventHandler) MultipleReplace(deltas []Delta)
- func (eh *EventHandler) Redo()
- func (eh *EventHandler) RedoOneEvent()
- func (eh *EventHandler) Remove(start, end Loc)
- func (eh *EventHandler) Replace(start, end Loc, replace string)
- func (eh *EventHandler) Undo()
- func (eh *EventHandler) UndoOneEvent()
- func (eh *EventHandler) UndoTextEvent(t *TextEvent)
- type FileFormat
- type Line
- type LineArray
- func (la *LineArray) Bytes() []byte
- func (la *LineArray) End() Loc
- func (la *LineArray) LineBytes(n int) []byte
- func (la *LineArray) LinesNum() int
- func (la *LineArray) Match(lineN int) highlight.LineMatch
- func (la *LineArray) Rehighlight(lineN int) bool
- func (la *LineArray) SetMatch(lineN int, m highlight.LineMatch)
- func (la *LineArray) SetRehighlight(lineN int, on bool)
- func (la *LineArray) SetState(lineN int, s highlight.State)
- func (la *LineArray) Start() Loc
- func (la *LineArray) State(lineN int) highlight.State
- func (la *LineArray) Substr(start, end Loc) []byte
- type Loc
- type Message
- type Messager
- type MsgType
- type SerializedBuffer
- type SharedBuffer
- type TEStack
- type TextEvent
Constants ¶
const ( DSUnchanged = 0 DSAdded = 1 DSModified = 2 DSDeletedAbove = 3 )
const ( // TextEventInsert represents an insertion event TextEventInsert = 1 // TextEventRemove represents a deletion event TextEventRemove = -1 // TextEventReplace represents a replace event TextEventReplace = 0 )
const ( // Line ending file formats FFAuto = 0 // Autodetect format FFUnix = 1 // LF line endings (unix style '\n') FFDos = 2 // CRLF line endings (dos style '\r\n') )
const ( MTInfo = iota MTWarning MTError )
const LargeFileThreshold = 50000
LargeFileThreshold is the number of bytes when fastdirty is forced because hashing is too slow
Variables ¶
var ( // BTDefault is a default buffer BTDefault = BufType{0, false, false, true} // BTHelp is a help buffer BTHelp = BufType{1, true, true, true} // BTLog is a log buffer BTLog = BufType{2, true, true, false} // BTScratch is a buffer that cannot be saved (for scratch work) BTScratch = BufType{3, false, true, false} // BTRaw is is a buffer that shows raw terminal events BTRaw = BufType{4, false, true, false} // BTInfo is a buffer for inputting information BTInfo = BufType{5, false, true, false} // BTStdout is a buffer that only writes to stdout // when closed BTStdout = BufType{6, false, true, true} // ErrFileTooLarge is returned when the file is too large to hash // (fastdirty is automatically enabled) ErrFileTooLarge = errors.New("File is too large to hash") )
var BracePairs = [][2]rune{
{'(', ')'},
{'{', '}'},
{'[', ']'},
}
Functions ¶
func BufferComplete ¶
BufferComplete autocompletes based on previous words in the buffer
func ByteOffset ¶
ByteOffset is just like ToCharPos except it counts bytes instead of runes
func ExecuteTextEvent ¶
func ExecuteTextEvent(t *TextEvent, buf *SharedBuffer)
ExecuteTextEvent runs a text event
func FileComplete ¶
FileComplete autocompletes filenames
func GetWord ¶
GetWord gets the most recent word separated by any separator (whitespace, punctuation, any non alphanumeric character)
func InBounds ¶
InBounds returns whether the given location is a valid character position in the given buffer
func SetMessager ¶
func SetMessager(m Messager)
Types ¶
type BufType ¶
type BufType struct { Kind int Readonly bool // The buffer cannot be edited Scratch bool // The buffer cannot be saved Syntax bool // Syntax highlighting is enabled }
The BufType defines what kind of buffer this is
type Buffer ¶
type Buffer struct { *EventHandler StartCursor Loc // OptionCallback is called after a buffer option value is changed. // The display module registers its OptionCallback to ensure the buffer window // is properly updated when needed. This is a workaround for the fact that // the buffer module cannot directly call the display's API (it would mean // a circular dependency between packages). OptionCallback func(option string, nativeValue interface{}) // The display module registers its own GetVisualX function for getting // the correct visual x location of a cursor when softwrap is used. // This is hacky. Maybe it would be better to move all the visual x logic // from buffer to display, but it would require rewriting a lot of code. GetVisualX func(loc Loc) int // contains filtered or unexported fields }
Buffer stores the main information about a currently open file including the actual text (in a LineArray), the undo/redo stack (in an EventHandler) all the cursors, the syntax highlighting info, the settings for the buffer and some misc info about modification time and path location. The syntax highlighting info must be stored with the buffer because the syntax highlighter attaches information to each line of the buffer for optimization purposes so it doesn't have to rehighlight everything on every update.
func NewBuffer ¶
NewBuffer creates a new buffer from a given reader with a given path Ensure that ReadSettings and InitGlobalSettings have been called before creating a new buffer Places the cursor at startcursor. If startcursor is -1, -1 places the cursor at an autodetected location (based on savecursor or :LINE:COL)
func NewBufferFromFile ¶
NewBufferFromFile opens a new buffer using the given path It will also automatically handle `~`, and line/column with filename:l:c It will return an empty buffer if the path does not exist and an error if the file is a directory
func NewBufferFromFileAtLoc ¶
NewBufferFromFileAtLoc opens a new buffer with a given cursor location If cursorLoc is {-1, -1} the location does not overwrite what the cursor location would otherwise be (start of file, or saved cursor position if `savecursor` is enabled)
func NewBufferFromString ¶
NewBufferFromString creates a new buffer containing the given string
func NewBufferFromStringAtLoc ¶
NewBufferFromStringAtLoc creates a new buffer containing the given string with a cursor loc
func (*Buffer) AddMessage ¶
func (*Buffer) ApplyBackup ¶
ApplyBackup applies the corresponding backup file to this buffer (if one exists) Returns true if a backup was applied
func (*Buffer) Autocomplete ¶
Autocomplete starts the autocomplete process
func (*Buffer) ClearAllMessages ¶
func (b *Buffer) ClearAllMessages()
func (*Buffer) ClearCursors ¶
func (b *Buffer) ClearCursors()
ClearCursors removes all extra cursors
func (*Buffer) ClearMatches ¶
func (b *Buffer) ClearMatches()
ClearMatches clears all of the syntax highlighting for the buffer
func (*Buffer) ClearMessages ¶
func (*Buffer) Close ¶
func (b *Buffer) Close()
Close removes this buffer from the list of open buffers
func (*Buffer) CycleAutocomplete ¶
CycleAutocomplete moves to the next suggestion
func (*Buffer) DiffStatus ¶
func (b *Buffer) DiffStatus(lineN int) DiffStatus
DiffStatus returns the diff status for a line in the buffer
func (*Buffer) ExternallyModified ¶
ExternallyModified returns whether the file being edited has been modified by some external process
func (*Buffer) FindMatchingBrace ¶
FindMatchingBrace returns the location in the buffer of the matching bracket It is given a brace type containing the open and closing character, (for example '{' and '}') as well as the location to match from TODO: maybe can be more efficient with utf8 package returns the location of the matching brace if the boolean returned is true then the original matching brace is one character left of the starting location
func (*Buffer) FindNext ¶
func (b *Buffer) FindNext(s string, start, end, from Loc, down bool, useRegex bool) ([2]Loc, bool, error)
FindNext finds the next occurrence of a given string in the buffer It returns the start and end location of the match (if found) and a boolean indicating if it was found May also return an error if the search regex is invalid
func (*Buffer) Fini ¶
func (b *Buffer) Fini()
Fini should be called when a buffer is closed and performs some cleanup
func (*Buffer) GetActiveCursor ¶
GetActiveCursor returns the main cursor in this buffer
func (*Buffer) GetCursors ¶
GetCursors returns the list of cursors in this buffer
func (*Buffer) GetName ¶
GetName returns the name that should be displayed in the statusline for this buffer
func (*Buffer) GetSuggestions ¶
func (b *Buffer) GetSuggestions()
func (*Buffer) IndentString ¶
IndentString returns this buffer's indent method (a tabstop or n spaces depending on the settings)
func (*Buffer) MergeCursors ¶
func (b *Buffer) MergeCursors()
MergeCursors merges any cursors that are at the same position into one cursor
func (*Buffer) MoveLinesDown ¶
MoveLinesDown moves the range of lines down one row
func (*Buffer) MoveLinesUp ¶
MoveLinesUp moves the range of lines up one row
func (*Buffer) NumCursors ¶
NumCursors returns the number of cursors
func (*Buffer) RelocateCursors ¶
func (b *Buffer) RelocateCursors()
RelocateCursors relocates all cursors (makes sure they are in the buffer)
func (*Buffer) RemoveBackup ¶
func (b *Buffer) RemoveBackup()
RemoveBackup removes any backup file associated with this buffer
func (*Buffer) RemoveCursor ¶
func (*Buffer) ReplaceRegex ¶
ReplaceRegex replaces all occurrences of 'search' with 'replace' in the given area and returns the number of replacements made and the number of runes added or removed on the last line of the range
func (*Buffer) RequestBackup ¶
func (b *Buffer) RequestBackup()
func (*Buffer) SaveAs ¶
SaveAs saves the buffer to a specified path (filename), creating the file if it does not exist
func (*Buffer) SaveAsWithSudo ¶
func (*Buffer) SaveWithSudo ¶
func (*Buffer) SetCurCursor ¶
SetCurCursor sets the current cursor
func (*Buffer) SetCursors ¶
SetCursors resets this buffer's cursors to a new list
func (*Buffer) SetDiffBase ¶
SetDiffBase sets the text that is used as the base for diffing the buffer content
func (*Buffer) SetOptionNative ¶
func (*Buffer) Unserialize ¶
Unserialize loads the buffer info from config.ConfigDir/buffers
func (*Buffer) UpdateCursors ¶
func (b *Buffer) UpdateCursors()
UpdateCursors updates all the cursors indicies
func (*Buffer) UpdateDiff ¶
UpdateDiff computes the diff between the diff base and the buffer content. The update may be performed synchronously or asynchronously. UpdateDiff calls the supplied callback when the update is complete. The argument passed to the callback is set to true if and only if the update was performed synchronously. If an asynchronous update is already pending when UpdateDiff is called, UpdateDiff does not schedule another update, in which case the callback is not called.
func (*Buffer) UpdateModTime ¶
UpdateModTime updates the modtime of this file
func (*Buffer) UpdateRules ¶
func (b *Buffer) UpdateRules()
UpdateRules updates the syntax rules and filetype for this buffer This is called when the colorscheme changes
type Completer ¶
A Completer is a function that takes a buffer and returns info describing what autocompletions should be inserted at the current cursor location It returns a list of string suggestions which will be inserted at the current cursor location if selected as well as a list of suggestion names which can be displayed in an autocomplete box or other UI element
type Cursor ¶
type Cursor struct { Loc // Last cursor x position LastVisualX int // The current selection as a range of character numbers (inclusive) CurSelection [2]Loc // The original selection as a range of character numbers // This is used for line and word selection where it is necessary // to know what the original selection was OrigSelection [2]Loc // Which cursor index is this (for multiple cursors) Num int // contains filtered or unexported fields }
The Cursor struct stores the location of the cursor in the buffer as well as the selection
func (*Cursor) AddLineToSelection ¶
func (c *Cursor) AddLineToSelection()
AddLineToSelection adds the current line to the selection
func (*Cursor) AddWordToSelection ¶
func (c *Cursor) AddWordToSelection()
AddWordToSelection adds the word the cursor is currently on to the selection
func (*Cursor) CopySelection ¶
CopySelection copies the user's selection to either "primary" or "clipboard"
func (*Cursor) DeleteSelection ¶
func (c *Cursor) DeleteSelection()
DeleteSelection deletes the currently selected text
func (*Cursor) Deselect ¶
Deselect closes the cursor's current selection Start indicates whether the cursor should be placed at the start or end of the selection
func (*Cursor) GetCharPosInLine ¶
GetCharPosInLine gets the char position of a visual x y coordinate (this is necessary because tabs are 1 char but 4 visual spaces)
func (*Cursor) GetSelection ¶
GetSelection returns the cursor's selection
func (*Cursor) GetVisualX ¶
GetVisualX returns the x value of the cursor in visual spaces
func (*Cursor) Goto ¶
Goto puts the cursor at the given cursor's location and gives the current cursor its selection too
func (*Cursor) GotoLoc ¶
GotoLoc puts the cursor at the given cursor's location and gives the current cursor its selection too
func (*Cursor) HasSelection ¶
HasSelection returns whether or not the user has selected anything
func (*Cursor) IsStartOfText ¶
IsStartOfText returns whether the cursor is at the first non-whitespace rune of the line it is on
func (*Cursor) Left ¶
func (c *Cursor) Left()
Left moves the cursor left one cell (if possible) or to the previous line if it is at the beginning
func (*Cursor) Relocate ¶
func (c *Cursor) Relocate()
Relocate makes sure that the cursor is inside the bounds of the buffer If it isn't, it moves it to be within the buffer's lines
func (*Cursor) ResetSelection ¶
func (c *Cursor) ResetSelection()
ResetSelection resets the user's selection
func (*Cursor) Right ¶
func (c *Cursor) Right()
Right moves the cursor right one cell (if possible) or to the next line if it is at the end
func (*Cursor) SelectWord ¶
func (c *Cursor) SelectWord()
SelectWord selects the word the cursor is currently on
func (*Cursor) SetSelectionEnd ¶
SetSelectionEnd sets the end of the selection
func (*Cursor) SetSelectionStart ¶
SetSelectionStart sets the start of the selection
func (*Cursor) Start ¶
func (c *Cursor) Start()
Start moves the cursor to the start of the line it is on
func (*Cursor) StartOfText ¶
func (c *Cursor) StartOfText()
StartOfText moves the cursor to the first non-whitespace rune of the line it is on
func (*Cursor) StoreVisualX ¶
func (c *Cursor) StoreVisualX()
type DiffStatus ¶
type DiffStatus byte
type EventHandler ¶
type EventHandler struct { UndoStack *TEStack RedoStack *TEStack // contains filtered or unexported fields }
EventHandler executes text manipulations and allows undoing and redoing
func NewEventHandler ¶
func NewEventHandler(buf *SharedBuffer, cursors []*Cursor) *EventHandler
NewEventHandler returns a new EventHandler
func (*EventHandler) ApplyDiff ¶
func (eh *EventHandler) ApplyDiff(new string)
ApplyDiff takes a string and runs the necessary insertion and deletion events to make the buffer equal to that string This means that we can transform the buffer into any string and still preserve undo/redo through insert and delete events
func (*EventHandler) DoTextEvent ¶
func (eh *EventHandler) DoTextEvent(t *TextEvent, useUndo bool)
DoTextEvent runs a text event
func (*EventHandler) Execute ¶
func (eh *EventHandler) Execute(t *TextEvent)
Execute a textevent and add it to the undo stack
func (*EventHandler) Insert ¶
func (eh *EventHandler) Insert(start Loc, textStr string)
Insert creates an insert text event and executes it
func (*EventHandler) InsertBytes ¶
func (eh *EventHandler) InsertBytes(start Loc, text []byte)
InsertBytes creates an insert text event and executes it
func (*EventHandler) MultipleReplace ¶
func (eh *EventHandler) MultipleReplace(deltas []Delta)
MultipleReplace creates an multiple insertions executes them
func (*EventHandler) RedoOneEvent ¶
func (eh *EventHandler) RedoOneEvent()
RedoOneEvent redoes one event
func (*EventHandler) Remove ¶
func (eh *EventHandler) Remove(start, end Loc)
Remove creates a remove text event and executes it
func (*EventHandler) Replace ¶
func (eh *EventHandler) Replace(start, end Loc, replace string)
Replace deletes from start to end and replaces it with the given string
func (*EventHandler) UndoOneEvent ¶
func (eh *EventHandler) UndoOneEvent()
UndoOneEvent undoes one event
func (*EventHandler) UndoTextEvent ¶
func (eh *EventHandler) UndoTextEvent(t *TextEvent)
UndoTextEvent undoes a text event
type FileFormat ¶
type FileFormat byte
type Line ¶
type Line struct {
// contains filtered or unexported fields
}
A Line contains the data in bytes as well as a highlight state, match and a flag for whether the highlighting needs to be updated
type LineArray ¶
type LineArray struct { Endings FileFormat // contains filtered or unexported fields }
A LineArray simply stores and array of lines and makes it easy to insert and delete in it
func NewLineArray ¶
func NewLineArray(size uint64, endings FileFormat, reader io.Reader) *LineArray
NewLineArray returns a new line array from an array of bytes
func (*LineArray) Bytes ¶
Bytes returns the string that should be written to disk when the line array is saved
func (*LineArray) Rehighlight ¶
func (*LineArray) SetRehighlight ¶
type Loc ¶
type Loc struct {
X, Y int
}
Loc stores a location
func ParseCursorLocation ¶
ParseCursorLocation turns a cursor location like 10:5 (LINE:COL) into a loc
func (Loc) GreaterEqual ¶
GreaterEqual returns true if b is greater than or equal to b
func (Loc) GreaterThan ¶
GreaterThan returns true if b is bigger
type Message ¶
type Message struct { // The Msg iteslf Msg string // Start and End locations for the message Start, End Loc // The Kind stores the message type Kind MsgType // The Owner of the message Owner string }
Message represents the information for a gutter message
func NewMessage ¶
NewMessage creates a new gutter message
func NewMessageAtLine ¶
NewMessageAtLine creates a new gutter message at a given line
type SerializedBuffer ¶
type SerializedBuffer struct { EventHandler *EventHandler Cursor Loc ModTime time.Time }
The SerializedBuffer holds the types that get serialized when a buffer is saved These are used for the savecursor and saveundo options
type SharedBuffer ¶
type SharedBuffer struct { time.Time Type BufType Path string AbsPath string Settings map[string]interface{} // are viewing a file that is constantly changing ReloadDisabled bool // it changes based on how the buffer has changed HasSuggestions bool Highlighter *highlight.Highlighter // This stores the highlighting rules and filetype detection info SyntaxDef *highlight.Def // contains filtered or unexported fields }ModTime
SharedBuffer is a struct containing info that is shared among buffers that have the same file open
func (*SharedBuffer) DisableReload ¶
func (b *SharedBuffer) DisableReload()
DisableReload disables future reloads of this sharedbuffer
func (*SharedBuffer) MarkModified ¶
func (b *SharedBuffer) MarkModified(start, end int)
MarkModified marks the buffer as modified for this frame and performs rehighlighting if syntax highlighting is enabled