## Context Closes #51330 When the cursor is at the very end of a file, `find_specific_language_server_in_selection` in `crates/editor/src/lsp_ext.rs` silently skips the selection because the anchor's `buffer_id` is `None`. This causes `editor: switch source header` (clangd) and rust-analyzer extension commands (`expand macro`, `open docs`, `open playground`) to do nothing. The fix falls back to the singleton buffer's ID when the anchor has no `buffer_id`. ## How to Review Single file change in `crates/editor/src/lsp_ext.rs`. The diff is small — pre-compute the singleton buffer ID, then use it as fallback in the `filter_map` closure. An integration test verifies the fix. ## Self-Review Checklist - [x] Reviewed own diff for quality, security, and reliability - [x] No unsafe blocks - [x] Tests pass (639 editor tests, 0 failures) - [x] Manual testing: switch source header works at beginning, middle, and end of C++ file ## Test Plan - [x] New integration test: `test_find_language_server_at_end_of_file` — verifies `find_specific_language_server_in_selection` returns `Some` at both beginning and end of file - [x] Confirmed the test fails without the fix (assertion on "should find language server at end of file") - [x] Manual: open a C++ file with clangd, place cursor at very end, run `switch source header` — now correctly opens the header - [x] Manual: verify it still works at beginning and middle of file (non-regression) - [x] `cargo test -p editor` — 639 passed, 0 failed Release Notes: - Fixed `editor: switch source header` and other LSP extension commands not working when the cursor is at the very end of a file. --------- Co-authored-by: Florian Trehaut <florian.trehaut@hillcode.fr> Co-authored-by: Kirill Bulatov <kirill@zed.dev>
1 file changedLine totals unavailable