summaryrefslogtreecommitdiff
path: root/test/snapshots/diffview.snap
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-30 15:39:20 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:17 -0300
commitc04df904f2fa686cbe5ce0c078a96260af7b08bd (patch)
treeebb892b5b2f4c91505c241d1408fea1a1904a883 /test/snapshots/diffview.snap
parentb9eefda75ab9a63fc510de781d02b92fc04ad31d (diff)
downloadpardes-c04df904f2fa686cbe5ce0c078a96260af7b08bd.tar.gz
pardes-c04df904f2fa686cbe5ce0c078a96260af7b08bd.zip
A diff reads as the code it changes: hunks in their file's language, added and removed rows tinted
A .diff or .patch pane, and a command pane whose output is a diff (`git diff`, `git show`, `diff -u`; told by a `diff --git` line, or `---`/`+++` with a `@@` under them, in its first rows), colour each hunk's code in the language of the file its section names (`+++ b/<path>`, `--- a/<path>` for a deleted file), with tree-sitter, as highlightLocations does for results. src/diff.zig walks a unified diff by its `@@` counts, so a removed line that reads `--- x` is no header. Each side of a hunk is parsed as one text (context and removed lines the old side, context and added lines the new), so a string or comment across lines colours as it does in the file; a side no line takes its colours from is not parsed. A section's hunks share a parse, in pieces of about 40 lines (a hunk past 80 is cut), only those in view, and each piece's colours are kept by its bytes, so scrolling back and a terminal's every repaint parse nothing again. Added and removed lines carry a flag in their style byte; the painter tints their rows to the pane's edge, a little way from the page toward the theme's ANSI green or red, and draws the prefix in that hue pushed to read on it. A file in no known language keeps the old line colours. A command pane is read once its command has finished: its rows are copied once (File.DiffOutput, dropped when the pane runs again), so no frame dumps the scrollback, and painted over what git printed. A running command is shown as it prints. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'test/snapshots/diffview.snap')
-rw-r--r--test/snapshots/diffview.snap27
1 files changed, 27 insertions, 0 deletions
diff --git a/test/snapshots/diffview.snap b/test/snapshots/diffview.snap
new file mode 100644
index 00000000..b5900db9
--- /dev/null
+++ b/test/snapshots/diffview.snap
@@ -0,0 +1,27 @@
+# A diff pane, for reviewing a change: each hunk's code coloured as Zig (a
+# multi-line string over three lines, `defer` inside it no keyword), added and
+# removed rows tinted to the pane's edge with their prefix in the tint's hue,
+# headers muted.
+dirmk .git
+dirmk src
+file src/shape.zig const std = @import("std");\n\npub const Shape = union(enum) {\n circle: f32,\n square: f32,\n triangle: struct { base: f32, height: f32 },\n\n const note =\n \\\\areas, defer\n \\\\summed\n ;\n};\n
+file change.diff diff --git a/src/shape.zig b/src/shape.zig\nindex 1111111..2222222 100644\n--- a/src/shape.zig\n+++ b/src/shape.zig\n@@ -1,10 +1,12 @@\n const std = @import("std");\n \n pub const Shape = union(enum) {\n circle: f32,\n- square: u8 = 7,\n+ square: f32,\n+ triangle: struct { base: f32, height: f32 },\n \n const note =\n- \\\\areas\n+ \\\\areas, defer\n+ \\\\summed\n ;\n };\n
+start 31 100 change.diff
+wait 8000 Newcol Joincol
+stable 700 20000
+snap diff-pane
+snapstyle diff-colours
+# The same diff printed by a command (`git diff`, here `cat`) into a command
+# pane: its output is told for a diff and coloured the same, over the colours
+# the program printed.
+file cmds.txt cat change.diff\n
+start 31 100 cmds.txt
+wait 8000 cmds.txt
+stable 700 20000
+press middle 7 4
+drag middle 22 4
+release middle 22 4
+wait 10000 exit 0
+stable 700 15000
+snap command-pane
+snapstyle command-colours