Automatically parses project-level CSpell configuration files inside JetBrains IDEs and synchronizes custom vocabularies with the IDE runtime dictionary, keeping spell checking noise-free for the whole team.
idea-spell-check targets JetBrains IDEs such as IntelliJ IDEA, WebStorm, and PyCharm etc. It watches CSpell configuration files as well as external dictionaries, merges them, and refreshes the IDE dictionary automatically so shared spelling rules are always respected.
- Priority-aware discovery: Mirrors the official CSpell file naming hierarchy and always picks the highest-priority configuration available in project roots,
.config,.vscode, and related directories. - Real-time file watching: Uses Virtual File System listeners with debounce control, so any saved change triggers a re-parse and refresh with minimal overhead.
- Dictionary aggregation: Reads
dictionaryDefinitionstogether withdictionaries, fetching extra word lists from referenced files and merging them into the IDE dictionary. - Node.js auto-detection: For
.js/.cjs/.mjsconfigs the plugin locates a Node.js runtime automatically or lets you provide a custom executable path in settings. - Multi-root coverage: Add extra search folders via the settings page to support monorepos and multi-module repositories.
- Open
Settings/Preferences. - Navigate to
Plugins→Marketplaceand search for “CSpell Check”. - Click
Install, then restart the IDE.
- Download the latest release.
- In
Settings/Preferences→Plugins, click the gear icon. - Choose
Install Plugin from Disk..., select the downloaded archive, and restart the IDE.
- The plugin scans the project root and any configured custom paths, applying the priority list above to determine the effective CSpell configuration.
- When a higher-priority file appears, it replaces the previously active configuration automatically.
- A dictionary definition is loaded when either
addWordsistrueor the definition name is listed inside thedictionariesarray. - Only when
addWordsisfalseand the definition is never referenced bydictionarieswill the file be ignored. - Blank lines and lines that begin with
#,//, or;are skipped while reading external dictionary files.
- Parsing
.js,.cjs, or.mjsconfigs requires Node.js. - The plugin searches common locations (PATH, nvm, Volta, fnm, Homebrew, etc.) and exposes a manual override under
Settings/Preferences | Tools | CSpell Check. - If no runtime is available, the plugin shows a notification and skips only the script-based configs while keeping other sources active.
- Checked in order from top to bottom to determine the active configuration.
.cspell.jsoncspell.json.cSpell.jsoncSpell.json.cspell.jsonccspell.jsonc.cspell.yamlcspell.yaml.cspell.ymlcspell.yml.cspell.config.jsoncspell.config.json.cspell.config.jsonccspell.config.jsonc.cspell.config.yamlcspell.config.yaml.cspell.config.ymlcspell.config.yml.cspell.config.mjscspell.config.mjs.cspell.config.cjscspell.config.cjs.cspell.config.jscspell.config.js.cspell.config.tomlcspell.config.toml.config/.cspell.json.config/cspell.json.config/.cSpell.json.config/cSpell.json.config/.cspell.jsonc.config/cspell.jsonc.config/cspell.yaml.config/cspell.yml.config/.cspell.config.json.config/cspell.config.json.config/.cspell.config.jsonc.config/cspell.config.jsonc.config/.cspell.config.yaml.config/cspell.config.yaml.config/.cspell.config.yml.config/cspell.config.yml.config/.cspell.config.mjs.config/cspell.config.mjs.config/.cspell.config.cjs.config/cspell.config.cjs.config/.cspell.config.js.config/cspell.config.jsconfig/.cspell.config.tomlconfig/cspell.config.toml.vscode/.cspell.json.vscode/cSpell.json.vscode/cspell.jsonpackage.json(cspellblock includingdictionaryDefinitions)
- Clone the repository and run
./gradlew buildto compile the plugin. - Execute
./gradlew testto validate the parsing logic. - Use the
Run IDE for UI Teststask to launch a sandbox IDE with the plugin for interactive testing. - Contributions via pull requests or issues are welcome to further improve the CSpell experience on JetBrains platforms.
Built on top of the IntelliJ Platform Plugin Template.
