Rev 90214 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/utils/man/aspell.Rd% Part of the R package, https://www.R-project.org% Copyright 1995-2025 R Core Team% Distributed under GPL 2 or later\name{aspell}\alias{aspell}\alias{aspell_filter_db}\title{Spell Check Interface}\description{Spell check given files via Aspell, Hunspell or Ispell.}\usage{aspell(files, filter, control = list(), encoding = "unknown",program = NULL, dictionaries = character())aspell_filter_db}\arguments{\item{files}{a character vector with the names of files to be checked.}\item{filter}{an optional filter for processing the files before spellchecking, given as either a function (with formals \code{ifile} and\code{encoding}), or a character string specifying a built-infilter, or a list with the name of a built-in filter and additionalarguments to be passed to it. See \bold{Details} for availablefilters. If missing or \code{NULL}, no filtering is performed.}\item{control}{a list or character vector of control options for thespell checker.}\item{encoding}{the encoding of the files. Recycled as needed.}\item{program}{a character string giving the name (if on the systempath) or full path of the spell check program to be used, or\code{NULL} (default). By default, the system path is searched for\command{aspell}, \command{hunspell} and \command{ispell} (in thatorder), and the first one found is used.}\item{dictionaries}{a character vector of names or file paths ofadditional R level dictionaries to use. Elements with no pathseparator specify R system dictionaries (in subdirectory\file{share/dictionaries} of the R home directory). The fileextension (currently, only \file{.rds}) can be omitted.}}\details{The spell check programs employed must support the so-called Ispellpipe interface activated via command line option \option{-a}. Inaddition to the programs, suitable dictionaries need to be available.See \url{http://aspell.net},\url{https://hunspell.github.io/} and\url{https://www.cs.hmc.edu/~geoff/ispell.html}, respectively, forobtaining the Aspell, Hunspell and (International) Ispell programs anddictionaries.On Windows, Aspell is available via \abbr{MSYS2}. One should use a non-\I{Cygwin}version, e.g. package \code{mingw-w64-x86_64-aspell}. The version builtagainst the \I{Cygwin} runtime (package \code{aspell}) requires Unix lineendings in files and Unix-style paths, which is incompatible with\code{aspell()}.The currently available built-in filters are \code{"Rd"}(corresponding to \code{\link{RdTextFilter}}, with additional argument\code{ignore} allowing to give regular expressions for parts of thetext to be ignored for spell checking), \code{"Sweave"}(corresponding to \code{\link{SweaveTeXFilter}}), \code{"R"},\code{"pot"}, \code{"dcf"} and \code{"md"}.Filter \code{"R"} is for R code and extracts the message stringconstants in calls to \code{\link{message}}, \code{\link{warning}},\code{\link{stop}}, \code{\link{packageStartupMessage}},\code{\link{gettext}}, \code{\link{gettextf}}, and\code{\link{ngettext}} (the unnamed string constants for the firstfive, and \code{fmt} and \code{msg1}/\code{msg2} string constants,respectively, for the latter two).Filter \code{"pot"} is for message string catalog \file{.pot} files.Both have an argument \code{ignore} allowing to give regularexpressions for parts of message strings to be ignored for spellchecking: e.g., using \code{"[ \t]'[^']*'[ \t[:punct:]]"} ignores alltext inside single quotes.Filter \code{"dcf"} is for files in Debian Control File format.The fields to keep can be controlled by argument \code{keep} (acharacter vector with the respective field names). By default,\samp{Title} and \samp{Description} fields are kept.Filter \code{"md"} is for files in\href{https://en.wikipedia.org/wiki/Markdown}{Markdown} format(\file{.md} and \file{.Rmd} files), and needs packages\CRANpkg{commonmark} and \CRANpkg{xml2} to be available.Filter \code{"LaTeX"} is an experimental LaTeX filter which allowscustomized skipping of mandatory arguments to commands (similar to theLaTeX filter provided by Aspell) and skipping environments,controllable via arguments \code{cmds} and \code{envs}.This filter uses the LaTeX parser provided by\code{\link[tools]{parseLatex}()}.Argument \code{cmds} should be a character vector with elements of theform \code{"\var{NAME} \var{ARGS}"} with \code{\var{NAME}} the name ofthe command and \code{\var{ARGS}} a comma-separated list of either\samp{p} or \samp{P}, with \samp{p} indicating the mandatory argumentsto be skipped. The user-defined list given via \code{cmds} iscombined with a built-in list of Aspell LaTeX filter defaults.Argument \code{envs} should be a character vector with the names ofenvironments to be skipped.Argument \code{before} can be used to specify a function to be calledfor pre-processing the LaTeX source before calling the parser.All other arguments given to the filter are passed to the parser,which can be used in particular to customize the names of the commandsand environments holding verbatim text.\code{aspell_filter_db} is an environment containing all availablebuilt-in filters.The print method for the objects returned by \code{aspell} has an\code{indent} argument controlling the indentation of the positions ofpossibly misspelled words. The default is 2; Emacs users may find ituseful to use an indentation of 0 and visit output in grep-mode. Italso has a \code{verbose} argument: when this is true, suggestions forreplacements are shown as well.It is possible to employ additional R level dictionaries. Currently,these are files with extension \file{.rds} obtained by serializingcharacter vectors of word lists using \code{\link{saveRDS}}. If suchdictionaries are employed, they are combined into a single word listfile which is then used as the spell checker's personal dictionary(option \option{-p}): hence, the default personal dictionary is notused in this case.}\value{A data frame inheriting from \code{aspell} (which has a useful printmethod) with the information about possibly misspelled words.}\references{\bibshow{R:Hornik+Murdoch:2011}}\seealso{\link{aspell-utils} for utilities for spell checking packages.%% Package \pkg{Aspell} formerly available from Omegahat%% (\url{http://www.omegahat.net/Aspell}) for a fine-grained R interface%% to the Aspell library.}\examples{\dontrun{## To check all Rd files in a directory, (additionally) skipping the## \references sections.files <- Sys.glob("*.Rd")aspell(files, filter = list("Rd", drop = "\\\\references"))## To check all Sweave filesfiles <- Sys.glob(c("*.Rnw", "*.Snw", "*.rnw", "*.snw"))aspell(files, filter = "Sweave", control = "-t")## To check all Texinfo files (Aspell only)files <- Sys.glob("*.texi")aspell(files, control = "--mode=texinfo")}## List the available R system dictionaries.Sys.glob(file.path(R.home("share"), "dictionaries", "*.rds"))}\keyword{utilities}