DragonRuby intelligence in your editor
drenv ships a language server for DragonRuby projects. No gems, no Ruby toolchain, no stub repositories — everything is derived from the engine version your project actually uses, offline, including your vendored dependencies.
Requires drenv 0.17.0 or newer — check with drenv --version, upgrade with drenv self-update. On older versions editors report the server crashing on startup.
Completions
The full args.* tree, Geometry and Easing, mruby core methods, and your project's own definitions — vendored libraries included. One-hop typing means enemies = [] makes enemies. complete like an Array, and @anim = Animation.new completes your class's methods, inherited ones too.
Docs on hover
The same content docs.dragonruby.org serves, matched to the engine version your project actually uses. Your own comment blocks render too — YARD tags become rich markdown with clickable constant links.
Signature help
Positional and keyword parameters with the active argument highlighted as you type — including DragonRuby's paren-less call style. Signatures come from the engine's own source.
Diagnostics
Unknown engine methods, wrong argument counts, unknown or missing keywords, duck-shape checks, and performance hints linked to the engine's shipped guide. Warnings only fire when the server fully owns the receiver — a squiggle means something is actually wrong.
rec: is not a keyword of Geometry.rect_navigate — accepted: rect:, rects:Navigation
Go to definition and references across mygame/ and vendor/, resolved the way Ruby dispatches: own class, superclass chain, then same file. Locals stay method-scoped, and if a library you're developing is vendored into the same workspace, results point at the editable source — not the vendored copy.
drenv.toml
Validation and key completion for the dependency manifest, from the same schema the CLI uses — typos and unknown sources get flagged before you ever run drenv bundle.
entrypint in [package] — known: root, entrypoint, includeEditor setup
Install drenv 0.17.0 or newer first, so drenv is on your PATH. Not activating? Run drenv lsp doctor in your project.
Install drenv from the Marketplace — search drenv in the Extensions panel, or run code --install-extension nitemaeric.drenv-lsp. Open a Ruby file in a DragonRuby project and it activates.
With built-in eglot (Emacs 29+), register the server for Ruby:
(with-eval-after-load 'eglot
(add-to-list 'eglot-server-programs
'((ruby-mode ruby-ts-mode) . ("drenv" "lsp"))))Then M-x eglot in a DragonRuby project. Full eglot and lsp-mode setup in editors/emacs.
Coming to the Zed extension registry (review pending). Until then, clone the repo and run zed: install dev extension on editors/zed/. Safe to enable globally — the server stays dormant outside DragonRuby projects.
Point your client at command drenv with args ["lsp"] for Ruby files. The conventional --stdio flag is accepted. A Neovim config lives in editors/nvim.
Every rule, by feature, on the rule reference page. Project detection and troubleshooting in the LSP docs.