micro: github.com/zyedidia/micro/pkg/highlight Index | Files

package highlight

import "github.com/zyedidia/micro/pkg/highlight"


Package Files

ftdetect.go highlighter.go parser.go unicode.go


var EmptyDef = Def{nil, &rules{}}
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

func CharacterCount Uses

func CharacterCount(b []byte) int

CharacterCount returns the number of characters in a byte array Similar to utf8.RuneCount but for unicode characters

func CharacterCountInString Uses

func CharacterCountInString(str string) int

CharacterCount returns the number of characters in a string Similar to utf8.RuneCountInString but for unicode characters

func DecodeCharacter Uses

func DecodeCharacter(b []byte) (rune, []rune, int)

DecodeCharacter returns the next character from an array of bytes A character is a rune along with any accompanying combining runes

func DecodeCharacterInString Uses

func DecodeCharacterInString(str string) (rune, []rune, int)

DecodeCharacterInString returns the next character from a string A character is a rune along with any accompanying combining runes

func GetIncludes Uses

func GetIncludes(d *Def) []string

GetIncludes returns a list of filetypes that are included by this syntax def

func HasIncludes Uses

func HasIncludes(d *Def) bool

HasIncludes returns whether this syntax def has any include statements

func MatchFiletype Uses

func MatchFiletype(ftdetect [2]*regexp.Regexp, filename string, firstLine []byte) bool

MatchFiletype will use the list of syntax definitions provided and the filename and first line of the file to determine the filetype of the file It will return the corresponding syntax definition for the filetype

func ResolveIncludes Uses

func ResolveIncludes(def *Def, files []*File)

ResolveIncludes will sort out the rules for including other filetypes You should call this after parsing all the Defs

type Def Uses

type Def struct {
    // 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

func ParseDef Uses

func ParseDef(f *File, header *Header) (s *Def, err error)

ParseDef parses an input syntax file into a highlight Def

type File Uses

type File struct {
    FileType string
    // contains filtered or unexported fields

func ParseFile Uses

func ParseFile(input []byte) (f *File, err error)

type Group Uses

type Group uint8

A Group represents a syntax group

func (Group) String Uses

func (g Group) String() string

String returns the group name attached to the specific group

type Header struct {
    FileType string
    FtDetect [2]*regexp.Regexp

func MakeHeader Uses

func MakeHeader(data []byte) (*Header, error)

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 Uses

func MakeHeaderYaml(data []byte) (*Header, error)

MakeHeaderYaml takes a yaml spec for a syntax file and parses the header

type HeaderYaml Uses

type HeaderYaml struct {
    FileType string `yaml:"filetype"`
    Detect   struct {
        FNameRgx  string `yaml:"filename"`
        HeaderRgx string `yaml:"header"`
    }   `yaml:"detect"`

type Highlighter Uses

type Highlighter struct {
    Def *Def
    // contains filtered or unexported fields

A Highlighter contains the information needed to highlight a string

func NewHighlighter Uses

func NewHighlighter(def *Def) *Highlighter

NewHighlighter returns a new highlighter from the given syntax definition

func (*Highlighter) HighlightMatches Uses

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 Uses

func (h *Highlighter) HighlightStates(input LineStates)

HighlightStates correctly sets all states for the buffer

func (*Highlighter) HighlightString Uses

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 Uses

func (h *Highlighter) ReHighlightLine(input LineStates, lineN int)

ReHighlightLine will rehighlight the state and match for a single line

func (*Highlighter) ReHighlightStates Uses

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 Uses

type LineMatch map[int]Group

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)

type LineStates Uses

type LineStates interface {
    LineBytes(n int) []byte
    LinesNum() int
    State(lineN int) State
    SetState(lineN int, s State)
    SetMatch(lineN int, m LineMatch)

LineStates is an interface for a buffer-like object which can also store the states and matches for every line

type State Uses

type State *region

A State represents the region at the end of a line

Package highlight imports 8 packages (graph). Updated 2020-05-21. Refresh now. Tools for package owners.