Releases: posit-dev/air
0.9.0
Release Notes
-
New
--stdin-file-path <path>to read from stdin. Read more about this on the website (#471). -
Air's behavior relating to directly supplied files and the
exclude/default-excludeoptions has changed to be safer by default. Previously,air format cpp11.Rwould formatcpp11.R, even though it was part of the set ofdefault-excludes, because we assumed that a direct request from a user like this could override these rules. However, tools such as pre-commit or IDEs that format via stdin will blindly callair formaton any file that changes and have no knowledge of whether that file should be excluded or not. For this reason, we now exclude files that matchexcludeordefault-excludepatterns even if they are directly supplied on the command line.Similarly,
air format my.qmdno longer attempts to formatmy.qmd. This file is not excluded byexcludeordefault-exclude, but is also not included by our internal set ofdefault-includes, which currently only accept.Rand.rfiles. Rather than blindly trying to format this directly supplied file, Air now ignores it (#476). -
New
--forceflag to bypass all exclusion and inclusion rules and force a file or folder to be formatted. This flag applies recursively, meaning that all files within a forced folder will also be forcibly formatted, regardless of file type. This flag should rarely be needed, but serves as an escape hatch for cases likeair format r-code.txt --force, which is no longer automatically formatted by Air as of this release due to the change mentioned above (#478). -
New
air generate-shell-completion <SHELL>hidden command that emits a script to stdout that generates shell completions. Supports bash, zsh, fish, powershell, and elvish (#477, @salim-b).For zsh, run the following to add to your
.zshrc:echo 'eval "$(air generate-shell-completion zsh)"' >> ~/.zshrc
For powershell, run the following to add to your profile:
if (!(Test-Path -Path $PROFILE)) { New-Item -ItemType File -Path $PROFILE -Force } Add-Content -Path $PROFILE -Value '(& air generate-shell-completion powershell) | Out-String | Invoke-Expression'
Then restart your shell and type
air <tab>to see completions.
Install air 0.9.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/posit-dev/air/releases/download/0.9.0/air-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/posit-dev/air/releases/download/0.9.0/air-installer.ps1 | iex"Download air 0.9.0
| File | Platform | Checksum |
|---|---|---|
| air-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
| air-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
| air-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| air-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| air-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| air-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
0.8.2
Release Notes
-
Air is now distributed on PyPI as
air-formatter(#467).This allows air to be invoked via uv:
# Global install of `air` uv tool install air-formatter air format . # One-off run uvx --from air-formatter air format .
-
Air is now code-signed on Windows (#461).
Install air 0.8.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/posit-dev/air/releases/download/0.8.2/air-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/posit-dev/air/releases/download/0.8.2/air-installer.ps1 | iex"Download air 0.8.2
| File | Platform | Checksum |
|---|---|---|
| air-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
| air-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
| air-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| air-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| air-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| air-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
0.8.1
Release Notes
-
Added color to Air's terminal help. Disable by setting the environment variable
NO_COLOR=1(#447, @etiennebacher). -
Fixed an issue with Unicode elements and table alignment (#449).
Install air 0.8.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/posit-dev/air/releases/download/0.8.1/air-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/posit-dev/air/releases/download/0.8.1/air-installer.ps1 | iex"Download air 0.8.1
| File | Platform | Checksum |
|---|---|---|
| air-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
| air-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
| air-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| air-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| air-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| air-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
0.8.0
Release Notes
-
Added support for table formatting of
tribble()andfcase()calls (#113).
You can also opt into table formatting for any other call with the# fmt: tablecomment directive, or thetableTOML option. See also thedefault-tableoption to turn off Air's defaults fortribble()andfcase().Note: This feature is experimental. We'd be grateful for any feedback!
-
Formulas are now treated like assignment operators rather than like comparison operators, which means they now left-align expression chains on the right-hand side of the formula, respect persistent line breaks, and never automatically break around the
~operator itself (#336, #402).With model formulas:
# Before: y ~ year + age + size # After: y ~ year + age + size
With complex
case_when()calls:# Before: case_when( x %in% c(1, 2) ~ { this + complex + thing }, x %in% c(3, 4) ~ { that + thing } ) # After: case_when( x %in% c(1, 2) ~ { this + complex + thing }, x %in% c(3, 4) ~ { that + thing } )
Install air 0.8.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/posit-dev/air/releases/download/0.8.0/air-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/posit-dev/air/releases/download/0.8.0/air-installer.ps1 | iex"Download air 0.8.0
| File | Platform | Checksum |
|---|---|---|
| air-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
| air-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
| air-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| air-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| air-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| air-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
0.7.1
Release Notes
- We now recommend using Tombi for
air.tomlautocompletion and validation instead of Even Better TOML. Tombi is easily installable from the VS Code Marketplace, the OpenVSX Marketplace, as a Zed extension, or using some other supported installation method. We've improved on ourair.tomlconfiguration documentation to help tombi provide the bestair.tomlediting experience (#371).
Install air 0.7.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/posit-dev/air/releases/download/0.7.1/air-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/posit-dev/air/releases/download/0.7.1/air-installer.ps1 | iex"Download air 0.7.1
| File | Platform | Checksum |
|---|---|---|
| air-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
| air-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
| air-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| air-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| air-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| air-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
0.7.0
Release Notes
-
Autobracing is a new feature applied to if statements, for loops, while loops, repeat loops, and function definitions. This feature will automatically add
{}around the body of these code elements in certain cases to maximize readability, consistency, and portability (#225, #334).For example:
if (condition) a # Becomes: if (condition) { a }
fn <- function( a, b ) a + b # Becomes: fn <- function( a, b ) { a + b }
Single line if statements and function definitions are still allowed in certain contexts:
list(a = if (is.null(x)) NA else x) map(xs, function(x) x + 1)
-
Empty
{}are no longer ever expanded (#43).This allows for syntax like:
dummy <- function() {} while (waiting()) {} switch(x, a = {}, b = 2) function( expr = {} ) { this_first() expr }
-
Binary exponents are now supported in hexadecimal constants (#357).
-
NULLis now allowed in function call argument name position (#357). -
Fixed a case where some valid raw strings would cause a parse error (#255).
Install air 0.7.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/posit-dev/air/releases/download/0.7.0/air-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/posit-dev/air/releases/download/0.7.0/air-installer.ps1 | iex"Download air 0.7.0
| File | Platform | Checksum |
|---|---|---|
| air-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
| air-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
| air-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| air-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| air-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| air-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
0.6.0
Release Notes
-
Added documentation on using Air's GitHub Action, setup-air.
-
Added documentation on using Air in Zed.
Install air 0.6.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/posit-dev/air/releases/download/0.6.0/air-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/posit-dev/air/releases/download/0.6.0/air-installer.ps1 | iex"Download air 0.6.0
| File | Platform | Checksum |
|---|---|---|
| air-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
| air-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
| air-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| air-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| air-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| air-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
0.5.0
Release Notes
-
Added support for a
skipfield inair.toml(#273).This is an extension of the
# fmt: skipcomment feature that provides a single place for you to list functions you never want formatting for. For example:skip = ["tribble", "graph_from_literal"]
This
skipconfiguration would skip formatting for these function calls, even without a# fmt: skipcomment:tribble( ~x, ~y, 1, 2, 3, 4 ) igraph::graph_from_literal(A +-+ B +---+ C ++ D + E)
We expect this to be useful when working with packages that provide domain specific languages that come with their own unique formatting conventions.
-
Fixed an issue where
air.tomlsettings were not being applied to the correct R files (#294).
Install air 0.5.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/posit-dev/air/releases/download/0.5.0/air-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/posit-dev/air/releases/download/0.5.0/air-installer.ps1 | iex"Download air 0.5.0
| File | Platform | Checksum |
|---|---|---|
| air-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
| air-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
| air-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| air-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| air-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| air-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
0.4.1
Release Notes
- Language server configuration variables are now fully optional, avoiding issues in editors like Zed or Helix (#246).
Install air 0.4.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/posit-dev/air/releases/download/0.4.1/air-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/posit-dev/air/releases/download/0.4.1/air-installer.ps1 | iex"Download air 0.4.1
| File | Platform | Checksum |
|---|---|---|
| air-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
| air-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
| air-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| air-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| air-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| air-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
0.4.0
Release Notes
-
Parenthesized expressions now tightly hug (#248).
-
We now allow up to 2 lines between top-level elements of a file. This makes it possible to separate long scripts into visually distinct sections (#40).
-
Unary formulas (i.e. anonymous functions) like
~ .x + 1now add a space between the~and the right-hand side, unless the right-hand side is very simple, like~fooor~1(#235). -
Semicolons at the very start or very end of a file no longer cause the parser to panic (#238).
-
Assigned pipelines no longer double-indent when a persistent line break is used (#220).
-
Hugging calls like:
list(c( 1, 2 ))
are no longer fully expanded (#21).
-
Assigned pipelines no longer double-indent (#220).
-
Added support for special "skip" comments.
Use
# fmt: skipto avoid formatting the following node and all of its children. In this case, thetribble()call and all of its arguments (#52).# fmt: skip tribble( ~a, ~b, 1, 2 )
Use
# fmt: skip fileto avoid formatting an entire file. This comment must appear at the top of the file before any non-comment R code (#219).
Install air 0.4.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/posit-dev/air/releases/download/0.4.0/air-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/posit-dev/air/releases/download/0.4.0/air-installer.ps1 | iex"Download air 0.4.0
| File | Platform | Checksum |
|---|---|---|
| air-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
| air-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
| air-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| air-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| air-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
| air-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |