rtags
An Etags-like Tagging Utility for R
rtags
provides etags-like indexing capabilities for R code,
using R's own parser.
- Keywords
- utilities, programming
Usage
rtags(path = ".", pattern = "\\.[RrSs]$",
recursive = FALSE,
src = list.files(path = path, pattern = pattern,
full.names = TRUE,
recursive = recursive),
keep.re = NULL,
ofile = "", append = FALSE,
verbose = getOption("verbose"))
Arguments
- path, pattern, recursive
Arguments passed on to
list.files
to determine the files to be tagged. By default, these are all files with extension.R
,.r
,.S
, and.s
in the current directory. These arguments are ignored ifsrc
is specified.- src
A vector of file names to be indexed.
- keep.re
A regular expression further restricting
src
(the files to be indexed). For example, specifyingkeep.re = "/R/[^/]*\\.R$"
will only retain files with extension.R
inside a directory namedR
.- ofile
Passed on to
cat
as thefile
argument; typically the output file where the tags will be written ("TAGS"
by convention). By default, the output is written to the R console (unless redirected).- append
Logical, indicating whether the output should overwrite an existing file, or append to it.
- verbose
Logical. If
TRUE
, file names are echoed to the R console as they are processed.
Details
Many text editors allow definitions of functions and other language
objects to be quickly and easily located in source files through a
tagging utility. This functionality requires the relevant source
files to be preprocessed, producing an index (or tag) file containing
the names and their corresponding locations. There are multiple tag
file formats, the most popular being the vi-style ctags format and the
and emacs-style etags format. Tag files in these formats are usually
generated by the ctags
and etags
utilities respectively.
Unfortunately, these programs do not recognize R code syntax. They do
allow tagging of arbitrary language files through regular expressions,
but this too is insufficient.
The rtags
function is intended to be a tagging utility for R
code. It parses R code files (using R's parser) and produces tags in
Emacs' etags format. Support for vi-style tags is currently absent,
but should not be difficult to add.
References
https://en.wikipedia.org/wiki/Ctags, https://www.gnu.org/software/emacs/manual/html_node/emacs/Tags-Tables.html
See Also
Examples
library(utils)
# NOT RUN {
# }
# NOT RUN {
rtags("/path/to/src/repository",
pattern = "[.]*\\.[RrSs]$",
keep.re = "/R/",
verbose = TRUE,
ofile = "TAGS",
append = FALSE,
recursive = TRUE)
# }
# NOT RUN {
# }