id = "aspell" name = "GNU Aspell" homepage = "http://aspell.net" executables = ["aspell"] [dotfiles] # aspell(1) (https://manpages.ubuntu.com/manpages/noble/en/man1/aspell.1.html): # "The default per user configuration file ~/.aspell.conf located in the $HOME # directory (or another file specified by option --per-conf) is checked next and # overrides options set in the global config file." The global /etc/aspell.conf # is system-wide, not user-level, and is left out. # # The personal word list and replacement list default to ".aspell..pws" # and ".aspell..prepl" inside --home-dir, which defaults to $HOME — # aspell's own common/config.cpp gives those defaults, and the man page names # the --personal, --repl and --home-dir options that carry them. One file per # language, hence the glob. They are the words the user taught aspell, which is # exactly the state a second machine should inherit. paths = [ "~/.aspell.conf", "~/.aspell.*.pws", "~/.aspell.*.prepl", ] exclude = [] # A personal dictionary is words, and an aspell.conf is the language, the # suggestion mode and filter settings. Nothing here is a credential. secret = [] # aspell reads the configuration on every invocation, so a rewrite between runs # is picked up by the next one. side_effect = false # No machine_lines: `lang`, `sug-mode`, `ignore-case` and the filter list are # the preferences a user wants everywhere. `home-dir` and `dict-dir` do hold # absolute paths, but a user who set them wrote them deliberately, and the # defaults leave them absent from the file entirely — so a rule on them would # fire on the few configurations that do not need it. [commands] format = 1 label = "Check spelling" description = "Interactively spell-check a file with aspell, or list misspelled words from standard input. Dictionary management and pipe mode are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.source]] id = "man" kind = "manual" url = "https://man.archlinux.org/man/aspell.1.en" revision = "2026-10-27" evidence = """ check , -c -d or --master= -l or --lang= --personal=, -p --encoding= --mode=, -e, -H, -t, -n --sug-mode= --ignore-case, --dont-ignore-case --backup, --dont-backup, -b, -x """ [[commands.field]] id = "check" label = "Check mode" description = "Interactive check of one file." fixed = ["-c"] sources = ["man"] [[commands.field]] id = "file" label = "File to check" type = "path" path = { kind = "file", role = "input" } position = 0 min = 1 sources = ["man"] [[commands.field]] id = "lang" label = "Language" type = "string" option = ["--lang", "-l"] suggestions = [{ value = "en_US", label = "English (US)" }, { value = "en_GB", label = "English (UK)" }, { value = "de_DE", label = "German" }, { value = "fr_FR", label = "French" }] sources = ["man"] [[commands.field]] id = "personal" label = "Personal word list" type = "path" path = { kind = "file", role = "input" } option = ["--personal", "-p"] sources = ["man"] [[commands.field]] id = "encoding" label = "Encoding" type = "string" option = ["--encoding"] suggestions = [{ value = "utf-8", label = "UTF-8" }] sources = ["man"] [[commands.field]] id = "sug_mode" label = "Suggestion mode" type = "enum" option = ["--sug-mode"] choices = [{ value = "ultra", label = "Ultra" }, { value = "fast", label = "Fast" }, { value = "normal", label = "Normal" }, { value = "bad-spellers", label = "Bad spellers" }] sources = ["man"] [[commands.field]] id = "html" label = "HTML mode" type = "boolean" option = ["-H"] sources = ["man"] [[commands.field]] id = "tex" label = "TeX mode" type = "boolean" option = ["-t"] sources = ["man"] [[commands.field]] id = "no_backup" label = "Do not create backup file" type = "boolean" option = ["--dont-backup", "-x"] sources = ["man"] [[commands.task]] id = "check-file" label = "Check a file" fields = ["check", "file", "lang", "personal"] required = ["file"] [[commands.task]] id = "check-html" label = "Check an HTML file" set = { html = [true] } lock = ["html"] fields = ["check", "file", "lang", "html", "no_backup"] required = ["file"] [[commands.group]] id = "basic" label = "Basic" fields = ["check", "file", "lang", "personal"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["encoding", "sug_mode", "html", "tex", "no_backup"]