Skip to content

Rust syntax highlighting stopped working after upgrade to 25.07 #13967

@oyvind-ege

Description

@oyvind-ege

Summary

After upgrading to 25.07, syntax highlighting for Rust stopped working, and the logs contain errors related to rust-analyzer. Downgrading to version 25.01.1 solves the problem.

Context

  • Rust version 1.88, rust-analyzer 1.88
  • Single rust-analyzer binary located in .cargo
  • Reinstalled both Helix and Rust/rust-analyzer, to no avail
  • Ran hx -g fetch && hx -g build

Reproduction Steps

Rust-version 1.88

I tried this:

  1. Upgrade to 25.07
  2. Open a Rust project in helix

I expected this to happen:

Syntax highlighting to work as intended, and rust-analyzer to run without fatal errors.

Instead, this happened:

Syntax highlighting does not work, and helix logs contains multiple rust-analyzer errors. Downgrading to 25.01.1 solves the issue.

Helix log

~/.cache/helix/helix.log
...
2025-07-16T11:55:55.799 helix_lsp::transport [ERROR] rust-analyzer err <- "\n"
2025-07-16T11:55:55.799 helix_lsp::transport [ERROR] rust-analyzer err <- "thread 'PrimeCaches#2' panicked at /rust/deps/thin-vec-0.2.14/src/lib.rs:1061:51:\n"
2025-07-16T11:55:55.799 helix_lsp::transport [ERROR] rust-analyzer err <- "capacity overflow\n"
2025-07-16T11:55:55.799 helix_lsp::transport [ERROR] rust-analyzer err <- "stack backtrace:\n"
2025-07-16T11:55:55.993 helix_lsp::transport [ERROR] rust-analyzer err <- "   0: __rustc::rust_begin_unwind\n"
2025-07-16T11:55:55.993 helix_lsp::transport [ERROR] rust-analyzer err <- "   1: core::panicking::panic_fmt\n"
2025-07-16T11:55:55.994 helix_lsp::transport [ERROR] rust-analyzer err <- "   2: core::option::expect_failed\n"
2025-07-16T11:55:55.994 helix_lsp::transport [ERROR] rust-analyzer err <- "   3: <thin_vec::ThinVec<salsa::table::memo::MemoEntry>>::reserve\n"
2025-07-16T11:55:55.994 helix_lsp::transport [ERROR] rust-analyzer err <- "   4: <salsa::function::IngredientImpl<<_ as hir_def::db::DefDatabase>::impl_signature_with_source_map::impl_signature_with_source_map_shim::Configuration_>>::execute\n"
2025-07-16T11:55:55.995 helix_lsp::transport [ERROR] rust-analyzer err <- "   5: <salsa::function::IngredientImpl<<_ as hir_def::db::DefDatabase>::impl_signature_with_source_map::impl_signature_with_source_map_shim::Configuration_>>::fetch_cold\n"
2025-07-16T11:55:55.995 helix_lsp::transport [ERROR] rust-analyzer err <- "   6: <_ as hir_def::db::DefDatabase>::impl_signature_with_source_map::impl_signature_with_source_map_shim\n"
2025-07-16T11:55:55.995 helix_lsp::transport [ERROR] rust-analyzer err <- "   7: <salsa::function::IngredientImpl<<_ as hir_def::db::DefDatabase>::impl_signature::impl_signature_shim::Configuration_>>::execute\n"
2025-07-16T11:55:55.996 helix_lsp::transport [ERROR] rust-analyzer err <- "   8: <salsa::function::IngredientImpl<<_ as hir_def::db::DefDatabase>::impl_signature::impl_signature_shim::Configuration_>>::fetch_cold\n"
2025-07-16T11:55:55.996 helix_lsp::transport [ERROR] rust-analyzer err <- "   9: <_ as hir_def::db::DefDatabase>::impl_signature::impl_signature_shim\n"
2025-07-16T11:55:55.996 helix_lsp::transport [ERROR] rust-analyzer err <- "  10: <hir::symbols::SymbolCollector>::do_work::{closure#1}\n"
2025-07-16T11:55:55.996 helix_lsp::transport [ERROR] rust-analyzer err <- "  11: <hir::symbols::SymbolCollector>::collect\n"
2025-07-16T11:55:55.997 helix_lsp::transport [ERROR] rust-analyzer err <- "  12: <<_ as ide_db::symbol_index::SymbolsDatabase>::module_symbols::module_symbols_shim::Configuration_ as salsa::function::Configuration>::execute\n"
2025-07-16T11:55:55.998 helix_lsp::transport [ERROR] rust-analyzer err <- "  13: <salsa::function::IngredientImpl<<_ as ide_db::symbol_index::SymbolsDatabase>::module_symbols::module_symbols_shim::Configuration_>>::execute\n"
2025-07-16T11:55:55.998 helix_lsp::transport [ERROR] rust-analyzer err <- "  14: <salsa::function::IngredientImpl<<_ as ide_db::symbol_index::SymbolsDatabase>::module_symbols::module_symbols_shim::Configuration_>>::fetch_cold\n"
2025-07-16T11:55:55.998 helix_lsp::transport [ERROR] rust-analyzer err <- "  15: <_ as ide_db::symbol_index::SymbolsDatabase>::module_symbols::module_symbols_shim\n"
2025-07-16T11:55:55.999 helix_lsp::transport [ERROR] rust-analyzer err <- "  16: ide_db::symbol_index::crate_symbols\n"
2025-07-16T11:55:56.000 helix_lsp::transport [ERROR] rust-analyzer err <- "note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.\n"
2025-07-16T11:55:56.001 helix_lsp::transport [ERROR] rust-analyzer err <- "query stacktrace:\n"
2025-07-16T11:55:56.001 helix_lsp::transport [ERROR] rust-analyzer err <- "   0: impl_signature_shim(Id(3f0b3)) -> (R1, Durability::HIGH)\n"
2025-07-16T11:55:56.001 helix_lsp::transport [ERROR] rust-analyzer err <- "             at src/tools/rust-analyzer/crates/hir-def/src/db.rs:101\n"
2025-07-16T11:55:56.001 helix_lsp::transport [ERROR] rust-analyzer err <- "   1: module_symbols_shim(Id(7800)) -> (R4099, Durability::MEDIUM)\n"
2025-07-16T11:55:56.001 helix_lsp::transport [ERROR] rust-analyzer err <- "             at src/tools/rust-analyzer/crates/ide-db/src/symbol_index.rs:99\n"
2025-07-16T11:55:56.001 helix_lsp::transport [ERROR] rust-analyzer err <- "\n"
2025-07-16T12:02:57.900 helix_view::document [WARN] Error building syntax for '~/.cache/helix/helix.log': configured timeout was exceeded
2025-07-16T12:06:39.965 helix_view::document [WARN] Error building syntax for '~/.cache/helix/helix.log': configured timeout was exceeded
2025-07-16T12:06:55.456 helix_lsp::transport [ERROR] rust-analyzer err: <- StreamClosed
2025-07-16T12:07:07.514 helix_view::document [WARN] Error building syntax for '~/.cache/helix/helix.log': configured timeout was exceeded
2025-07-16T12:10:06.485 helix_view::document [WARN] Error building syntax for '~/.cache/helix/helix.log': configured timeout was exceeded
2025-07-16T12:13:35.405 helix_view::document [WARN] Error building syntax for '~/.cache/helix/helix.log': configured timeout was exceeded
2025-07-16T12:13:46.980 helix_lsp::transport [ERROR] rust-analyzer err: <- StreamClosed
2025-07-16T12:13:53.094 helix_lsp::transport [ERROR] rust-analyzer <- ServerError(-32801): content modified
2025-07-16T12:13:53.097 helix_term::handlers::signature_help [ERROR] signature help request failed: protocol error: ServerError(-32801): content modified
2025-07-16T12:13:53.996 helix_view::document [ERROR] Formatter error: error[E0670]: `async fn` is not permitted in Rust 2015
  --> <stdin>:65:1
   |
65 | async fn main() -> Result<(), AppError> {
   | ^^^^^ to use `async fn`, switch to Rust 2018 or later
   |
   = help: pass `--edition 2024` to `rustc`
   = note: for more on editions, read https://doc.rust-lang.org/edition-guide

error[E0670]: `async fn` is not permitted in Rust 2015
   --> <stdin>:106:1
    |
106 | async fn setup_db(State(state): State<SharedState>) -> Result<(), AppError> {
    | ^^^^^ to use `async fn`, switch to Rust 2018 or later
    |
    = help: pass `--edition 2024` to `rustc`
    = note: for more on editions, read https://doc.rust-lang.org/edition-guide

error[E0670]: `async fn` is not permitted in Rust 2015
   --> <stdin>:114:1
    |
114 | async fn get_all_projects(State(state): State<SharedState>) -> APIResponse {
    | ^^^^^ to use `async fn`, switch to Rust 2018 or later
    |
    = help: pass `--edition 2024` to `rustc`
    = note: for more on editions, read https://doc.rust-lang.org/edition-guide

error[E0670]: `async fn` is not permitted in Rust 2015
   --> <stdin>:119:1
    |
119 | async fn get_single_project(State(state): State<SharedState>, Path(id): Path<usize>) -> APIResponse {
    | ^^^^^ to use `async fn`, switch to Rust 2018 or later
    |
    = help: pass `--edition 2024` to `rustc`
    = note: for more on editions, read https://doc.rust-lang.org/edition-guide

error[E0670]: `async fn` is not permitted in Rust 2015
   --> <stdin>:130:1
    |
130 | async fn add_project(State(state): State<SharedState>, Json(payload): Json<CreateProject>) -> Result<APIResponse, StatusCode> {
    | ^^^^^ to use `async fn`, switch to Rust 2018 or later
    |
    = help: pass `--edition 2024` to `rustc`
    = note: for more on editions, read https://doc.rust-lang.org/edition-guide


2025-07-16T12:14:07.420 helix_view::document [WARN] Error building syntax for '~/.cache/helix/helix.log': configured timeout was exceeded
2025-07-16T12:15:05.311 helix_view::document [WARN] Error building syntax for '~/.cache/helix/helix.log': configured timeout was exceeded
2025-07-16T12:18:50.760 helix_view::document [WARN] Error building syntax for '~/.cache/helix/helix.log': configured timeout was exceeded
2025-07-16T12:21:37.965 helix_lsp::transport [ERROR] rust-analyzer err: <- StreamClosed
2025-07-16T12:22:47.602 helix_view::document [WARN] Error building syntax for '~/.cache/helix/helix.log': configured timeout was exceeded
2025-07-16T12:27:06.002 helix_lsp::transport [ERROR] rust-analyzer err: <- StreamClosed
2025-07-16T12:27:10.757 helix_view::document [WARN] Error building syntax for '~/.cache/helix/helix.log': configured timeout was exceeded
2025-07-16T12:27:33.082 helix_view::document [ERROR] Formatter error: error[E0670]: `async fn` is not permitted in Rust 2015
  --> <stdin>:65:1
   |
65 | async fn main() -> Result<(), AppError> {
   | ^^^^^ to use `async fn`, switch to Rust 2018 or later
   |
   = help: pass `--edition 2024` to `rustc`
   = note: for more on editions, read https://doc.rust-lang.org/edition-guide

error[E0670]: `async fn` is not permitted in Rust 2015
   --> <stdin>:106:1
    |
106 | async fn setup_db(State(state): State<SharedState>) -> Result<(), AppError> {
    | ^^^^^ to use `async fn`, switch to Rust 2018 or later
    |
    = help: pass `--edition 2024` to `rustc`
    = note: for more on editions, read https://doc.rust-lang.org/edition-guide

error[E0670]: `async fn` is not permitted in Rust 2015
   --> <stdin>:114:1
    |
114 | async fn get_all_projects(State(state): State<SharedState>) -> APIResponse {
    | ^^^^^ to use `async fn`, switch to Rust 2018 or later
    |
    = help: pass `--edition 2024` to `rustc`
    = note: for more on editions, read https://doc.rust-lang.org/edition-guide

error[E0670]: `async fn` is not permitted in Rust 2015
   --> <stdin>:119:1
    |
119 | async fn get_single_project(State(state): State<SharedState>, Path(id): Path<usize>) -> APIResponse {
    | ^^^^^ to use `async fn`, switch to Rust 2018 or later
    |
    = help: pass `--edition 2024` to `rustc`
    = note: for more on editions, read https://doc.rust-lang.org/edition-guide

error[E0670]: `async fn` is not permitted in Rust 2015
   --> <stdin>:130:1
    |
130 | async fn add_project(State(state): State<SharedState>, Json(payload): Json<CreateProject>) -> Result<APIResponse, StatusCode> {
    | ^^^^^ to use `async fn`, switch to Rust 2018 or later
    |
    = help: pass `--edition 2024` to `rustc`
    = note: for more on editions, read https://doc.rust-lang.org/edition-guide


2025-07-16T12:30:50.230 helix_view::document [WARN] Error building syntax for '~/.cache/helix/helix.log': configured timeout was exceeded
2025-07-16T12:30:55.489 helix_lsp::transport [ERROR] rust-analyzer err: <- StreamClosed

Platform

macOS

Terminal Emulator

rio

Installation Method

brew

Helix Version

helix 25.07

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions