Base Analyses
There are seven basic analyzers:
- lexical hierarchy matches crucial lexical structures in the source file.
- expression info is computed incrementally on source files.
- type check info is computed with expression info.
- definition finder finds the definition based on expression info and type check info.
- references finder finds the references based on definitions and expression info.
- signature resolver summarizes signature based on definitions and type check info.
- call resolver check calls based on signatures and type check info.
Extending Language Features
Typicial language features are implemented based on basic analyzers:
-
The
textDocument/documentSymbol
returns a tree of nodes converted from the lexical hierarchy. -
The
textDocument/foldingRange
also returns a tree of nodes converted from the lexical hierarchy but with a different approach. -
The
workspace/symbol
returns an array of nodes converted from all lexical hierarchys in workspace. -
The
textDocument/definition
returns the result of find definition. -
The
textDocument/completion
returns a list of types of related nodes according to type check info, matched by AST matchers. -
The
textDocument/hover
finds definition and prints the definition with a checked type by type check info. Or, specific to typst, prints a set of inspected values during execution of the document. -
The
textDocument/signatureHelp
also finds definition and prints the signature with union of inferred signatures by type check info. -
The
textDocument/prepareRename
finds definition and determines whether it can be renamed. -
The
textDocument/rename
finds definition and references and renamed them all.
Contributing
See CONTRIBUTING.md.