← News

Editora 0.9.10: the language-server release

July 26, 2026 · 0.9.10

Editora 0.9.10 is out, and it is the largest release so far: 51 new features, 7 performance fixes and 18 bug fixes. Grab it from the releases page.

Language servers grew up

Editora has spoken LSP since 0.9.1, but only the easy half of it: definitions, references, hover, diagnostics, completion. The whole second half landed in this release, so a language server is now worth turning on for more than squiggles. See the LSP guide.

Three performance fixes came with it: typing pauses now send only the changed splice of the document to servers that accept incremental sync, semantic highlighting transfers only what changed on servers that support token deltas (so large Java files pay for their edits, not their size), and a diagnostics burst costs map lookups instead of filesystem syscalls on the UI thread.

Run and debug a real project

Until now Run meant a single-file script. It now means your project.

Run Main Class… and Debug Main Class… pick any main class in the active file’s Maven or Gradle project, and a green ▶ appears in the gutter beside every public static void main (the right-click menu offers Run ‘….main()’ and Debug ‘….main()’). Debugging and the fast project-wide Run use the Java language server; without it, Run falls back to the build tool, with Maven resolving the classpath and Gradle delegating to run or bootRun.

Run configurations are saved per project with main class, program and VM arguments, environment variables and working directory, re-runnable from the palette and editable in the new Settings → Run Configurations page. In a Gradle project, saving one pre-fills the main class the build itself declares, so the configuration matches what gradle run would launch rather than whichever file is open. Debug via Build Tool covers the projects where the build tool is the natural way to start the app: it launches Gradle run/bootRun --debug-jvm or Maven spring-boot:run under a suspended JVM and attaches when it is ready. See Running and debugging.

Clicking a Java stack-trace frame in the Run, Test or Build console now asks the language server to resolve it, so a frame inside a dependency or the JDK opens its source instead of reporting “not found”, and the ▶ beside a JUnit class is confirmed against the project’s real test source folders, so a class in src/main/java that happens to carry a @Test-shaped annotation no longer gets a stray one.

Two fixes here matter as much as the features. Java debugging stopped hiding from people whose jdtls already bundles the java-debug plugin (Homebrew’s does), which had been reporting debugging as unavailable and pushing Run onto the slower fallback. And the Maven fallback now resolves sibling-module dependencies in a reactor build, running from the reactor root with -pl <module> -am, so a submodule that depends on an uninstalled sibling runs correctly.

The Emacs model, finished

Editora has always had Emacs keybindings. 0.9.10 fills in the model underneath them, as real features rather than shortcut aliases. See Emacs heritage.

Everything else

Performance

Fixes

Language servers:

Editing and search:

Under the hood, the two classes that build every request Editora sends to a language server gained in-process test seams and 121 new tests: the wire format, the capabilities declared at initialize, session lifetime, diagnostics routing, and the rename path that writes and moves files, with a regression test for each defect above.

The complete list is on the What’s New page, and there is a 0.9.10 blog post on the ones worth explaining rather than listing.