diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/appearance_gallery.py | 8 | ||||
| -rw-r--r-- | test/fs.py | 223 | ||||
| -rw-r--r-- | test/gui-goldens.txt | 2 | ||||
| -rw-r--r-- | test/output.zig | 40 | ||||
| -rw-r--r-- | test/panes.zig | 70 | ||||
| -rw-r--r-- | test/snapshots/find.golden | 16 | ||||
| -rw-r--r-- | test/snapshots/shellset.golden | 2 | ||||
| -rw-r--r-- | test/snapshots/stepgrain.golden | 32 | ||||
| -rw-r--r-- | test/snapshots/theme.golden | 136 | ||||
| -rw-r--r-- | test/snapshots/theme.snap | 17 | ||||
| -rw-r--r-- | test/snapshots/themesel.golden | 466 | ||||
| -rw-r--r-- | test/snapshots/themesel.snap | 36 |
12 files changed, 675 insertions, 373 deletions
diff --git a/test/appearance_gallery.py b/test/appearance_gallery.py index bc9a7570..46b17dd9 100644 --- a/test/appearance_gallery.py +++ b/test/appearance_gallery.py @@ -51,7 +51,7 @@ Orchard: crisp woodland color Dusk: intentionally soft and warm Theme dusk -ThemeSel: Pardes themes come first. +Themes: Pardes themes come first. ''' @@ -159,16 +159,16 @@ def run(args): if args.theme_selector: command(client, terminal, 'Collapse') before = set(panes(client)) - command(client, right, 'ThemeSel') + command(client, right, 'Themes') selector = require(wait_for(lambda: next((s for s in panes(client) if s not in before), None)), - 'ThemeSel missing') + 'Themes missing') body = client.read(f'/pane/{selector}/body').decode() native, legacy = body.split('# Legacy and imported themes', 1) for theme in ('forge_black', 'forge_soft', 'orchard_black'): require('Theme ' + theme + '\n' in native, 'native contrast variant below legacy heading') require('Theme helix\n' in legacy, 'legacy theme section missing') require('Theme orchard' in ''.join(c[0] for c in client.screen()['cells']), - 'ThemeSel did not open at native first entry') + 'Themes did not open at native first entry') take_frame('theme-selector') report['native_themes_first'] = True client.write(f'/pane/{selector}/exec', b'Del\n') @@ -161,7 +161,7 @@ def discovery(binary, embedded=False): with session(binary, root, 'discovery') as (client, address): top = client.list('/') # A set: which files the root holds, not the order a listing gives. - assert set(top) - {'src', 'shaders'} == {'README', 'index', 'status', 'focus', 'ctl', 'commands', + assert set(top) - {'src', 'shaders'} == {'README', 'index', 'status', 'focus', 'ctl', 'commands', 'recent', 'look', 'exec', 'log', 'screen', 'listeners', 'layout', 'tag', 'tagexec', 'pane', 'col', 'os'}, top assert 'self' not in top and 'cons' not in top and 'new' not in top, top @@ -387,7 +387,7 @@ def discovery(binary, embedded=False): client.write(f'/pane/{unsaved}/ctl', b'Save /nonexistent-pardes-dir/x.txt\n') raise AssertionError('a Save into a missing directory succeeded') except OSError as refused: - assert 'Save /nonexistent-pardes-dir/x.txt: ' in str(refused), refused + assert 'Save /nonexistent-pardes-dir/x.txt: no such directory' in str(refused), refused assert f'err {unsaved} ctl: Save /nonexistent-pardes-dir/x.txt: '.encode() in client.read('/log'), client.read('/log') client.remove(f'/pane/{unsaved}') @@ -494,6 +494,222 @@ def unattended_messages_expire(binary): assert not shown(), 'an unattended message outlived MessageLinger' +def new_terminals_named_once(binary): + """A terminal started outside the session's directory is named by that + directory from its `new` on: no rename to the session's and back.""" + with tempfile.TemporaryDirectory(prefix='pardes-names-') as directory: + root = Path(directory) + (root / 'sub').mkdir() + with session(binary, root, 'names') as (client, _): + made = [look(client, str(root / 'sub'))] + before = {int(row.split()[0]) for row in client.read('/index').splitlines()} + client.write('/pane/1/ctl', b'Tty\n') + if shutil.which('fish'): + client.write('/pane/1/ctl', b'Tty fish\n') + made += [s for s in (int(row.split()[0]) for row in client.read('/index').splitlines()) if s not in before] + time.sleep(1.5) # their shells start and say where they are + # A shell started again by pty/ctl exec: named as it was. + client.write(f'/pane/{made[0]}/pty/ctl', b'exec\n') + time.sleep(1.5) + log = client.read('/log').decode() + for serial in made: + assert f'\nrename {serial} ' not in '\n' + log, (serial, log) + assert f'\nnew {serial} {root}' in '\n' + log, (serial, log) + # A shell that cannot start (its interpreter is not there): Tty + # fails the write with why and leaves no pane; pty/ctl exec + # fails with why and keeps its terminal. + bad = root / 'badsh' + bad.write_bytes(b'#!/nonexistent/interp\n') + bad.chmod(0o755) + panes = client.read('/index') + try: + client.write('/pane/1/ctl', f'Tty {bad}\n'.encode()) + raise AssertionError('Tty of a shell that cannot start was taken') + except OSError as refused: + assert 'shell' in str(refused), refused + time.sleep(.3) + assert client.read('/index').count(b'\n') == panes.count(b'\n'), client.read('/index') + client.write('/ctl', f'Shell {bad}\n'.encode()) + try: + client.write(f'/pane/{made[0]}/pty/ctl', b'exec\n') + raise AssertionError('pty/ctl exec of a shell that cannot start was taken') + except OSError as refused: + assert 'shell' in str(refused), refused + client.write('/ctl', b'Shell\n') + assert str(made[0]).encode() in b' '.join(r.split()[0] for r in client.read('/index').splitlines()) + + +def recent_survives_restart(binary): + """A file opened and closed is in /recent closed, and still is in the + next session: the list is kept under $XDG_STATE_HOME (here HOME's + .local/state) across restarts.""" + with tempfile.TemporaryDirectory(prefix='pardes-recent-') as directory: + root = Path(directory) + kept = root / 'kept.txt' + kept.write_bytes(b'one\ntwo\n') + with session(binary, root, 'recent1') as (client, _): + serial = look(client, f'{kept}:2') + assert f'open {kept}\n' in client.read('/recent').decode() + client.write(f'/pane/{serial}/ctl', b'Del\n') + assert f'closed {kept}\n' in client.read('/recent').decode(), client.read('/recent') + assert (root / '.local' / 'state' / 'pardes' / 'recent').exists() + with session(binary, root, 'recent2') as (client, _): + listed = client.read('/recent').decode() + assert f'closed {kept}\n' in listed, listed + # Recent shows it, and a look at its row opens it again. + client.write('/pane/1/exec', b'Recent\n') + rows = int(client.read('/pane/1/exec').split()[-1]) + row = next(r for r in client.read(f'/pane/{rows}/body').decode().splitlines() if r.startswith(f'{kept}:')) + client.write(f'/pane/{rows}/look', (row.split(' ')[0] + '\n').encode()) + assert f'open {kept}\n' in client.read('/recent').decode() + + +def workflow_canary(binary): + """One session driven as the dogfood agents drive it, asserting the log + and the read-backs at every step: the canary for the main paths (the + round-18 Grep that never found anything went through every narrower + test). Look files, Grep and Find hits and misses, a plain word looked + at, Edit in two files, Save, get, pty/run failing then passing, a + command pane and Kill, a REPL send, the layout and a column's files, + ask/answer, and Dump/Restore last.""" + started = time.monotonic() + with tempfile.TemporaryDirectory(prefix='pardes-flow-') as directory: + root = Path(directory) + (root / 'a.txt').write_bytes(b'alpha one\nshared word\n') + (root / 'b.txt').write_bytes(b'beta two\nshared word\n') + (root / 's.sh').write_bytes(b'echo from-file\n') + + def wait(ready, what, seconds=10): + deadline = time.monotonic() + seconds + while not ready(): + assert time.monotonic() < deadline, what + time.sleep(.05) + + with session(binary, root, 'flow') as (client, address): + def log(): + return client.read('/log').decode('utf-8', 'replace') + + def made_by(serial, line): + """The pane an exec at `serial` made, as exec reads it back.""" + client.write(f'/pane/{serial}/exec', line) + return int(client.read(f'/pane/{serial}/exec').split()[-1]) + + # Look opens files, and the log says new. + a = look(client, str(root / 'a.txt')) + b = look(client, str(root / 'b.txt')) + assert client.read(f'/pane/{a}/body') == b'alpha one\nshared word\n' + assert f'new {a} {root}/a.txt\n' in log() and f'new {b} {root}/b.txt\n' in log() + + # Grep and Find: a hit opens its +Search, rows and all; a miss + # fails ENOENT, opening nothing. + grep = made_by(a, b'Grep shared\n') + rows = client.read(f'/pane/{grep}/body').decode() + assert 'a.txt:2' in rows and 'b.txt:2' in rows, rows + client.remove(f'/pane/{grep}') + execute_refused(client, a, 'Grep zzqqnomatch', 'grep: no match') + found = made_by(a, b'Find b.txt\n') + assert 'b.txt' in client.read(f'/pane/{found}/body').decode() + client.remove(f'/pane/{found}') + execute_refused(client, a, 'Find zzqqnomatch', 'find: no match') + + # A plain word looked at is found in the pane, after its dot. + client.write(f'/pane/{a}/dot', b' 0 0 ') + client.write(f'/pane/{a}/look', b'shared\n') + assert client.read(f'/pane/{a}/dot').split() == [b'10', b'16'], client.read(f'/pane/{a}/dot') + + # Edit in two files, then Save each: on disk, and logged. + for pane in (a, b): + client.write(f'/pane/{pane}/ctl', b'Edit ,s/shared/SHARED/g\n') + assert client.read(f'/pane/{b}/body') == b'beta two\nSHARED word\n' + for pane in (a, b): + client.write(f'/pane/{pane}/exec', b'Save\n') + assert (root / 'a.txt').read_bytes() == b'alpha one\nSHARED word\n' + assert f'save {a} {root}/a.txt\n' in log() and f'save {b} {root}/b.txt\n' in log() + + # get reloads what changed on disk. + (root / 'b.txt').write_bytes(b'from disk\n') + client.write(f'/pane/{b}/ctl', b'get\n') + assert client.read(f'/pane/{b}/body') == b'from disk\n' + + # A terminal: pty/run failing then passing. + term = made_by(1, b'Tty\n') + + def run(line): + fid = client.open(f'/pane/{term}/pty/run', 2) + try: + client.rpc(118, struct.pack('<IQI', fid, 0, len(line)) + line) + return client.read_fid(fid) + finally: + client.close(fid) + deadline = time.monotonic() + 10 + while (answer := run(b'true\n')) != b'exit 0\n': + assert time.monotonic() < deadline, answer + time.sleep(.05) + assert run(b'false\n') == b'exit 1\n' + assert run(b'echo passed\n') == b'exit 0\npassed\n' + # (A run's answer is its record: the log has no err for these.) + assert f'err {term} pty/run' not in log(), log() + + # A command pane, and Kill: its exit is logged. + sleeper = made_by(a, b'sleep 30\n') + assert f'run {sleeper} sleep 30\n' in log() + client.write('/ctl', b'Kill sleep\n') + wait(lambda: f'\nexit {sleeper} ' in log(), 'Kill: no exit logged') + + # A REPL send: a program in the terminal (cat, which says back + # what it is sent; a nested shell reads as the shell itself) + # bound as bash's REPL, an exec on a .sh file's body (its event + # written back) goes there. + s = look(client, str(root / 's.sh')) + client.write(f'/pane/{term}/pty/data', b'cat\r') + wait(lambda: client.read(f'/pane/{term}/pty/status').split()[-1] == b'1', ('the REPL program did not start', client.read(f'/pane/{term}/body')[-300:])) + client.write(f'/pane/{term}/ctl', b'Repl bash\n') + fid = client.open(f'/pane/{s}/event', 2) + try: + record = b'MX0 0 0 14 echo from-file\n' + client.rpc(118, struct.pack('<IQI', fid, 0, len(record)) + record) + finally: + client.close(fid) + wait(lambda: f'\nsend {s} {term} ' in log(), ('no REPL send logged', log()[-800:])) + wait(lambda: client.read(f'/pane/{term}/body').count(b'echo from-file') >= 2, 'the REPL did not get it') + client.write(f'/pane/{term}/ctl', b'Repl -\n') + client.write(f'/pane/{term}/pty/data', b'\x04') + wait(lambda: run(b'true\n') == b'exit 0\n', 'the terminal did not come back to its shell') + + # The layout and a column's files: Newcol, its tag, rmdir. + assert len(client.read('/layout').splitlines()) >= 2 # a column, then `active` + client.write('/ctl', b'Newcol\n') + columns = [row for row in client.read('/layout').splitlines() if not row.startswith(b'active')] + assert len(columns) == 2, columns + empty = columns[-1].split()[0].decode() + assert b'New' in client.read(f'/col/{empty}/tag') + client.remove(f'/col/{empty}') + assert len([row for row in client.read('/layout').splitlines() if not row.startswith(b'active')]) == 1 + + # ask/answer: Save on a terminal asks for a path over 9P. + client.write(f'/pane/{term}/exec', b'Save\n') + wait(lambda: f'ask {term} save path\n' in log(), 'no ask logged') + client.write(f'/pane/{term}/ctl', f'answer {root}/scroll.txt\n'.encode()) + wait(lambda: (root / 'scroll.txt').exists(), 'the answered Save wrote nothing') + assert f'answer {term} {root}/scroll.txt\n' in log() + + # Dump, then Restore it: the new session names its panes. + client.write('/ctl', b'Dump\n') + saved = root / 'flow.dump.zon' + wait(saved.exists, 'Dump wrote nothing') + assert f'dump {saved}\n' in log() + try: + client.write('/ctl', f'Restore {saved}\n'.encode()) + except (EOFError, OSError): + pass + time.sleep(.5) + with Client(address) as restored: + wait(lambda: f'restore {saved}' in restored.read('/log').decode(), 'Restore not logged') + names = restored.read('/index').decode() + assert f'{root}/a.txt' in names and f'{root}/b.txt' in names, names + assert time.monotonic() - started < 30, 'the canary took too long' + + def python_repl_runs_one_line(binary): """A one-line exec sent to Python's own REPL (3.13's pyrepl, which asks for bracketed paste) runs at once, with no second Enter: the Enter @@ -610,6 +826,9 @@ def test(binary, quic=False): run_file(binary) exit_answers(binary) unattended_messages_expire(binary) + new_terminals_named_once(binary) + workflow_canary(binary) + recent_survives_restart(binary) python_repl_runs_one_line(binary) signal_cleans_up(binary) for options, message in [ diff --git a/test/gui-goldens.txt b/test/gui-goldens.txt index 473e50a7..2b364b37 100644 --- a/test/gui-goldens.txt +++ b/test/gui-goldens.txt @@ -5,7 +5,7 @@ 05-body-selection 96a158adac982f4141526d10956e19828632edc0f6f60d1161d1353e34797118 06-tag-focus-selection 94aff8499a6e6f399761ffdd56369d526fbe65232eb21c88addd12973af611aa 07-prompt-notice 041603b841605b0a9456cbbb9b3e06e219b0a08a58e2d38229e1c81366577a87 -08-wide-glyph-edges 94b0beb7cc2f2a09259f4f7d57999001ef75ed53ea210a65a1510404bd161af9 +08-wide-glyph-edges 4f15245cb2e14f4190940a79c61751bbb6efbf21c1e3ab423fb1469e0466697e 09-collapsed-focus-tint 1d0e6e4b371bc3b2bba96d9177b91f240fa4bef38c62470dc078fa9feed119ac 10-tagbottom f7175dfb338b75c5ac3457c8422dc0e352c46d51b2c52533ce32ef143fcf6c6b 12-multiline-tag ddd7d775a246e91b88f0eff98b6f9bea8aa5d63dbfbe931bd830ccb9086bd5c4 diff --git a/test/output.zig b/test/output.zig index 478f1b4a..4332fd13 100644 --- a/test/output.zig +++ b/test/output.zig @@ -952,13 +952,13 @@ test "N exactly reverses n across output panes and the ring seam" { try std.testing.expect(saw_first and saw_second); } -test "ThemeSel groups native themes first and skips headings in both directions" { +test "Themes lists the ring in sections and skips headings in both directions" { const p = try Pardes.init(std.testing.allocator, .{ .tty_only = true, .cols = 100, .rows = 40 }); defer p.deinit(); const source = try p.setTestFile("notes\n"); pardes.colors.setThemeIndex(p, pardes.themes.len - 1); const original_theme = p.settings.theme; - try std.testing.expect(p.executeBuiltinLine(0, "ThemeSel")); + try std.testing.expect(p.executeBuiltinLine(0, "Themes")); const tid = source.search_pane orelse return error.MissingThemeList; const list = p.panes[tid].?; const content = list.file.?.content; @@ -966,28 +966,46 @@ test "ThemeSel groups native themes first and skips headings in both directions" try std.testing.expectEqual(@as(i32, 0), list.body.cur_row); try std.testing.expectEqual(@as(usize, 0), list.file.?.scroll); try std.testing.expectEqualStrings("# Pardes themes", modal.lineSlice(content, 0)); - try std.testing.expectEqualStrings("# Legacy and imported themes", modal.lineSlice(content, pardes.native_theme_count + 2)); - try std.testing.expectEqual(@as(usize, pardes.themes.len + 3), std.mem.count(u8, content, "\n")); + // Every theme in ring order, each section's heading after a blank line + // where colors.groupAt says one starts. + var row: usize = 1; + var sections: usize = 1; + var first_break: ?usize = null; for (pardes.themes, 0..) |theme, i| { - const row = i + 1 + @as(usize, if (i >= pardes.native_theme_count) 2 else 0); + if (i > 0) if (pardes.colors.groupAt(i)) |title| { + try std.testing.expectEqualStrings("", modal.lineSlice(content, row)); + try std.testing.expect(std.mem.startsWith(u8, modal.lineSlice(content, row + 1), "# ")); + try std.testing.expectEqualStrings(title, modal.lineSlice(content, row + 1)["# ".len..]); + row += 2; + sections += 1; + if (first_break == null) first_break = i; + }; const line = modal.lineSlice(content, row); try std.testing.expect(std.mem.startsWith(u8, line, "Theme ")); try std.testing.expectEqualStrings(theme.name, line["Theme ".len..]); + row += 1; } + try std.testing.expectEqual(pardes.themes.len + 1 + 2 * (sections - 1), std.mem.count(u8, content, "\n")); + // acme is a current theme: it is listed before any break. + const acme = for (pardes.themes, 0..) |t, i| { + if (std.mem.eql(u8, t.name, "acme")) break i; + } else return error.MissingAcme; + const brk = first_break orelse return error.NoSections; + try std.testing.expect(acme < brk); // Opening an imported theme's selector must still begin with the natives. // Walk across the section break without selecting or executing a heading. - for (pardes.themes[0 .. pardes.native_theme_count + 1]) |theme| { + for (pardes.themes[0 .. brk + 1]) |theme| { p.update(.{ .key = .{ .cp = 'n' } }); try std.testing.expectEqual(tid, p.active); - const selected = selectedOutputText(list) orelse return error.MissingThemeSelection; + const selected = selectedOutputText(list) orelse return error.MissingThemesection; try std.testing.expectEqualStrings(theme.name, selected["Theme ".len..]); try std.testing.expectEqual(original_theme, p.settings.theme); } p.update(.{ .key = .{ .cp = 'N' } }); - const previous = selectedOutputText(list) orelse return error.MissingThemeSelection; - try std.testing.expectEqualStrings(pardes.themes[pardes.native_theme_count - 1].name, previous["Theme ".len..]); + const previous = selectedOutputText(list) orelse return error.MissingThemesection; + try std.testing.expectEqualStrings(pardes.themes[brk - 1].name, previous["Theme ".len..]); p.update(.{ .key = .{ .cp = Key.tab } }); - try std.testing.expectEqual(pardes.native_theme_count - 1, p.settings.theme); + try std.testing.expectEqual(brk - 1, p.settings.theme); } test "n/N selects command outputs by whole row" { @@ -999,7 +1017,7 @@ test "n/N selects command outputs by whole row" { defer p.deinit(); p.update(.{ .resize = .{ .cols = 100, .rows = 40 } }); - try std.testing.expect(p.executeBuiltinLine(p.active, "ThemeSel")); + try std.testing.expect(p.executeBuiltinLine(p.active, "Themes")); const tid = p.panes[p.active].?.search_pane orelse return error.MissingThemeList; const themes = p.panes[tid].?; try std.testing.expect(panes.Output.fileTraits(themes.file.?.output).commands); diff --git a/test/panes.zig b/test/panes.zig index 3d2821aa..c1ae1666 100644 --- a/test/panes.zig +++ b/test/panes.zig @@ -1622,7 +1622,8 @@ test "pane filename drafts commit and cancel without changing body or command ta try std.testing.expectEqualStrings(tail, pardes.tagline.curTail(pane)); while (p.nextEffect()) |effect| try std.testing.expect(std.meta.activeTag(effect) != .save_file); } - try std.testing.expect(pane.file.?.revision != pane.file.?.saved_revision); + // A name alone is no edit: the pane stays clean. + try std.testing.expect(pane.file.?.revision == pane.file.?.saved_revision); } test "pane filename grapheme edits and invalid empty commits preserve the buffer" { @@ -2500,21 +2501,48 @@ test "Save on a scratch does not watch a path the host could not create" { const id = p.active; while (p.nextEffect()) |_| {} p.host = .{ .ctx = p, .vtable = &.{ .write_file = Refusing.write } }; + const file = &p.panes[id].?.file.?; + const scratch_name = try std.testing.allocator.dupe(u8, file.path); + defer std.testing.allocator.free(scratch_name); + const was_dirty = file.revision != file.saved_revision; try std.testing.expect(p.executeBuiltinLine(id, "Save /new-file.txt")); while (p.nextEffect()) |effect| p.perform(effect); - const file = &p.panes[id].?.file.?; - try std.testing.expect(file.output == null); - try std.testing.expect(file.watch_after_save); - try std.testing.expect(file.revision != file.saved_revision); + // Failed, it changed nothing: still the scratch, its name and dirty + // flag as they were, unwatched. + try std.testing.expect(file.output != null); + try std.testing.expectEqualStrings(scratch_name, file.path); + try std.testing.expectEqual(was_dirty, file.revision != file.saved_revision); try std.testing.expect(!p.fallback.watched[id]); p.host = .{}; - try std.testing.expect(p.executeBuiltinLine(id, "Save")); + try std.testing.expect(p.executeBuiltinLine(id, "Save /new-file.txt")); while (p.nextEffect()) |effect| p.perform(effect); - try std.testing.expect(!file.watch_after_save); + try std.testing.expect(file.output == null); + try std.testing.expectEqualStrings("/new-file.txt", file.path); try std.testing.expectEqual(file.revision, file.saved_revision); try std.testing.expect(p.fallback.watched[id]); } +test "a failed Save to another name leaves a clean named file clean" { + const Refusing = struct { + fn write(ctx: ?*anyopaque, id: u8, _: []const u8, _: []const u8) void { + const p: *Pardes = @ptrCast(@alignCast(ctx.?)); + p.saveFailed(id, "save", error.AccessDenied); + } + }; + const p = try Pardes.init(std.testing.allocator, .{ .tty_only = true, .cols = 40, .rows = 12 }); + defer p.deinit(); + const pane = try p.setTestFile("clean\n"); + while (p.nextEffect()) |_| {} + const file = &pane.file.?; + try std.testing.expectEqual(file.revision, file.saved_revision); + p.host = .{ .ctx = p, .vtable = &.{ .write_file = Refusing.write } }; + try std.testing.expect(p.executeBuiltinLine(0, "Save /root/x.txt")); + while (p.nextEffect()) |effect| p.perform(effect); + try std.testing.expectEqual(file.revision, file.saved_revision); + try std.testing.expectEqualStrings("/test.txt", file.path); + p.host = .{}; +} + test "unplaced terminal panes keep their allocated grid until placement" { const p = try Pardes.init(std.testing.allocator, .{ .tty_only = true, .cols = 100, .rows = 30 }); defer p.deinit(); @@ -3438,14 +3466,14 @@ const TerminalTests = struct { .write => return error.GreetedBeforePrompt, else => {}, }; - p.update(.{ .output = .{ .pane = 0, .bytes = "\x1b]133;A\x07prompt$ " } }); + p.update(.{ .output = .{ .pane = 0, .bytes = "\x1b]133;A;aid=pardes\x07prompt$ " } }); try std.testing.expect(!promptInputReady(pane)); while (p.nextEffect()) |effect| switch (effect) { .write => return error.GreetedDuringPrompt, else => {}, }; - p.update(.{ .output = .{ .pane = 0, .bytes = "\x1b]133;B\x07" } }); + p.update(.{ .output = .{ .pane = 0, .bytes = "\x1b]133;B;aid=pardes\x07" } }); try std.testing.expect(promptInputReady(pane)); var greeted = false; while (p.nextEffect()) |effect| switch (effect) { @@ -3456,6 +3484,30 @@ const TerminalTests = struct { try std.testing.expect(!pane.greet); } + test "the greeting is dropped, never typed later, once something ran or was typed first" { + if (pardes.platform == .web) return; + for ([_][]const u8{ + // A command ran before the first prompt was seen at rest. + "\x1b]133;A;aid=pardes\x07$ \x1b]133;B;aid=pardes\x07\x1b]133;C;aid=pardes\x07out\r\n\x1b]133;D;0;aid=pardes\x07\x1b]133;A;aid=pardes\x07$ \x1b]133;B;aid=pardes\x07", + // Someone typed at the first prompt. + "\x1b]133;A;aid=pardes\x07$ \x1b]133;B;aid=pardes\x07vim", + }) |output| { + const p = try Pardes.init(std.testing.allocator, .{ .cols = 80, .rows = 24 }); + defer p.deinit(); + const pane = p.panes[0].?; + while (p.nextEffect()) |_| {} + p.update(.{ .resize = .{ .cols = 80, .rows = 24 } }); + p.update(.{ .output = .{ .pane = 0, .bytes = output } }); + // and a later, quiet prompt changes nothing + p.update(.{ .output = .{ .pane = 0, .bytes = "\r\n\x1b]133;A;aid=pardes\x07$ \x1b]133;B;aid=pardes\x07" } }); + while (p.nextEffect()) |effect| switch (effect) { + .write => |write| if (std.mem.eql(u8, write.bytes.slice(), "ls\r")) return error.GreetedLate, + else => {}, + }; + try std.testing.expect(!pane.greet); + } + } + test "fresh-shell commands preserve order and wait for OSC 133 B" { if (pardes.platform == .web) return; const p = try Pardes.init(std.testing.allocator, .{ .tty_only = true }); diff --git a/test/snapshots/find.golden b/test/snapshots/find.golden index dec8ed1d..a6eae9cf 100644 --- a/test/snapshots/find.golden +++ b/test/snapshots/find.golden @@ -75,13 +75,17 @@ |3: 1 Find Find / |4: |13: 1 gamma body Last -== snap nomatch grid=120x41 cursor=7,8 +== snap nomatch grid=120x41 cursor=7,3 |3: 1 Find +|6: 1 +|7: +|8: |13: 1 gamma body -|18: /tmp/pardes-snap/find/cwd/+Search Save Tty Collapse Del -|19: 1 == snap refit grid=120x41 cursor=7,3 +|6: 1 sub/ZQMARK-beta.txt +|7: 2 sub/nest/zqmark-gamma.txt +|8: 3 zqmark-alpha.txt == snap topbar grid=120x41 cursor=12,16 -|21: /tmp/pardes-snap/find/cwd/+Search Save Tty Collapse Del -|22: 1 zqmark-alpha.txt -|23: 2 +|6: 1 zqmark-alpha.txt +|7: 2 +|8: diff --git a/test/snapshots/shellset.golden b/test/snapshots/shellset.golden index e2830801..db72bfc8 100644 --- a/test/snapshots/shellset.golden +++ b/test/snapshots/shellset.golden @@ -4,7 +4,7 @@ | /tmp/pardes-snap/shellset/cwd/cmd.txt Save Tty Collapse Del | 1 Shell zznosuchshell == snap builtin-ran grid=90x21 cursor=25,3 -|3: 1 Shel Shell: no shell "zznosuchshell" (a name on the usual paths, or a path to one) +|3: hell: no shell "zznosuchshell", not found (a name on the usual paths, or a path to one) == snap fallback-shell grid=90x21 cursor=49,6 |1: New Tty Find Grep Joincol Delcol New Tty Find Grep Joincol Delcol |2: /tmp/pardes-snap/shellset/cwd/cmd.txt Save /tmp/pardes-snap/shellset/cwd Tty+bash Sav diff --git a/test/snapshots/stepgrain.golden b/test/snapshots/stepgrain.golden index ef3cc49b..7f18d246 100644 --- a/test/snapshots/stepgrain.golden +++ b/test/snapshots/stepgrain.golden @@ -51,17 +51,23 @@ |8: 0-0 d,#608269, 1-1 d,#0d1410, 2-6 #616f64,#0d1410,b 7-19 #f5f7ee,#3c614a, 20-149 d,#0d1410, == snap step-row3 grid=150x31 cursor=7,10 == snap step-wrap grid=150x31 cursor=7,6 -== snap blank-in-path grid=150x31 cursor=7,13 -|12: /tmp/pardes-snap/stepgrain/cwd/+Search Save Tty Collapse Del -|13: 1 two words.txt -|14: 2 +== snap blank-in-path grid=150x31 cursor=7,6 +|5: /tmp/pardes-snap/stepgrain/cwd/+Search Save Tty Collapse Del +|6: 1 two words.txt +|7: 2 +|8: +|9: +|10: +|11: +|12: == style blank-in-path grid=150x31 -|5: 0-1 #ffffff,#496656, 2-2 d,#1d2824, 3-33 #b2c3b8,#1d2824, 34-40 #d3b0d9,#1d2824, 41-78 #b2c3b8,#1d2824, 79-149 d,#1d2824, -|6: 0-0 d,#608269, 1-1 d,#0d1410, 2-6 #59675c,#0d1410, 7-18 #f5f7ee,#3c614a, 19-149 d,#0d1410, -|8: 0-0 d,#608269, 1-1 d,#0d1410, 2-19 #59675c,#0d1410, 20-149 d,#0d1410, -|11: 0-0 d,#152019, 1-1 d,#0d1410, 2-6 #59675c,#0d1410, 7-12 #f7e4a5,#5e4923, 13-23 #e5eee5,#0d1410, 24-149 d,#0d1410, -|12: 0-1 #000000,#add38a, 2-2 d,#314738, 3-33 #becfc4,#314738, 34-40 #dfbce5,#314738, 41-62 #becfc4,#314738, 63-149 d,#314738, -|13: 0-0 d,#608269, 1-1 d,#0d1410, 2-6 #616f64,#0d1410,b 7-19 #f5f7ee,#3c614a, 20-149 d,#0d1410, -== snap blank-opened grid=150x31 cursor=7,16 -|15: /tmp/pardes-snap/stepgrain/cwd/two words.txt Save Tty Collapse Del -|16: 1 +|5: 0-1 #000000,#add38a, 2-2 d,#314738, 3-33 #becfc4,#314738, 34-40 #dfbce5,#314738, 41-62 #becfc4,#314738, 63-149 d,#314738, +|6: 0-0 d,#608269, 1-1 d,#0d1410, 2-6 #616f64,#0d1410,b 7-19 #f5f7ee,#3c614a, 20-149 d,#0d1410, +|7: 0-0 d,#608269, 1-1 d,#0d1410, 2-6 #59675c,#0d1410, 7-149 d,#0d1410, +|8: 0-0 d,#608269, 1-1 d,#0d1410, 2-6 #59675c,#0d1410, 7-149 d,#0d1410, +|9: 0-0 d,#608269, 1-1 d,#0d1410, 2-6 #59675c,#0d1410, 7-149 d,#0d1410, +|10: 0-0 d,#608269, 1-1 d,#0d1410, 2-6 #59675c,#0d1410, 7-149 d,#0d1410, +|11: 0-0 d,#608269, 1-1 d,#0d1410, 2-6 #59675c,#0d1410, 7-149 d,#0d1410, +== snap blank-opened grid=150x31 cursor=7,9 +|8: /tmp/pardes-snap/stepgrain/cwd/two words.txt Save Tty Collapse Del +|9: 1 diff --git a/test/snapshots/theme.golden b/test/snapshots/theme.golden index a6bd6e60..db3da7d8 100644 --- a/test/snapshots/theme.golden +++ b/test/snapshots/theme.golden @@ -544,72 +544,6 @@ |28: 0-0 d,#608269, 1-1 d,#000000, 2-49 #f2f8ef,#000000, 50-50 d,#608269, 51-51 d,#000000, 52-99 #f2f8ef,#000000, |29: 0-0 d,#608269, 1-1 d,#000000, 2-49 #f2f8ef,#000000, 50-50 d,#608269, 51-51 d,#000000, 52-99 #f2f8ef,#000000, |30: 0-0 d,#608269, 1-1 d,#000000, 2-49 #f2f8ef,#000000, 50-50 d,#608269, 51-51 d,#000000, 52-99 #f2f8ef,#000000, -== snap helix grid=100x31 cursor=4,6 -== style helix grid=100x31 -|0: 0-50 #949494,#121212, 51-59 #080808,#80a0ff, 60-70 #949494,#121212, 71-99 d,#121212, -|1: 0-1 #ffffff,#826f46, 2-2 d,#3a3a3a, 3-34 #bdbdbd,#3a3a3a, 35-49 d,#3a3a3a, 50-51 #ffffff,#826f46, 52-52 d,#121212, 53-84 #949494,#121212, 85-99 d,#121212, -|2: 0-1 #ffffff,#626262, 2-2 d,#3a3a3a, 3-49 #bdbdbd,#3a3a3a, 50-51 #ffffff,#262626, 52-52 d,#121212, 53-99 #949494,#121212, -|3: 0-2 d,#3a3a3a, 3-20 #bdbdbd,#3a3a3a, 21-49 d,#3a3a3a, 50-52 d,#121212, 53-70 #949494,#121212, 71-99 d,#121212, -|4: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|5: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|6: 0-0 d,#444444, 1-49 d,#080808, 50-50 d,#444444, 51-99 d,#080808, -|7: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|8: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|9: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|10: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|11: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|12: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|13: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|14: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|15: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|16: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|17: 0-1 #ffffff,#262626, 2-2 d,#121212, 3-49 #949494,#121212, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|18: 0-2 d,#121212, 3-20 #949494,#121212, 21-49 d,#121212, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|19: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|20: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|21: 0-0 d,#444444, 1-49 d,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|22: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|23: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|24: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|25: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|26: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|27: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|28: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|29: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -|30: 0-0 d,#444444, 1-1 d,#080808, 2-49 #bdbdbd,#080808, 50-50 d,#444444, 51-51 d,#080808, 52-99 #bdbdbd,#080808, -== snap dark grid=100x31 cursor=4,6 -== style dark grid=100x31 -|0: 0-50 #969696,#2c2a3e, 51-59 #d8c8a8,#513c17, 60-70 #969696,#2c2a3e, 71-99 d,#2c2a3e, -|1: 0-1 #ffffff,#867a4e, 2-2 d,#484566, 3-34 #c8c8c8,#484566, 35-49 d,#484566, 50-51 #ffffff,#867a4e, 52-52 d,#2c2a3e, 53-84 #969696,#2c2a3e, 85-99 d,#2c2a3e, -|2: 0-1 #ffffff,#663fe0, 2-2 d,#484566, 3-49 #c8c8c8,#484566, 50-51 #ffffff,#353a58, 52-52 d,#2c2a3e, 53-99 #969696,#2c2a3e, -|3: 0-2 d,#484566, 3-20 #c8c8c8,#484566, 21-49 d,#484566, 50-52 d,#2c2a3e, 53-70 #969696,#2c2a3e, 71-99 d,#2c2a3e, -|4: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|5: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|6: 0-0 d,#525252, 1-49 d,d, 50-50 d,#525252, 51-99 d,d, -|7: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|8: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|9: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|10: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|11: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|12: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|13: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|14: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|15: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|16: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|17: 0-1 #ffffff,#353a58, 2-2 d,#2c2a3e, 3-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|18: 0-2 d,#2c2a3e, 3-20 #969696,#2c2a3e, 21-49 d,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|19: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|20: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|21: 0-0 d,#525252, 1-49 d,d, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|22: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|23: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|24: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|25: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|26: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|27: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|28: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|29: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, -|30: 0-0 d,#525252, 1-1 d,d, 2-49 #969696,#2c2a3e, 50-50 d,#525252, 51-51 d,d, 52-99 #969696,#2c2a3e, == snap acme grid=100x31 cursor=4,6 == style acme grid=100x31 |0: 0-50 #000000,#eaffff, 51-59 #000000,#9eeeee, 60-70 #000000,#eaffff, 71-99 d,#eaffff, @@ -643,8 +577,8 @@ |28: 0-1 d,#ffffea, 2-49 #000000,#ffffea, 50-51 d,#ffffea, 52-99 #000000,#ffffea, |29: 0-1 d,#ffffea, 2-49 #000000,#ffffea, 50-51 d,#ffffea, 52-99 #000000,#ffffea, |30: 0-1 d,#ffffea, 2-49 #000000,#ffffea, 50-51 d,#ffffea, 52-99 #000000,#ffffea, -== snap generated grid=100x31 cursor=4,6 -== style generated grid=100x31 +== snap lapis grid=100x31 cursor=4,6 +== style lapis grid=100x31 |0: 0-50 #9aa6d9,#0f1a4a, 51-59 #0f1a4a,#e8c46a, 60-70 #9aa6d9,#0f1a4a, 71-99 d,#0f1a4a, |1: 0-1 #ffffff,#8a3a3a, 2-2 d,#25397d, 3-34 #eee6d2,#25397d, 35-49 d,#25397d, 50-51 #ffffff,#8a3a3a, 52-52 d,#0f1a4a, 53-84 #9aa6d9,#0f1a4a, 85-99 d,#0f1a4a, |2: 0-1 #000000,#e8c46a, 2-2 d,#25397d, 3-29 #eee6d2,#25397d, 30-37 #f2d280,#25397d, 38-49 #eee6d2,#25397d, 50-51 #ffffff,#6a78b1, 52-52 d,#0f1a4a, 53-79 #9aa6d9,#0f1a4a, 80-87 #e8c46a,#0f1a4a, 88-99 #9aa6d9,#0f1a4a, @@ -676,3 +610,69 @@ |28: 0-0 d,#e8c46a, 1-1 d,#0a1030, 2-49 #eee6d2,#0a1030, 50-50 d,#e8c46a, 51-51 d,#0a1030, 52-99 #eee6d2,#0a1030, |29: 0-0 d,#e8c46a, 1-1 d,#0a1030, 2-49 #eee6d2,#0a1030, 50-50 d,#e8c46a, 51-51 d,#0a1030, 52-99 #eee6d2,#0a1030, |30: 0-0 d,#e8c46a, 1-1 d,#0a1030, 2-49 #eee6d2,#0a1030, 50-50 d,#e8c46a, 51-51 d,#0a1030, 52-99 #eee6d2,#0a1030, +== snap dark-plus grid=100x31 cursor=4,6 +== style dark-plus grid=100x31 +|0: 0-50 #a7a7a7,#3c3c3c, 51-59 #d4d4d4,#264f78, 60-70 #a7a7a7,#3c3c3c, 71-99 d,#3c3c3c, +|1: 0-1 #ffffff,#458276, 2-2 d,#1e1e1e, 3-34 #ffffff,#1e1e1e, 35-49 d,#1e1e1e, 50-51 #ffffff,#458276, 52-52 d,#3c3c3c, 53-84 #a7a7a7,#3c3c3c, 85-99 d,#3c3c3c, +|2: 0-1 #ffffff,#007fd4, 2-2 d,#1e1e1e, 3-49 #ffffff,#1e1e1e, 50-51 #ffffff,#1c608e, 52-52 d,#3c3c3c, 53-99 #a7a7a7,#3c3c3c, +|3: 0-2 d,#1e1e1e, 3-20 #ffffff,#1e1e1e, 21-49 d,#1e1e1e, 50-52 d,#3c3c3c, 53-70 #a7a7a7,#3c3c3c, 71-99 d,#3c3c3c, +|4: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|5: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|6: 0-0 d,#424242, 1-49 d,#1e1e1e, 50-50 d,#424242, 51-99 d,#1e1e1e, +|7: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|8: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|9: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|10: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|11: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|12: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|13: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|14: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|15: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|16: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|17: 0-1 #ffffff,#1c608e, 2-2 d,#3c3c3c, 3-49 #a7a7a7,#3c3c3c, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|18: 0-2 d,#3c3c3c, 3-20 #a7a7a7,#3c3c3c, 21-49 d,#3c3c3c, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|19: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|20: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|21: 0-0 d,#424242, 1-49 d,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|22: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|23: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|24: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|25: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|26: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|27: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|28: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|29: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +|30: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-49 #d4d4d4,#1e1e1e, 50-50 d,#424242, 51-51 d,#1e1e1e, 52-99 #d4d4d4,#1e1e1e, +== snap solarized-dark grid=100x31 cursor=4,6 +== style solarized-dark grid=100x31 +|0: 0-50 #01090b,#657b83, 51-59 #002b36,#586e75, 60-70 #01090b,#657b83, 71-99 d,#657b83, +|1: 0-1 #ffffff,#758a41, 2-2 d,#93a1a1, 3-34 #073642,#93a1a1, 35-49 d,#93a1a1, 50-51 #ffffff,#758a41, 52-52 d,#657b83, 53-84 #01090b,#657b83, 85-99 d,#657b83, +|2: 0-1 #ffffff,#2483c5, 2-2 d,#93a1a1, 3-49 #073642,#93a1a1, 50-51 #ffffff,#185986, 52-52 d,#657b83, 53-99 #01090b,#657b83, +|3: 0-2 d,#93a1a1, 3-20 #073642,#93a1a1, 21-49 d,#93a1a1, 50-52 d,#657b83, 53-70 #01090b,#657b83, 71-99 d,#657b83, +|4: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|5: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|6: 0-0 d,#839496, 1-49 d,#002b36, 50-50 d,#839496, 51-99 d,#002b36, +|7: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|8: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|9: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|10: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|11: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|12: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|13: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|14: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|15: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|16: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|17: 0-1 #ffffff,#185986, 2-2 d,#657b83, 3-49 #01090b,#657b83, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|18: 0-2 d,#657b83, 3-20 #01090b,#657b83, 21-49 d,#657b83, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|19: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|20: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|21: 0-0 d,#839496, 1-49 d,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|22: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|23: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|24: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|25: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|26: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|27: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|28: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|29: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, +|30: 0-0 d,#839496, 1-1 d,#002b36, 2-49 #839496,#002b36, 50-50 d,#839496, 51-51 d,#002b36, 52-99 #839496,#002b36, diff --git a/test/snapshots/theme.snap b/test/snapshots/theme.snap index 2c7610b3..b770d7f3 100644 --- a/test/snapshots/theme.snap +++ b/test/snapshots/theme.snap @@ -91,20 +91,21 @@ snapstyle orchard-black press middle @NextColor 1 release middle @NextColor 1 stable 700 10000 -snap helix -snapstyle helix +snap acme +snapstyle acme press middle @NextColor 1 release middle @NextColor 1 stable 700 10000 -snap dark -snapstyle dark +snap lapis +snapstyle lapis press middle @NextColor 1 release middle @NextColor 1 stable 700 10000 -snap acme -snapstyle acme +snap dark-plus +snapstyle dark-plus press middle @NextColor 1 release middle @NextColor 1 stable 700 10000 -snap generated -snapstyle generated +# After orchard_black: acme and lapis, then the first faithful ports. +snap solarized-dark +snapstyle solarized-dark diff --git a/test/snapshots/themesel.golden b/test/snapshots/themesel.golden index 8d453978..f553fee9 100644 --- a/test/snapshots/themesel.golden +++ b/test/snapshots/themesel.golden @@ -31,7 +31,7 @@ | 27 line 27 | 28 line 28 == snap list grid=100x31 cursor=7,3 -|3: 1 line 1 ThemeSel +|3: 1 line 1 Themes |16: /tmp/pardes-snap/themesel/cwd/+Themes Save Tty Collapse Del |17: 1 # Pardes themes |18: 2 Theme orchard @@ -388,7 +388,7 @@ |27: 14 Theme forge_black |28: 15 Theme forge_soft |29: 16 Theme orchard_black -|30: 17 +|30: 17 Theme acme == style step-forge-black grid=100x31 |0: 0-70 #c5c9d2,#22252b, 71-99 d,#22252b, |1: 0-1 #ffffff,#6a7b67, 2-2 d,#374253, 3-34 #d1d5de,#374253, 35-99 d,#374253, @@ -420,7 +420,7 @@ |27: 0-0 d,#14161a, 1-1 d,#000000, 2-6 #6a6d74,#000000,b 7-23 #f6f6f6,#000000, 24-99 d,#000000, |28: 0-0 d,#14161a, 1-1 d,#000000, 2-6 #62656c,#000000, 7-22 #f6f6f6,#000000, 23-99 d,#000000, |29: 0-0 d,#14161a, 1-1 d,#000000, 2-6 #62656c,#000000, 7-25 #f6f6f6,#000000, 26-99 d,#000000, -|30: 0-0 d,#14161a, 1-1 d,#000000, 2-6 #62656c,#000000, 7-99 d,#000000, +|30: 0-0 d,#14161a, 1-1 d,#000000, 2-6 #62656c,#000000, 7-16 #f6f6f6,#000000, 17-99 d,#000000, == snap step-forge-soft grid=100x31 cursor=7,27 |17: 5 Theme paper Theme |18: 6 Theme daybreak @@ -434,8 +434,8 @@ |26: 14 Theme forge_black |27: 15 Theme forge_soft |28: 16 Theme orchard_black -|29: 17 -|30: 18 # Legacy and imported themes +|29: 17 Theme acme +|30: 18 Theme lapis == style step-forge-soft grid=100x31 |0: 0-70 #c5c9d2,#2a2d34, 71-99 d,#2a2d34, |1: 0-1 #ffffff,#6d7f6c, 2-2 d,#404a58, 3-34 #d1d5de,#404a58, 35-99 d,#404a58, @@ -466,8 +466,8 @@ |26: 0-0 d,#3d4047, 1-1 d,#35383e, 2-6 #868991,#35383e, 7-23 #bfc3cc,#35383e, 24-99 d,#35383e, |27: 0-0 d,#3d4047, 1-1 d,#35383e, 2-6 #8e9199,#35383e,b 7-22 #bfc3cc,#35383e, 23-99 d,#35383e, |28: 0-0 d,#3d4047, 1-1 d,#35383e, 2-6 #868991,#35383e, 7-25 #bfc3cc,#35383e, 26-99 d,#35383e, -|29: 0-0 d,#3d4047, 1-1 d,#35383e, 2-6 #868991,#35383e, 7-99 d,#35383e, -|30: 0-0 d,#3d4047, 1-1 d,#35383e, 2-6 #868991,#35383e, 7-34 #bfc3cc,#35383e, 35-99 d,#35383e, +|29: 0-0 d,#3d4047, 1-1 d,#35383e, 2-6 #868991,#35383e, 7-16 #bfc3cc,#35383e, 17-99 d,#35383e, +|30: 0-0 d,#3d4047, 1-1 d,#35383e, 2-6 #868991,#35383e, 7-17 #bfc3cc,#35383e, 18-99 d,#35383e, == snap step-orchard-black grid=100x31 cursor=7,27 |17: 6 Theme daybreak Theme |18: 7 Theme atelier @@ -480,9 +480,9 @@ |25: 14 Theme forge_black |26: 15 Theme forge_soft |27: 16 Theme orchard_black -|28: 17 -|29: 18 # Legacy and imported themes -|30: 19 Theme helix +|28: 17 Theme acme +|29: 18 Theme lapis +|30: 19 == style step-orchard-black grid=100x31 |0: 0-70 #b2c3b8,#1d2824, 71-99 d,#1d2824, |1: 0-1 #ffffff,#887455, 2-2 d,#314738, 3-34 #becfc4,#314738, 35-99 d,#314738, @@ -512,118 +512,24 @@ |25: 0-0 d,#111813, 1-1 d,#000000, 2-6 #59675c,#000000, 7-23 #f2f8ef,#000000, 24-99 d,#000000, |26: 0-0 d,#111813, 1-1 d,#000000, 2-6 #59675c,#000000, 7-22 #f2f8ef,#000000, 23-99 d,#000000, |27: 0-0 d,#111813, 1-1 d,#000000, 2-6 #616f64,#000000,b 7-25 #f2f8ef,#000000, 26-99 d,#000000, -|28: 0-0 d,#111813, 1-1 d,#000000, 2-6 #59675c,#000000, 7-99 d,#000000, -|29: 0-0 d,#111813, 1-1 d,#000000, 2-6 #59675c,#000000, 7-34 #f2f8ef,#000000, 35-99 d,#000000, -|30: 0-0 d,#111813, 1-1 d,#000000, 2-6 #59675c,#000000, 7-17 #f2f8ef,#000000, 18-99 d,#000000, -== snap step-helix grid=100x31 cursor=7,27 -|17: 9 Theme lagoon Theme -|18: 10 Theme solarium -|19: 11 Theme spectrum -|20: 12 Theme harvest -|21: 13 Theme clay -|22: 14 Theme forge_black -|23: 15 Theme forge_soft -|24: 16 Theme orchard_black -|25: 17 -|26: 18 # Legacy and imported themes -|27: 19 Theme helix -|28: 20 Theme dark -|29: 21 Theme acme -|30: 22 Theme lapis -== style step-helix grid=100x31 -|0: 0-70 #949494,#121212, 71-99 d,#121212, -|1: 0-1 #ffffff,#826f46, 2-2 d,#3a3a3a, 3-34 #bdbdbd,#3a3a3a, 35-99 d,#3a3a3a, -|2: 0-1 #ffffff,#262626, 2-2 d,#121212, 3-59 #949494,#121212, 60-99 d,#121212, -|3: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-99 d,#080808, -|4: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-99 d,#080808, -|5: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-99 d,#080808, -|6: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-99 d,#080808, -|7: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-99 d,#080808, -|8: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-99 d,#080808, -|9: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-99 d,#080808, -|10: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-99 d,#080808, -|11: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-99 d,#080808, -|12: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-13 #bdbdbd,#080808, 14-99 d,#080808, -|13: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-13 #bdbdbd,#080808, 14-99 d,#080808, -|14: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-13 #bdbdbd,#080808, 14-99 d,#080808, -|15: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-13 #bdbdbd,#080808, 14-99 d,#080808, -|16: 0-1 #ffffff,#626262, 2-2 d,#3a3a3a, 3-61 #bdbdbd,#3a3a3a, 62-99 d,#3a3a3a, -|17: 0-0 d,#444444, 1-1 d,#080808, 2-6 #626262,#080808, 7-18 #bdbdbd,#080808, 19-92 d,#080808, 93-93 d,#121212, 94-98 #949494,#121212, 99-99 d,#121212, -|18: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-20 #bdbdbd,#080808, 21-99 d,#080808, -|19: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-20 #bdbdbd,#080808, 21-99 d,#080808, -|20: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-19 #bdbdbd,#080808, 20-99 d,#080808, -|21: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-16 #bdbdbd,#080808, 17-99 d,#080808, -|22: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-23 #bdbdbd,#080808, 24-99 d,#080808, -|23: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-22 #bdbdbd,#080808, 23-99 d,#080808, -|24: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-25 #bdbdbd,#080808, 26-99 d,#080808, -|25: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-99 d,#080808, -|26: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-34 #bdbdbd,#080808, 35-99 d,#080808, -|27: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808,b 7-17 #bdbdbd,#080808, 18-99 d,#080808, -|28: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-16 #bdbdbd,#080808, 17-99 d,#080808, -|29: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-16 #bdbdbd,#080808, 17-99 d,#080808, -|30: 0-0 d,#121212, 1-1 d,#080808, 2-6 #626262,#080808, 7-17 #bdbdbd,#080808, 18-99 d,#080808, -== snap step-dark grid=100x31 cursor=7,27 -|17: 10 Theme solarium Theme -|18: 11 Theme spectrum -|19: 12 Theme harvest -|20: 13 Theme clay -|21: 14 Theme forge_black -|22: 15 Theme forge_soft -|23: 16 Theme orchard_black -|24: 17 -|25: 18 # Legacy and imported themes -|26: 19 Theme helix -|27: 20 Theme dark -|28: 21 Theme acme -|29: 22 Theme lapis -|30: 23 Theme acid -== style step-dark grid=100x31 -|0: 0-70 #969696,#2c2a3e, 71-99 d,#2c2a3e, -|1: 0-1 #ffffff,#867a4e, 2-2 d,#484566, 3-34 #c8c8c8,#484566, 35-99 d,#484566, -|2: 0-1 #ffffff,#353a58, 2-2 d,#2c2a3e, 3-59 #969696,#2c2a3e, 60-99 d,#2c2a3e, -|3: 0-0 d,#525252, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|4: 0-0 d,#525252, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|5: 0-0 d,#525252, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|6: 0-0 d,#525252, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|7: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|8: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|9: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|10: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|11: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|12: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|13: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|14: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|15: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|16: 0-1 #ffffff,#663fe0, 2-2 d,#484566, 3-61 #c8c8c8,#484566, 62-99 d,#484566, -|17: 0-0 d,#525252, 1-1 d,d, 2-6 #5a5a5a,d, 7-92 d,d, 93-93 d,#2c2a3e, 94-98 #969696,#2c2a3e, 99-99 d,#2c2a3e, -|18: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|19: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|20: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|21: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|22: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|23: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|24: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|25: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|26: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|27: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d,b 7-99 d,d, -|28: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|29: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, -|30: 0-0 d,#2a2a2a, 1-1 d,d, 2-6 #5a5a5a,d, 7-99 d,d, +|28: 0-0 d,#111813, 1-1 d,#000000, 2-6 #59675c,#000000, 7-16 #f2f8ef,#000000, 17-99 d,#000000, +|29: 0-0 d,#111813, 1-1 d,#000000, 2-6 #59675c,#000000, 7-17 #f2f8ef,#000000, 18-99 d,#000000, +|30: 0-0 d,#111813, 1-1 d,#000000, 2-6 #59675c,#000000, 7-99 d,#000000, == snap step-acme grid=100x31 cursor=7,27 -|17: 11 Theme spectrum Theme -|18: 12 Theme harvest -|19: 13 Theme clay -|20: 14 Theme forge_black -|21: 15 Theme forge_soft -|22: 16 Theme orchard_black -|23: 17 -|24: 18 # Legacy and imported themes -|25: 19 Theme helix -|26: 20 Theme dark -|27: 21 Theme acme -|28: 22 Theme lapis -|29: 23 Theme acid -|30: 24 Theme acme_helix +|17: 7 Theme atelier Theme +|18: 8 Theme forge +|19: 9 Theme lagoon +|20: 10 Theme solarium +|21: 11 Theme spectrum +|22: 12 Theme harvest +|23: 13 Theme clay +|24: 14 Theme forge_black +|25: 15 Theme forge_soft +|26: 16 Theme orchard_black +|27: 17 Theme acme +|28: 18 Theme lapis +|29: 19 +|30: 20 # Visual Studio Code == style step-acme grid=100x31 |0: 0-70 #000000,#eaffff, 71-99 d,#eaffff, |1: 0-1 #000000,#8888cc, 2-2 d,#eaffff, 3-34 #000000,#eaffff, 35-99 d,#eaffff, @@ -642,36 +548,36 @@ |14: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, |15: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, |16: 0-1 #000000,#8888cc, 2-2 d,#eaffff, 3-61 #000000,#eaffff, 62-99 d,#eaffff, -|17: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-20 #000000,#ffffea, 21-92 d,#ffffea, 93-93 d,#eaffff, 94-98 #000000,#eaffff, 99-99 d,#eaffff, -|18: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-19 #000000,#ffffea, 20-99 d,#ffffea, -|19: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-16 #000000,#ffffea, 17-99 d,#ffffea, -|20: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-23 #000000,#ffffea, 24-99 d,#ffffea, -|21: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-22 #000000,#ffffea, 23-99 d,#ffffea, -|22: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-25 #000000,#ffffea, 26-99 d,#ffffea, -|23: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-99 d,#ffffea, -|24: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-34 #000000,#ffffea, 35-99 d,#ffffea, -|25: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-17 #000000,#ffffea, 18-99 d,#ffffea, -|26: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-16 #000000,#ffffea, 17-99 d,#ffffea, +|17: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-19 #000000,#ffffea, 20-92 d,#ffffea, 93-93 d,#eaffff, 94-98 #000000,#eaffff, 99-99 d,#eaffff, +|18: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-17 #000000,#ffffea, 18-99 d,#ffffea, +|19: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-18 #000000,#ffffea, 19-99 d,#ffffea, +|20: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-20 #000000,#ffffea, 21-99 d,#ffffea, +|21: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-20 #000000,#ffffea, 21-99 d,#ffffea, +|22: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-19 #000000,#ffffea, 20-99 d,#ffffea, +|23: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-16 #000000,#ffffea, 17-99 d,#ffffea, +|24: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-23 #000000,#ffffea, 24-99 d,#ffffea, +|25: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-22 #000000,#ffffea, 23-99 d,#ffffea, +|26: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-25 #000000,#ffffea, 26-99 d,#ffffea, |27: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea,b 7-16 #000000,#ffffea, 17-99 d,#ffffea, |28: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-17 #000000,#ffffea, 18-99 d,#ffffea, -|29: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-16 #000000,#ffffea, 17-99 d,#ffffea, -|30: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-22 #000000,#ffffea, 23-99 d,#ffffea, -== snap step-generated grid=100x31 cursor=7,27 -|17: 12 Theme harvest Theme -|18: 13 Theme clay -|19: 14 Theme forge_black -|20: 15 Theme forge_soft -|21: 16 Theme orchard_black -|22: 17 -|23: 18 # Legacy and imported themes -|24: 19 Theme helix -|25: 20 Theme dark -|26: 21 Theme acme -|27: 22 Theme lapis -|28: 23 Theme acid -|29: 24 Theme acme_helix -|30: 25 Theme adwaita_dark -== style step-generated grid=100x31 +|29: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-99 d,#ffffea, +|30: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-26 #000000,#ffffea, 27-99 d,#ffffea, +== snap step-lapis grid=100x31 cursor=7,27 +|17: 8 Theme forge Theme +|18: 9 Theme lagoon +|19: 10 Theme solarium +|20: 11 Theme spectrum +|21: 12 Theme harvest +|22: 13 Theme clay +|23: 14 Theme forge_black +|24: 15 Theme forge_soft +|25: 16 Theme orchard_black +|26: 17 Theme acme +|27: 18 Theme lapis +|28: 19 +|29: 20 # Visual Studio Code +|30: 21 Theme dark_plus +== style step-lapis grid=100x31 |0: 0-70 #9aa6d9,#0f1a4a, 71-99 d,#0f1a4a, |1: 0-1 #ffffff,#8a3a3a, 2-2 d,#25397d, 3-34 #eee6d2,#25397d, 35-99 d,#25397d, |2: 0-1 #ffffff,#6a78b1, 2-2 d,#0f1a4a, 3-32 #9aa6d9,#0f1a4a, 33-37 #e8c46a,#0f1a4a, 38-59 #9aa6d9,#0f1a4a, 60-99 d,#0f1a4a, @@ -689,68 +595,162 @@ |14: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-13 #eee6d2,#0a1030, 14-99 d,#0a1030, |15: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-13 #eee6d2,#0a1030, 14-99 d,#0a1030, |16: 0-1 #000000,#e8c46a, 2-2 d,#25397d, 3-32 #eee6d2,#25397d, 33-39 #f2d280,#25397d, 40-61 #eee6d2,#25397d, 62-99 d,#25397d, -|17: 0-0 d,#e8c46a, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-19 #eee6d2,#0a1030, 20-92 d,#0a1030, 93-93 d,#0f1a4a, 94-98 #9aa6d9,#0f1a4a, 99-99 d,#0f1a4a, -|18: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-16 #eee6d2,#0a1030, 17-99 d,#0a1030, -|19: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-23 #eee6d2,#0a1030, 24-99 d,#0a1030, -|20: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-22 #eee6d2,#0a1030, 23-99 d,#0a1030, -|21: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-25 #eee6d2,#0a1030, 26-99 d,#0a1030, -|22: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-99 d,#0a1030, -|23: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-34 #eee6d2,#0a1030, 35-99 d,#0a1030, -|24: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-17 #eee6d2,#0a1030, 18-99 d,#0a1030, -|25: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-16 #eee6d2,#0a1030, 17-99 d,#0a1030, +|17: 0-0 d,#e8c46a, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-17 #eee6d2,#0a1030, 18-92 d,#0a1030, 93-93 d,#0f1a4a, 94-98 #9aa6d9,#0f1a4a, 99-99 d,#0f1a4a, +|18: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-18 #eee6d2,#0a1030, 19-99 d,#0a1030, +|19: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-20 #eee6d2,#0a1030, 21-99 d,#0a1030, +|20: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-20 #eee6d2,#0a1030, 21-99 d,#0a1030, +|21: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-19 #eee6d2,#0a1030, 20-99 d,#0a1030, +|22: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-16 #eee6d2,#0a1030, 17-99 d,#0a1030, +|23: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-23 #eee6d2,#0a1030, 24-99 d,#0a1030, +|24: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-22 #eee6d2,#0a1030, 23-99 d,#0a1030, +|25: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-25 #eee6d2,#0a1030, 26-99 d,#0a1030, |26: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-16 #eee6d2,#0a1030, 17-99 d,#0a1030, |27: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #6a7ab8,#0a1030,b 7-17 #eee6d2,#0a1030, 18-99 d,#0a1030, -|28: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-16 #eee6d2,#0a1030, 17-99 d,#0a1030, -|29: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-22 #eee6d2,#0a1030, 23-99 d,#0a1030, -|30: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-24 #eee6d2,#0a1030, 25-99 d,#0a1030, -== snap step-back grid=100x31 cursor=7,26 +|28: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-99 d,#0a1030, +|29: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-26 #eee6d2,#0a1030, 27-99 d,#0a1030, +|30: 0-0 d,#050a24, 1-1 d,#0a1030, 2-6 #5a6aa8,#0a1030, 7-21 #eee6d2,#0a1030, 22-99 d,#0a1030, +== snap step-dark-plus grid=100x31 cursor=7,27 +|17: 11 Theme spectrum Theme +|18: 12 Theme harvest +|19: 13 Theme clay +|20: 14 Theme forge_black +|21: 15 Theme forge_soft +|22: 16 Theme orchard_black +|23: 17 Theme acme +|24: 18 Theme lapis +|25: 19 +|26: 20 # Visual Studio Code +|27: 21 Theme dark_plus +|28: 22 +|29: 23 # Solarized +|30: 24 Theme solarized_dark +== style step-dark-plus grid=100x31 +|0: 0-70 #a7a7a7,#3c3c3c, 71-99 d,#3c3c3c, +|1: 0-1 #ffffff,#458276, 2-2 d,#1e1e1e, 3-34 #ffffff,#1e1e1e, 35-99 d,#1e1e1e, +|2: 0-1 #ffffff,#1c608e, 2-2 d,#3c3c3c, 3-59 #a7a7a7,#3c3c3c, 60-99 d,#3c3c3c, +|3: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|4: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|5: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|6: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|7: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|8: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|9: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|10: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|11: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|12: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|13: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|14: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|15: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|16: 0-1 #ffffff,#007fd4, 2-2 d,#1e1e1e, 3-61 #ffffff,#1e1e1e, 62-99 d,#1e1e1e, +|17: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-20 #d4d4d4,#1e1e1e, 21-92 d,#1e1e1e, 93-93 d,#3c3c3c, 94-98 #a7a7a7,#3c3c3c, 99-99 d,#3c3c3c, +|18: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-19 #d4d4d4,#1e1e1e, 20-99 d,#1e1e1e, +|19: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-16 #d4d4d4,#1e1e1e, 17-99 d,#1e1e1e, +|20: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-23 #d4d4d4,#1e1e1e, 24-99 d,#1e1e1e, +|21: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-22 #d4d4d4,#1e1e1e, 23-99 d,#1e1e1e, +|22: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-25 #d4d4d4,#1e1e1e, 26-99 d,#1e1e1e, +|23: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-16 #d4d4d4,#1e1e1e, 17-99 d,#1e1e1e, +|24: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-17 #d4d4d4,#1e1e1e, 18-99 d,#1e1e1e, +|25: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-99 d,#1e1e1e, +|26: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-26 #d4d4d4,#1e1e1e, 27-99 d,#1e1e1e, +|27: 0-1 d,#1e1e1e, 2-6 #c6c6c6,#1e1e1e,b 7-21 #d4d4d4,#1e1e1e, 22-99 d,#1e1e1e, +|28: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-99 d,#1e1e1e, +|29: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-17 #d4d4d4,#1e1e1e, 18-99 d,#1e1e1e, +|30: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-26 #d4d4d4,#1e1e1e, 27-99 d,#1e1e1e, +== snap step-solarized-dark grid=100x31 cursor=7,27 +|17: 14 Theme forge_black Theme +|18: 15 Theme forge_soft +|19: 16 Theme orchard_black +|20: 17 Theme acme +|21: 18 Theme lapis +|22: 19 +|23: 20 # Visual Studio Code +|24: 21 Theme dark_plus +|25: 22 +|26: 23 # Solarized +|27: 24 Theme solarized_dark +|28: 25 Theme solarized_light +|29: 26 +|30: 27 # Dracula +== style step-solarized-dark grid=100x31 +|0: 0-70 #01090b,#657b83, 71-99 d,#657b83, +|1: 0-1 #ffffff,#758a41, 2-2 d,#93a1a1, 3-34 #073642,#93a1a1, 35-99 d,#93a1a1, +|2: 0-1 #ffffff,#185986, 2-2 d,#657b83, 3-59 #01090b,#657b83, 60-99 d,#657b83, +|3: 0-0 d,#839496, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-12 #839496,#002b36, 13-99 d,#002b36, +|4: 0-0 d,#839496, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-12 #839496,#002b36, 13-99 d,#002b36, +|5: 0-0 d,#839496, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-12 #839496,#002b36, 13-99 d,#002b36, +|6: 0-0 d,#839496, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-12 #839496,#002b36, 13-99 d,#002b36, +|7: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-12 #839496,#002b36, 13-99 d,#002b36, +|8: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-12 #839496,#002b36, 13-99 d,#002b36, +|9: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-12 #839496,#002b36, 13-99 d,#002b36, +|10: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-12 #839496,#002b36, 13-99 d,#002b36, +|11: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-12 #839496,#002b36, 13-99 d,#002b36, +|12: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-13 #839496,#002b36, 14-99 d,#002b36, +|13: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-13 #839496,#002b36, 14-99 d,#002b36, +|14: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-13 #839496,#002b36, 14-99 d,#002b36, +|15: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-13 #839496,#002b36, 14-99 d,#002b36, +|16: 0-1 #ffffff,#2483c5, 2-2 d,#93a1a1, 3-61 #073642,#93a1a1, 62-99 d,#93a1a1, +|17: 0-0 d,#839496, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-23 #839496,#002b36, 24-92 d,#002b36, 93-93 d,#657b83, 94-98 #01090b,#657b83, 99-99 d,#657b83, +|18: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-22 #839496,#002b36, 23-99 d,#002b36, +|19: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-25 #839496,#002b36, 26-99 d,#002b36, +|20: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-16 #839496,#002b36, 17-99 d,#002b36, +|21: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-17 #839496,#002b36, 18-99 d,#002b36, +|22: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-99 d,#002b36, +|23: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-26 #839496,#002b36, 27-99 d,#002b36, +|24: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-21 #839496,#002b36, 22-99 d,#002b36, +|25: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-99 d,#002b36, +|26: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-17 #839496,#002b36, 18-99 d,#002b36, +|27: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36,b 7-26 #839496,#002b36, 27-99 d,#002b36, +|28: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-27 #839496,#002b36, 28-99 d,#002b36, +|29: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-99 d,#002b36, +|30: 0-0 d,#eee8d5, 1-1 d,#002b36, 2-6 #586e75,#002b36, 7-15 #839496,#002b36, 16-99 d,#002b36, +== snap step-back grid=100x31 cursor=7,24 == style step-back grid=100x31 -|0: 0-70 #000000,#eaffff, 71-99 d,#eaffff, -|1: 0-1 #000000,#8888cc, 2-2 d,#eaffff, 3-34 #000000,#eaffff, 35-99 d,#eaffff, -|2: 0-1 #000000,#b9c3e5, 2-2 d,#eaffff, 3-59 #000000,#eaffff, 60-99 d,#eaffff, -|3: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-12 #000000,#ffffea, 13-99 d,#ffffea, -|4: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-12 #000000,#ffffea, 13-99 d,#ffffea, -|5: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-12 #000000,#ffffea, 13-99 d,#ffffea, -|6: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-12 #000000,#ffffea, 13-99 d,#ffffea, -|7: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-12 #000000,#ffffea, 13-99 d,#ffffea, -|8: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-12 #000000,#ffffea, 13-99 d,#ffffea, -|9: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-12 #000000,#ffffea, 13-99 d,#ffffea, -|10: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-12 #000000,#ffffea, 13-99 d,#ffffea, -|11: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-12 #000000,#ffffea, 13-99 d,#ffffea, -|12: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|13: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|14: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|15: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|16: 0-1 #000000,#8888cc, 2-2 d,#eaffff, 3-61 #000000,#eaffff, 62-99 d,#eaffff, -|17: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-19 #000000,#ffffea, 20-92 d,#ffffea, 93-93 d,#eaffff, 94-98 #000000,#eaffff, 99-99 d,#eaffff, -|18: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-16 #000000,#ffffea, 17-99 d,#ffffea, -|19: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-23 #000000,#ffffea, 24-99 d,#ffffea, -|20: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-22 #000000,#ffffea, 23-99 d,#ffffea, -|21: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-25 #000000,#ffffea, 26-99 d,#ffffea, -|22: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-99 d,#ffffea, -|23: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-34 #000000,#ffffea, 35-99 d,#ffffea, -|24: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-17 #000000,#ffffea, 18-99 d,#ffffea, -|25: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-16 #000000,#ffffea, 17-99 d,#ffffea, -|26: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea,b 7-16 #000000,#ffffea, 17-99 d,#ffffea, -|27: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-17 #000000,#ffffea, 18-99 d,#ffffea, -|28: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-16 #000000,#ffffea, 17-99 d,#ffffea, -|29: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-22 #000000,#ffffea, 23-99 d,#ffffea, -|30: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-24 #000000,#ffffea, 25-99 d,#ffffea, +|0: 0-70 #a7a7a7,#3c3c3c, 71-99 d,#3c3c3c, +|1: 0-1 #ffffff,#458276, 2-2 d,#1e1e1e, 3-34 #ffffff,#1e1e1e, 35-99 d,#1e1e1e, +|2: 0-1 #ffffff,#1c608e, 2-2 d,#3c3c3c, 3-59 #a7a7a7,#3c3c3c, 60-99 d,#3c3c3c, +|3: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|4: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|5: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|6: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|7: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|8: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|9: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|10: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|11: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|12: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|13: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|14: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|15: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|16: 0-1 #ffffff,#007fd4, 2-2 d,#1e1e1e, 3-61 #ffffff,#1e1e1e, 62-99 d,#1e1e1e, +|17: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-23 #d4d4d4,#1e1e1e, 24-92 d,#1e1e1e, 93-93 d,#3c3c3c, 94-98 #a7a7a7,#3c3c3c, 99-99 d,#3c3c3c, +|18: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-22 #d4d4d4,#1e1e1e, 23-99 d,#1e1e1e, +|19: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-25 #d4d4d4,#1e1e1e, 26-99 d,#1e1e1e, +|20: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-16 #d4d4d4,#1e1e1e, 17-99 d,#1e1e1e, +|21: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-17 #d4d4d4,#1e1e1e, 18-99 d,#1e1e1e, +|22: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-99 d,#1e1e1e, +|23: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-26 #d4d4d4,#1e1e1e, 27-99 d,#1e1e1e, +|24: 0-1 d,#1e1e1e, 2-6 #c6c6c6,#1e1e1e,b 7-21 #d4d4d4,#1e1e1e, 22-99 d,#1e1e1e, +|25: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-99 d,#1e1e1e, +|26: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-17 #d4d4d4,#1e1e1e, 18-99 d,#1e1e1e, +|27: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-26 #d4d4d4,#1e1e1e, 27-99 d,#1e1e1e, +|28: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-27 #d4d4d4,#1e1e1e, 28-99 d,#1e1e1e, +|29: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-99 d,#1e1e1e, +|30: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-15 #d4d4d4,#1e1e1e, 16-99 d,#1e1e1e, == snap tail grid=100x31 cursor=7,29 -|17: 235 Theme wolf_alabaster_dark -|18: 236 Theme wolf_alabaster_dark_bg -|19: 237 Theme wolf_alabaster_dark_mono -|20: 238 Theme wolf_alabaster_light -|21: 239 Theme wolf_alabaster_light_bg -|22: 240 Theme wolf_alabaster_light_mono -|23: 241 Theme yellowed -|24: 242 Theme yo -|25: 243 Theme yo_berry -|26: 244 Theme yo_light -|27: 245 Theme zed_onedark -|28: 246 Theme zed_onelight -|29: 247 Theme zenburn -|30: 248 +|17: 326 Theme wolf_alabaster_dark +|18: 327 Theme wolf_alabaster_dark_bg +|19: 328 Theme wolf_alabaster_dark_mono +|20: 329 Theme wolf_alabaster_light +|21: 330 Theme wolf_alabaster_light_bg +|22: 331 Theme wolf_alabaster_light_mono +|23: 332 Theme yellowed +|24: 333 Theme yo +|25: 334 Theme yo_berry +|26: 335 Theme yo_light +|27: 336 Theme zed_onedark +|28: 337 Theme zed_onelight +|29: 338 Theme zenburn +|30: 339 == snap picked grid=100x31 cursor=7,3 |16: 14 line 14 |17: 15 line 15 @@ -768,29 +768,29 @@ |29: 27 line 27 |30: 28 line 28 == style picked grid=100x31 -|2: 0-1 #000000,#8888cc, 2-2 d,#eaffff, 3-59 #000000,#eaffff, 60-99 d,#eaffff, -|3: 0-1 d,#ffffea, 2-6 #999980,#ffffea,b 7-12 #000000,#ffffea, 13-99 d,#ffffea, -|7: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-12 #000000,#ffffea, 13-99 d,#ffffea, -|8: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-12 #000000,#ffffea, 13-99 d,#ffffea, -|9: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-12 #000000,#ffffea, 13-99 d,#ffffea, -|10: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-12 #000000,#ffffea, 13-99 d,#ffffea, -|11: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-12 #000000,#ffffea, 13-99 d,#ffffea, -|12: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|13: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|14: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|15: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|16: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|17: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|18: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|19: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|20: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|21: 0-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|22: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|23: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|24: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|25: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|26: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|27: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|28: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|29: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, -|30: 0-0 d,#99994c, 1-1 d,#ffffea, 2-6 #999980,#ffffea, 7-13 #000000,#ffffea, 14-99 d,#ffffea, +|2: 0-1 #ffffff,#007fd4, 2-2 d,#1e1e1e, 3-59 #ffffff,#1e1e1e, 60-99 d,#1e1e1e, +|3: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #c6c6c6,#1e1e1e,b 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|7: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|8: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|9: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|10: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|11: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-12 #d4d4d4,#1e1e1e, 13-99 d,#1e1e1e, +|12: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|13: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|14: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|15: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|16: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|17: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|18: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|19: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|20: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|21: 0-0 d,#424242, 1-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|22: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|23: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|24: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|25: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|26: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|27: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|28: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|29: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, +|30: 0-1 d,#1e1e1e, 2-6 #858585,#1e1e1e, 7-13 #d4d4d4,#1e1e1e, 14-99 d,#1e1e1e, diff --git a/test/snapshots/themesel.snap b/test/snapshots/themesel.snap index 04a95d23..01e4dc5e 100644 --- a/test/snapshots/themesel.snap +++ b/test/snapshots/themesel.snap @@ -1,7 +1,7 @@ # RULE: a results buffer is a list of things you can RUN, and its traits say # what a ROW IS. Every list before this one held LOCATIONS — a row with a # `path:LINE:COL` word inside it — so n/N select that word and Enter Looks it. -# `SPC t t` (ThemeSel) opens the first one whose rows are COMMANDS: `Theme +# `SPC t t` (Themes) opens the first one whose rows are COMMANDS: `Theme # <name>`, exactly the line you would type, with no path in it to pick out, so # n/N select the WHOLE ROW. One motion, two grains, and the same split either # way — the step only SELECTS, and Tab (Exec, or the middle button, which is @@ -10,9 +10,10 @@ # running it and stopping. There is still no preview state, nothing to confirm # and nothing to cancel: the row you ran is the theme you have. # -# Both halves of the ring are in the buffer: the fifteen native themes come -# first, then the retained helix, dark and acme, then everything exported from -# the vendored helix .toml and zed .json files, sorted. The colors below are +# The whole ring is in the buffer, in sections: the fifteen native themes, +# acme and lapis, the faithful ports a family at a time, the legacy helix and +# dark, then everything exported from the vendored helix .toml and zed .json +# files, sorted. The colors below are # read with snapstyle, so this proves the generated themes are real data and # not just names in a list. lines t.txt 40 @@ -81,7 +82,8 @@ key tab stable 700 15000 snap step-clay snapstyle step-clay -# The three native contrast variants precede the legacy section. Its heading +# The three native contrast variants precede acme and lapis, and then the first +# ported family's section. Its heading # and blank separator are not stops in the n/N command walk. key n key tab @@ -101,27 +103,27 @@ snapstyle step-orchard-black key n key tab stable 700 15000 -snap step-helix -snapstyle step-helix +snap step-acme +snapstyle step-acme key n key tab stable 700 15000 -snap step-dark -snapstyle step-dark +snap step-lapis +snapstyle step-lapis key n key tab stable 700 15000 -snap step-acme -snapstyle step-acme -# past the curated eighteen and into the generated half, which is sorted by name -# — so the next command is whatever sorts first, not whatever was -# vendored first. That is the point of sorting: the ring is the same everywhere -# whatever order the directory read handed the files over in. +snap step-dark-plus +snapstyle step-dark-plus +# across the Visual Studio Code section into Solarized: a section heading and +# its blank line are skipped like the first. (The imported half, past the +# legacy section, is sorted by name, so the ring is the same everywhere +# whatever order the directory read handed the files over in.) key n key tab stable 700 15000 -snap step-generated -snapstyle step-generated +snap step-solarized-dark +snapstyle step-solarized-dark # N walks back the same way — it is the exact inverse of n — and the Tab after # it runs the row it lands on, so the theme rewinds too key N |
