Fix code action selection bug while using vim visual mode (#27817)
## Problem Code actions do not handle vim line mode correctly. See this video where `Extract to function` doesn't extract both selected lines: https://github.com/user-attachments/assets/8fa0fb28-0403-44f6-9e55-a59b6713dffd ## Solution Use `selections.newest_adjusted` instead of `selections.newest_anchor` so code actions consider the full selection. Correct behavior: https://github.com/user-attachments/assets/174d5a34-3873-4d20-b67d-103edec4cdbe --- Release Notes: - vim: Fixed code actions in visual line mode
This commit is contained in:
parent
64241f7d2f
commit
dad33f7cc2
1 changed files with 6 additions and 3 deletions
|
@ -5172,13 +5172,16 @@ impl Editor {
|
|||
}
|
||||
|
||||
fn refresh_code_actions(&mut self, window: &mut Window, cx: &mut Context<Self>) -> Option<()> {
|
||||
let buffer = self.buffer.read(cx);
|
||||
let newest_selection = self.selections.newest_anchor().clone();
|
||||
let newest_selection_adjusted = self.selections.newest_adjusted(cx).clone();
|
||||
let buffer = self.buffer.read(cx);
|
||||
if newest_selection.head().diff_base_anchor.is_some() {
|
||||
return None;
|
||||
}
|
||||
let (start_buffer, start) = buffer.text_anchor_for_position(newest_selection.start, cx)?;
|
||||
let (end_buffer, end) = buffer.text_anchor_for_position(newest_selection.end, cx)?;
|
||||
let (start_buffer, start) =
|
||||
buffer.text_anchor_for_position(newest_selection_adjusted.start, cx)?;
|
||||
let (end_buffer, end) =
|
||||
buffer.text_anchor_for_position(newest_selection_adjusted.end, cx)?;
|
||||
if start_buffer != end_buffer {
|
||||
return None;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue