analysis

package
v0.0.0-...-26ea562 Latest Latest
Warning

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

Go to latest
Published: Apr 10, 2023 License: Apache-2.0 Imports: 15 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

View Source
var StarlarkBuiltins []byte

Functions

func SymbolMatching

func SymbolMatching(symbols []query.Symbol, name string) query.Symbol

func SymbolsStartingWith

func SymbolsStartingWith(symbols []query.Symbol, prefix string) []query.Symbol

Types

type Analyzer

type Analyzer struct {
	// contains filtered or unexported fields
}

func NewAnalyzer

func NewAnalyzer(ctx context.Context, opts ...AnalyzerOption) (*Analyzer, error)

func (*Analyzer) Completion

func (*Analyzer) Definition

func (a *Analyzer) Definition(ctx context.Context, doc document.Document, pos protocol.Position) []protocol.Location

func (*Analyzer) FindDefinition

func (a *Analyzer) FindDefinition(doc document.Document, node *sitter.Node, name string) (query.Symbol, bool)

func (*Analyzer) Hover

func (*Analyzer) SignatureHelp

func (a *Analyzer) SignatureHelp(doc document.Document, pos protocol.Position) *protocol.SignatureHelp

func (Analyzer) SymbolAtPosition

func (a Analyzer) SymbolAtPosition(doc document.Document, pos protocol.Position) query.Symbol

type AnalyzerOption

type AnalyzerOption func(*Analyzer) error

func WithBuiltinPaths

func WithBuiltinPaths(paths []string) AnalyzerOption

func WithBuiltins

func WithBuiltins(f fs.FS) AnalyzerOption

func WithStarlarkBuiltins

func WithStarlarkBuiltins() AnalyzerOption

func WithStarlarkBuiltinsWithCustomBuiltIn

func WithStarlarkBuiltinsWithCustomBuiltIn(kurtosisBuiltIn *Builtins) AnalyzerOption

type Builtins

type Builtins struct {
	Functions map[string]query.Signature
	Symbols   []query.Symbol
	Types     map[string]query.Type
	Methods   map[string]query.Signature
	Members   []query.Symbol
}

func LoadBuiltins

func LoadBuiltins(ctx context.Context, path string) (*Builtins, error)

func LoadBuiltinsFromFS

func LoadBuiltinsFromFS(ctx context.Context, f fs.FS) (*Builtins, error)

func LoadBuiltinsFromFile

func LoadBuiltinsFromFile(ctx context.Context, path string, f fs.FS) (*Builtins, error)

func LoadBuiltinsFromSource

func LoadBuiltinsFromSource(ctx context.Context, contents []byte, path string) (*Builtins, error)

func NewBuiltins

func NewBuiltins() *Builtins

func (*Builtins) IsEmpty

func (b *Builtins) IsEmpty() bool

func (*Builtins) Update

func (b *Builtins) Update(other *Builtins)

type LineOffsets

type LineOffsets struct {
	// contains filtered or unexported fields
}

LineOffsets translates between byte offsets and (line, col) file locations.

The latter is used throughout the LSP protocol. Tree-sitter has good support for both, but it's sometimes easier to use byte offsets and translate back later.

Implementation note: there are arguably more efficient ways to compute/store this information (e.g. VSCode uses "prefix sums" internally). If this becomes a performance bottleneck, it can be optimized. However, this approach is similar to others, such as `rust-analyzer`, so it should be sufficient.

Currently, this doesn't handle UTF-16 properly, which is used in the LSP spec. See:

func NewLineOffsets

func NewLineOffsets(input []byte) LineOffsets

NewLineOffsets creates a LineOffsets object to convert between byte offsets and (line, col) file locations and vice-versa.

func (LineOffsets) OffsetForPoint

func (l LineOffsets) OffsetForPoint(point sitter.Point) uint32

OffsetForPoint returns the byte offset for a given Tree-sitter file location.

func (LineOffsets) OffsetForPosition

func (l LineOffsets) OffsetForPosition(pos protocol.Position) uint32

OffsetForPosition returns the byte offset for a given LSP protocol file location.

func (LineOffsets) PointForOffset

func (l LineOffsets) PointForOffset(offset uint32) sitter.Point

PointForOffset returns the file location in Tree-sitter format for a given byte offset.

func (LineOffsets) PositionForOffset

func (l LineOffsets) PositionForOffset(offset uint32) protocol.Position

PositionForOffset returns the file location in LSP protocol format for a given byte offset.

Jump to

Keyboard shortcuts

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