Skip to main content

SyntaxHighlighter

Trait SyntaxHighlighter 

Source
pub trait SyntaxHighlighter:
    Send
    + Sync
    + 'static {
    // Required method
    fn highlight_line(
        &self,
        buffer: &EditorBuffer,
        row: usize,
        line_text: &str,
    ) -> Vec<StyleSpan>;

    // Provided methods
    fn extract_links(
        &self,
        _buffer: &EditorBuffer,
        _row: usize,
        _line_text: &str,
    ) -> Vec<(Range<usize>, String)> { ... }
    fn expand_line(
        &self,
        _buffer: &EditorBuffer,
        _row: usize,
        _concealed: &ConcealedLine,
    ) -> Vec<DisplayPad> { ... }
    fn should_wrap_line(&self, _buffer: &EditorBuffer, _row: usize) -> bool { ... }
}
Expand description

Trait implemented by language tokenizers and syntax highlighters.

Required Methods§

Source

fn highlight_line( &self, buffer: &EditorBuffer, row: usize, line_text: &str, ) -> Vec<StyleSpan>

Analyzes a single line of text and returns all highlight spans for that line.

Ranges in the returned StyleSpans are byte offsets relative to line_text.

Provided Methods§

Optional extraction of hyperlinks on this line (source byte range -> URL).

The default implementation returns no links. Language plugins (e.g. Markdown) override this to expose clickable ranges without the canvas knowing the syntax.

Source

fn expand_line( &self, _buffer: &EditorBuffer, _row: usize, _concealed: &ConcealedLine, ) -> Vec<DisplayPad>

Optional display-only padding for this line (e.g. table cell alignment).

Receives the collapsed ConcealedLine and returns insertions in collapsed display coordinates (see DisplayPad). The default implementation returns no padding.

Source

fn should_wrap_line(&self, _buffer: &EditorBuffer, _row: usize) -> bool

Whether this line may soft-wrap when line_wrap is on.

Batteries return false for rows whose display alignment would break across visual lines (e.g. Markdown table rows). The default is true.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§