diff --git a/regress/input-raw-edit.sh b/regress/input-raw-edit.sh index 6d78cc3c4..e6e8938c8 100644 --- a/regress/input-raw-edit.sh +++ b/regress/input-raw-edit.sh @@ -40,7 +40,7 @@ start_pane tabs 12 3 'A\tB\033[2g\r\033[IC' check_raw_matches tabs \ 'L 0 \(0\) flags=EXTENDED\[[0-9a-f]+\]' \ 'C 0,1 data=\(7,7, \) flags=TAB\[[0-9a-f]+\]' \ - 'C 0,2 data=\(1,1,!\) flags=PADDING\[[0-9a-f]+\]' \ + 'C 0,2 data=\(0,0,\) flags=PADDING\[[0-9a-f]+\]' \ 'C 0,8 data=\(1,1,B\) flags=NONE\[0\]' \ 'C 0,0 data=\(1,1,C\) flags=NONE\[0\]' diff --git a/regress/input-raw-unicode.sh b/regress/input-raw-unicode.sh index 76e2f5512..99530f151 100644 --- a/regress/input-raw-unicode.sh +++ b/regress/input-raw-unicode.sh @@ -7,7 +7,7 @@ check_capture wide 'AあB' check_raw_matches wide \ 'L 0 \(0\) flags=EXTENDED\[[0-9a-f]+\]' \ 'C 0,1 data=\(2,3,あ\) flags=NONE\[0\] attr=NONE\[0\]' \ - 'C 0,2 data=\(1,1,!\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \ + 'C 0,2 data=\(0,0,\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \ 'C 0,3 data=\(1,1,B\) flags=NONE\[0\]' start_pane combining 8 3 'e\314\201x' @@ -20,21 +20,21 @@ start_pane emoji 10 3 '\360\237\230\200Z' check_raw_matches emoji \ 'L 0 \(0\) flags=EXTENDED\[[0-9a-f]+\]' \ 'C 0,0 data=\(2,4,😀\) flags=NONE\[0\] attr=NONE\[0\]' \ - 'C 0,1 data=\(1,1,!\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \ + 'C 0,1 data=\(0,0,\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \ 'C 0,2 data=\(1,1,Z\) flags=NONE\[0\]' start_pane flag 10 3 '\360\237\207\254\360\237\207\247!' check_raw_matches flag \ 'L 0 \(0\) flags=EXTENDED\[[0-9a-f]+\]' \ 'C 0,0 data=\(2,8,🇬🇧\) flags=NONE\[0\] attr=NONE\[0\]' \ - 'C 0,1 data=\(1,1,!\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \ + 'C 0,1 data=\(0,0,\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \ 'C 0,2 data=\(1,1,!\) flags=NONE\[0\]' start_pane variation 10 3 '*\357\270\217!' check_raw_matches variation \ 'L 0 \(0\) flags=EXTENDED\[[0-9a-f]+\]' \ 'C 0,0 data=\(2,[0-9]+,.*\) flags=NONE\[0\] attr=NONE\[0\]' \ - 'C 0,1 data=\(1,1,!\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \ + 'C 0,1 data=\(0,0,\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \ 'C 0,2 data=\(1,1,!\) flags=NONE\[0\]' start_pane invalid 10 3 '\377A' @@ -69,14 +69,14 @@ check_raw_matches overwrite-wide-pad \ start_pane overwrite-wide-with-wide 10 3 'A\343\201\202B\r\033[1C\347\225\214' check_raw_matches overwrite-wide-with-wide \ 'C 0,1 data=\(2,3,界\) flags=NONE\[0\] attr=NONE\[0\]' \ - 'C 0,2 data=\(1,1,!\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \ + 'C 0,2 data=\(0,0,\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \ 'C 0,3 data=\(1,1,B\) flags=NONE\[0\]' start_pane wide-right-edge 4 3 'ABC\343\201\202Z' check_raw_matches wide-right-edge \ 'L 0 \(0\) flags=WRAPPED\[[0-9a-f]+\]' \ 'C 1,0 data=\(2,3,あ\) flags=NONE\[0\] attr=NONE\[0\]' \ - 'C 1,1 data=\(1,1,!\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \ + 'C 1,1 data=\(0,0,\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \ 'C 1,2 data=\(1,1,Z\) flags=NONE\[0\]' exit $exit_status diff --git a/regress/input-reflow-wide.sh b/regress/input-reflow-wide.sh new file mode 100644 index 000000000..a5646d25e --- /dev/null +++ b/regress/input-reflow-wide.sh @@ -0,0 +1,60 @@ +#!/bin/sh + +# Wide-character padding must not count towards the reflowed line width. + +. ./input-common.inc + +check_reflow() +{ + # Resizing can move the first physical line into history. + $TMUX capture-pane -pN"$2" -t "$1:" -S - -E - | + normalize_capture >"$TMP" + printf '%s\n' "${3:-$text}" >"$EXP" + cmp "$TMP" "$EXP" || fail "$1 reflow (width $width, flags -pN$2)" +} + +text='中文文档甲 中文文档乙 中文文档丙 中文文档丁 中文文档戊 中文文档己' + +# Default and RGB backgrounds exercise compact and extended padding cells. +for padding in compact extended; do + style='' + if [ "$padding" = extended ]; then + style='\033[48;2;1;2;3m' + fi + width=96 + start_pane_history "wide-$padding" 96 18 "${style}${text}\\n" + check_reflow "wide-$padding" '' + for width in 47 96 47 96; do + $TMUX resize-window -t "wide-$padding:" -x "$width" -y 18 || + exit 1 + check_reflow "wide-$padding" J + if [ "$width" = 96 ]; then + check_reflow "wide-$padding" '' + fi + done +done + +# Include both a split between wide characters and an odd-width boundary. +text='中文文档' +start_pane_history boundary 8 18 "${text}\\n" +for width in 4 8 3 8; do + $TMUX resize-window -t boundary: -x "$width" -y 18 || exit 1 + check_reflow boundary J + case "$width" in + 4) + check_reflow boundary '' '中文 +文档' + ;; + 3) + check_reflow boundary '' '中 +文 +文 +档' + ;; + 8) + check_reflow boundary '' + ;; + esac +done + +exit $exit_status