From 1771eded548dd5d9143dd6d0b53d7f76174dca65 Mon Sep 17 00:00:00 2001 From: Thorsten Ball Date: Wed, 22 May 2024 14:29:05 +0200 Subject: [PATCH] tasks: Fix $ZED_SELECTED_TEXT ignoring line_mode (#12120) When you press `V` to go into visual-line mode in Vim, `selections.line_mode` is true and the selection contains _lines_. But `$ZED_SELECTED_TEXT` always contained just the cursor location or any non-line-mode selection that was previously made. Release Notes: - Fixed `$ZED_SELECTED_TEXT` variable in Tasks ignoring whether visual-line-mode in Vim was used. --- crates/editor/src/tasks.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/crates/editor/src/tasks.rs b/crates/editor/src/tasks.rs index 90f8b799c9..7fe695b251 100644 --- a/crates/editor/src/tasks.rs +++ b/crates/editor/src/tasks.rs @@ -7,6 +7,7 @@ use gpui::WindowContext; use language::{BasicContextProvider, ContextProvider}; use project::{Location, WorktreeId}; use task::{TaskContext, TaskVariables, VariableName}; +use text::Point; use util::ResultExt; use workspace::Workspace; @@ -56,7 +57,11 @@ fn task_context_with_editor( cx: &mut WindowContext<'_>, ) -> Option { let (selection, buffer, editor_snapshot) = { - let selection = editor.selections.newest::(cx); + let mut selection = editor.selections.newest::(cx); + if editor.selections.line_mode { + selection.start = Point::new(selection.start.row, 0); + selection.end = Point::new(selection.end.row + 1, 0); + } let (buffer, _, _) = editor .buffer() .read(cx)