A language server/client for TADS 3 and TADS 2, tailored for Visual Studio Code. Prioritized for Linux and Mac, with Windows support.
Install via the VS Code marketplace — search for "tads3tools" in the Extensions tab.
Windows-specific instructions are here.
This repository uses npm as the package manager.
- Use
npmfor install, build, test, and publish workflows. - Do not add or update Yarn lockfiles for this project.
Open a TADS 3 project folder in VS Code, or create one via the command palette (Ctrl+Shift+P): "Tads3 command: Create a new Tads3 template project".
The extension relies on the project's .t3m Makefile to locate includes and libraries. If t3make compiles the project from the command line, the extension should work out of the box.
Requires t3make, the TADS 2 compiler (tadsc / tc32.exe), and the library path. Configure via:
tads.preprocessor.path(default:t3make)tads2.compiler.path(default:tadsc)tads2.library.path(default:/usr/local/share/frobtads/tads2/)
A full list of all available commands is in the Command Reference.
Symbol outline
outliner.mp4
Go to definition
definitions.mp4
Hover documentation
hoverdoc.mp4
Create new project
createNewProject.mp4
Visual map editor — "Tads3 command: Open current tads3 source code in Tads3 Visual Editor"
Displays a live map of the game world with interactive exits and room editing.
mapeditor.mp4
Diagnostics on save
diagnostics.mp4
Code completions
completions.mp4
Completion documentation
completiondoc.mp4
Snippets
snippets.mp4
snippets2.mp4
Code actions — "Tads3 command: Analyze the text at the current position and offer code actions"
Uses NLP to identify nouns in a room description and offers to create decoration objects for them, with automatic +/++ levelling.
propGenerator.mp4
Preprocessor view — inspect preprocessed source for debugging
preprocessedDocCmds.mp4
String extraction — extract all quoted strings in the project or current file
stringExtractor.mp4
Auto-restart interpreter — "Tads3 command: Toggles on/off if the game should restarted as soon as the t3 image game file changes"
Relaunches the game in a terminal on every successful compile. Configurable interpreter via tads3.gameRunnerInterpreter (default: frob).
Game position tracker — "Tads3 command: Install a tracker game file..."
Persists the player's room position between sessions, enabling a continuous inner development loop together with the auto-restart feature.
Download extensions — "Tads3 command: Download and install extension(s)"
Fetches TADS 3 extensions from the IF Archive and installs them into the project folder.
- Microsoft LSP sample — MIT
- ANTLR4 — BSD 3-Clause
- antlr4ts — BSD
- LiteGraph — MIT
- RxJS — Apache-2.0
- fuzzysort — MIT
- wink-pos-tagger — MIT
- threads.js — MIT
- Axios — MIT
- TADS 3 tmLanguage by Sam Win-Mason, ported from Sublime Text plugin by VoidPhantom — UNLICENSE
MIT — Copyright Tomas Öberg 2021

