Documentation ¶
Index ¶
- Variables
- func SymbolMatching(symbols []query.Symbol, name string) query.Symbol
- func SymbolsStartingWith(symbols []query.Symbol, prefix string) []query.Symbol
- func ToCompletionItemKind(k protocol.SymbolKind) protocol.CompletionItemKind
- type Analyzer
- func (a *Analyzer) Completion(doc document.Document, pos protocol.Position) *protocol.CompletionList
- func (a *Analyzer) Definition(ctx context.Context, doc document.Document, pos protocol.Position) []protocol.Location
- func (a *Analyzer) FindDefinition(doc document.Document, node *sitter.Node, name string) (query.Symbol, bool)
- func (a *Analyzer) Hover(ctx context.Context, doc document.Document, pos protocol.Position) *protocol.Hover
- func (a *Analyzer) SignatureHelp(doc document.Document, pos protocol.Position) *protocol.SignatureHelp
- func (a Analyzer) SymbolAtPosition(doc document.Document, pos protocol.Position) query.Symbol
- type AnalyzerOption
- type Builtins
- func LoadBuiltins(ctx context.Context, path string) (*Builtins, error)
- func LoadBuiltinsFromFS(ctx context.Context, f fs.FS) (*Builtins, error)
- func LoadBuiltinsFromFile(ctx context.Context, path string, f fs.FS) (*Builtins, error)
- func LoadBuiltinsFromSource(ctx context.Context, contents []byte, path string) (*Builtins, error)
- func NewBuiltins() *Builtins
- type LineOffsets
Constants ¶
This section is empty.
Variables ¶
var StarlarkBuiltins []byte
Functions ¶
func SymbolsStartingWith ¶
func ToCompletionItemKind ¶
func ToCompletionItemKind(k protocol.SymbolKind) protocol.CompletionItemKind
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 (*Analyzer) FindDefinition ¶
func (*Analyzer) SignatureHelp ¶
type AnalyzerOption ¶
func WithBuiltinPaths ¶
func WithBuiltinPaths(paths []string) AnalyzerOption
func WithBuiltins ¶
func WithBuiltins(f fs.FS) AnalyzerOption
func WithStarlarkBuiltins ¶
func WithStarlarkBuiltins() 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 LoadBuiltinsFromFile ¶
func LoadBuiltinsFromSource ¶
func NewBuiltins ¶
func NewBuiltins() *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:
- https://github.com/microsoft/language-server-protocol/issues/376
- https://github.com/rust-analyzer/rust-analyzer/blob/9b1978a3ed405c2a5ec34703914ec1878b599e14/crates/ide_db/src/line_index.rs
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.