ide

Submodule for IDE related functions.

Index

Submodules

lsp

LSP structures and types.

Classes

SemanticTokenModifiersSet

Fixed-size bitset of SemanticTokenModifiers for easier use with LSP serialization.

AbsoluteSemanticToken

Semantic token using absolute positions.

DeltaSemanticToken

Semantic token using delta encoded positions.

SemanticTokensBuilder

Helper for building LSP compatible semantic tokens.

Functions

build_full_semantic_tokens

Build full document semantic tokens.

build_delta_semantic_tokens

Build full document semantic tokens for edits.

build_range_semantic_tokens

Build range document semantic tokens.

resolve_relative_md_links

Resolve relatives paths and file URLs in Markdown links of the form [<text>](<link>) in source by prefixing them with cwd or optionally root.


Functions

build_full_semantic_tokens(document: syside.Document, encoding: syside.ide.lsp.PositionEncodingKind = lsp.PositionEncodingKind.Utf8, multiline_tokens: bool = True, builder: syside.ide.SemanticTokensBuilder | None = None) syside.ide.SemanticTokensBuilder | None

Build full document semantic tokens.

Returns builder if successful, and None otherwise. Generally, None is returned if the document has nothing to highlight.

Parameters:
  • document – The document to build full semantic tokens for.

  • encoding – The position encoding to use for semantic tokens. Use Utf32 if interacting with Python strings.

  • multiline_tokens – Whether to keep multiline tokens as is and not split them. Generally used for language clients that do not support multiline tokens.

  • builder – The builder to collect semantic tokens into. Note that if provided, its internal state will be reset.

Returns:

Provided builder, or new one otherwise, if there was anything to highlight.

Raises:

ValueError – If encoding != Utf8 or not multiline_tokens and document.text_document is None. Utf8 encoding and multiline_tokens does not require a text source as all the required information is already contained in the CST.

build_delta_semantic_tokens(document: syside.Document, id: int | str, encoding: syside.ide.lsp.PositionEncodingKind = lsp.PositionEncodingKind.Utf8, multiline_tokens: bool = True, builder: syside.ide.SemanticTokensBuilder | None = None) syside.ide.SemanticTokensBuilder | None

Build full document semantic tokens for edits.

Returns builder if successful, and None otherwise. Generally, None is returned if the document has nothing to highlight.

Internally calls SemanticTokensBuilder.previous_result before building tokens.

Parameters:
  • document – The document to build full semantic tokens for.

  • id – Previous result id. previous_result is called first, and if the id matches builder id the returned builder can be used to build edits.

  • encoding – The position encoding to use for semantic tokens. Use Utf32 if interacting with Python strings.

  • multiline_tokens – Whether to keep multiline tokens as is and not split them. Generally used for language clients that do not support multiline tokens.

  • builder – The builder to collect semantic tokens into. Note that if provided, its internal state will be reset.

Returns:

Provided builder, or new one otherwise, if there was anything to highlight.

Raises:

ValueError – If encoding != Utf8 or not multiline_tokens and document.text_document is None. Utf8 encoding and multiline_tokens does not require a text source as all the required information is already contained in the CST.

build_range_semantic_tokens(document: syside.Document, range: syside.RangeUtf8, encoding: syside.ide.lsp.PositionEncodingKind = lsp.PositionEncodingKind.Utf8, multiline_tokens: bool = True, builder: syside.ide.SemanticTokensBuilder | None = None) syside.ide.SemanticTokensBuilder | None

Build range document semantic tokens.

Returns builder if successful, and None otherwise. Generally, None is returned if the document has nothing to highlight.

The returned builder will contain tokens encompassing range. For most documents, this will be more efficient that building full semantic tokens.

Parameters:
  • document – The document to build range semantic tokens for.

  • range – Range that should have all tokens highlighted. Implementation may return also build tokens outside of this range.

  • encoding – The position encoding to use for semantic tokens. Use Utf32 if interacting with Python strings.

  • multiline_tokens – Whether to keep multiline tokens as is and not split them. Generally used for language clients that do not support multiline tokens.

  • builder – The builder to collect semantic tokens into. Note that if provided, its internal state will be reset.

Returns:

Provided builder, or new one otherwise, if there was anything to highlight.

Raises:

ValueError – If encoding != Utf8 or not multiline_tokens and document.text_document is None. Utf8 encoding and multiline_tokens does not require a text source as all the required information is already contained in the CST.

Resolve relatives paths and file URLs in Markdown links of the form [<text>](<link>) in source by prefixing them with cwd or optionally root.

As links in Markdown should be valid URLs, only / can be used as valid path separator, even on Windows. Links containing double backslashes will be ignored, and single backslashes will be assumed to be escapes.

If provided, predicate is always called before attempting to replace a path, returning False will skip the path replacement. This allows customizing which paths are allowed to be replaced, e.g. by extension.

cwd is used as path prefix for relative paths, root — absolute. No replacement takes place if:

  • chosen prefix is empty, as there is nothing to insert;

  • relative path traverses outside of root`, or ``cwd if root is empty. Paths relative to cwd are only allowed to traverse up to root only and only if root is an exact prefix of cwd.