#syntax-highlighting #typst #escaping #ansi #discord #sequences #highlight

typst-ansi-hl

typst-ansi-hl highlights your Typst code using ANSI escape sequences

3 releases (breaking)

0.3.0 Oct 18, 2024
0.2.0 Jun 22, 2024
0.1.0 Apr 15, 2024

#538 in Text processing

Download history 13/week @ 2024-08-17 91/week @ 2024-08-24 33/week @ 2024-08-31 43/week @ 2024-09-07 40/week @ 2024-09-14 82/week @ 2024-09-21 77/week @ 2024-09-28 92/week @ 2024-10-05 105/week @ 2024-10-12 286/week @ 2024-10-19 46/week @ 2024-10-26 52/week @ 2024-11-02 126/week @ 2024-11-09 116/week @ 2024-11-16 124/week @ 2024-11-23 192/week @ 2024-11-30

566 downloads per month

EUPL-1.2 and LGPL-3.0-or-later

21KB
354 lines

typst-ansi-hl

typst-ansi-hl highlights your Typst code using ANSI escape sequences.

It is especially intended to be used to provide the otherwise missing Typst syntax highlighting in Discord.

Installation

cargo install --path .

Usage

Simply run typst-ansi-hl main.typ or pipe the source code into typst-ansi-hl. See Clipboard-based Workflow for information on how to copy Discord-compatible output to your clipboard.

Usage: typst-ansi-hl [OPTIONS] [INPUT]

Arguments:
  [INPUT]
          The input path. If unset, stdin is used

Options:
  -d, --discord
          Wrap the output in a Discord-flavoured-markdown–style ANSI codeblock

  -D, --no-discord
          Don't wrap the output in a markdown-style codeblock. [default]

  -s, --strip-ansi
          Strip all ANSI escape sequences from the input before processing. [default]

  -S, --no-strip-ansi
          Don't remove escape sequences from the input

  -c, --unwrap-codeblock
          If the input is surrounded by an ANSI codeblock as generated by this tool, remove it

  -C, --no-unwrap-codeblock
          Don't remove surrounding codeblock from the input. [default]

  -u, --unindent
          Strip any top-level indentation in the input prior to highlighting it

  -U, --no-unindent
          Keep indents as-is. [default]

  -l, --soft-limit <SOFT_LIMIT>
          Softly enforce a byte size limit.

          This means that if the size limit is exceeded, less colors are used in order to get below that size limit. If it is not possible to get below that limit, the text is printed anyway.

  -m, --mode <MODE>
          The kind of input syntax

          [default: markup]
          [possible values: code, markup, math]

  -h, --help
          Print help (see a summary with '-h')

Clipboard-based Workflow

You can bind one of the following commands to a certain key bind for improved ease-of-use:

# Linux X11 (Bash/Zsh/Fish/Nushell)
xclip -selection clipboard -out | typst-ansi-hl --discord --soft-limit 2000 | xclip -selection clipboard -in

# Linux Wayland (Bash/Zsh/Fish/Nushell)
wl-paste | typst-ansi-hl --discord --soft-limit 2000 | wl-copy --type text/markdown

# Windows (PowerShell)
Get-Clipboard | typst-ansi-hl --discord --soft-limit 2000 | Set-Clipboard

Library

You can also use this crate as a library. See the documentation for further details.

This software is not affiliated with Typst, the brand.

Dependencies

~14–23MB
~277K SLoC