summaryrefslogtreecommitdiff
path: root/test/snapshots/wrap.snap
blob: a818bc5f05877b3bb16ef43abac38ca152248451 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# Soft line breaks: ON by default, off with the Wrap builtin (`SPC t w`). A
# file line too long for the pane renders across several body rows instead of
# running off the right edge.
#
# Three rules pinned here. The break is at the PANE'S OWN content width and
# nothing else — there is no upper bound, a wide window breaks wide. A
# continuation row carries a BLANK gutter (the number belongs to the LINE, and
# a number repeated down a wrapped line would read as several lines) and the
# row it broke out of ends in `↩`, in the one column the wrap keeps free for
# it — a break is otherwise invisible, and an absent line number is a poor
# thing to read a document by. And the mouse follows the render: a click on a
# continuation row lands on the character under the pointer, which only works
# if the click resolves through the same row->line map the body was drawn from.
#
# The line is 20 decades, each headed by its own column marker: `0` at column
# 0, `4` at 40, `A` at 100. So the first character of a continuation row NAMES
# the column it broke at, and the width rule is readable straight off the grid.
file long.txt 0---------1---------2---------3---------4---------5---------6---------7---------8---------9---------A---------B---------C---------D---------E---------F---------G---------H---------I---------J---------\nsecond line\nthird line\n
# 48 columns: the 2-column chrome gutter, the 5-column line-number gutter and
# the 1 column the `↩` sits in leave 40 for content.
start 15 48 long.txt
wait 8000 Newcol Joincol
stable 700 20000
# the default: five rows for line 1 (200 bytes / 40), the four continuations
# gutterless and starting at `4` `8` `C` `G` — the columns 40, 80, 120, 160 —
# and each of the first four rows ending in the break marker
snap on-narrow
# a click on the SECOND row of line 1, on the `5` marker at column 50. The
# cursor must come back to the cell that was clicked (grid 17,3): the click
# resolved to line 1 column 50, and the render put line 1 column 50 back where
# the finger was. Off by one row and it would land in line 2.
press left 18 5
release left 18 5
stable 400 5000
snap clicked
# motions stay LOGICAL: one `j` from line 1 leaves the whole wrapped line
# behind and lands on line 2, four screen rows down at once.
key j
stable 400 5000
snap logical-j
# ...while `gj`/`gk` are the VISUAL pair. `gg` puts the cursor back at line 1
# column 0 with no goal column left over, `3l` moves three in, and from there
# each `gj` steps ONE screen row: still line 1, the column kept INSIDE the row,
# so the cursor stays in grid column 10 while the row walks 2 -> 3 -> 4. `gk`
# steps back onto the row it came from. This is the only motion that reads the
# wrap map's own arithmetic, so it is the one that can silently become `j`.
key g g
stable 400 5000
key 3 l
stable 400 5000
key g j
stable 400 5000
snap visual-gj
key g j
stable 400 5000
snap visual-gj-again
key g k
stable 400 5000
snap visual-gk
# a count is counted in ROWS too, and two of them are still inside line 1
key 2 g j
stable 400 5000
snap visual-count-gj
# SPC t w turns it off: line 1 back on ONE row, clipped at the right edge with
# no marker, lines 2 and 3 under it — the render this pane had before soft
# breaks existed, because the map the readers consult goes back to empty and
# every one of them falls back to the row arithmetic it used before any of it
key space t w
stable 400 5000
snap off
# ...and on again is on
key space t w
stable 400 5000
snap on-again
# 128 columns: 120 for content, and the break is at the `C` — column 120, the
# window's own width. The old 100-column cap would have broken at the `A`.
start 15 128 long.txt
wait 8000 Newcol Joincol
stable 700 20000
snap on-wide