refactor: simplify disable_selection to never move the cursor

This commit is contained in:
CJ van den Berg 2025-11-27 16:16:05 +01:00
parent a15ceeb4a7
commit 1755ecb3dd
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9

View file

@ -137,37 +137,19 @@ pub const CurSel = struct {
} }
fn to_selection_inclusive(self: *const Self, root: Buffer.Root, metrics: Buffer.Metrics) Selection { fn to_selection_inclusive(self: *const Self, root: Buffer.Root, metrics: Buffer.Metrics) Selection {
return if (self.selection) |sel| return self.selection orelse Selection.from_cursor_inclusive(&self.cursor, root, metrics);
sel
else cod: {
var sel = Selection.from_cursor(&self.cursor);
sel.end.move_right(root, metrics) catch {};
break :cod sel;
};
} }
pub fn disable_selection(self: *Self, root: Buffer.Root, metrics: Buffer.Metrics) void { pub fn disable_selection(self: *Self, _: Buffer.Root, _: Buffer.Metrics) void {
switch (tui.get_selection_style()) { self.selection = null;
.normal => self.disable_selection_normal(),
.inclusive => self.disable_selection_inclusive(root, metrics),
}
} }
pub fn disable_selection_normal(self: *Self) void { pub fn disable_selection_normal(self: *Self) void {
self.selection = null; self.selection = null;
} }
fn disable_selection_inclusive(self: *Self, root: Buffer.Root, metrics: Buffer.Metrics) void { pub fn check_selection(self: *Self, _: Buffer.Root, _: Buffer.Metrics) void {
if (self.selection) |sel| { self.selection = if (self.selection) |sel| if (sel.empty()) null else sel else null;
if (!sel.is_reversed()) self.cursor.move_left(root, metrics) catch {};
self.selection = null;
}
}
pub fn check_selection(self: *Self, root: Buffer.Root, metrics: Buffer.Metrics) void {
if (self.selection) |sel| if (sel.empty()) {
self.disable_selection(root, metrics);
};
} }
fn expand_selection_to_line(self: *Self, root: Buffer.Root, metrics: Buffer.Metrics) *Selection { fn expand_selection_to_line(self: *Self, root: Buffer.Root, metrics: Buffer.Metrics) *Selection {