terminal2: selection start/endPTr

This commit is contained in:
Mitchell Hashimoto
2024-03-06 21:14:33 -08:00
parent a5d23a0007
commit 90e96e0cc5
2 changed files with 109 additions and 109 deletions

View File

@ -3903,11 +3903,11 @@ test "Screen: selectAll" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 0, .x = 0,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 2, .x = 2,
.y = 2, .y = 2,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
{ {
@ -3917,11 +3917,11 @@ test "Screen: selectAll" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 0, .x = 0,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 8, .x = 8,
.y = 7, .y = 7,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
} }
@ -3947,11 +3947,11 @@ test "Screen: selectLine" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 0, .x = 0,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 7, .x = 7,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// Going backward // Going backward
@ -3964,11 +3964,11 @@ test "Screen: selectLine" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 0, .x = 0,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 7, .x = 7,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// Going forward and backward // Going forward and backward
@ -3981,11 +3981,11 @@ test "Screen: selectLine" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 0, .x = 0,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 7, .x = 7,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// Outside active area // Outside active area
@ -3998,11 +3998,11 @@ test "Screen: selectLine" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 0, .x = 0,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 7, .x = 7,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
} }
@ -4024,11 +4024,11 @@ test "Screen: selectLine across soft-wrap" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 1, .x = 1,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 3, .x = 3,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
} }
@ -4050,11 +4050,11 @@ test "Screen: selectLine across soft-wrap ignores blank lines" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 1, .x = 1,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 3, .x = 3,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// Going backward // Going backward
@ -4067,11 +4067,11 @@ test "Screen: selectLine across soft-wrap ignores blank lines" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 1, .x = 1,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 3, .x = 3,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// Going forward and backward // Going forward and backward
@ -4084,11 +4084,11 @@ test "Screen: selectLine across soft-wrap ignores blank lines" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 1, .x = 1,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 3, .x = 3,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
} }
@ -4110,11 +4110,11 @@ test "Screen: selectLine with scrollback" {
try testing.expectEqual(point.Point{ .active = .{ try testing.expectEqual(point.Point{ .active = .{
.x = 0, .x = 0,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.active, sel.start().*).?); } }, s.pages.pointFromPin(.active, sel.start()).?);
try testing.expectEqual(point.Point{ .active = .{ try testing.expectEqual(point.Point{ .active = .{
.x = 1, .x = 1,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.active, sel.end().*).?); } }, s.pages.pointFromPin(.active, sel.end()).?);
} }
// Selecting last line // Selecting last line
@ -4127,11 +4127,11 @@ test "Screen: selectLine with scrollback" {
try testing.expectEqual(point.Point{ .active = .{ try testing.expectEqual(point.Point{ .active = .{
.x = 0, .x = 0,
.y = 2, .y = 2,
} }, s.pages.pointFromPin(.active, sel.start().*).?); } }, s.pages.pointFromPin(.active, sel.start()).?);
try testing.expectEqual(point.Point{ .active = .{ try testing.expectEqual(point.Point{ .active = .{
.x = 1, .x = 1,
.y = 2, .y = 2,
} }, s.pages.pointFromPin(.active, sel.end().*).?); } }, s.pages.pointFromPin(.active, sel.end()).?);
} }
} }
@ -4166,11 +4166,11 @@ test "Screen: selectLine semantic prompt boundary" {
try testing.expectEqual(point.Point{ .active = .{ try testing.expectEqual(point.Point{ .active = .{
.x = 0, .x = 0,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.active, sel.start().*).?); } }, s.pages.pointFromPin(.active, sel.start()).?);
try testing.expectEqual(point.Point{ .active = .{ try testing.expectEqual(point.Point{ .active = .{
.x = 0, .x = 0,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.active, sel.end().*).?); } }, s.pages.pointFromPin(.active, sel.end()).?);
} }
{ {
var sel = s.selectLine(s.pages.pin(.{ .active = .{ var sel = s.selectLine(s.pages.pin(.{ .active = .{
@ -4181,11 +4181,11 @@ test "Screen: selectLine semantic prompt boundary" {
try testing.expectEqual(point.Point{ .active = .{ try testing.expectEqual(point.Point{ .active = .{
.x = 0, .x = 0,
.y = 2, .y = 2,
} }, s.pages.pointFromPin(.active, sel.start().*).?); } }, s.pages.pointFromPin(.active, sel.start()).?);
try testing.expectEqual(point.Point{ .active = .{ try testing.expectEqual(point.Point{ .active = .{
.x = 0, .x = 0,
.y = 2, .y = 2,
} }, s.pages.pointFromPin(.active, sel.end().*).?); } }, s.pages.pointFromPin(.active, sel.end()).?);
} }
} }
@ -4211,11 +4211,11 @@ test "Screen: selectWord" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 0, .x = 0,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 2, .x = 2,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// Going backward // Going backward
@ -4228,11 +4228,11 @@ test "Screen: selectWord" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 0, .x = 0,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 2, .x = 2,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// Going forward and backward // Going forward and backward
@ -4245,11 +4245,11 @@ test "Screen: selectWord" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 0, .x = 0,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 2, .x = 2,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// Whitespace // Whitespace
@ -4262,11 +4262,11 @@ test "Screen: selectWord" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 3, .x = 3,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 4, .x = 4,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// Whitespace single char // Whitespace single char
@ -4279,11 +4279,11 @@ test "Screen: selectWord" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 0, .x = 0,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 0, .x = 0,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// End of screen // End of screen
@ -4296,11 +4296,11 @@ test "Screen: selectWord" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 0, .x = 0,
.y = 2, .y = 2,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 2, .x = 2,
.y = 2, .y = 2,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
} }
@ -4328,11 +4328,11 @@ test "Screen: selectWord across soft-wrap" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 1, .x = 1,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 2, .x = 2,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// Going backward // Going backward
@ -4345,11 +4345,11 @@ test "Screen: selectWord across soft-wrap" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 1, .x = 1,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 2, .x = 2,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// Going forward and backward // Going forward and backward
@ -4362,11 +4362,11 @@ test "Screen: selectWord across soft-wrap" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 1, .x = 1,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 2, .x = 2,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
} }
@ -4388,11 +4388,11 @@ test "Screen: selectWord whitespace across soft-wrap" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 1, .x = 1,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 2, .x = 2,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// Going backward // Going backward
@ -4405,11 +4405,11 @@ test "Screen: selectWord whitespace across soft-wrap" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 1, .x = 1,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 2, .x = 2,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// Going forward and backward // Going forward and backward
@ -4422,11 +4422,11 @@ test "Screen: selectWord whitespace across soft-wrap" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 1, .x = 1,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 2, .x = 2,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
} }
@ -4467,11 +4467,11 @@ test "Screen: selectWord with character boundary" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 2, .x = 2,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 4, .x = 4,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// Inside character backward // Inside character backward
@ -4484,11 +4484,11 @@ test "Screen: selectWord with character boundary" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 2, .x = 2,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 4, .x = 4,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// Inside character bidirectional // Inside character bidirectional
@ -4501,11 +4501,11 @@ test "Screen: selectWord with character boundary" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 2, .x = 2,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 4, .x = 4,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// On quote // On quote
@ -4520,11 +4520,11 @@ test "Screen: selectWord with character boundary" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 0, .x = 0,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 1, .x = 1,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
} }
} }
@ -4588,11 +4588,11 @@ test "Screen: selectOutput" {
try testing.expectEqual(point.Point{ .active = .{ try testing.expectEqual(point.Point{ .active = .{
.x = 0, .x = 0,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.active, sel.start().*).?); } }, s.pages.pointFromPin(.active, sel.start()).?);
try testing.expectEqual(point.Point{ .active = .{ try testing.expectEqual(point.Point{ .active = .{
.x = 9, .x = 9,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.active, sel.end().*).?); } }, s.pages.pointFromPin(.active, sel.end()).?);
} }
// Both start and end markers, should select between them // Both start and end markers, should select between them
{ {
@ -4604,11 +4604,11 @@ test "Screen: selectOutput" {
try testing.expectEqual(point.Point{ .active = .{ try testing.expectEqual(point.Point{ .active = .{
.x = 0, .x = 0,
.y = 4, .y = 4,
} }, s.pages.pointFromPin(.active, sel.start().*).?); } }, s.pages.pointFromPin(.active, sel.start()).?);
try testing.expectEqual(point.Point{ .active = .{ try testing.expectEqual(point.Point{ .active = .{
.x = 9, .x = 9,
.y = 5, .y = 5,
} }, s.pages.pointFromPin(.active, sel.end().*).?); } }, s.pages.pointFromPin(.active, sel.end()).?);
} }
// No end marker, should select till the end // No end marker, should select till the end
{ {
@ -4620,11 +4620,11 @@ test "Screen: selectOutput" {
try testing.expectEqual(point.Point{ .active = .{ try testing.expectEqual(point.Point{ .active = .{
.x = 0, .x = 0,
.y = 7, .y = 7,
} }, s.pages.pointFromPin(.active, sel.start().*).?); } }, s.pages.pointFromPin(.active, sel.start()).?);
try testing.expectEqual(point.Point{ .active = .{ try testing.expectEqual(point.Point{ .active = .{
.x = 9, .x = 9,
.y = 10, .y = 10,
} }, s.pages.pointFromPin(.active, sel.end().*).?); } }, s.pages.pointFromPin(.active, sel.end()).?);
} }
// input / prompt at y = 0, pt.y = 0 // input / prompt at y = 0, pt.y = 0
{ {
@ -4725,11 +4725,11 @@ test "Screen: selectPrompt basics" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 0, .x = 0,
.y = 6, .y = 6,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 9, .x = 9,
.y = 6, .y = 6,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// Multi line prompt // Multi line prompt
@ -4742,11 +4742,11 @@ test "Screen: selectPrompt basics" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 0, .x = 0,
.y = 2, .y = 2,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 9, .x = 9,
.y = 3, .y = 3,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
} }
@ -4802,11 +4802,11 @@ test "Screen: selectPrompt prompt at start" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 0, .x = 0,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 9, .x = 9,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
} }
@ -4857,10 +4857,10 @@ test "Screen: selectPrompt prompt at end" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 0, .x = 0,
.y = 2, .y = 2,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 9, .x = 9,
.y = 3, .y = 3,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
} }

View File

@ -80,7 +80,7 @@ pub fn deinit(
} }
/// The starting pin of the selection. This is NOT ordered. /// The starting pin of the selection. This is NOT ordered.
pub fn start(self: *Selection) *Pin { pub fn startPtr(self: *Selection) *Pin {
return switch (self.bounds) { return switch (self.bounds) {
.untracked => |*v| &v.start, .untracked => |*v| &v.start,
.tracked => |v| v.start, .tracked => |v| v.start,
@ -88,21 +88,21 @@ pub fn start(self: *Selection) *Pin {
} }
/// The ending pin of the selection. This is NOT ordered. /// The ending pin of the selection. This is NOT ordered.
pub fn end(self: *Selection) *Pin { pub fn endPtr(self: *Selection) *Pin {
return switch (self.bounds) { return switch (self.bounds) {
.untracked => |*v| &v.end, .untracked => |*v| &v.end,
.tracked => |v| v.end, .tracked => |v| v.end,
}; };
} }
fn startConst(self: Selection) Pin { pub fn start(self: Selection) Pin {
return switch (self.bounds) { return switch (self.bounds) {
.untracked => |v| v.start, .untracked => |v| v.start,
.tracked => |v| v.start.*, .tracked => |v| v.start.*,
}; };
} }
fn endConst(self: Selection) Pin { pub fn end(self: Selection) Pin {
return switch (self.bounds) { return switch (self.bounds) {
.untracked => |v| v.end, .untracked => |v| v.end,
.tracked => |v| v.end.*, .tracked => |v| v.end.*,
@ -151,8 +151,8 @@ pub fn track(self: *Selection, s: *Screen) !void {
pub const Order = enum { forward, reverse, mirrored_forward, mirrored_reverse }; pub const Order = enum { forward, reverse, mirrored_forward, mirrored_reverse };
pub fn order(self: Selection, s: *const Screen) Order { pub fn order(self: Selection, s: *const Screen) Order {
const start_pt = s.pages.pointFromPin(.screen, self.startConst()).?.screen; const start_pt = s.pages.pointFromPin(.screen, self.start()).?.screen;
const end_pt = s.pages.pointFromPin(.screen, self.endConst()).?.screen; const end_pt = s.pages.pointFromPin(.screen, self.end()).?.screen;
if (self.rectangle) { if (self.rectangle) {
// Reverse (also handles single-column) // Reverse (also handles single-column)
@ -198,7 +198,7 @@ pub fn adjust(
// the last point of the selection by mouse, not necessarilly the // the last point of the selection by mouse, not necessarilly the
// top/bottom visually. So this results in the right behavior // top/bottom visually. So this results in the right behavior
// whether the user drags up or down. // whether the user drags up or down.
const end_pin = self.end(); const end_pin = self.endPtr();
switch (adjustment) { switch (adjustment) {
.up => if (end_pin.up(1)) |new_end| { .up => if (end_pin.up(1)) |new_end| {
end_pin.* = new_end; end_pin.* = new_end;
@ -312,11 +312,11 @@ test "Selection: adjust right" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 5, .x = 5,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 4, .x = 4,
.y = 3, .y = 3,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// Already at end of the line. // Already at end of the line.
@ -332,11 +332,11 @@ test "Selection: adjust right" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 4, .x = 4,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 0, .x = 0,
.y = 3, .y = 3,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// Already at end of the screen // Already at end of the screen
@ -352,11 +352,11 @@ test "Selection: adjust right" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 5, .x = 5,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 4, .x = 4,
.y = 3, .y = 3,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
} }
@ -380,11 +380,11 @@ test "Selection: adjust left" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 5, .x = 5,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 2, .x = 2,
.y = 3, .y = 3,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// Already at beginning of the line. // Already at beginning of the line.
@ -401,11 +401,11 @@ test "Selection: adjust left" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 5, .x = 5,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 4, .x = 4,
.y = 2, .y = 2,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
} }
@ -429,11 +429,11 @@ test "Selection: adjust left skips blanks" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 5, .x = 5,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 2, .x = 2,
.y = 3, .y = 3,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// Edge // Edge
@ -450,11 +450,11 @@ test "Selection: adjust left skips blanks" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 5, .x = 5,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 2, .x = 2,
.y = 2, .y = 2,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
} }
@ -477,11 +477,11 @@ test "Selection: adjust up" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 5, .x = 5,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 3, .x = 3,
.y = 2, .y = 2,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// On the first line // On the first line
@ -497,11 +497,11 @@ test "Selection: adjust up" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 5, .x = 5,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 0, .x = 0,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
} }
@ -524,11 +524,11 @@ test "Selection: adjust down" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 5, .x = 5,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 3, .x = 3,
.y = 4, .y = 4,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
// On the last line // On the last line
@ -544,11 +544,11 @@ test "Selection: adjust down" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 4, .x = 4,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 4, .x = 4,
.y = 4, .y = 4,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
} }
@ -572,11 +572,11 @@ test "Selection: adjust down with not full screen" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 4, .x = 4,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 4, .x = 4,
.y = 2, .y = 2,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
} }
@ -600,11 +600,11 @@ test "Selection: adjust home" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 4, .x = 4,
.y = 1, .y = 1,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 0, .x = 0,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
} }
@ -628,11 +628,11 @@ test "Selection: adjust end with not full screen" {
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 4, .x = 4,
.y = 0, .y = 0,
} }, s.pages.pointFromPin(.screen, sel.start().*).?); } }, s.pages.pointFromPin(.screen, sel.start()).?);
try testing.expectEqual(point.Point{ .screen = .{ try testing.expectEqual(point.Point{ .screen = .{
.x = 4, .x = 4,
.y = 2, .y = 2,
} }, s.pages.pointFromPin(.screen, sel.end().*).?); } }, s.pages.pointFromPin(.screen, sel.end()).?);
} }
} }