fatou 0.10.0

A language server, formatter, and linter for Julia
docs.rs failed to build fatou-0.10.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: fatou-0.3.0

Fatou

Build and Test Crates.io Open VSX VS Code PyPI version npm version

Fatou is a language server, formatter, and linter for Julia that never has to run Julia itself.

It parses Julia once and serves three tools from that tree:

  • Formatter (fatou format): deterministic, rule-based layout.
  • Linter (fatou lint): diagnostics with source snippets.
  • Language server (fatou lsp): both, live in your editor.

Written in Rust, Fatou is fast, safe, and easy to embed in editors and tooling. The architecture follows rust-analyzer: a lossless rowan CST that reconstructs the input byte-for-byte, salsa for incremental recomputation, and lsp-server for the language-server transport. It is named after the French mathematician Pierre Fatou, whose Fatou set is the complement of the Julia set.

Installation

Fatou is available from several sources:

  • crates.io: cargo install fatou
  • Homebrew: brew install jolars/fatou/fatou
  • npm: npm install -g fatou-cli (bundles a prebuilt binary)
  • PyPI: uv tool install fatou/pipx install fatou
  • Prebuilt binaries: from the releases page
  • VS Code/Open VSX: the Fatou extension (Marketplace, Open VSX); also works in Positron

If you prefer a one-liner installer that picks the right release artifact for your platform, you can use the installer scripts below. These scripts are fetched directly from this repository and then download the latest matching Fatou release asset for your platform, installing to a user-local directory by default. If you prefer, download and inspect the script before running it.

For macOS and Linux:

curl --proto '=https' --tlsv1.2 -LsSf \
    https://raw.githubusercontent.com/jolars/fatou/refs/heads/main/scripts/fatou-installer.sh | sh

For Windows PowerShell:

powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://raw.githubusercontent.com/jolars/fatou/refs/heads/main/scripts/fatou-installer.ps1 | iex"

Usage

# Print the CST (reads stdin if no file)
fatou parse file.jl

# Format to stdout (reads stdin if omitted)
fatou format file.jl

# Verify formatting without writing—exits non-zero if anything would change
fatou format --check src/

# Lint—exits non-zero if there are any findings
fatou lint src/

# Run the language server over stdio
fatou lsp

Configuration lives in fatou.toml: [format] sets line and indent widths, [lint] selects or ignores rules.

Editor Integration

The language server (fatou lsp) runs over stdio and provides a broad set of features: completion, hover, go-to-definition, find references and document highlights, rename, document and workspace symbols, call and type hierarchy, signature help, code actions, folding and selection ranges, document links, and semantic tokens, alongside formatting (whole-document and range) and diagnostics (push and pull).

The Fatou extension for VS Code and Open VSX (Marketplace, Open VSX) bundles the binary and starts the server automatically; it also works in Positron. See editors/code for the extension, or the editor setup guide for Neovim and other editors.

Integrations

Run format and lint checks in GitHub Actions with fatou-action, which installs a prebuilt, checksum- and provenance-verified binary:

- uses: jolars/fatou-action@v1

Or as pre-commit hooks with fatou-pre-commit:

repos:
  - repo: https://github.com/jolars/fatou-pre-commit
    # fatou version
    rev: v0.7.0
    hooks:
      - id: fatou-lint
      - id: fatou-format

Documentation

See https://fatou.dev/ for the full documentation.

Contributing

See CONTRIBUTING.md.

License

MIT, see LICENSE.