Language server
Completion, hover, go-to-definition, references, rename, and inlay hints — live in your editor.
Language serverthree tools, one binary
Built for R users who have outgrown RStudio: editor smarts, problem-catching analysis, and one consistent style from a single binary. R has world-class statistics — Roughly brings the IDE-grade tooling other ecosystems already take for granted, fast enough to scale past 300k lines.
Completion, hover, go-to-definition, references, rename, and inlay hints — live in your editor.
Language serverLint diagnostics on by default — plus the first static type checker for R, opt-in.
Type checkerroughly fmt rewrites your whole project to one consistent style, with a --diff mode for CI.
Formatterwrite
Completion, hover, go-to-definition, find references, rename, and inlay hints. Ships as a VS Code extension and speaks LSP, so it drops into any editor that does too.
The inferred signature shows up as an inlay hint — no annotation required.
check
Lint diagnostics run by default, flagging problems before you even run your code. Go deeper with the first static type checker for R — automatic inference checks most of your code with zero annotations, and the type checker stays opt-in.
Most code needs no annotations at all — inference resolves the types for you.
ship
Scrappy R reflows into a consistent shape in place — one-line loop bodies get braced
and indented, cramped operators and commas get their spaces back, and drifting
multi-line indentation snaps to the grid. Deliberate line breaks are respected:
roughly fmt never splits a line you chose to keep. It rewrites the whole
project (and --diff for CI).
adopt
Nothing about your existing R has to change. Install the VS Code extension in one click — no toolchain required — or grab the CLI and point Roughly at your project.
# install the CLI
cargo install --git https://github.com/felix-andreas/roughly roughly
# format, lint, and type-check
roughly fmt .
roughly check . Grab the VS Code extension from the Marketplace, then tune behavior in configuration.