Documentation ¶
Index ¶
- Variables
- func CharacterCount(b []byte) int
- func CharacterCountInString(str string) int
- func DecodeCharacter(b []byte) (rune, []rune, int)
- func DecodeCharacterInString(str string) (rune, []rune, int)
- func GetIncludes(d *Def) []string
- func HasIncludes(d *Def) bool
- func ResolveIncludes(def *Def, files []*File)
- type Def
- type File
- type Group
- type Header
- type HeaderYaml
- type Highlighter
- func (h *Highlighter) HighlightMatches(input LineStates, startline, endline int)
- func (h *Highlighter) HighlightStates(input LineStates)
- func (h *Highlighter) HighlightString(input string) []LineMatch
- func (h *Highlighter) ReHighlightLine(input LineStates, lineN int)
- func (h *Highlighter) ReHighlightStates(input LineStates, startline int) int
- type LineMatch
- type LineStates
- type State
Constants ¶
This section is empty.
Variables ¶
var Groups map[string]Group
Groups contains all of the groups that are defined You can access them in the map via their string name
Functions ¶
func CharacterCount ¶
CharacterCount returns the number of characters in a byte array Similar to utf8.RuneCount but for unicode characters
func CharacterCountInString ¶
CharacterCount returns the number of characters in a string Similar to utf8.RuneCountInString but for unicode characters
func DecodeCharacter ¶
DecodeCharacter returns the next character from an array of bytes A character is a rune along with any accompanying combining runes
func DecodeCharacterInString ¶
DecodeCharacterInString returns the next character from a string A character is a rune along with any accompanying combining runes
func GetIncludes ¶
GetIncludes returns a list of filetypes that are included by this syntax def
func HasIncludes ¶
HasIncludes returns whether this syntax def has any include statements
func ResolveIncludes ¶
ResolveIncludes will sort out the rules for including other filetypes You should call this after parsing all the Defs
Types ¶
type Def ¶
type Def struct { *Header // contains filtered or unexported fields }
A Def is a full syntax definition for a language It has a filetype, information about how to detect the filetype based on filename or header (the first line of the file) Then it has the rules which define how to highlight the file
type Header ¶
type Header struct { FileType string FileNameRegex *regexp.Regexp HeaderRegex *regexp.Regexp SignatureRegex *regexp.Regexp }
func MakeHeader ¶
MakeHeader takes a header (.hdr file) file and parses the header Header files make parsing more efficient when you only want to compute on the headers of syntax files A yaml file might take ~400us to parse while a header file only takes ~20us
func MakeHeaderYaml ¶
MakeHeaderYaml takes a yaml spec for a syntax file and parses the header
func (*Header) HasFileSignature ¶ added in v2.0.14
HasFileSignature checks the presence of a stored signature
func (*Header) MatchFileHeader ¶ added in v2.0.14
func (*Header) MatchFileName ¶ added in v2.0.14
MatchFileName will check the given file name with the stored regex
func (*Header) MatchFileSignature ¶ added in v2.0.14
MatchFileSignature will check the given line with the stored regex
type HeaderYaml ¶
type Highlighter ¶
type Highlighter struct { Def *Def // contains filtered or unexported fields }
A Highlighter contains the information needed to highlight a string
func NewHighlighter ¶
func NewHighlighter(def *Def) *Highlighter
NewHighlighter returns a new highlighter from the given syntax definition
func (*Highlighter) HighlightMatches ¶
func (h *Highlighter) HighlightMatches(input LineStates, startline, endline int)
HighlightMatches sets the matches for each line from startline to endline It sets all other matches in the buffer to nil to conserve memory This assumes that all the states are set correctly
func (*Highlighter) HighlightStates ¶
func (h *Highlighter) HighlightStates(input LineStates)
HighlightStates correctly sets all states for the buffer
func (*Highlighter) HighlightString ¶
func (h *Highlighter) HighlightString(input string) []LineMatch
HighlightString syntax highlights a string Use this function for simple syntax highlighting and use the other functions for more advanced syntax highlighting. They are optimized for quick rehighlighting of the same text with minor changes made
func (*Highlighter) ReHighlightLine ¶
func (h *Highlighter) ReHighlightLine(input LineStates, lineN int)
ReHighlightLine will rehighlight the state and match for a single line
func (*Highlighter) ReHighlightStates ¶
func (h *Highlighter) ReHighlightStates(input LineStates, startline int) int
ReHighlightStates will scan down from `startline` and set the appropriate end of line state for each line until it comes across a line whose state does not change returns the number of the final line
type LineMatch ¶
LineMatch represents the syntax highlighting matches for one line. Each index where the coloring is changed is marked with that color's group (represented as one byte)