histyle

package
v0.0.0-...-7f2886f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 10, 2024 License: BSD-3-Clause Imports: 29 Imported by: 0

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

Constants

This section is empty.

Variables

View Source
var ChromaToTokensMap map[chroma.TokenType]token.Tokens

ChromaToTokensMap maps from chroma.TokenType to Tokens -- built from opposite map

View Source
var CustomStyles = Styles{}

CustomStyles are user's special styles

View Source
var PrefsStylesFileName = "hi_styles.json"

PrefsStylesFileName is the name of the preferences file in App prefs directory for saving / loading the custom styles

View Source
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

View Source
var StyleDefault = gi.HiStyleName("emacs")

StyleDefault is the default highlighting style name -- can set this to whatever you want

View Source
var StyleNames []string

StyleNames are all the names of all the available highlighting styles

View Source
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

View Source
var StylesChanged = false

StylesChanged is used for gui updating while editing

View Source
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

func TokenFromChroma(ct chroma.TokenType) token.Tokens

FromChroma converts a chroma.TokenType to a pi token.Tokens

func TokenToChroma

func TokenToChroma(tok token.Tokens) chroma.TokenType

TokenToChroma converts to a chroma.TokenType

func View

func View(st *Styles)

View opens a view of highlighting styles

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) CopyFrom

func (hs *Style) CopyFrom(ss *Style)

CopyFrom copies a style from source style

func (Style) OpenJSON

func (hs Style) OpenJSON(filename gi.FileName) error

Open hi style from a JSON-formatted file.

func (Style) SaveJSON

func (hs Style) SaveJSON(filename gi.FileName) error

Save hi style to a JSON-formatted file.

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

func (Style) ToCSS

func (hs Style) ToCSS() map[token.Tokens]string

ToCSS generates a CSS style sheet for this style, by token.Tokens tag

func (Style) ToProps

func (hs Style) ToProps() ki.Props

ToProps generates list of ki.Props 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

type Styles map[string]*Style

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) Add

func (hs *Styles) Add() *Style

Add adds a new style to the list

func (*Styles) CopyFrom

func (hs *Styles) CopyFrom(os Styles)

CopyFrom copies styles from another collection

func (*Styles) Names

func (hs *Styles) Names() []string

Names outputs names of styles in collection

func (*Styles) OpenDefaults

func (hs *Styles) OpenDefaults() error

OpenDefaults opens the default highlighting styles (from chroma originally) These are encoded as an embed from defaults.histys

func (*Styles) OpenJSON

func (hs *Styles) OpenJSON(filename gi.FileName) error

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

func (hs *Styles) OpenPrefs() error

OpenPrefs opens Styles from GoGi standard prefs directory, using PrefsStylesFileName

func (*Styles) SaveAll

func (hs *Styles) SaveAll(dir gi.FileName)

SaveAll saves all styles individually to chosen directory

func (*Styles) SaveJSON

func (hs *Styles) SaveJSON(filename gi.FileName) error

Save hi styles to a JSON-formatted file. You can save and open styles to / from files to share, experiment, transfer, etc.

func (*Styles) SavePrefs

func (hs *Styles) SavePrefs() error

SavePrefs saves Styles to GoGi standard prefs directory, using PrefsStylesFileName

func (*Styles) ViewStd

func (hs *Styles) ViewStd()

ViewStd shows the standard styles that are compiled into the program via chroma package

type Trilean

type Trilean int32 //enums:enum

Trilean value for StyleEntry value inheritance.

const (
	Pass Trilean = iota
	Yes
	No
)
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) Desc

func (i Trilean) Desc() string

Desc returns the description of the Trilean value.

func (Trilean) Int64

func (i Trilean) Int64() int64

Int64 returns the Trilean value as an int64.

func (Trilean) IsValid

func (i Trilean) IsValid() bool

IsValid returns whether the value is a valid option for type Trilean.

func (Trilean) MarshalText

func (i Trilean) MarshalText() ([]byte, error)

MarshalText implements the encoding.TextMarshaler interface.

func (Trilean) Prefix

func (t Trilean) Prefix(s string) string

func (*Trilean) SetInt64

func (i *Trilean) SetInt64(in int64)

SetInt64 sets the Trilean value from an int64.

func (*Trilean) SetString

func (i *Trilean) SetString(s string) error

SetString sets the Trilean value from its string representation, and returns an error if the string is invalid.

func (Trilean) String

func (i Trilean) String() string

String returns the string representation of this Trilean value.

func (*Trilean) UnmarshalText

func (i *Trilean) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

func (Trilean) Values

func (i Trilean) Values() []enums.Enum

Values returns all possible values for the type Trilean.

type Value

type Value struct {
	giv.ValueBase
}

Value presents a button for selecting a highlight styling method

func (*Value) ConfigDialog

func (vv *Value) ConfigDialog(d *gi.Body) (bool, func())

func (*Value) ConfigWidget

func (vv *Value) ConfigWidget(w gi.Widget)

func (*Value) HasDialog

func (vv *Value) HasDialog() bool

func (*Value) OpenDialog

func (vv *Value) OpenDialog(ctx gi.Widget, fun func())

func (*Value) UpdateWidget

func (vv *Value) UpdateWidget()

func (*Value) WidgetType

func (vv *Value) WidgetType() *gti.Type

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL