Idea detail
nonblocking_index
reqlan rq/indexer/indexer.rq:193
Summary
Index sync must stay non-blocking for the host UI ( notably activity_bar and workspace_loading ).
Editor startup is gated by first_paint_startup; discovering a base must not construct Langium services, which are initialized lazily on the first parse.
While syncing, surface progress — state, processed / total, and the current file — in workspace_pane and index_panel.
In-flight sync must be cancellable from those surfaces; cancel keeps already-indexed rows and returns the index to ready.
Incremental behaviour ( see also indexing_incrementality ):
- Single-file create / change / delete via watchers indexes only that file — never a full base walk.
- Soft full sync ( `syncWorkspace` / Refresh ) skips parse + persist when the file's mtime matches the value stored on the documents row.
- Hard refresh ( `clearAndRebuildIndex` / Clear & rebuild ) wipes the store and reindexes every file.
- Every sync and stale check applies `.rqignore` to the paths it receives, the same as the base walk; the native single-file index also drops an ignored path.
Thus base discovery cannot make the first sync index ignored files.
Implemented by workspace-index.ts; editor adapter index-service.ts.
Navigation
Attributes
| Key | Value |
|---|---|
| status | done |
| tests | workspace-index.test.ts, workspace-index.ts, workspace-index.test.ts:soft sync drops rqignored paths supplied by base discovery, sync.rs:soft_sync_skips_unchanged_mtime, sync.rs:hard_rebuild_reindexes_despite_mtime |
Ancestor context
No ancestor chain recorded.
Outbound references
Inbound references
| Kind | Idea | Path | Snippet |
|---|---|---|---|
| references | analytical_package | reqlan rq/core-architecture.rq | nonblocking_index |
| references | analytical_rust_port | reqlan rq/core_analysis/rust_port.rq | nonblocking_index |
| references | extension_startup_reliability | reqlan rq/extension/host/startup-performance.rq | nonblocking_index |
| references | indexing_trigger_auto | reqlan rq/extension/index-host/graph-analysers.rq | nonblocking_index |
| references | index_diagnostics_metrics | reqlan rq/extension/index-host/index-diagnostics.rq | nonblocking_index |
| references | index_file_search_coalesce | reqlan rq/extension/language/support/initialisation-and-sequencing.rq | nonblocking_index |
| references | workspace_pane | reqlan rq/extension/local-context/activitybar-panels/workspace.rq | nonblocking_index |
| references | index_panel | reqlan rq/extension/workspace-summary/ideas_summary/webview.rq | nonblocking_index |
| references | index_cache_reuse | reqlan rq/indexer/cache-reuse.rq | nonblocking_index |
| references | already_cached | reqlan rq/indexer/cache-reuse.rq | nonblocking_index |
| references | triggers | reqlan rq/indexer/indexer.rq | nonblocking_index |
| references | indexing_incrementality | reqlan rq/indexer/indexer.rq | nonblocking_index |
| references | index_diagnostics_timing | reqlan rq/indexer/indexer.rq | nonblocking_index |
| references | index_code_files | reqlan rq/indexer/indexer.rq | nonblocking_index |
| references | indexer_rust | reqlan rq/indexer/indexer.rq | nonblocking_index |
| references | index_sequencing | reqlan rq/indexer/sequencing.rq | nonblocking_index |
| references | soft_sync | reqlan rq/indexer/sequencing.rq | nonblocking_index |
| references | hard_rebuild | reqlan rq/indexer/sequencing.rq | nonblocking_index |
Unresolved references
| Kind | Idea | Path | Snippet |
|---|---|---|---|
| None | |||
Local graph
Initialising graph…