Releases: r-lib/styler
styler 1.6.1 (2021-09-17)
- 
Files with
.Rmarkdownextension are now recognized as an R markdown files in
style_file()and friends (#824). - 
Don't break line before comments in pipes (#822).
 - 
Ordinary comments (starting with
#) that break a roxygen code example block
(starting with#') are now recognized and preserved (#830). - 
@examplesIfconditions longer than one line after styling throw an error for
compatibility with {roxygen2} (#833). - 
R Markdown chunk headers are no longer required to be parsable R code (#832).
 - 
Break the line between
%>%and{inside and outside function calls (#825). - 
Add language server to third-party integration vignette (#835).
 - 
improved test setup with fixtures and similar (#798).
 
We'd like to thank all people who helped making this release possible:
@bersbersbers, @eutwt, @IndrajeetPatil, @j-mammen, @jennybc, @JohannesNE, @jonkeane, @lorenzwalthert, and @MichaelChirico.
styler 1.5.1 (2021-07-13)
Alignment detection
- 
Code with left alignment after
=in function calls is now recognized as
aligned and won't be reformatted (#774, #777).# already detected previously call( x = 12345, y2 = 17 ) # newly detected call( x = 12345, y2 = 17 ) - 
Similarly, left aligned after comma is now detected (#785, #786).
# previously detected call( x = 12345, "It's old", y2 = 17, "before" ) tribble( ~x, ~y, "another", 1:3, "b", 1211234 ) # newly detected call( x = 2, p = "another", y = "hhjkjkbew", x = 3 ) tribble( ~x, ~y, "another", 1:3, "b", 1211234 )Also see
vignette("detect-alignment"). 
Other new features
- The base R pipe as introduced in R 4.1.0 is now styled the same way the
magrittr pipe is (#803). - code chunks with explicit 
tidy = FALSEin an Rmd or Rnw code header are not
styled anymore. This can be handy when the code can't be parsed, e.g.
within a learnr tutorial (#790). #>is recognized as an output marker and no space is added after#(#771).
Minor changes and fixes
- No curly braces are added to else statements if they are within a pipe, as
this can change evaluation logic of code involving the magrittr dot in rare
cases (#816). - Line breaks between 
}andelseare removed (#793). - In function calls, code after 
= #\nis indented correctly (#814). - Multi-expressions containing multiple assignments no longer remove line breaks
if they are not causing blank lines (#809). exclude_dirsinstyle_pkg()is now properly respected if it is a
sub-directory of a directory that is scheduled for styling (e.g.
test/testthat/some/dir) (#811).- The user is not prompted anymore to confirm the creation of a permanent cache
as R.cache >= 0.15.0 uses a standard location in line with CRAN policies
(#819). - R code chunks in nested non-R chunks in R markdown don't yield an error
anymore when document is styled, chunks are still not styled (#788, #794). cache_activate()andcache_deactivate()now respect the R
optionstyler.quiet(#797).multi_lineattribute in parse table is now integer, not boolean (#782).- The style guide used in Addin is verified when set via R option (#789).
 - Improve pkgdown author URLs (#775).
 - Upgrade touchstone infra (#799, #805).
 - Don't test on R 3.3 anymore as tidyverse supports only four previous
releases (#804). - Update Github Actions workflow (#810).
 
We’d like to thank everyone who has furthered the development of the latest release of styler through their contributions in issues and pull requests:
@ardydavari, @gadenbuie, @IndrajeetPatil, @jasonhan-vassar, @laresbernardo, @lorenzwalthert, @MichaelChirico, @Moohan, @njtierney, @pat-s, @psychelzh, @pvalders, @RoyalTS, and @russHyde.
styler 1.4.1 (2021-03-30)
- Fix interaction between cache and 
base_indention. This also fixes
the Addin for styling a selection with base indention repeatedly (#764). - Add more examples to 
styler_*helpfiles (#762). - Hexadecimal integers now preserve the trailing 
Lwhen styled (#761). - Add a pre-push hook to make sure news bullets are added to each PR (#765).
 
styler 1.4.0 (2021-03-23)
API Changes
new
- 
style_file()and friends gain argumentdryto control if changes should be
applied to files or not (#634). - 
style_file()and friends gain argumentbase_indention(defaulting to 0) to
control by how much the output code is indented (#649, #692). The Addin for
styling a selection picks that up, e.g. you can style a function body and
indention is preserved (#725). - 
added an option for disabling all communication when using the package
(styler.quiet) (#640). - 
scopeintidyverse_style()can now be specified with higher granularity
throughI(), e.g.I(c('spaces', 'tokens'))allows us to style spaces and
tokens without styling line breaks and indention. Previously, only a string
was allowed and all less invasive scopes were included, e.g. if you wanted to
style tokens, you had to always also style spaces, indention, line breaks as
well (#705, #707). - 
added an option (
styler.test_dir_writeable) that changes test behavior to
not directly modify test files in the current directory (#548). - 
New argument
transformers_dropincreate_style_guide()to be populated
with new helper functionspecify_transformers_drop()for specifying
conditions under which transformers are not going to be used and can therefore
be omitted without effecting the result of styling (#711). 
deprecated
- The environment variable 
save_after_stylingis deprecated in favor of the R
optionstyler.save_after_stylingto control if a file is saved after styling
with the RStudio Addin. Note than in RStudio >= 1.3.0, you can auto-save edits
in general (Code -> Saving -> Auto-Save), e.g. on idle editor or focus loss,
so this feature becomes less relevant (#631, #726). 
Major changes
- 
styler is now distributed under the MIT license (#751).
 - 
Documentation overhaul: New README, new "Get started" pkgdown page, new
vignettes onstrict = FALSE,Adoptionrenamed toThird-party integrations
(#741), adding search to pkgdown (#623), group functions in pkgdown reference
page (#625), minor other doc improvements (#643, #618, #614, #677, #651,
#667, #672, #687, #752, #754). - 
@exampleIsfroxygen tag for conditional examples is now supported (#743). - 
blank lines in function calls and headers are now removed, for the former only
when there are no comments before or after the blank line (#629, #630, #635,
#723). - 
speed improvements: 15% faster on new code, 70% on repeated styling of
compliant code (The latter is not so relevant because it was almost
instantaneous already). Most relevant contributions were #679, #691, #681,
#711, #739. - 
#<<is now recognized as the xaringan marker and no space is added after#
(#700). 
Minor changes and fixes
- 
style_dir()andstyle_pkg()now apply directory exclusion recursively with
exclude_dirs(#676). - 
switch()now has line breaks after every argument to match the tidyverse
style guide (#722, #727). - 
unary
+before a function call does not give an error anymore, as before
version 1.3.0 (#697). - 
certain combinations of
stylerignoremarkers and cached expressions now
don't give an error anymore (#738). - 
cache is now correctly invalidated when style guide arguments change (#647).
 - 
empty lines are now removed between pipes and assignments (#645, #710).
 - 
multiple
@examplesroxygen tags in a code block of#'are no longer
squashed (#748). - 
roxygen code examples starting on the same line as the
@examplestag are no
longer moved to the next line (#748). - 
always strip trailing spaces and make cache insensitive to it (#626).
 - 
style_text()can now style all input thatis.character(), not just if it
inherits from classescharacter,utf8orvertical(#693). - 
logical operators within square braces are now moved from the start of a line
to the end of the previous line (#709). - 
spaces are now removed before
[and[[(#713). - 
The internal
create_tree()only used in testing of styler now works when the
cache is activated (#688). - 
simplification of internals (#692).
 
Infrastructure changes
- 
switched from travis and AppVeyor to GitHub Actions (#653, #660).
 - 
Added basic continuous benchmarking with
lorenzwalthert/touchstone
(#674, #684, #698). - 
include
test-*files in styling pre-commit hook (#724). 
Thanks to all the people who made this release possible:
@assignUser, @ColmanHumphrey, @davidchall, @espinielli, @giko45, @hadley, @IndrajeetPatil, @intiben, @jamespeapen, @jthomasmock, @Kalaschnik, @kevinushey, @krlmlr, @lcolladotor, @MichaelChirico, @michaelquinn32, @mine-cetinkaya-rundel, @pat-s, @PMassicotte, @QuLogic, @renkun-ken, @RichardJActon, @seed-of-apricot, @select-id-from-users, @SimonDedman, @stefanoborini, @swsoyee, and @Winterstorm-j.
styler 1.3.2 (2020-02-23)
Release upon request by the CRAN team.
Minor changes and fixes
styler 1.3.1 (2020-02-13)
Emergency release. In case multiple expressions are on one line and only some of them are cached, styler can remove code. To reach this state, some of the expressions must have been styled previously alone and the cache must be active. Example:
library(styler)
cache_activate()
#> Using cache 1.3.0 at ~/.Rcache/styler/1.3.0.
style_text("1")
#> 1
style_text("1 # comment")
#> # comment
This is obviously detrimental. We have added additional tests and fixed the problem (#593, #595), but we want repeat the warning from ?style_file that all style APIs apart from style_text() overwrite code and that styler can only check the AST remains valid with scope < "tokens". So use this if you are conservative. Or deactivate the cache with deactivate_cache() until it has fully matured.
We thank the people who have contributed to this release:
@ellessenne and @renkun-ken.
The release will typically be available from CRAN mirrors within 24h.
styler 1.3.0 (2020-02-10)
Breaking changes
- 
style_pkg()andstyle_dir()gain a new argumentexclude_dirsto exclude directories from styling, by defaultrenvandpackrat. Note that the defaults won't change the behavior ofstyle_pkg()because it does anyways does not style these directories and they were set for consistency. - 
style_file()and friends now strip./in file paths returned invisibly, i.e../script.Rbecomesscript.R(#568). 
New features
- 
ignore certain lines using
# styler: offand#styler: onor custom markers, see?stylerignore(#560). - 
styler caches results of styling, so applying styler to code it has styled before will be instantaneous. This brings large speed boosts in many situations, e.g. when
style_pkg()is run but only a few files have changed since the last styling or when using the styler pre-commit hook. Because styler caches by expression, you will also get speed boosts in large files with many expressions when you only change a few of them. See?cachingfor details (#538, #578). - 
create_style_guide()gains two argumentsstyle_guide_nameandstyle_guide_versionthat are carried as meta data, in particular to version third-party style guides and ensure the proper functioning of caching. This change is completely invisible to users who don't create and distribute their own style guide liketidyverse_style()(#572). 
Minor changes and fixes
- 
lines are now broken after
+inggplot2calls forstrict = TRUE(#569). - 
function documentation now contains many more line breaks due to roxygen2 update to version 7.0.1 (#566).
 - 
spaces next to the braces in subsetting expressions
[and[[are now removed (#580). - 
Adapt to changes in the R parser to make styler pass R CMD check again (#583).
 
Thanks to all contributors involved, in particular @colearendt, @davidski, @IndrajeetPatil, @pat-s, and @programming-wizard
styler 1.2.0 (2019-10-17)
Breaking changes
- 
style_file()now correctly styles multiple files from different directories.
We no longer display the file name of the styled file, but the absolute path.
This is also reflected in the invisible return value of the function (#522). - 
style_file()and friends do not write content back to a file when styling
does not cause any changes in the file. This means the modification date of
styled files is only changed when the content is changed (#532). 
New features
- 
Aligned function calls are detected and kept as is if they match the styler
definition for aligned function calls
(#537). - 
curly-curly (
{{) syntactic sugar introduced with rlang 0.4.0 is now
explicitly handled, where previously it was just treated as two consecutive
curly braces (#528). - 
style_pkg(),style_dir()and the Addins can now style.Rprofile, and
hidden files are now also styled (#530). 
Minor improvements and fixes
- 
Brace expressions in function calls are formatted in a less compact way to
improve readability. Typical use case:tryCatch()(#543). - 
Arguments in function declarations in a context which is indented multiple
times should now be correct. This typically affectsR6::R6Class()(#546). - 
Escape characters in roxygen code examples are now correctly escaped (#512).
 - 
Special characters such as
\nin strings are now preserved in text and not
turned into literal values like a line break (#554). - 
Style selection Addin now preserves line break when the last line selected is
an entire line (#520). - 
Style file Addin can now properly handle cancelling (#511).
 - 
The body of a multi-line function declaration is now indented correctly for
strict = FALSEand also wrapped in curly braces forstrict = TRUE(#536). - 
Advice for contributors in
CONTRIBUTING.mdwas updated (#508). 
Adaption
- styler is now available through the pre-commit hook 
style-filesin
https://github.com/lorenzwalthert/pre-commit-hooks. 
Thanks to all contributors involved, in particular
@Banana1530, @batpigandme, @cpsievert, @ellessenne, @Emiller88, @hadley, @IndrajeetPatil, @krlmlr, @lorenzwalthert, @lwjohnst86, @michaelquinn32, @mine-cetinkaya-rundel, @Moohan, @nxskok, @oliverbeagley, @pat-s, @reddy-ia, and @russHyde
styler 1.1.1 (2019-05-07)
This is primarily a maintenance release upon the request of the CRAN team
(#490).
Major changes
- Users can now control style configurations for styler Addins (#463, #500),
using theSet styleAddin. See?styler::styler_addinsfor details. return()is now always put in braces and put on a new line when used in
a conditional statement (#492).%>%almost always causes a line break now forstrict = TRUE(#503).
Minor changes
- 
style_pkg()now also styles the "demo" directory by default (#453). - 
multi-line strings are now styled more consistently (#459).
 - 
indention in roxygen code example styling (#455) and EOF spacing (#469)
was fixed. - 
indention for for loop edge case (#457) and comments in pipe chain (#482)
were fixed. - 
line-break styling around comma is improved (#479).
 - 
bug that can cause an error when the variable
textin any name space
before styler on the search path was defined and did not have length 1 is
fixed (#484). - 
slightly confusing warning about empty strings caused with roxygen code
examples and Rmd was removed. - 
right apostrophe to let package pass R CMD Check in strict Latin-1
locale was removed (#490, reason for release). 
Adaption of styler
Since it's never been mentioned in the release notes, we also mention here
where else you can use styler functionality:
- 
usethis::use_tidy_style()styles your project according to the tidyverse
style guide. - 
reprex::reprex(style = TRUE)to prettify reprex code before printing. To
permanently usestyle = TRUEwithout specifying it every time, you can add
the following line to your.Rprofile(viausethis::edit_r_profile()):
options(reprex.styler = TRUE). - 
you can pretty-print your R code in RMarkdown reports without having styler
modifying the source. This feature is implemented as a code chunk option in
knitr. usetidy = "styler"in the header of a code chunks (e.g.
```{r name-of-the-chunk, tidy = "styler"}), or
knitr::opts_chunk$set(tidy = "styler")at the top of your RMarkdown
script. - 
pretty-printing of drake workflow data
frames withdrake::drake_plan_source(). - 
Adding styler as a fixer to the ale Plug-in for VIM.
 
Thanks to all contributors involved, in particular
@ArthurPERE, @hadley, @igordot, @IndrajeetPatil, @jackwasey, @jcrodriguez1989, @jennybc, @jonmcalder, @katrinleinweber, @krlmlr, @lorenzwalthert, @michaelquinn32, @msberends, @raynamharris, @riccardoporreca, @rjake, @Robinlovelace, @skirmer, @thalesmello, @tobiasgerstenberg, @tvatter, @wdearden, @wmayner and @yech1990.
styler 1.1.0 (2018-10-20)
This release introduces new features and is fully backward-compatible. It also
adapts to changes in the R parser committed into R devel (#419).
Major Changes
- styler can now style roxygen code examples in the source code of package
(#332) as well as Rnw files (#431). - the print method for the output of 
style_text()(print.vertical()) now
returns syntax-highlighted code by default, controllable via the option
styler.colored_print.vertical(#417). - the README was redesigned (#413).
 - semi-colon expression that contained multiple assignments was fixed (#404).
 
Minor Changes
- cursor position is remembered for styling via Addin (#416).
 - adapt spacing around tilde for multi-token expressions(#424) and brace
edge case (#425). - only add brackets to piped function call if RHS is a symbol (#422).
 - increase coverage again to over 90% (#412).
 - move rule that turns single quotes into double quotes to token modifier in
`tidyverse_style_guide() (#406). - remove line-breaks before commas (#405).
 - removed package dependency enc in favor of xfun (#442).
 
Thanks to all contributors for patches, issues and the like:
@jonmcalder, @krlmlr, @IndrajeetPatil, @kalibera, @Hasnep, @kiranmaiganji,
@dirkschumacher, @ClaytonJY, @wlandau, @maurolepore.