Releases: r-lib/roxygen2
Release list
roxygen2 5.0.1
- Use
ls(), notnames()to list elements of environment: fixes R 3.1.0
incompatibility (#422, @kevinushey). @exportagain allows trailing new line (#415).- Fixed bug in
@noRd, where usage would cause error (#418).
roxygen2 5.0.0
New features
- Roxygen now records its version in a single place: the
RoxygenNote
field in theDESCRIPTION(#338). This will be the last time an roxygen2
upgrade changes every file inman/. - You can now easily re-export functions that you've imported from another
package:
#' @export
magrittr::`%>%`All imported-and-re-exported functions will be documented in the same
file (rexports.Rd), containing a brief descrption and links to the
original documentation (#376).
- You can more easily generate package documentation by documenting the
special string "_PACKAGE" (@krlmlr, #349):
#' @details Details
"_PACKAGE" The title and description will be automatically filled in from the
DESCRIPTION.
- New tags
@rawRdand@rawNamespaceallow you to insert raw (unescaped)
in Rd and theNAMESPACE(this is useful for conditional imports).
@evalRd()is similar, but instead of literal Rd, you give it R code that
produces literal Rd code when run. This should make it easier to experiment
with new types of output (#385). - Roxygen2 now parses the source code files in the order specified in the
Collatefield inDESCRIPTION. This improves the ordering of the generated
documentation when using@describeInand/or@rdnamesplit across several
.Rfiles, as often happens when working with S4 (#323, #324).
Minor features and bug fixes
- The contents of documented functions are now also parsed for roxygen comments.
This allows, e.g., documenting a parameter's type close to where this type is
checked, or documenting implementation details close to the source, and
simplifies future extensions such as the documentation of R6 classes
(#397, @krlmlr). - Data objects get a simpler default
@formatthat describes only the
object's class and dimensions. The former default, generated by generated by
str(), didn't usually produce useful output and was quite slow. The new S3
genericdefault_data_format()generates the format and can be overridden to
generate a custom format (#410, @krlmlr). - The roxygen parsers has been completely rewritten in C++ (#295). This gives a
nice performance boost and gives:- Better error messages: you now get the exact the line number of the
tag, not just the start of the block. - The parser has been simplified a little: tags now must always start
on a new line. This is recommended practice anyway, and it means
that escaping inline@(with@@) is now optional. (#235) - Unknown tags now emit a warning, rather than an error.
- Better error messages: you now get the exact the line number of the
@examplesno longer complains about non-matching braces inside
strings (#329).@familynow cross-links each manual page only once, instread of linking
to all aliases (@gaborcsardi, #283, #367).- The special
@includeparser has also been rewritten in C++, giving
a performance boost for larger packages (#401). This is particularly
important because it's also called fromdevtools::load_all().
Additionally, a space before@includeis no longer necessary
(@krlmlr, #342). @inheritParams foo::barensures that%remains escaped (#313).- If you document multiple arguments with one
@param, (e.g.@param a,b,c)
each parameter will get a space after it so it can be wrapped in the
generated Rd file (#373). @sections with identical titles are now merged together, just like
@descriptionand@details. This is useful in conjunction with the
@rdnametag. (@krlmlr, #300).- Automatic
@usageis now correctly generated for functions with string
arguments containing"\""(#265). load_options()is now exported sodevtools::document()doesn't have to
runupdate_collate()twice (#395).update_collate()only rewrites theCollateentry in the DESCRIPTION file
when it changes (#325, #723).- An empty
NAMESPACEfile is written if it is maintained byroxygen2
(@krlmlr, #348). - Data that is not lazy-loaded can be documented (@krlmlr, #390).
Internal changes
register.preref.parser()andregister.preref.parsers()have been
deprecated - please useregister_tags()instead.- Parser callbacks registered with
register_tags()are now called for fields
parsed from the "introduction" (the text before the first tag)
(@gaborcsardi, #370).
Roxygen2 4.1.1
- Formatting of the
Authors@Rfield in the DESCRIPTION file is now retained
(@jranke, #330). - The collate roclet falls back to
base::strwrap()when generating the
collate field. This makes roxygen2 compatible with the next version of
stringr. - New "vignette" roclet. This vignette automatically rebuilds all out of date
vignettes (#314). - An off-by-one error in the C++ Roxygen preparser was fixed.
- The new
@backreftag makes it possible to override the sourceref for
R code generators likeRcpp(@krlmlr, #291, #294).
Roxygen2 4.1.0
- If there are no
@includetags, roxygen2 leaves the collate field alone.
This makes it easier to convert an existing project that uses a predefined
collate, but if you start with@includeand later remove them, you'll
need to also remove the collate field (#302, #303). - Protected a
dir()withsort_c()- If you'd noticed an inconsistency in
ordering betweendevtools::document()anddevtools::check()this
was the cause of that. - Fixed broken regular expression that caused problems with stringr 1.0.0.
- The
Authors@Rfield inDESCRIPTIONis now longer wrapped(@krlmlr, #284). @describeInwith plain functions now correctly includes the function name
and can be applied to data documentation. (@jimhester, #285, #288).- Works again when called from
Rscriptandmethodsis not loaded
(@krlmlr, #305).
Roxygen2 4.0.2
- If you don't use
@exportsor other namespace directives, your namespace
file will not be touched (#276). - Methods no longer automatically attempt to inherit parameters from
their generic. It's too fraught with difficulty (#261). - Roxygen now understands what to do with
setReplaceMethod()(#266). - Parameter documentation is ordered according to the order of the formals, if
possible (@krlmlr, #63). - Export
is_s3_method(). - Roxygen no longer fails when run in non-UTF-8 locales on windows.
Roxygen2 4.0.1
roxygen2 4.0.0
roxygen2 4.0.0
Roxygen2 4.0.0 is a major update to roxygen2 that makes provides enhanced error handling and considerably safer default behaviour. Now, roxygen2 will never overwrite a file that it did not create. This means that before you run it for the first time, you'll need to run roxygen2::upgradeRoxygen(). That will flag all existing files as being created by roxygen2.
New features
-
Six vignettes provide a comprehensive overview of using roxygen2 in
practice. RunbrowseVignettes("roxygen2")to access. -
@describeInmakes it easier to describe multiple functions in
one file. This is especially useful if you want to document methods with
their generic, or with a common class, but it's also useful if you want
to document multiple related functions in one file (#185). -
@fielddocuments the fields on a reference class (#181). It works the
same way as@slotfor S4 classes. -
You can now document objects defined elsewhere (like datasets) by
documenting their name as a string (#221). For example, to document an
dataset calledmydata, you can do:#' Mydata set #' #' Some data I collected about myself "mydata"
-
Roxygen2 now adds a comment to all generated files so that you know
they've been generated, and should not be hand edited. -
Roxygen2 no longer wraps the text in Rd files by default, i.e. the default
option iswrap = FALSEnow. To override it, you have to specify a field
Roxygen: list(wrap = TRUE)inDESCRIPTION(#178). -
Roxygenise automatically deletes out-of-date Rd files in
man/.
Improved error handling
- Roxygen2 will never overwrite a file that was not generated by
roxygen2. This means that the first time you use this version of
roxygen, you'll need to delete all existing Rd files.roxygenise()
gains a clean argument that will automatically remove any files
previously created by roxygen2. - Parsing is stricter: many issues that were previously warnings are
now errors. All errors should now give you the line number of the
roxygen block associated with the error. - Every input is now checked to make sure that you have matching braces
(e.g. every{has a matching}). This should prevent frustrating
errors that require careful reading of.Rdfiles (#183). @sectiontitles and@exporttags can now only span a single line
to prevent common bugs.@S3methodis deprecated - just use@export(#198).- Namespace tags now throw parsing errors if you give them bad inputs (#220).
- Better error message if you try to document something other than NULL,
an assignment, a class, a generic or a method (#194).
Bug fixes and minor improvements
- Better parsing of non-syntactic function names in other packages when
used in@inheritParams(#236). - Deprecated arguments to
roxygenise()(roxygen.dir,copy.package,
overwrite,unlink.target) removed. - Remove unneeded codetools and tools dependencies.
- Bump required Rcpp version to 0.11.0, and remove custom makefiles.
- Non-syntactic argument names (like
_x) are now surrounded by back-ticks
in the usage (#191). - The internal parsers are no longer part of the public roxygen2 interface.
- Usage statements in generated roxygen statements non-longer contain
non-ASCII characters and will be wrapped if long (#180). - By default, reference classes now only document their own methods,
not their methods of parents (#201). - Default aliases always include the original name of the object, even if
overridden by@name. This also means thatA <- setClass("A")will get
two aliases by default:AandA-class(#202). Use@aliases NULLto
suppress default alias. - Non-syntactic class names (like
<-) are now escaped in the usage
section of S4 methods (#205). - Eliminated two more cases where wrapping occured even when
wrap = FALSE.
Roxygen2 3.1.0
Documentation for reference classes
It's now possible to document reference classes, using the "docstring"
convention described in ?setRefClass. If you want to provide a short
paragraph description of what a method does, make the first component of the
message a string containing the description, e.g.:
setRefClass("A", methods = list(
f = function(a, b) {
"Take numbers \code{a} and \code{b} and add them together"
a + b
}
))Unlike the documentation for R functions, the documentation for methods can
be quite succinct.
Roxygen adopts the convention that documented methods are public, and will
be listed in the man page for the object. Undocumented methods are private and
will not be shown in the documentation. The methods for all superclasses are
also listed, so that you don't need to flip through multiple pages of
documentation to understand what you can do with an object. All documented
methods will be placed in a bulleted list in a section titled "Methods", the
method usage will be automatically prepended to the docstring.
Minor fixes and improvements
- Fixes for Rcpp 0.11.0 compatibility.
roxygenise()now invisible returns a list of all files generated
by individual roclets. This is useful for tools that want to figure
out if there are extra files in theman/directory.is_s3_generic()now recognises group generics (#166).- Don't try and add parameters for data objects (#165).
- Sort output of families using C locale (#171).
@familynow escapes function names in references (#172).
roxygen2 3.0.0
Roxygen2 now fully supports S4 and RC (reference classes) - you should no
longer need to manually add @alias or @usage tags for S4 classes, methods
and generics, or for RC classes.
- The default usage definitions are much better, generating the correct
usage for data sets (#122), S3 methods (without additional@methodtag),
S4 generics, S4 methods, and for replacement (#119) and infix functions.
Backslashes in function arguments in are correctly escaped. Usage statements
also use a more sophisticated line wrapping algorithm so that they should
cause fewer problems with the R CMD check line limit. (#89, #125). - S4 classes, S4 methods, and RC classes are given better default topics,
and the file names corresponding to those topics are shorter. - S4 methods will automatically inherit parameter documentation from their
generic. @slot name descriptionallows you to document the slots of a S4 class.
S3 support has also been improved: roxygen2 now figures out whether a function
is a S3 method or generic. (In the rare cases it does so incorrectly, use
@method to manually describe the generic and class associated with a method).
This means you can remove existing uses of @method, and can replace
@S3method with @export.
Roxygen now has support for package specific options through the Roxygen
field in the DESCRIPTION. The value of the field should be R code that
results in a list. Currently only wrap and roclet values are supported:
- Turn off Rd re-wrapping with adding
Roxygen: list(wrap = FALSE) - Change the default roclets by specifying
Roxygen: list(roclets = c("collate", "rd"))
Roxygen 3.0 also includes a number of minor fixes and improvements:
- Infix functions are now escaped correctly in the
NAMESPACE. (Thanks to
@crowding, #111) roxygenise()now works more likedevtools::document()and only ever works
in the current directory. The argumentsroxygen.dir,overwrite,
copy.packageandunlink.targethave been deprecated due to potential
data loss problems.- The collate roclet is no longer a roclet: it processes R files using custom
code (only statically, not dynamically) and is designed to be executed before
the code is sourced. Runupdate_collate()to update the Collate directive
based on@includetags - if there are none present, a collate directive
will not be generated. @useDynLibnow works with more possible specifications - if you include a
comma in the tag value, the output will be passed as is. This means that
@useDynLib mypackage, .registration = TRUEwill now generate
useDynLib(mypackage, .registration = TRUE)in the NAMESPACE. (#124)instdirectory not created by default (#56).- Explicitly depend on
utilsandmethodspackages to make roxygen
compatible withRscript(#72). Importdigestpackage instead of
depending on it. - Always use C locale when sorting
NAMESPACEfile or tags in.Rdfiles.
This ensures a consistent ordering across systems (#127). - Templates with extension
.rare supported on case-sensitive file systems
(#115). Template variables now actually work (#160, thanks to @bronaugh). - Suppress default aliases, format and usage with
@aliases NULL,
@format NULLand@usage NULL.