language

package
v0.1.41 Latest Latest
Warning

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

Go to latest
Published: Aug 7, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultTextWidth       = 80
	DefaultTabWidth        = 4
	DefaultMaxWrap         = 20
	DefaultMaxIndentRetain = 40
	DefaultWrapIndicator   = "\u21aa" // '↪' - rightwards arrow with hook
)
View Source
const MinSoftWrapWidth = 10

Variables

View Source
var ErrInvalidAutoPairConfig = errors.New("invalid auto-pair config")

Functions

func DetectLanguage

func DetectLanguage(path, content string) (string, bool)

DetectLanguage identifies a language from the file name, then its shebang

Types

type AutoPairConfig

type AutoPairConfig struct {
	Present bool
	Enable  *bool
	Pairs   [][2]rune
}

func (*AutoPairConfig) AutoPairs

func (a *AutoPairConfig) AutoPairs() (core.AutoPairs, bool)

AutoPairs returns the configured pairs only

func (*AutoPairConfig) OrDefault

func (a *AutoPairConfig) OrDefault() (core.AutoPairs, bool)

OrDefault returns the configured pairs, or the built-in set when unset

func (*AutoPairConfig) UnmarshalTOML

func (a *AutoPairConfig) UnmarshalTOML(value any) error

UnmarshalTOML accepts either a bool or a table of pair characters

type FileType

type FileType struct {
	Extension string
	Glob      string
}

type Formatter

type Formatter struct {
	Command string
	Args    []string
}

type Indent

type Indent struct {
	TabWidth *int
	Unit     string
}

type Language

type Language struct {
	Name           string `toml:"name"`
	LanguageID     string `toml:"language-id"`
	InjectionRegex string `toml:"injection-regex"`

	FileTypes []FileType
	Shebangs  []string `toml:"shebangs"`
	Roots     []string `toml:"roots"`

	CommentTokens      []string
	BlockCommentTokens []core.BlockCommentToken

	Indent    Indent
	AutoPairs AutoPairConfig

	TextWidth *int     `toml:"text-width"`
	SoftWrap  SoftWrap `toml:"soft-wrap"`
	Rulers    []int    `toml:"rulers"`

	LanguageServers []string
	AutoFormat      bool `toml:"auto-format"`
	Formatter       *Formatter
}

func ForFilename added in v0.1.21

func ForFilename(langs Languages, path string) *Language

ForFilename returns the configured language matching path

func LoadLanguage

func LoadLanguage(lang string) *Language

LoadLanguage returns the bundled definition for a language name

type Languages

type Languages struct {
	Languages       []Language
	LanguageServers map[string]Server
}

func LoadBundledLanguages

func LoadBundledLanguages() (Languages, bool)

LoadBundledLanguages returns the definitions embedded in the binary

func LoadLanguagesForWorkspace

func LoadLanguagesForWorkspace(
	global, workspace, dir string,
) (Languages, bool)

LoadLanguagesForWorkspace merges bundled, user, and workspace definitions

type Server

type Server struct {
	Command      string
	Args         []string
	Environment  map[string]string
	Config       map[string]any
	Timeout      int
	RootPatterns []string
}

type SoftWrap

type SoftWrap struct {
	Enable          *bool   `toml:"enable"`
	WrapIndicator   *string `toml:"wrap-indicator"`
	WrapAtTextWidth *bool   `toml:"wrap-at-text-width"`
}

type TextFormat

type TextFormat struct {
	ViewportWidth       int
	TabWidth            int
	SoftWrap            bool
	MaxWrap             int
	MaxIndentRetain     int
	WrapIndicator       string
	SoftWrapAtTextWidth bool
}

func DefaultTextFormat

func DefaultTextFormat(w int) *TextFormat

DefaultTextFormat builds the render format used when no language matches

func TextFormatForConfig

func TextFormatForConfig(
	lang *Language, textWidth *int, softWrap SoftWrap, w int,
) *TextFormat

TextFormatForConfig builds the render format for a language and width

func (*TextFormat) WrapIndicatorPrefix added in v0.1.19

func (t *TextFormat) WrapIndicatorPrefix() string

WrapIndicatorPrefix is the indicator plus its gap, as drawn at the start of a soft-wrapped continuation row

Jump to

Keyboard shortcuts

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