Ren'Py Proofreader
Spelling and grammar checking for Ren'Py visual novels, right in VS Code. It reads your
dialogue, narration and menu choices the way a player sees them, and leaves the code alone.
- Checks as you type. Mistakes in the script you're working on are underlined a moment
after you stop typing.
- Checks the whole project with one shortcut, with a progress bar you can cancel.
- Knows Ren'Py. Text tags like
{i} and {w=0.5}, [variables], Python blocks, image
names and file paths are skipped. Character names from Character("...") are accepted
automatically.
- Private. Everything runs on your own computer. Your scripts are never sent anywhere.
Spelling uses cspell, the engine behind Code Spell Checker. Grammar uses
LanguageTool, running locally. Both follow one word list, and the
results show up together.
Getting started
- Install the extension.
- It downloads LanguageTool and a private copy of Java once, right after installing (about
300 MB). They're stored inside the extension's own folder and change nothing else on your
computer. Already have them? See Using your own Java and LanguageTool below.
- Open a
.rpy script and start writing.
Shortcuts
|
Mac |
Windows / Linux |
| Turn checking as you type on or off |
Ctrl+Cmd+L |
Shift+Alt+L |
| Check the whole project |
Ctrl+Cmd+P |
Shift+Alt+P |
| Fixes for the problem under the cursor |
Cmd+. |
Ctrl+. |
| Next / previous problem |
F8 / Shift+F8 |
F8 / Shift+F8 |
| Ignore the problem under the cursor until the next project check |
Ctrl+Cmd+X |
Shift+Alt+X |
On most Mac keyboards, hold fn for F8.
The Proofread button in the status bar also turns checking as you type on or off.
Colors
- Yellow: a mistake, either spelling or grammar.
- Blue: a style suggestion, advice you can take or leave (like "add a comma before 'and'").
Hide them all with the
renpyProofreader.showStyleSuggestions setting.
Fixing things
Put the cursor on a flagged word and press Cmd+. (Ctrl+. on Windows and Linux) to:
- change it to a suggestion,
- add it to your word list (character names, made-up words, slang), or to the project's
shared one, which also clears it everywhere in the project at once,
- ignore just this one until the next project check,
- or turn off that grammar rule for good.
Working through a project check
Clicking a problem in the Problems panel works, but the panel loses your place as soon as the
problem is fixed and disappears from the list. Instead, click the first one, then press F8
after each fix to go to the next problem (Shift+F8 goes back). Your place is wherever your
cursor is, so nothing can lose it, and the message and Cmd+. fixes show right there.
To leave a problem as it is, press Ctrl+Cmd+X (Shift+Alt+X on Windows and Linux) on it, or
choose Ignore this one from Cmd+.. It stays hidden as you move around and edit, until the
next project check, until checking as you type is turned off and on again, or until VS Code
restarts.
Running the project check again is quick: files that haven't changed since they were last
checked keep their results instead of being checked again. Adding a word or turning off a rule
only rechecks the files it affects. Ren'Py Proofreader: Clear Spelling and Grammar Results
makes the next check start fresh.
The word list
Accepted words are kept in VS Code's settings, so nothing extra lands in your project folder:
- Your word list:
Cmd+. > Add to your word list saves the word in your own settings,
for every project. With VS Code's Settings Sync on, it follows you to your other computers.
- A project's shared list:
Cmd+. > Add to this project's word list saves it in the
project's .vscode/settings.json instead, which a team can commit to share one list.
Both lists are used together. To see or edit them, open Settings and search for
Ren'Py Proofreader: Words. Adding a name also covers its possessive (Eileen covers
Eileen's).
Prefer a plain text file? Point renpyProofreader.wordList at one (one word per line, # for
comments). It's off unless you set it, and the extension never creates the file.
Written for visual novels
Casual dialogue isn't treated as a mistake. Rules that only complain a word is informal
(gotta, gonna, anyways...) are off by default, along with a few that misfire on scripts.
A line starting with ...Word isn't flagged for a missing space, and struck-through
corrections like {s}she{/s} he are read the way the player reads them.
Settings
| Setting |
What it does |
renpyProofreader.enabled |
Check as you type (on by default). |
renpyProofreader.projectCheckScope |
Project check covers the whole workspace (default) or the current file's folder. |
renpyProofreader.exclude |
Folders the project check skips. Translations (tl) are skipped by default. |
renpyProofreader.words |
Your accepted words (and a project's, if it has its own list). |
renpyProofreader.wordList |
Optional: also read accepted words from a text file. Off by default. |
renpyProofreader.disabledRules |
Grammar rules to skip. Each grammar problem shows its rule name. |
renpyProofreader.showStyleSuggestions |
Show style suggestions (on by default). |
renpyProofreader.liveResultsInProblemsPanel |
Turn off to show results from typing only as squiggles, keeping the Problems panel for project checks. |
renpyProofreader.tagReplacements |
Custom text tags to read as other text, like {"q": "\""} for a tag that stands for quote marks. |
renpyProofreader.javaPath, renpyProofreader.languageToolPath |
Use your own Java and LanguageTool instead of the download. |
If you already have Java 17 or newer and an unpacked
LanguageTool folder, point the javaPath and
languageToolPath settings at them and nothing is downloaded. These two settings only apply to
the computer you set them on (Settings Sync leaves them out), so your other computers still get
the automatic download. To remove the downloaded copies,
run Ren'Py Proofreader: Delete the Downloaded Java and LanguageTool from the Command Palette.
Good to know
- English only for now.
- A typo that happens to be a real word ("wether" for "weather") usually isn't caught. That's
true of spell checkers in general.
- The first check after VS Code starts takes a few seconds while LanguageTool starts up.
- Something not working? The log is in the Output panel under Ren'Py Proofreader.
Credits
Spelling by cspell (MIT). Grammar by
LanguageTool (LGPL 2.1), downloaded from languagetool.org. Java from
Eclipse Temurin (GPL 2.0 with the Classpath Exception), downloaded from
Adoptium.