Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>Catpile - CatLangNew to Visual Studio Code? Get it now.
Catpile - CatLang

Catpile - CatLang

SwirX

|
1 install
| (0) | Free
Syntax highlighting, LSP diagnostics, completions, and symbols for the Catpile DSL (.cat files)
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Catpile — VS Code Extension

Visual Studio Marketplace Version License Python

Syntax highlighting, LSP diagnostics, completions, hover information, and document symbols for .cat files (CatLang / Catpile DSL).

Catpile is a Pythonic DSL that compiles to CatWeb JSON for Roblox CatWeb scripts. This extension provides a full editing experience for .cat files inside VS Code.

Catpile Docs • GitHub • PyPI • Web Editor


Requirements

  • catpile Python package installed in the Python environment VS Code uses:
    pip install catpile
    
  • VS Code 1.85 or newer

Installation

From VS Code Marketplace

Search for "Catpile" in the Extensions view (Ctrl+Shift+X) and click Install, or run:

code --install-extension swirx.catpile

From VSIX

git clone https://github.com/SwirX/catpile-vscode.git
cd catpile-vscode
npm install
npx @vscode/vsce package
code --install-extension catpile-*.vsix

Configuration

Setting Default Description
catpile.taste indent indent (Pythonic) or bracket (JS-style { })
catpile.defaultScope local Default variable scope when no l_/g_/o_ prefix
catpile.pythonPath python3 Path to the Python interpreter with catpile installed
catpile.lspLogLevel warn Server log verbosity

Features

Syntax highlighting

  • Keywords: on, fn, script, if, else, repeat, foreach, break, return
  • Event names highlighted separately from action calls
  • Scope-prefixed variables (l_name, g_name, o_name) get distinct colouring
  • String interpolation {varname} inside "..." is highlighted
  • Both comment styles: # (indent taste) and // (bracket taste)
  • Dotted UI paths: page.element.sub

Diagnostics

  • Syntax errors from the parser reported inline with line + column
  • Unknown action name warnings (catches typos in action calls)
  • Unknown event name warnings (e.g. on laoded:)
  • Missing : at end of block headers (indent taste)

Completions

  • All 122 actions with full signature snippets (tab stops per parameter)
  • All 14 events with on <event>: snippets
  • Control-flow snippets: if, if/else, repeat, repeat_forever, foreach, fn, script
  • UI element path completions from .catui files in the workspace (triggered by .)
  • Variables seen in the current document

Hover

Hover over any action or event name to see:

  • Canonical name and schema id
  • Human-readable signature with slot types
  • UI path globalID (when hovering a dotted path)

Document symbols

The outline panel (Ctrl+Shift+O) shows:

  • script "Name" blocks as top-level containers
  • on <event> handlers
  • fn <name> function definitions

LSP server location

The extension ships a thin launcher at server/run_lsp.py that starts the LSP from catpile's installed package. The actual server logic lives in catpile/lsp.py.

To replace the built-in LSP with a newer version, update catpile/lsp.py in the catpile package and reinstall (pip install -e . works).

Commands

Command Description
Catpile: Restart Language Server Re-launches the LSP process
Catpile: Show Server Output Opens the Catpile output channel

License

This extension is distributed under the GNU General Public License v3.0. See LICENSE for details.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft