project: Workaround invalid code action edits from pyright (#28354)
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com> Co-authored-by: Piotr Osiewicz <piotr@zed.dev> fixes issue where: In a two line python file like so ``` Path() ``` If the user asks for code actions on `Path` and they select (`From pathlib import path`) the result they get is ``` Pathfrom pathlib import Path Path() ``` Instead of ``` from pathlib import Path Path() ``` This is due to a non-lsp-spec-compliant response from pyright below ```json {"jsonrpc":"2.0","id":40,"result":[{"title":"from pathlib import Path","edit":{"changes":{"file:///Users/neb/Zed/example-project/pyright-project/main.py":[{"range":{"start":{"line":2,"character":0},"end":{"line":2,"character":4}},"newText":"Path"},{"range":{"start":{"line":2,"character":0},"end":{"line":2,"character":0}},"newText":"from pathlib import Path\n\n\n"}]}},"kind":"quickfix"}]} ``` Release Notes: - Fixed an issue when using auto-import code actions provided by pyright (or basedpyright) where the import would be jumbled with the scoped import resulting in an invalid result Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com> Co-authored-by: Anthony Eid <hello@anthonyeid.me>
This commit is contained in:
parent
97641c3298
commit
38ec45008c
2 changed files with 58 additions and 1 deletions
|
@ -2635,7 +2635,8 @@ impl LocalLspStore {
|
|||
.into_iter()
|
||||
.map(|edit| (range_from_lsp(edit.range), edit.new_text))
|
||||
.collect::<Vec<_>>();
|
||||
lsp_edits.sort_by_key(|(range, _)| range.start);
|
||||
|
||||
lsp_edits.sort_by_key(|(range, _)| (range.start, range.end));
|
||||
|
||||
let mut lsp_edits = lsp_edits.into_iter().peekable();
|
||||
let mut edits = Vec::new();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue