terminal: Screen opts is a structure

pull/9594/head
Mitchell Hashimoto 2025-11-14 13:19:16 -08:00
parent a5a914c2b8
commit 368f4f565a
No known key found for this signature in database
GPG Key ID: 523D5DC389D273BC
10 changed files with 282 additions and 264 deletions

View File

@ -5696,7 +5696,7 @@ fn testMouseSelection(
.padding = .{ .left = 5, .top = 5, .right = 5, .bottom = 5 },
.screen = .{ .width = 110, .height = 110 },
};
var screen = try terminal.Screen.init(std.testing.allocator, 10, 5, 0);
var screen = try terminal.Screen.init(std.testing.allocator, .{ .cols = 10, .rows = 5, .max_scrollback = 0 });
defer screen.deinit();
// We hold both ctrl and alt for rectangular
@ -5765,7 +5765,7 @@ fn testMouseSelectionIsNull(
.padding = .{ .left = 5, .top = 5, .right = 5, .bottom = 5 },
.screen = .{ .width = 110, .height = 110 },
};
var screen = try terminal.Screen.init(std.testing.allocator, 10, 5, 0);
var screen = try terminal.Screen.init(std.testing.allocator, .{ .cols = 10, .rows = 5, .max_scrollback = 0 });
defer screen.deinit();
// We hold both ctrl and alt for rectangular

View File

@ -598,7 +598,7 @@ test "run iterator" {
{
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 5, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 5, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString("ABCD");
@ -616,7 +616,7 @@ test "run iterator" {
// Spaces should be part of a run
{
var screen = try terminal.Screen.init(alloc, 10, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 10, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString("ABCD EFG");
@ -633,7 +633,7 @@ test "run iterator" {
{
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 5, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 5, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString("A😃D");
@ -652,7 +652,7 @@ test "run iterator" {
// Bad ligatures
for (&[_][]const u8{ "fl", "fi", "st" }) |bad| {
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 5, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 5, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString(bad);
@ -678,7 +678,7 @@ test "run iterator: empty cells with background set" {
{
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 5, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 5, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.setAttribute(.{ .direct_color_bg = .{ .r = 0xFF, .g = 0, .b = 0 } });
try screen.testWriteString("A");
@ -731,7 +731,7 @@ test "shape" {
buf_idx += try std.unicode.utf8Encode(0x1F3FD, buf[buf_idx..]); // Medium skin tone
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 10, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 10, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString(buf[0..buf_idx]);
@ -764,7 +764,7 @@ test "shape nerd fonts" {
buf_idx += try std.unicode.utf8Encode(' ', buf[buf_idx..]); // space
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 10, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 10, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString(buf[0..buf_idx]);
@ -791,7 +791,7 @@ test "shape inconsolata ligs" {
defer testdata.deinit();
{
var screen = try terminal.Screen.init(alloc, 5, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 5, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString(">=");
@ -814,7 +814,7 @@ test "shape inconsolata ligs" {
}
{
var screen = try terminal.Screen.init(alloc, 5, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 5, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString("===");
@ -845,7 +845,7 @@ test "shape monaspace ligs" {
defer testdata.deinit();
{
var screen = try terminal.Screen.init(alloc, 5, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 5, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString("===");
@ -877,7 +877,7 @@ test "shape left-replaced lig in last run" {
defer testdata.deinit();
{
var screen = try terminal.Screen.init(alloc, 5, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 5, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString("!==");
@ -909,7 +909,7 @@ test "shape left-replaced lig in early run" {
defer testdata.deinit();
{
var screen = try terminal.Screen.init(alloc, 5, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 5, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString("!==X");
@ -938,7 +938,7 @@ test "shape U+3C9 with JB Mono" {
defer testdata.deinit();
{
var screen = try terminal.Screen.init(alloc, 10, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 10, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString("\u{03C9} foo");
@ -969,7 +969,7 @@ test "shape emoji width" {
defer testdata.deinit();
{
var screen = try terminal.Screen.init(alloc, 5, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 5, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString("👍");
@ -998,7 +998,7 @@ test "shape emoji width long" {
defer testdata.deinit();
// Make a screen and add a long emoji sequence to it.
var screen = try terminal.Screen.init(alloc, 30, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 30, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
var page = screen.pages.pages.first.?.data;
@ -1050,7 +1050,7 @@ test "shape variation selector VS15" {
buf_idx += try std.unicode.utf8Encode(0xFE0E, buf[buf_idx..]); // ZWJ to force text
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 10, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 10, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString(buf[0..buf_idx]);
@ -1083,7 +1083,7 @@ test "shape variation selector VS16" {
buf_idx += try std.unicode.utf8Encode(0xFE0F, buf[buf_idx..]); // ZWJ to force color
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 10, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 10, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString(buf[0..buf_idx]);
@ -1111,7 +1111,7 @@ test "shape with empty cells in between" {
defer testdata.deinit();
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 30, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 30, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString("A");
screen.cursorRight(5);
@ -1149,7 +1149,7 @@ test "shape Chinese characters" {
buf_idx += try std.unicode.utf8Encode('a', buf[buf_idx..]);
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 30, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 30, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString(buf[0..buf_idx]);
@ -1187,7 +1187,7 @@ test "shape box glyphs" {
buf_idx += try std.unicode.utf8Encode(0x2501, buf[buf_idx..]); //
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 10, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 10, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString(buf[0..buf_idx]);
@ -1219,7 +1219,7 @@ test "shape selection boundary" {
defer testdata.deinit();
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 10, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 10, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString("a1b2c3d4e5");
@ -1342,7 +1342,7 @@ test "shape cursor boundary" {
defer testdata.deinit();
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 10, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 10, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString("a1b2c3d4e5");
@ -1479,7 +1479,7 @@ test "shape cursor boundary and colored emoji" {
defer testdata.deinit();
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 3, 10, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 3, .rows = 10, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString("👍🏼");
@ -1574,7 +1574,7 @@ test "shape cell attribute change" {
// Plain >= should shape into 1 run
{
var screen = try terminal.Screen.init(alloc, 10, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 10, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString(">=");
@ -1594,7 +1594,7 @@ test "shape cell attribute change" {
// Bold vs regular should split
{
var screen = try terminal.Screen.init(alloc, 3, 10, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 3, .rows = 10, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString(">");
try screen.setAttribute(.{ .bold = {} });
@ -1616,7 +1616,7 @@ test "shape cell attribute change" {
// Changing fg color should split
{
var screen = try terminal.Screen.init(alloc, 3, 10, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 3, .rows = 10, .max_scrollback = 0 });
defer screen.deinit();
try screen.setAttribute(.{ .direct_color_fg = .{ .r = 1, .g = 2, .b = 3 } });
try screen.testWriteString(">");
@ -1639,7 +1639,7 @@ test "shape cell attribute change" {
// Changing bg color should NOT split
{
var screen = try terminal.Screen.init(alloc, 3, 10, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 3, .rows = 10, .max_scrollback = 0 });
defer screen.deinit();
try screen.setAttribute(.{ .direct_color_bg = .{ .r = 1, .g = 2, .b = 3 } });
try screen.testWriteString(">");
@ -1662,7 +1662,7 @@ test "shape cell attribute change" {
// Same bg color should not split
{
var screen = try terminal.Screen.init(alloc, 3, 10, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 3, .rows = 10, .max_scrollback = 0 });
defer screen.deinit();
try screen.setAttribute(.{ .direct_color_bg = .{ .r = 1, .g = 2, .b = 3 } });
try screen.testWriteString(">");
@ -1700,7 +1700,7 @@ test "shape high plane sprite font codepoint" {
var testdata = try testShaper(alloc);
defer testdata.deinit();
var screen = try terminal.Screen.init(alloc, 10, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 10, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
// U+1FB70: Vertical One Eighth Block-2

View File

@ -207,7 +207,7 @@ test "run iterator" {
{
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 5, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 5, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString("ABCD");
@ -225,7 +225,7 @@ test "run iterator" {
// Spaces should be part of a run
{
var screen = try terminal.Screen.init(alloc, 10, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 10, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString("ABCD EFG");
@ -242,7 +242,7 @@ test "run iterator" {
{
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 5, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 5, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString("A😃D");
@ -273,7 +273,7 @@ test "run iterator: empty cells with background set" {
{
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 5, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 5, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.setAttribute(.{ .direct_color_bg = .{ .r = 0xFF, .g = 0, .b = 0 } });
try screen.testWriteString("A");
@ -327,7 +327,7 @@ test "shape" {
buf_idx += try std.unicode.utf8Encode(0x1F3FD, buf[buf_idx..]); // Medium skin tone
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 10, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 10, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString(buf[0..buf_idx]);
@ -355,7 +355,7 @@ test "shape inconsolata ligs" {
defer testdata.deinit();
{
var screen = try terminal.Screen.init(alloc, 5, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 5, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString(">=");
@ -378,7 +378,7 @@ test "shape inconsolata ligs" {
}
{
var screen = try terminal.Screen.init(alloc, 5, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 5, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString("===");
@ -409,7 +409,7 @@ test "shape monaspace ligs" {
defer testdata.deinit();
{
var screen = try terminal.Screen.init(alloc, 5, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 5, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString("===");
@ -443,7 +443,7 @@ test "shape arabic forced LTR" {
var testdata = try testShaperWithFont(alloc, .arabic);
defer testdata.deinit();
var screen = try terminal.Screen.init(alloc, 120, 30, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 120, .rows = 30, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString(@embedFile("testdata/arabic.txt"));
@ -478,7 +478,7 @@ test "shape emoji width" {
defer testdata.deinit();
{
var screen = try terminal.Screen.init(alloc, 5, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 5, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString("👍");
@ -563,7 +563,7 @@ test "shape variation selector VS15" {
buf_idx += try std.unicode.utf8Encode(0xFE0E, buf[buf_idx..]); // ZWJ to force text
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 10, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 10, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString(buf[0..buf_idx]);
@ -598,7 +598,7 @@ test "shape variation selector VS16" {
buf_idx += try std.unicode.utf8Encode(0xFE0F, buf[buf_idx..]); // ZWJ to force color
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 10, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 10, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString(buf[0..buf_idx]);
@ -704,7 +704,7 @@ test "shape box glyphs" {
buf_idx += try std.unicode.utf8Encode(0x2501, buf[buf_idx..]); //
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 10, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 10, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString(buf[0..buf_idx]);
@ -737,7 +737,7 @@ test "shape selection boundary" {
defer testdata.deinit();
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 10, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 10, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString("a1b2c3d4e5");
@ -860,7 +860,7 @@ test "shape cursor boundary" {
defer testdata.deinit();
// Make a screen with some data
var screen = try terminal.Screen.init(alloc, 10, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 10, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString("a1b2c3d4e5");
@ -1092,7 +1092,7 @@ test "shape cell attribute change" {
// Plain >= should shape into 1 run
{
var screen = try terminal.Screen.init(alloc, 10, 3, 0);
var screen = try terminal.Screen.init(alloc, .{ .cols = 10, .rows = 3, .max_scrollback = 0 });
defer screen.deinit();
try screen.testWriteString(">=");

View File

@ -524,7 +524,7 @@ test "Cell constraint widths" {
const testing = std.testing;
const alloc = testing.allocator;
var s = try terminal.Screen.init(alloc, 4, 1, 0);
var s = try terminal.Screen.init(alloc, .{ .cols = 4, .rows = 1, .max_scrollback = 0 });
defer s.deinit();
// for each case, the numbers in the comment denote expected

View File

@ -398,7 +398,7 @@ test "matchset" {
const alloc = testing.allocator;
// Initialize our screen
var s = try Screen.init(alloc, 5, 5, 0);
var s = try Screen.init(alloc, .{ .cols = 5, .rows = 5, .max_scrollback = 0 });
defer s.deinit();
const str = "1ABCD2EFGH\n3IJKL";
try s.testWriteString(str);
@ -456,7 +456,7 @@ test "matchset hover links" {
const alloc = testing.allocator;
// Initialize our screen
var s = try Screen.init(alloc, 5, 5, 0);
var s = try Screen.init(alloc, .{ .cols = 5, .rows = 5, .max_scrollback = 0 });
defer s.deinit();
const str = "1ABCD2EFGH\n3IJKL";
try s.testWriteString(str);
@ -549,7 +549,7 @@ test "matchset mods no match" {
const alloc = testing.allocator;
// Initialize our screen
var s = try Screen.init(alloc, 5, 5, 0);
var s = try Screen.init(alloc, .{ .cols = 5, .rows = 5, .max_scrollback = 0 });
defer s.deinit();
const str = "1ABCD2EFGH\n3IJKL";
try s.testWriteString(str);

File diff suppressed because it is too large Load Diff

View File

@ -451,7 +451,7 @@ pub fn adjust(
test "Selection: adjust right" {
const testing = std.testing;
var s = try Screen.init(testing.allocator, 10, 10, 0);
var s = try Screen.init(testing.allocator, .{ .cols = 10, .rows = 10, .max_scrollback = 0 });
defer s.deinit();
try s.testWriteString("A1234\nB5678\nC1234\nD5678");
@ -518,7 +518,7 @@ test "Selection: adjust right" {
test "Selection: adjust left" {
const testing = std.testing;
var s = try Screen.init(testing.allocator, 10, 10, 0);
var s = try Screen.init(testing.allocator, .{ .cols = 10, .rows = 10, .max_scrollback = 0 });
defer s.deinit();
try s.testWriteString("A1234\nB5678\nC1234\nD5678");
@ -567,7 +567,7 @@ test "Selection: adjust left" {
test "Selection: adjust left skips blanks" {
const testing = std.testing;
var s = try Screen.init(testing.allocator, 10, 10, 0);
var s = try Screen.init(testing.allocator, .{ .cols = 10, .rows = 10, .max_scrollback = 0 });
defer s.deinit();
try s.testWriteString("A1234\nB5678\nC12\nD56");
@ -616,7 +616,7 @@ test "Selection: adjust left skips blanks" {
test "Selection: adjust up" {
const testing = std.testing;
var s = try Screen.init(testing.allocator, 10, 10, 0);
var s = try Screen.init(testing.allocator, .{ .cols = 10, .rows = 10, .max_scrollback = 0 });
defer s.deinit();
try s.testWriteString("A\nB\nC\nD\nE");
@ -663,7 +663,7 @@ test "Selection: adjust up" {
test "Selection: adjust down" {
const testing = std.testing;
var s = try Screen.init(testing.allocator, 10, 10, 0);
var s = try Screen.init(testing.allocator, .{ .cols = 10, .rows = 10, .max_scrollback = 0 });
defer s.deinit();
try s.testWriteString("A\nB\nC\nD\nE");
@ -710,7 +710,7 @@ test "Selection: adjust down" {
test "Selection: adjust down with not full screen" {
const testing = std.testing;
var s = try Screen.init(testing.allocator, 10, 10, 0);
var s = try Screen.init(testing.allocator, .{ .cols = 10, .rows = 10, .max_scrollback = 0 });
defer s.deinit();
try s.testWriteString("A\nB\nC");
@ -738,7 +738,7 @@ test "Selection: adjust down with not full screen" {
test "Selection: adjust home" {
const testing = std.testing;
var s = try Screen.init(testing.allocator, 10, 10, 0);
var s = try Screen.init(testing.allocator, .{ .cols = 10, .rows = 10, .max_scrollback = 0 });
defer s.deinit();
try s.testWriteString("A\nB\nC");
@ -766,7 +766,7 @@ test "Selection: adjust home" {
test "Selection: adjust end with not full screen" {
const testing = std.testing;
var s = try Screen.init(testing.allocator, 10, 10, 0);
var s = try Screen.init(testing.allocator, .{ .cols = 10, .rows = 10, .max_scrollback = 0 });
defer s.deinit();
try s.testWriteString("A\nB\nC");
@ -794,7 +794,7 @@ test "Selection: adjust end with not full screen" {
test "Selection: adjust beginning of line" {
const testing = std.testing;
var s = try Screen.init(testing.allocator, 8, 10, 0);
var s = try Screen.init(testing.allocator, .{ .cols = 8, .rows = 10, .max_scrollback = 0 });
defer s.deinit();
try s.testWriteString("A12 B34\nC12 D34");
@ -864,7 +864,7 @@ test "Selection: adjust beginning of line" {
test "Selection: adjust end of line" {
const testing = std.testing;
var s = try Screen.init(testing.allocator, 8, 10, 0);
var s = try Screen.init(testing.allocator, .{ .cols = 8, .rows = 10, .max_scrollback = 0 });
defer s.deinit();
try s.testWriteString("A12 B34\nC12 D34");
@ -934,7 +934,7 @@ test "Selection: order, standard" {
const testing = std.testing;
const alloc = testing.allocator;
var s = try Screen.init(alloc, 100, 100, 1);
var s = try Screen.init(alloc, .{ .cols = 100, .rows = 100, .max_scrollback = 1 });
defer s.deinit();
{
@ -998,7 +998,7 @@ test "Selection: order, rectangle" {
const testing = std.testing;
const alloc = testing.allocator;
var s = try Screen.init(alloc, 100, 100, 1);
var s = try Screen.init(alloc, .{ .cols = 100, .rows = 100, .max_scrollback = 1 });
defer s.deinit();
// Conventions:
@ -1110,7 +1110,7 @@ test "Selection: order, rectangle" {
test "topLeft" {
const testing = std.testing;
var s = try Screen.init(testing.allocator, 10, 10, 0);
var s = try Screen.init(testing.allocator, .{ .cols = 10, .rows = 10, .max_scrollback = 0 });
defer s.deinit();
{
// forward
@ -1173,7 +1173,7 @@ test "topLeft" {
test "bottomRight" {
const testing = std.testing;
var s = try Screen.init(testing.allocator, 10, 10, 0);
var s = try Screen.init(testing.allocator, .{ .cols = 10, .rows = 10, .max_scrollback = 0 });
defer s.deinit();
{
// forward
@ -1236,7 +1236,7 @@ test "bottomRight" {
test "ordered" {
const testing = std.testing;
var s = try Screen.init(testing.allocator, 10, 10, 0);
var s = try Screen.init(testing.allocator, .{ .cols = 10, .rows = 10, .max_scrollback = 0 });
defer s.deinit();
{
// forward
@ -1317,7 +1317,7 @@ test "ordered" {
test "Selection: contains" {
const testing = std.testing;
var s = try Screen.init(testing.allocator, 10, 10, 0);
var s = try Screen.init(testing.allocator, .{ .cols = 10, .rows = 10, .max_scrollback = 0 });
defer s.deinit();
{
const sel = Selection.init(
@ -1363,7 +1363,7 @@ test "Selection: contains" {
test "Selection: contains, rectangle" {
const testing = std.testing;
var s = try Screen.init(testing.allocator, 15, 15, 0);
var s = try Screen.init(testing.allocator, .{ .cols = 15, .rows = 15, .max_scrollback = 0 });
defer s.deinit();
{
const sel = Selection.init(
@ -1425,7 +1425,7 @@ test "Selection: contains, rectangle" {
test "Selection: containedRow" {
const testing = std.testing;
var s = try Screen.init(testing.allocator, 10, 5, 0);
var s = try Screen.init(testing.allocator, .{ .cols = 10, .rows = 5, .max_scrollback = 0 });
defer s.deinit();
{

View File

@ -109,7 +109,7 @@ test "StringMap searchIterator" {
defer re.deinit();
// Initialize our screen
var s = try Screen.init(alloc, 5, 5, 0);
var s = try Screen.init(alloc, .{ .cols = 5, .rows = 5, .max_scrollback = 0 });
defer s.deinit();
const str = "1ABCD2EFGH\n3IJKL";
try s.testWriteString(str);

View File

@ -39,7 +39,7 @@ const log = std.log.scoped(.terminal);
const TABSTOP_INTERVAL = 8;
/// Screen type is an enum that tracks whether a screen is primary or alternate.
pub const ScreenType = enum {
pub const ScreenType = enum(u1) {
primary,
alternate,
};
@ -225,8 +225,8 @@ pub fn init(
.cols = cols,
.rows = rows,
.active_screen = .primary,
.screen = try .init(alloc, cols, rows, opts.max_scrollback),
.secondary_screen = try .init(alloc, cols, rows, 0),
.screen = try .init(alloc, .{ .cols = cols, .rows = rows, .max_scrollback = opts.max_scrollback }),
.secondary_screen = try .init(alloc, .{ .cols = cols, .rows = rows, .max_scrollback = 0 }),
.tabstops = try .init(alloc, cols, TABSTOP_INTERVAL),
.scrolling_region = .{
.top = 0,

View File

@ -494,7 +494,7 @@ test "SlidingWindow single append" {
var w: SlidingWindow = try .init(alloc, .forward, "boo!");
defer w.deinit();
var s = try Screen.init(alloc, 80, 24, 0);
var s = try Screen.init(alloc, .{ .cols = 80, .rows = 24, .max_scrollback = 0 });
defer s.deinit();
try s.testWriteString("hello. boo! hello. boo!");
@ -537,7 +537,7 @@ test "SlidingWindow single append no match" {
var w: SlidingWindow = try .init(alloc, .forward, "nope!");
defer w.deinit();
var s = try Screen.init(alloc, 80, 24, 0);
var s = try Screen.init(alloc, .{ .cols = 80, .rows = 24, .max_scrollback = 0 });
defer s.deinit();
try s.testWriteString("hello. boo! hello. boo!");
@ -561,7 +561,7 @@ test "SlidingWindow two pages" {
var w: SlidingWindow = try .init(alloc, .forward, "boo!");
defer w.deinit();
var s = try Screen.init(alloc, 80, 24, 1000);
var s = try Screen.init(alloc, .{ .cols = 80, .rows = 24, .max_scrollback = 1000 });
defer s.deinit();
// Fill up the first page. The final bytes in the first page
@ -614,7 +614,7 @@ test "SlidingWindow two pages match across boundary" {
var w: SlidingWindow = try .init(alloc, .forward, "hello, world");
defer w.deinit();
var s = try Screen.init(alloc, 80, 24, 1000);
var s = try Screen.init(alloc, .{ .cols = 80, .rows = 24, .max_scrollback = 1000 });
defer s.deinit();
// Fill up the first page. The final bytes in the first page
@ -658,7 +658,7 @@ test "SlidingWindow two pages no match across boundary with newline" {
var w: SlidingWindow = try .init(alloc, .forward, "hello, world");
defer w.deinit();
var s = try Screen.init(alloc, 80, 24, 1000);
var s = try Screen.init(alloc, .{ .cols = 80, .rows = 24, .max_scrollback = 1000 });
defer s.deinit();
// Fill up the first page. The final bytes in the first page
@ -691,7 +691,7 @@ test "SlidingWindow two pages no match across boundary with newline reverse" {
var w: SlidingWindow = try .init(alloc, .reverse, "hello, world");
defer w.deinit();
var s = try Screen.init(alloc, 80, 24, 1000);
var s = try Screen.init(alloc, .{ .cols = 80, .rows = 24, .max_scrollback = 1000 });
defer s.deinit();
// Fill up the first page. The final bytes in the first page
@ -721,7 +721,7 @@ test "SlidingWindow two pages no match prunes first page" {
var w: SlidingWindow = try .init(alloc, .forward, "nope!");
defer w.deinit();
var s = try Screen.init(alloc, 80, 24, 1000);
var s = try Screen.init(alloc, .{ .cols = 80, .rows = 24, .max_scrollback = 1000 });
defer s.deinit();
// Fill up the first page. The final bytes in the first page
@ -753,7 +753,7 @@ test "SlidingWindow two pages no match keeps both pages" {
const testing = std.testing;
const alloc = testing.allocator;
var s = try Screen.init(alloc, 80, 24, 1000);
var s = try Screen.init(alloc, .{ .cols = 80, .rows = 24, .max_scrollback = 1000 });
defer s.deinit();
// Fill up the first page. The final bytes in the first page
@ -796,7 +796,7 @@ test "SlidingWindow single append across circular buffer boundary" {
var w: SlidingWindow = try .init(alloc, .forward, "abc");
defer w.deinit();
var s = try Screen.init(alloc, 80, 24, 0);
var s = try Screen.init(alloc, .{ .cols = 80, .rows = 24, .max_scrollback = 0 });
defer s.deinit();
try s.testWriteString("XXXXXXXXXXXXXXXXXXXboo!XXXXX");
@ -851,7 +851,7 @@ test "SlidingWindow single append match on boundary" {
var w: SlidingWindow = try .init(alloc, .forward, "abcd");
defer w.deinit();
var s = try Screen.init(alloc, 80, 24, 0);
var s = try Screen.init(alloc, .{ .cols = 80, .rows = 24, .max_scrollback = 0 });
defer s.deinit();
try s.testWriteString("o!XXXXXXXXXXXXXXXXXXXbo");
@ -909,7 +909,7 @@ test "SlidingWindow single append reversed" {
var w: SlidingWindow = try .init(alloc, .reverse, "boo!");
defer w.deinit();
var s = try Screen.init(alloc, 80, 24, 0);
var s = try Screen.init(alloc, .{ .cols = 80, .rows = 24, .max_scrollback = 0 });
defer s.deinit();
try s.testWriteString("hello. boo! hello. boo!");
@ -952,7 +952,7 @@ test "SlidingWindow single append no match reversed" {
var w: SlidingWindow = try .init(alloc, .reverse, "nope!");
defer w.deinit();
var s = try Screen.init(alloc, 80, 24, 0);
var s = try Screen.init(alloc, .{ .cols = 80, .rows = 24, .max_scrollback = 0 });
defer s.deinit();
try s.testWriteString("hello. boo! hello. boo!");
@ -976,7 +976,7 @@ test "SlidingWindow two pages reversed" {
var w: SlidingWindow = try .init(alloc, .reverse, "boo!");
defer w.deinit();
var s = try Screen.init(alloc, 80, 24, 1000);
var s = try Screen.init(alloc, .{ .cols = 80, .rows = 24, .max_scrollback = 1000 });
defer s.deinit();
// Fill up the first page. The final bytes in the first page
@ -1029,7 +1029,7 @@ test "SlidingWindow two pages match across boundary reversed" {
var w: SlidingWindow = try .init(alloc, .reverse, "hello, world");
defer w.deinit();
var s = try Screen.init(alloc, 80, 24, 1000);
var s = try Screen.init(alloc, .{ .cols = 80, .rows = 24, .max_scrollback = 1000 });
defer s.deinit();
// Fill up the first page. The final bytes in the first page
@ -1074,7 +1074,7 @@ test "SlidingWindow two pages no match prunes first page reversed" {
var w: SlidingWindow = try .init(alloc, .reverse, "nope!");
defer w.deinit();
var s = try Screen.init(alloc, 80, 24, 1000);
var s = try Screen.init(alloc, .{ .cols = 80, .rows = 24, .max_scrollback = 1000 });
defer s.deinit();
// Fill up the first page. The final bytes in the first page
@ -1106,7 +1106,7 @@ test "SlidingWindow two pages no match keeps both pages reversed" {
const testing = std.testing;
const alloc = testing.allocator;
var s = try Screen.init(alloc, 80, 24, 1000);
var s = try Screen.init(alloc, .{ .cols = 80, .rows = 24, .max_scrollback = 1000 });
defer s.deinit();
// Fill up the first page. The final bytes in the first page
@ -1149,7 +1149,7 @@ test "SlidingWindow single append across circular buffer boundary reversed" {
var w: SlidingWindow = try .init(alloc, .reverse, "abc");
defer w.deinit();
var s = try Screen.init(alloc, 80, 24, 0);
var s = try Screen.init(alloc, .{ .cols = 80, .rows = 24, .max_scrollback = 0 });
defer s.deinit();
try s.testWriteString("XXXXXXXXXXXXXXXXXXXboo!XXXXX");
@ -1205,7 +1205,7 @@ test "SlidingWindow single append match on boundary reversed" {
var w: SlidingWindow = try .init(alloc, .reverse, "abcd");
defer w.deinit();
var s = try Screen.init(alloc, 80, 24, 0);
var s = try Screen.init(alloc, .{ .cols = 80, .rows = 24, .max_scrollback = 0 });
defer s.deinit();
try s.testWriteString("o!XXXXXXXXXXXXXXXXXXXbo");