Tinymist Docs

Language Queries

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.
FigureĀ 1: The relationship of analyzers.

Extending Language Features

Typicial language features are implemented based on basic analyzers:

  • The textDocument/documentSymboltextDocument/documentSymbol returns a tree of nodes converted from the lexical hierarchy.

  • The textDocument/foldingRangetextDocument/foldingRange also returns a tree of nodes converted from the lexical hierarchy but with a different approach.

  • The workspace/symbolworkspace/symbol returns an array of nodes converted from all lexical hierarchys in workspace.

  • The textDocument/definitiontextDocument/definition returns the result of find definition.

  • The textDocument/completiontextDocument/completion returns a list of types of related nodes according to type check info, matched by AST matchers.

  • The textDocument/hovertextDocument/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/signatureHelptextDocument/signatureHelp also finds definition and prints the signature with union of inferred signatures by type check info.

  • The textDocument/prepareRenametextDocument/prepareRename finds definition and determines whether it can be renamed.

  • The textDocument/renametextDocument/rename finds definition and references and renamed them all.

Contributing

See CONTRIBUTING.md.