Pierson G170 downloadsSpellchecks individual words in camelCase, PascalCase, and snake_case identifiers.
Camel Case Spellcheck is a desktop-only Obsidian plugin that checks the words
inside camelCase, PascalCase, snake_case, and dotted.name identifiers
independently.
Obsidian normally treats a complete identifier as one spelling token. This plugin splits compound identifiers at case, underscore, and period boundaries and underlines only the component that appears to be misspelled.
| Text | Result |
|---|---|
TheseAreAllWords |
No underline |
TheLastWordIsMispleled |
Only Mispleled is underlined |
theLastWordIsMispleled |
Only Mispleled is underlined |
the_last_word_is_mispleled |
Only mispleled is underlined |
parseHTTPResponse |
Checked as parse, HTTP, and Response |
source.file.input |
Checked as source, file, and input |
example.com, notes.pdf |
Left to Obsidian's native spellchecker |
Mispleled |
Left to Obsidian's native spellchecker |
source.file.input, acronyms, mixed styles, and identifiers with numeric
boundaries. Hostnames and filenames such as example.com and notes.pdf
are left to native spellcheck, which already skips them. Period splitting
can be turned off in settings.src, init, num, and
JSON that are not English words. This can be turned off in settings.Once Camel Case Spellcheck is available in the Obsidian Community directory:
main.js, manifest.json, and styles.css from the latest GitHub
release.<vault>/.obsidian/plugins/camel-case-spellcheck/.Write camel-case, Pascal-case, or snake-case text normally. After a short pause, any misspelled component receives a red wavy underline. Right-click that component to replace it with a suggestion, ignore it inside identifiers, or add it to Obsidian's dictionary.
Ignore in identifiers affects only this plugin and only compound
identifiers; Add to dictionary changes Obsidian's native spellcheck
everywhere. Both match case-insensitively, so ignoring csae also covers
Csae and CSAE. The ignore list and the abbreviation toggle live in
Settings → Camel Case Spellcheck.
Ordinary words are deliberately left alone, so Obsidian's native spellchecker continues to handle them.
The first implementation attempted to reuse Chromium's native spellchecker for each component. In the live Obsidian renderer, however, the exposed Electron query reported a known misspelling as accepted and returned no suggestions even while Obsidian visibly underlined the same word. The query API was therefore not connected to the useful spelling context used by the editor.
A second experiment inserted invisible CodeMirror boundary widgets between the parts of an identifier. Those widgets are decorations rather than editable document text, and Chromium continued to combine the surrounding text into one spelling token. The result was still a whole-identifier underline.
The current implementation takes the reliable route: it calculates component
ranges itself, suppresses native spellcheck only for the compound identifier,
checks each part with nspell, and adds a CodeMirror decoration around only the
misspelled range. Native spellcheck remains responsible for ordinary words.
Camel Case Spellcheck has no telemetry, network requests, accounts, or external services. Text examined by the checker stays in memory and is not transmitted or persisted by the plugin. The only persistent data it accesses is Electron's spelling dictionary when synchronizing or adding custom words.
This repository requires Node.js 22.13 or newer.
npm ci
npm run check
npm run check runs ESLint, the unit tests, TypeScript type checking, and a
production build. Use npm run dev for a watch build during development. Both
commands generate main.js; the generated bundle is intentionally ignored by
Git and is distributed through GitHub releases instead.
To test a build, copy main.js, manifest.json, and styles.css into a folder
named camel-case-spellcheck under a disposable vault's
.obsidian/plugins/ directory.
The included GitHub Actions workflow builds a draft release whenever a version tag is pushed. To prepare a release:
npm version patch, npm version minor, or npm version major.The tag, package.json, manifest.json, and versions.json must use the same
semantic version. GitHub release assets must include main.js, manifest.json,
and styles.css. See Obsidian's
plugin submission guide
for the initial Community directory submission.
Camel Case Spellcheck is released under the MIT License.
Spellchecking uses nspell and the
dictionary-en
US English dictionary. The nspell dependency uses
is-buffer. Their license notices are
preserved in the generated plugin bundle.