View all files | ||||
Source code spell checker
Finds and corrects spelling mistakes among source code:
Dual-licensed under MIT or Apache 2.0
Download a pre-built binary (installable via gh-install).
Or use rust to install:
Or use Homebrew to install:
Or use Conda to install:
Or use Pacman to install:
Most commonly, you'll either want to see what typos are available with
Or have them fixed
If there is any ambiguity (multiple possible corrections), typos will just report it to the user and move on.
Sometimes, what looks like a typo is intentional, like with people's names, acronyms, or localized content.
To mark a word or an identifier (grouping of words) as valid, add it to your _typos.toml by declaring itself as the valid spelling:
For more ways to ignore or extend the dictionary with examples, see the config reference.
For cases like localized content, you can disable spell checking of file contents while still checking the file name:
(run typos --type-list to see configured file types)
If you need some more flexibility, you can completely exclude some files from consideration:
typos provides several building blocks for custom native integrations
Examples:
You can see what the effective config looks like by running
You can then see how typos is processing your project with
If you need to dig in more, you can enable debug logging with -v
Does the file show up in typos --files? If not, check your config with typos --dump-config -. The [files] table controls how we walk files. If you are using files.extend-exclude, are you running into #593? If you are using files.ignore-vcs = true, is the file in your .gitignore but git tracks it anyways? Prefer allowing the file explicitly (see #909).
Does the identifier show up in typos --identifiers or the word show up in typos --words? If not, it might be subject to one of typos' heuristics for detecting non-words (like hashes) or unambiguous words (like words after a \ escape).
If it is showing up, likely typos doesn't know about it yet.
typos maintains a list of known typo corrections to keep the false positive count low so it can safely run unassisted.
This is in contrast to most spell checking UIs people use where there is a known list of valid words. In this case, the spell checker tries to guess your intent by finding the closest-looking word. It then has a gauge for when a word isn't close enough and assumes you know best. The user has the opportunity to verify these corrections and explicitly allow or reject them.
For more on the trade offs of these approaches, see Design.