l0ng-ai faf4d2bd36 fix(lsp): Find usages in files outside the server's analysis scope
Language servers answer textDocument/references (and rename, incoming
calls) only from the files they analyse: their configured scope (Pyright's
`include`, a tsconfig, a compilation database) plus the open documents.
Usages in other project files were silently missing until the file was
opened.

Reference searches now also find the project files of the server's
languages that mention the symbol's name as a whole word (honouring
.gitignore, excluded roots and ignored names; at most 300 files; off the
UI thread and cancellable). Those the first answer did not cover and the
user does not have open are opened on the server from disk, the request is
repeated, and they are closed again. Diagnostics the server publishes for
these files (including shortly after the close) never reach Problems, and
a user opening such a file mid-search takes it over cleanly.

An empty answer while the server reports progress is retried once
indexing ends; results that may still be incomplete (server still
indexing, or more matching files than searched) carry a note in Find
Usages and Show Usages. lsp_references takes a request id so searches are
cancelled when their tab closes, a new popup search starts, or the project
changes.

Find Usages, Show Usages (and Cmd-click on a declaration), usage counts,
Safe Delete of a symbol, Rename and incoming Call Hierarchy share the
path. File-level Safe Delete scans every symbol of the deleted files and
keeps to the server's scope.

Fixes #83

Claude-Session: https://claude.ai/code/session_01VUYsdXA2nkF5v6zsC93dpn
2026-10-27 17:40:07 +08:00
2026-10-22 18:55:10 +08:00
2026-10-22 18:55:10 +08:00
2026-10-22 18:55:10 +08:00
2026-10-27 15:36:39 +08:00
2026-10-27 15:36:39 +08:00
2026-10-22 18:55:10 +08:00
2026-10-22 18:55:10 +08:00
2026-10-22 18:55:10 +08:00
2026-10-22 18:55:10 +08:00
2026-10-22 18:55:10 +08:00
2026-10-22 18:55:10 +08:00

OpenIDEA

The IDE you know, rebuilt in Rust.

Download  ·  Benchmark  ·  Build

https://github.com/user-attachments/assets/234dd54c-1255-4b3a-b35c-533d78d737c0

OpenIDEA brings the IntelliJ IDEA way of working — its keymap, its tool windows, its search-everything habits — to a native app with a Rust core.

Editor, code insight, debugger, Git, terminal, database and HTTP clients, for 60+ languages. Builds for macOS, Windows and Linux.

Benchmark

Opening freqtrade (Python, ~770 files) with warm caches, median of 5 runs:

OpenIDEA IntelliJ IDEA 2026.2.3
Window with the project 0.9 s 3.1 s
Ready (CPU settled) 1.1 s 13.2 s
Memory (USS, all processes) 169 MB 2011 MB
CPU time until ready 2.4 s 47.9 s
Idle CPU 4 % of a core 7 % of a core
Quit 0.3 s 5.9 s

A release build of OpenIDEA from main and IDEA with default settings and plugins, on Windows 11, 32-core AMD, 62 GB RAM. IDEA analyses Python more deeply, so "ready" doesn't mean the same work on both sides. Both are measured from the outside, the same way: see perf/compare to run it on your machine and projects.

Build

pnpm install
pnpm tauri dev

Rust 1.96, Node 22, pnpm and the Tauri prerequisites.

License

Apache 2.0. Bundled third-party assets are listed in THIRD_PARTY_LICENSES.md.

Not affiliated with JetBrains. IntelliJ IDEA is a trademark of JetBrains s.r.o.

S
Description
The IDE you know, rebuilt in Rust. IntelliJ IDEA–style keymap, tool windows and search-everywhere in a fast native app: editor, code insight, debugger, Git, terminal, database and HTTP clients for 60+ languages.
Readme Apache-2.0
64 MiB
Languages
TypeScript 56.2%
Rust 40.1%
CSS 2.2%
Python 0.5%
Java 0.5%
Other 0.3%