fix: nudge_delete should handle cursor moving to same line as delete

closes #265
This commit is contained in:
CJ van den Berg 2025-06-03 23:53:12 +02:00
parent b9fbd6825d
commit 831607ffd6
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9

View file

@ -218,24 +218,21 @@ pub fn nudge_insert(self: *Self, nudge: Selection) void {
}
pub fn nudge_delete(self: *Self, nudge: Selection) bool {
if (self.row < nudge.begin.row or (self.row == nudge.begin.row and self.col < nudge.begin.col)) return true;
if (nudge.begin.right_of(self.*)) return true;
if (nudge.end.right_of(self.*)) return false;
if (self.row == nudge.begin.row) {
if (nudge.begin.row < nudge.end.row) {
return false;
} else {
if (self.col < nudge.end.col) {
return false;
}
self.col -= nudge.end.col - nudge.begin.col;
self.target = self.col;
return true;
}
self.col -= nudge.end.col - nudge.begin.col;
self.target = self.col;
return true;
}
if (self.row < nudge.end.row) return false;
if (self.row == nudge.end.row) {
if (self.col < nudge.end.col) return false;
self.row -= nudge.end.row - nudge.begin.row;
self.col -= nudge.end.col;
if (self.row == nudge.begin.row) {
self.col += nudge.begin.col + nudge.end.col;
} else {
self.col -= nudge.end.col;
}
self.target = self.col;
return true;
}