Documentation ¶
Overview ¶
Package histyle provides syntax highlighting styles; it is based on github.com/alecthomas/chroma, which in turn was based on the python pygments package. Note that this package depends on goki/gi and goki/pi and cannot be imported there; is imported into goki/gi/giv.
Index ¶
- Variables
- func Init()
- func MergeAvailStyles()
- func TokenFromChroma(ct chroma.TokenType) token.Tokens
- func TokenToChroma(tok token.Tokens) chroma.TokenType
- func View(st *Styles)
- type Style
- func (hs *Style) CopyFrom(ss *Style)
- func (hs Style) OpenJSON(filename gi.FileName) error
- func (hs Style) SaveJSON(filename gi.FileName) error
- func (hs Style) Tag(tag token.Tokens) StyleEntry
- func (hs Style) TagRaw(tag token.Tokens) StyleEntry
- func (hs Style) ToCSS() map[token.Tokens]string
- func (hs Style) ToProps() ki.Props
- type StyleEntry
- type Styles
- func (hs *Styles) Add() *Style
- func (hs *Styles) CopyFrom(os Styles)
- func (hs *Styles) Names() []string
- func (hs *Styles) OpenDefaults() error
- func (hs *Styles) OpenJSON(filename gi.FileName) error
- func (hs *Styles) OpenPrefs() error
- func (hs *Styles) SaveAll(dir gi.FileName)
- func (hs *Styles) SaveJSON(filename gi.FileName) error
- func (hs *Styles) SavePrefs() error
- func (hs *Styles) ViewStd()
- type Trilean
- func (i Trilean) Desc() string
- func (i Trilean) Int64() int64
- func (i Trilean) IsValid() bool
- func (i Trilean) MarshalText() ([]byte, error)
- func (t Trilean) Prefix(s string) string
- func (i *Trilean) SetInt64(in int64)
- func (i *Trilean) SetString(s string) error
- func (i Trilean) String() string
- func (i *Trilean) UnmarshalText(text []byte) error
- func (i Trilean) Values() []enums.Enum
- type Value
Constants ¶
This section is empty.
Variables ¶
var ChromaToTokensMap map[chroma.TokenType]token.Tokens
ChromaToTokensMap maps from chroma.TokenType to Tokens -- built from opposite map
var CustomStyles = Styles{}
CustomStyles are user's special styles
var PrefsStylesFileName = "hi_styles.json"
PrefsStylesFileName is the name of the preferences file in App prefs directory for saving / loading the custom styles
var Props = map[token.Tokens]ki.Props{ token.TextSpellErr: { "text-decoration": 1 << uint32(styles.DecoDottedUnderline), }, }
TagsProps are default properties for custom tags (tokens) -- if set in style then used there but otherwise we use these as a fallback -- typically not overridden
var StyleDefault = gi.HiStyleName("emacs")
StyleDefault is the default highlighting style name -- can set this to whatever you want
var StyleNames []string
StyleNames are all the names of all the available highlighting styles
var StyleProps = ki.Props{ "MainMenu": ki.PropSlice{ {"AppMenu", ki.BlankProp{}}, {"File", ki.PropSlice{ {"OpenJSON", ki.Props{ "label": "Open from file", "desc": "You can save and open styles to / from files to share, experiment, transfer, etc", "shortcut": keyfun.Open, "Args": ki.PropSlice{ {"File Name", ki.Props{ "ext": ".histy", }}, }, }}, {"SaveJSON", ki.Props{ "label": "Save to file", "desc": "You can save and open styles to / from files to share, experiment, transfer, etc", "shortcut": keyfun.SaveAs, "Args": ki.PropSlice{ {"File Name", ki.Props{ "ext": ".histy", }}, }, }}, }}, {"Edit", "Copy Cut Paste Dupe"}, {"RenderWin", "RenderWins"}, }, "Toolbar": ki.PropSlice{ {"OpenJSON", ki.Props{ "label": "Open from file", "icon": icons.Open, "desc": "You can save and open styles to / from files to share, experiment, transfer, etc -- save from standard ones and load into custom ones for example", "Args": ki.PropSlice{ {"File Name", ki.Props{ "ext": ".histy", }}, }, }}, {"SaveJSON", ki.Props{ "label": "Save to file", "icon": icons.SaveAs, "desc": "You can save and open styles to / from files to share, experiment, transfer, etc -- save from standard ones and load into custom ones for example", "Args": ki.PropSlice{ {"File Name", ki.Props{ "ext": ".histy", }}, }, }}, }, }
StyleProps define the Toolbar and MenuBar for view
var StylesChanged = false
StylesChanged is used for gui updating while editing
var TokensToChromaMap = map[token.Tokens]chroma.TokenType{ token.EOF: chroma.EOFType, token.Background: chroma.Background, token.Error: chroma.Error, token.None: chroma.None, token.Keyword: chroma.Keyword, token.KeywordConstant: chroma.KeywordConstant, token.KeywordDeclaration: chroma.KeywordDeclaration, token.KeywordNamespace: chroma.KeywordNamespace, token.KeywordPseudo: chroma.KeywordPseudo, token.KeywordReserved: chroma.KeywordReserved, token.KeywordType: chroma.KeywordType, token.Name: chroma.Name, token.NameAttribute: chroma.NameAttribute, token.NameBuiltin: chroma.NameBuiltin, token.NameBuiltinPseudo: chroma.NameBuiltinPseudo, token.NameClass: chroma.NameClass, token.NameConstant: chroma.NameConstant, token.NameDecorator: chroma.NameDecorator, token.NameEntity: chroma.NameEntity, token.NameException: chroma.NameException, token.NameFunction: chroma.NameFunction, token.NameFunctionMagic: chroma.NameFunctionMagic, token.NameLabel: chroma.NameLabel, token.NameNamespace: chroma.NameNamespace, token.NameOperator: chroma.NameOperator, token.NameOther: chroma.NameOther, token.NamePseudo: chroma.NamePseudo, token.NameProperty: chroma.NameProperty, token.NameTag: chroma.NameTag, token.NameVar: chroma.NameVariable, token.NameVarAnonymous: chroma.NameVariableAnonymous, token.NameVarClass: chroma.NameVariableClass, token.NameVarGlobal: chroma.NameVariableGlobal, token.NameVarInstance: chroma.NameVariableInstance, token.NameVarMagic: chroma.NameVariableMagic, token.Literal: chroma.Literal, token.LiteralDate: chroma.LiteralDate, token.LiteralOther: chroma.LiteralOther, token.LitStr: chroma.LiteralString, token.LitStrAffix: chroma.LiteralStringAffix, token.LitStrAtom: chroma.LiteralStringAtom, token.LitStrBacktick: chroma.LiteralStringBacktick, token.LitStrBoolean: chroma.LiteralStringBoolean, token.LitStrChar: chroma.LiteralStringChar, token.LitStrDelimiter: chroma.LiteralStringDelimiter, token.LitStrDoc: chroma.LiteralStringDoc, token.LitStrDouble: chroma.LiteralStringDouble, token.LitStrEscape: chroma.LiteralStringEscape, token.LitStrHeredoc: chroma.LiteralStringHeredoc, token.LitStrInterpol: chroma.LiteralStringInterpol, token.LitStrName: chroma.LiteralStringName, token.LitStrOther: chroma.LiteralStringOther, token.LitStrRegex: chroma.LiteralStringRegex, token.LitStrSingle: chroma.LiteralStringSingle, token.LitStrSymbol: chroma.LiteralStringSymbol, token.LitNum: chroma.LiteralNumber, token.LitNumBin: chroma.LiteralNumberBin, token.LitNumFloat: chroma.LiteralNumberFloat, token.LitNumHex: chroma.LiteralNumberHex, token.LitNumInteger: chroma.LiteralNumberInteger, token.LitNumIntegerLong: chroma.LiteralNumberIntegerLong, token.LitNumOct: chroma.LiteralNumberOct, token.Operator: chroma.Operator, token.OperatorWord: chroma.OperatorWord, token.Punctuation: chroma.Punctuation, token.Comment: chroma.Comment, token.CommentHashbang: chroma.CommentHashbang, token.CommentMultiline: chroma.CommentMultiline, token.CommentSingle: chroma.CommentSingle, token.CommentSpecial: chroma.CommentSpecial, token.CommentPreproc: chroma.CommentPreproc, token.CommentPreprocFile: chroma.CommentPreprocFile, token.Text: chroma.Text, token.TextWhitespace: chroma.TextWhitespace, token.TextSymbol: chroma.TextSymbol, token.TextPunctuation: chroma.TextPunctuation, token.TextStyle: chroma.Generic, token.TextStyleDeleted: chroma.GenericDeleted, token.TextStyleEmph: chroma.GenericEmph, token.TextStyleError: chroma.GenericError, token.TextStyleHeading: chroma.GenericHeading, token.TextStyleInserted: chroma.GenericInserted, token.TextStyleOutput: chroma.GenericOutput, token.TextStylePrompt: chroma.GenericPrompt, token.TextStyleStrong: chroma.GenericStrong, token.TextStyleSubheading: chroma.GenericSubheading, token.TextStyleTraceback: chroma.GenericTraceback, token.TextStyleUnderline: chroma.GenericUnderline, }
TokensToChromaMap maps from Tokens to chroma.TokenType
Functions ¶
func Init ¶
func Init()
Init must be called to initialize the hi styles -- post startup so chroma stuff is all in place, and loads custom styles
func MergeAvailStyles ¶
func MergeAvailStyles()
MergeAvailStyles updates AvailStyles as combination of std and custom styles
func TokenFromChroma ¶
FromChroma converts a chroma.TokenType to a pi token.Tokens
func TokenToChroma ¶
TokenToChroma converts to a chroma.TokenType
Types ¶
type Style ¶
type Style map[token.Tokens]*StyleEntry
Style is a full style map of styles for different token.Tokens tag values
func AvailStyle ¶
func AvailStyle(nm gi.HiStyleName) *Style
AvailStyle returns a style by name from the AvailStyles list -- if not found default is used as a fallback
func (Style) Tag ¶
func (hs Style) Tag(tag token.Tokens) StyleEntry
Tag returns a StyleEntry for given Tag. Will try sub-category or category if an exact match is not found. does NOT add the background properties -- those are always kept separate.
func (Style) TagRaw ¶
func (hs Style) TagRaw(tag token.Tokens) StyleEntry
TagRaw returns a StyleEntry for given tag without any inheritance of anything will be IsZero if not defined for this style
type StyleEntry ¶
type StyleEntry struct { // text color Color color.RGBA // background color Background color.RGBA // border color? not sure what this is -- not really used Border color.RGBA `view:"-"` // bold font Bold Trilean // italic font Italic Trilean // underline Underline Trilean // don't inherit these settings from sub-category or category levels -- otherwise everything with a Pass is inherited NoInherit bool }
StyleEntry is one value in the map of highlight style values
func (StyleEntry) Inherit ¶
func (s StyleEntry) Inherit(ancestors ...StyleEntry) StyleEntry
Inherit styles from ancestors.
Ancestors should be provided from oldest, furthest away to newest, closest.
func (StyleEntry) IsZero ¶
func (s StyleEntry) IsZero() bool
func (*StyleEntry) Norm ¶
func (se *StyleEntry) Norm()
Norm normalizes the colors of the style entry such that they have consistent chromas and tones that guarantee sufficient text contrast.
func (StyleEntry) String ¶
func (se StyleEntry) String() string
func (StyleEntry) Sub ¶
func (s StyleEntry) Sub(e StyleEntry) StyleEntry
Sub subtracts two style entries, returning an entry with only the differences set
func (StyleEntry) ToCSS ¶
func (se StyleEntry) ToCSS() string
ToCSS converts StyleEntry to CSS attributes.
func (StyleEntry) ToProps ¶
func (se StyleEntry) ToProps() ki.Props
ToProps converts StyleEntry to ki.Props attributes.
type Styles ¶
Styles is a collection of styles
var AvailStyles Styles
AvailStyles are all highlighting styles
var StdStyles Styles
StdStyles are the styles from chroma package
func (*Styles) OpenDefaults ¶
OpenDefaults opens the default highlighting styles (from chroma originally) These are encoded as an embed from defaults.histys
func (*Styles) OpenJSON ¶
Open hi styles from a JSON-formatted file. You can save and open styles to / from files to share, experiment, transfer, etc.
func (*Styles) OpenPrefs ¶
OpenPrefs opens Styles from GoGi standard prefs directory, using PrefsStylesFileName
func (*Styles) SaveJSON ¶
Save hi styles to a JSON-formatted file. You can save and open styles to / from files to share, experiment, transfer, etc.
type Trilean ¶
type Trilean int32 //enums:enum
Trilean value for StyleEntry value inheritance.
const TrileanN Trilean = 3
TrileanN is the highest valid value for type Trilean, plus one.
func TrileanValues ¶
func TrileanValues() []Trilean
TrileanValues returns all possible values for the type Trilean.
func (Trilean) MarshalText ¶
MarshalText implements the encoding.TextMarshaler interface.
func (*Trilean) SetString ¶
SetString sets the Trilean value from its string representation, and returns an error if the string is invalid.
func (*Trilean) UnmarshalText ¶
UnmarshalText implements the encoding.TextUnmarshaler interface.
type Value ¶
Value presents a button for selecting a highlight styling method
func (*Value) ConfigWidget ¶
func (*Value) OpenDialog ¶
func (*Value) UpdateWidget ¶
func (vv *Value) UpdateWidget()