mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-16 08:46:08 +03:00
terminal2: selection start/endPTr
This commit is contained in:
@ -3903,11 +3903,11 @@ test "Screen: selectAll" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 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 = .{
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 8,
|
||||
.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 = .{
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 7,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// Going backward
|
||||
@ -3964,11 +3964,11 @@ test "Screen: selectLine" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 7,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// Going forward and backward
|
||||
@ -3981,11 +3981,11 @@ test "Screen: selectLine" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 7,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// Outside active area
|
||||
@ -3998,11 +3998,11 @@ test "Screen: selectLine" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 7,
|
||||
.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 = .{
|
||||
.x = 1,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 3,
|
||||
.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 = .{
|
||||
.x = 1,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 3,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// Going backward
|
||||
@ -4067,11 +4067,11 @@ test "Screen: selectLine across soft-wrap ignores blank lines" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 1,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 3,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// Going forward and backward
|
||||
@ -4084,11 +4084,11 @@ test "Screen: selectLine across soft-wrap ignores blank lines" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 1,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 3,
|
||||
.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 = .{
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.active, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.active, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .active = .{
|
||||
.x = 1,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.active, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.active, sel.end()).?);
|
||||
}
|
||||
|
||||
// Selecting last line
|
||||
@ -4127,11 +4127,11 @@ test "Screen: selectLine with scrollback" {
|
||||
try testing.expectEqual(point.Point{ .active = .{
|
||||
.x = 0,
|
||||
.y = 2,
|
||||
} }, s.pages.pointFromPin(.active, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.active, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .active = .{
|
||||
.x = 1,
|
||||
.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 = .{
|
||||
.x = 0,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.active, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.active, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .active = .{
|
||||
.x = 0,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.active, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.active, sel.end()).?);
|
||||
}
|
||||
{
|
||||
var sel = s.selectLine(s.pages.pin(.{ .active = .{
|
||||
@ -4181,11 +4181,11 @@ test "Screen: selectLine semantic prompt boundary" {
|
||||
try testing.expectEqual(point.Point{ .active = .{
|
||||
.x = 0,
|
||||
.y = 2,
|
||||
} }, s.pages.pointFromPin(.active, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.active, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .active = .{
|
||||
.x = 0,
|
||||
.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 = .{
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 2,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// Going backward
|
||||
@ -4228,11 +4228,11 @@ test "Screen: selectWord" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 2,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// Going forward and backward
|
||||
@ -4245,11 +4245,11 @@ test "Screen: selectWord" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 2,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// Whitespace
|
||||
@ -4262,11 +4262,11 @@ test "Screen: selectWord" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 3,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 4,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// Whitespace single char
|
||||
@ -4279,11 +4279,11 @@ test "Screen: selectWord" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 0,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 0,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// End of screen
|
||||
@ -4296,11 +4296,11 @@ test "Screen: selectWord" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 0,
|
||||
.y = 2,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 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 = .{
|
||||
.x = 1,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 2,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// Going backward
|
||||
@ -4345,11 +4345,11 @@ test "Screen: selectWord across soft-wrap" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 1,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 2,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// Going forward and backward
|
||||
@ -4362,11 +4362,11 @@ test "Screen: selectWord across soft-wrap" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 1,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 2,
|
||||
.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 = .{
|
||||
.x = 1,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 2,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// Going backward
|
||||
@ -4405,11 +4405,11 @@ test "Screen: selectWord whitespace across soft-wrap" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 1,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 2,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// Going forward and backward
|
||||
@ -4422,11 +4422,11 @@ test "Screen: selectWord whitespace across soft-wrap" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 1,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 2,
|
||||
.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 = .{
|
||||
.x = 2,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 4,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// Inside character backward
|
||||
@ -4484,11 +4484,11 @@ test "Screen: selectWord with character boundary" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 2,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 4,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// Inside character bidirectional
|
||||
@ -4501,11 +4501,11 @@ test "Screen: selectWord with character boundary" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 2,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 4,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// On quote
|
||||
@ -4520,11 +4520,11 @@ test "Screen: selectWord with character boundary" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 1,
|
||||
.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 = .{
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.active, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.active, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .active = .{
|
||||
.x = 9,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.active, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.active, sel.end()).?);
|
||||
}
|
||||
// Both start and end markers, should select between them
|
||||
{
|
||||
@ -4604,11 +4604,11 @@ test "Screen: selectOutput" {
|
||||
try testing.expectEqual(point.Point{ .active = .{
|
||||
.x = 0,
|
||||
.y = 4,
|
||||
} }, s.pages.pointFromPin(.active, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.active, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .active = .{
|
||||
.x = 9,
|
||||
.y = 5,
|
||||
} }, s.pages.pointFromPin(.active, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.active, sel.end()).?);
|
||||
}
|
||||
// No end marker, should select till the end
|
||||
{
|
||||
@ -4620,11 +4620,11 @@ test "Screen: selectOutput" {
|
||||
try testing.expectEqual(point.Point{ .active = .{
|
||||
.x = 0,
|
||||
.y = 7,
|
||||
} }, s.pages.pointFromPin(.active, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.active, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .active = .{
|
||||
.x = 9,
|
||||
.y = 10,
|
||||
} }, s.pages.pointFromPin(.active, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.active, sel.end()).?);
|
||||
}
|
||||
// input / prompt at y = 0, pt.y = 0
|
||||
{
|
||||
@ -4725,11 +4725,11 @@ test "Screen: selectPrompt basics" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 0,
|
||||
.y = 6,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 9,
|
||||
.y = 6,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// Multi line prompt
|
||||
@ -4742,11 +4742,11 @@ test "Screen: selectPrompt basics" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 0,
|
||||
.y = 2,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 9,
|
||||
.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 = .{
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 9,
|
||||
.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 = .{
|
||||
.x = 0,
|
||||
.y = 2,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 9,
|
||||
.y = 3,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
}
|
||||
|
@ -80,7 +80,7 @@ pub fn deinit(
|
||||
}
|
||||
|
||||
/// 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) {
|
||||
.untracked => |*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.
|
||||
pub fn end(self: *Selection) *Pin {
|
||||
pub fn endPtr(self: *Selection) *Pin {
|
||||
return switch (self.bounds) {
|
||||
.untracked => |*v| &v.end,
|
||||
.tracked => |v| v.end,
|
||||
};
|
||||
}
|
||||
|
||||
fn startConst(self: Selection) Pin {
|
||||
pub fn start(self: Selection) Pin {
|
||||
return switch (self.bounds) {
|
||||
.untracked => |v| v.start,
|
||||
.tracked => |v| v.start.*,
|
||||
};
|
||||
}
|
||||
|
||||
fn endConst(self: Selection) Pin {
|
||||
pub fn end(self: Selection) Pin {
|
||||
return switch (self.bounds) {
|
||||
.untracked => |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 fn order(self: Selection, s: *const Screen) Order {
|
||||
const start_pt = s.pages.pointFromPin(.screen, self.startConst()).?.screen;
|
||||
const end_pt = s.pages.pointFromPin(.screen, self.endConst()).?.screen;
|
||||
const start_pt = s.pages.pointFromPin(.screen, self.start()).?.screen;
|
||||
const end_pt = s.pages.pointFromPin(.screen, self.end()).?.screen;
|
||||
|
||||
if (self.rectangle) {
|
||||
// Reverse (also handles single-column)
|
||||
@ -198,7 +198,7 @@ pub fn adjust(
|
||||
// the last point of the selection by mouse, not necessarilly the
|
||||
// top/bottom visually. So this results in the right behavior
|
||||
// whether the user drags up or down.
|
||||
const end_pin = self.end();
|
||||
const end_pin = self.endPtr();
|
||||
switch (adjustment) {
|
||||
.up => if (end_pin.up(1)) |new_end| {
|
||||
end_pin.* = new_end;
|
||||
@ -312,11 +312,11 @@ test "Selection: adjust right" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 5,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 4,
|
||||
.y = 3,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// Already at end of the line.
|
||||
@ -332,11 +332,11 @@ test "Selection: adjust right" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 4,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 0,
|
||||
.y = 3,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// Already at end of the screen
|
||||
@ -352,11 +352,11 @@ test "Selection: adjust right" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 5,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 4,
|
||||
.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 = .{
|
||||
.x = 5,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 2,
|
||||
.y = 3,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// Already at beginning of the line.
|
||||
@ -401,11 +401,11 @@ test "Selection: adjust left" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 5,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 4,
|
||||
.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 = .{
|
||||
.x = 5,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 2,
|
||||
.y = 3,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// Edge
|
||||
@ -450,11 +450,11 @@ test "Selection: adjust left skips blanks" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 5,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 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 = .{
|
||||
.x = 5,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 3,
|
||||
.y = 2,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// On the first line
|
||||
@ -497,11 +497,11 @@ test "Selection: adjust up" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 5,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 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 = .{
|
||||
.x = 5,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 3,
|
||||
.y = 4,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
|
||||
// On the last line
|
||||
@ -544,11 +544,11 @@ test "Selection: adjust down" {
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 4,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 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 = .{
|
||||
.x = 4,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 4,
|
||||
.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 = .{
|
||||
.x = 4,
|
||||
.y = 1,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 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 = .{
|
||||
.x = 4,
|
||||
.y = 0,
|
||||
} }, s.pages.pointFromPin(.screen, sel.start().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.start()).?);
|
||||
try testing.expectEqual(point.Point{ .screen = .{
|
||||
.x = 4,
|
||||
.y = 2,
|
||||
} }, s.pages.pointFromPin(.screen, sel.end().*).?);
|
||||
} }, s.pages.pointFromPin(.screen, sel.end()).?);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user