xref: /openbsd/regress/bin/ksh/edit/emacs.sh (revision 998a0ad9)
182270653Santon#!/bin/sh
282270653Santon#
3*998a0ad9Sschwarze# $OpenBSD: emacs.sh,v 1.12 2021/06/30 18:55:52 schwarze Exp $
45ed25df9Santon#
582270653Santon# Copyright (c) 2017 Anton Lindqvist <anton@openbsd.org>
637f3e371Sschwarze# Copyright (c) 2017 Ingo Schwarze <schwarze@openbsd.org>
782270653Santon#
882270653Santon# Permission to use, copy, modify, and distribute this software for any
982270653Santon# purpose with or without fee is hereby granted, provided that the above
1082270653Santon# copyright notice and this permission notice appear in all copies.
1182270653Santon#
1282270653Santon# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1382270653Santon# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1482270653Santon# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1582270653Santon# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1682270653Santon# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1782270653Santon# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1882270653Santon# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1982270653Santon
2082270653Santon. "${1:-.}/subr.sh"
2182270653Santon
22f8e6ffd8SantonKSH=$2
23f8e6ffd8Santon
2482270653SantonEDITOR=
25997ea89aSantonENV=
2682270653SantonHISTFILE=
2782270653SantonMAIL=
2882270653SantonMALLOC_OPTIONS=S
29c0603667SantonPS1=' # '
3082270653SantonVISUAL=emacs
3182270653Santonexport EDITOR ENV HISTFILE MAIL MALLOC_OPTIONS PS1 VISUAL
3282270653Santon
3382270653Santon# auto-insert
34c0603667Santontestseq "abc" " # abc"
3537f3e371Sschwarze
3637f3e371Sschwarze# insertion of valid UTF-8
37c0603667Santontestseq "z\0002\0302\0200" " # z\b\0302\0200z\b"
38c0603667Santontestseq "z\0002\0337\0277" " # z\b\0337\0277z\b"
39c0603667Santontestseq "z\0002\0340\0240\0200" " # z\b\0340\0240\0200z\b"
40c0603667Santontestseq "z\0002\0354\0277\0277" " # z\b\0354\0277\0277z\b"
41c0603667Santontestseq "z\0002\0355\0200\0200" " # z\b\0355\0200\0200z\b"
42c0603667Santontestseq "z\0002\0355\0237\0277" " # z\b\0355\0237\0277z\b"
43c0603667Santontestseq "z\0002\0356\0200\0200" " # z\b\0356\0200\0200z\b"
44c0603667Santontestseq "z\0002\0357\0277\0277" " # z\b\0357\0277\0277z\b"
45c0603667Santontestseq "z\0002\0364\0200\0200\0200" " # z\b\0364\0200\0200\0200z\b"
46c0603667Santontestseq "z\0002\0364\0217\0277\0277" " # z\b\0364\0217\0277\0277z\b"
4737f3e371Sschwarze
4837f3e371Sschwarze# insertion of incomplete UTF-8
49c0603667Santontestseq "z\0002\0302\0006" " # z\b\0302z\bz"
50c0603667Santontestseq "z\0002\0377\0006" " # z\b\0377z\bz"
51c0603667Santontestseq "z\0002\0337\0006" " # z\b\0337z\bz"
52c0603667Santontestseq "z\0002\0340\0006" " # z\b\0340z\bz"
53c0603667Santontestseq "z\0002\0357\0006" " # z\b\0357z\bz"
54c0603667Santontestseq "z\0002\0364\0006" " # z\b\0364z\bz"
55c0603667Santontestseq "z\0002\0340\0240\0006" " # z\b\0340\0240z\bz"
56c0603667Santontestseq "z\0002\0354\0277\0006" " # z\b\0354\0277z\bz"
57c0603667Santontestseq "z\0002\0355\0200\0006" " # z\b\0355\0200z\bz"
58c0603667Santontestseq "z\0002\0355\0237\0006" " # z\b\0355\0237z\bz"
59c0603667Santontestseq "z\0002\0356\0200\0006" " # z\b\0356\0200z\bz"
60c0603667Santontestseq "z\0002\0357\0277\0006" " # z\b\0357\0277z\bz"
61*998a0ad9Sschwarzetestseq "z\0002\0363\0200\0200\0006" " # z\b\0363\0200\0200z\bz"
62*998a0ad9Sschwarzetestseq "z\0002\0363\0277\0277\0006" " # z\b\0363\0277\0277z\bz"
63c0603667Santontestseq "z\0002\0364\0200\0200\0006" " # z\b\0364\0200\0200z\bz"
64c0603667Santontestseq "z\0002\0364\0217\0277\0006" " # z\b\0364\0217\0277z\bz"
6537f3e371Sschwarze
6637f3e371Sschwarze# insertion of invalid bytes
67c0603667Santontestseq "z\0002\0300\0277" " # z\b\0300z\b\b\0300\0277z\b"
68c0603667Santontestseq "z\0002\0301\0277" " # z\b\0301z\b\b\0301\0277z\b"
69c0603667Santontestseq "z\0002\0360\0217" " # z\b\0360z\b\b\0360\0217z\b"
70c0603667Santontestseq "z\0002\0365\0217" " # z\b\0365z\b\b\0365\0217z\b"
71c0603667Santontestseq "z\0002\0367\0217" " # z\b\0367z\b\b\0367\0217z\b"
72c0603667Santontestseq "z\0002\0370\0217" " # z\b\0370z\b\b\0370\0217z\b"
73c0603667Santontestseq "z\0002\0377\0217" " # z\b\0377z\b\b\0377\0217z\b"
7437f3e371Sschwarze
7537f3e371Sschwarze# insertion of excessively long encodings
7637f3e371Sschwarzetestseq "z\0002\0340\0200\0200" \
77c0603667Santon	" # z\b\0340z\b\b\0340\0200z\b\b\0340\0200\0200z\b"
7837f3e371Sschwarzetestseq "z\0002\0340\0201\0277" \
79c0603667Santon	" # z\b\0340z\b\b\0340\0201z\b\b\0340\0201\0277z\b"
8037f3e371Sschwarzetestseq "z\0002\0340\0202\0200" \
81c0603667Santon	" # z\b\0340z\b\b\0340\0202z\b\b\0340\0202\0200z\b"
8237f3e371Sschwarzetestseq "z\0002\0340\0237\0277" \
83c0603667Santon	" # z\b\0340z\b\b\0340\0237z\b\b\0340\0237\0277z\b"
8437f3e371Sschwarze
8537f3e371Sschwarze# insertion of surrogates and execessive code points
8637f3e371Sschwarzetestseq "z\0002\0355\0240\0200" \
87c0603667Santon	" # z\b\0355z\b\b\0355\0240z\b\b\0355\0240\0200z\b"
8837f3e371Sschwarzetestseq "z\0002\0355\0277\0277" \
89c0603667Santon	" # z\b\0355z\b\b\0355\0277z\b\b\0355\0277\0277z\b"
9037f3e371Sschwarzetestseq "z\0002\0364\0220\0200\0200" \
91c0603667Santon  " # z\b\0364z\b\b\0364\0220z\b\b\0364\0220\0200z\b\b\0364\0220\0200\0200z\b"
9237f3e371Sschwarzetestseq "z\0002\0364\0277\0277\0277" \
93c0603667Santon  " # z\b\0364z\b\b\0364\0277z\b\b\0364\0277\0277z\b\b\0364\0277\0277\0277z\b"
940a8992d0Santon
950a8992d0Santon# insertion of unmatched meta sequence
96c0603667Santontestseq "z\0002\0033[3z" " # z\b\0007"
97aaf5d128Santon
98aaf5d128Santon# ^C, ^G: abort
99aaf5d128Santontestseq "echo 1\0003" " # echo 1\r\n # "
100aaf5d128Santontestseq "echo 1\0007" " # echo 1\r\n # "
101aaf5d128Santon
102aaf5d128Santon# ^B, Left: backward-char
103aaf5d128Santontestseq "\0002" " # \0007"
104aaf5d128Santontestseq "a\0002" " # a\0010"
105aaf5d128Santontestseq "\0303\0266\0002" " # \0303\0266\0010"
106aaf5d128Santontestseq "a\0033[D" " # a\0010"
107aaf5d128Santontestseq "a\0033OD" " # a\0010"
108aaf5d128Santon
109aaf5d128Santon# ^[b, Ctrl-Left: backward-word
110aaf5d128Santontestseq "\0033b" " # \0007"
111aaf5d128Santontestseq "a1_$\0033b" " # a1_$\0010\0010\0010\0010"
112aaf5d128Santontestseq "a1 \0303\0266\0033b\0033b" " # a1 \0303\0266\0010\0010\0010\0010"
113aaf5d128Santontestseq "a1_$\0033[1;5D" " # a1_$\0010\0010\0010\0010"
114aaf5d128Santon
115aaf5d128Santon# ^[<: beginning-of-history
116aaf5d128Santontestseq "\0033<" " # \0007"
117aaf5d128Santontestseq ": 1\n: 2\n\0033<" " # : 1\r\r\n # : 2\r\r\n # \r # : 1 \0010"
118aaf5d128Santon
119aaf5d128Santon# ^A, Home, Ctrl-Down: beginning-of-line
120aaf5d128Santontestseq "\0001" " # "
121aaf5d128Santontestseq "aa\0001" " # aa\0010\0010"
122aaf5d128Santontestseq "\0303\0266\0001" " # \0303\0266\0010"
123aaf5d128Santontestseq "aa\0033[H" " # aa\0010\0010"
124aaf5d128Santontestseq "aa\0033OH" " # aa\0010\0010"
125aaf5d128Santontestseq "aa\0033[1~" " # aa\0010\0010"
126aaf5d128Santontestseq "aa\0033[1;5B" " # aa\0010\0010"
127aaf5d128Santon
128aaf5d128Santon# [n] ^[C, ^[c: capitalize-word
129aaf5d128Santontestseq "\0033C\0033c" " # \0007\0007"
130aaf5d128Santontestseq "ab cd\0001\0033C" " # ab cd\0010\0010\0010\0010\0010Ab"
131aaf5d128Santontestseq "ab\0001\00332\0033C" " # ab\0010\0010Ab"
132aaf5d128Santontestseq "ab cd\0001\00332\0033C" " # ab cd\0010\0010\0010\0010\0010Ab Cd"
133aaf5d128Santontestseq "1a\0001\0033C" " # 1a\0010\00101a"
134aaf5d128Santontestseq "\0026\0002\0001\0033C" " # ^B\0010\0010^B"
135aaf5d128Santontestseq "\0303\0266b\0001\0033C" " # \0303\0266b\0010\0010\0303\0266b"
136aaf5d128Santon
137aaf5d128Santon# ^[#: comment
138aaf5d128Santontestseq "\0033#" " # \r #  \0010\r\r\n # "
139aaf5d128Santontestseq "a\0033#" " # a\r # #a \0010\0010\0010\r\r\n # "
140aaf5d128Santon
141aaf5d128Santon# XXX ^[^[: complete
142aaf5d128Santon# XXX ^X^[: complete-command
143aaf5d128Santon# XXX ^[^X: complete-file
144aaf5d128Santon# XXX ^I, ^[=: complete-list
145aaf5d128Santon
146aaf5d128Santon# [n] ERASE, ^?, ^H: delete-char-backward
147aaf5d128Santontestseq "\0177\0010" " # \0007\0007"
148aaf5d128Santontestseq "ab\00332\0177" " # ab\0010\0010  \0010\0010"
149aaf5d128Santontestseq "a\00332\0177" " # a\0010 \0010"
150aaf5d128Santontestseq "\0303\0266\0177" " # \0303\0266\0010 \0010"
151aaf5d128Santon
152aaf5d128Santon# [n] Delete: delete-char-forward
153aaf5d128Santontestseq "\0033[3~" " # \0007"
154aaf5d128Santontestseq "a\0033[3~" " # a\0007"
155aaf5d128Santontestseq "a\0001\0033[3~" " # a\0010 \0010"
156aaf5d128Santontestseq "ab\0001\00332\0033[3~" " # ab\0010\0010  \0010\0010"
157aaf5d128Santontestseq "a\0001\00332\0033[3~" " # a\0010 \0010"
158aaf5d128Santontestseq "\0303\0266\0001\0033[3~" " # \0303\0266\0010 \0010"
159aaf5d128Santon
160aaf5d128Santon# [n] ^[ERASE, ^[^?, ^[^H, ^[h: delete-word-backward
161aaf5d128Santontestseq "\0033\0177\033\0010\0033h" " # \0007\0007\0007"
162aaf5d128Santontestseq "ab\0033\0177" " # ab\0010\0010  \0010\0010"
163aaf5d128Santontestseq "ab cd\00332\0033\0177" \
164aaf5d128Santon	" # ab cd\0010\0010\0010\0010\0010     \0010\0010\0010\0010\0010"
165aaf5d128Santontestseq "ab\00332\0033\0177" " # ab\0010\0010  \0010\0010"
166aaf5d128Santontestseq "ab \0303\0266\0033\0177" " # ab \0303\0266\0010 \0010"
167aaf5d128Santon
168aaf5d128Santon# [n] ^[d: delete-word-forward
169aaf5d128Santontestseq "\0033d" " # \0007"
170aaf5d128Santontestseq "ab\0001\0033d" " # ab\0010\0010  \0010\0010"
171aaf5d128Santontestseq "ab cd\0001\00332\0033d" \
172aaf5d128Santon	" # ab cd\0010\0010\0010\0010\0010     \0010\0010\0010\0010\0010"
173aaf5d128Santontestseq "ab\0001\00332\0033d" " # ab\0010\0010  \0010\0010"
174aaf5d128Santon
175aaf5d128Santon# [n] ^N, ^XB, Down: down-history
176aaf5d128Santon# [n] ^P, ^XA, Up: up-history
177aaf5d128Santontestseq "\0016\0030B\0020\0030A" " # \0007\0007\0007\0007"
178aaf5d128Santontestseq ": 1\n\0020\0016" " # : 1\r\r\n # \r # : 1 \0010\0007"
179aaf5d128Santontestseq ": 1\n: 2\n\0020\0020\0016" \
180aaf5d128Santon	" # : 1\r\r\n # : 2\r\r\n # \r # : 2 \0010\r # : 1 \0010\r # : 2 \0010"
181aaf5d128Santontestseq ": 1\n: 2\n\0033[A\0033[A\0033[B" \
182aaf5d128Santon	" # : 1\r\r\n # : 2\r\r\n # \r # : 2 \0010\r # : 1 \0010\r # : 2 \0010"
183aaf5d128Santontestseq ": 1\n: 2\n\0033OA\0033OA\0033OB" \
184aaf5d128Santon	" # : 1\r\r\n # : 2\r\r\n # \r # : 2 \0010\r # : 1 \0010\r # : 2 \0010"
185aaf5d128Santon
186aaf5d128Santon# [n] ^[L, ^[l: downcase-word
187aaf5d128Santontestseq "\0033L\0033l" " # \0007\0007"
188aaf5d128Santontestseq "AB\0001\0033L" " # AB\0010\0010ab"
189aaf5d128Santontestseq "AB CD\0001\00332\0033L" " # AB CD\0010\0010\0010\0010\0010ab cd"
190aaf5d128Santontestseq "AB\0001\00332\0033L" " # AB\0010\0010ab"
191aaf5d128Santontestseq "1A\0001\0033L" " # 1A\0010\00101a"
192aaf5d128Santontestseq "\0026\0002A\0001\0033L" " # ^BA\0010\0010\0010^Ba"
193aaf5d128Santontestseq "\0303\0266A\0001\0033L" " # \0303\0266A\0010\0010\0303\0266a"
194aaf5d128Santon
195aaf5d128Santon# ^[>: end-of-history
196aaf5d128Santontestseq "\0033>" " # \0007"
197aaf5d128Santontestseq ": 1\n\0033>" " # : 1\r\r\n # \r # : 1 \0010"
198aaf5d128Santon
199aaf5d128Santon# ^E, End, Ctrl-Up: end-of-line
200aaf5d128Santontestseq "\0005" " # "
201aaf5d128Santontestseq "abc\0001\0005" " # abc\0010\0010\0010abc"
202aaf5d128Santontestseq "\0303\0266\0001\0005" " # \0303\0266\0010\0303\0266"
203aaf5d128Santontestseq "abc\0001\0033[F" " # abc\0010\0010\0010abc"
204aaf5d128Santontestseq "abc\0001\0033OF" " # abc\0010\0010\0010abc"
205aaf5d128Santontestseq "abc\0001\0033[4~" " # abc\0010\0010\0010abc"
206aaf5d128Santontestseq "abc\0001\0033[1;5A" " # abc\0010\0010\0010abc"
207aaf5d128Santon
208aaf5d128Santon# ^_: eot
209aaf5d128Santontestseq "\0037" " # ^D\r\r"
210aaf5d128Santon
211aaf5d128Santon# [n] ^D: eot-or-delete
212aaf5d128Santontestseq "\0004" " # ^D\r\r"
213aaf5d128Santon
214aaf5d128Santon# ^X^X: exchange-point-and-mark
215aaf5d128Santon# ^[space: set-mark-command
216aaf5d128Santontestseq "\0030\0030" " # \0007"
217aaf5d128Santontestseq "abc\0033 \0001\0030\0030" " # abc\0010\0010\0010abc"
218aaf5d128Santontestseq "\0303\0266\0033 \0001\0030\0030" " # \0303\0266\0010\0303\0266"
219aaf5d128Santon
220aaf5d128Santon# XXX ^[*: expand-file
221aaf5d128Santon
222aaf5d128Santon# [n] ^F, ^XC, Right: forward-char
223aaf5d128Santontestseq "\0006\0030C" " # \0007\0007"
224aaf5d128Santontestseq "abc\0001\0006" " # abc\0010\0010\0010a"
225aaf5d128Santontestseq "abc\0001\00332\0006" " # abc\0010\0010\0010ab"
226aaf5d128Santontestseq "a\0001\00332\0006" " # a\0010a"
227aaf5d128Santontestseq "\0303\0266\0001\0006" " # \0303\0266\0010\0303\0266"
228aaf5d128Santontestseq "abc\0001\0033[C" " # abc\0010\0010\0010a"
229aaf5d128Santontestseq "abc\0001\0033OC" " # abc\0010\0010\0010a"
230aaf5d128Santon
231aaf5d128Santon# [n] ^[f, Ctrl-Right: forward-word
232aaf5d128Santontestseq "\0033f" " # \0007"
233aaf5d128Santontestseq "ab\0001\0033f" " # ab\0010\0010ab"
234aaf5d128Santontestseq "ab cd\0001\00332\0033f" " # ab cd\0010\0010\0010\0010\0010ab cd"
235aaf5d128Santontestseq "ab\0001\00332\0033f" " # ab\0010\0010ab"
236aaf5d128Santontestseq "\0303\0266\0001\0033f" " # \0303\0266\0010\0303\0266"
237aaf5d128Santontestseq "ab\0001\0033[1;5C" " # ab\0010\0010ab"
238aaf5d128Santon
239aaf5d128Santon# [n] ^[g: goto-history
240aaf5d128Santontestseq "\0033g" " # \0007"
241aaf5d128Santontestseq ": 1\n\0033g" " # : 1\r\r\n # \r # : 1 \0010"
242aaf5d128Santontestseq ": 1\n: 2\n\00332\0033g" " # : 1\r\r\n # : 2\r\r\n # \r # : 2 \0010"
243aaf5d128Santontestseq ": 1\n\00332\0033g" " # : 1\r\r\n # \0007"
244aaf5d128Santon
245aaf5d128Santon# KILL: kill-line
246aaf5d128Santontestseq "\0025" " # \r #  \0010"
247aaf5d128Santontestseq "ab\0025" " # ab\r #    \0010\0010\0010"
248aaf5d128Santon
249aaf5d128Santon# [n] ^K: kill-to-eol
250aaf5d128Santontestseq "\0013" " # "
251aaf5d128Santontestseq "abc\0002\0002\0013" " # abc\0010\0010  \0010\0010"
252aaf5d128Santon
253aaf5d128Santon# XXX ^[?: list
254aaf5d128Santon# XXX ^X?: list-command
255aaf5d128Santon# XXX ^X^Y: list-file
256aaf5d128Santon
257aaf5d128Santon# ^J, ^M: newline
258aaf5d128Santontestseq "\0012\0015" " # \r\r\n # \r\r\n # "
259aaf5d128Santontestseq ": 1\0012" " # : 1\r\r\n # "
260aaf5d128Santontestseq ": 1\0001\0012" " # : 1\0010\0010\0010\r\r\n # "
261aaf5d128Santon
262aaf5d128Santon# ^O: newline-and-next
263aaf5d128Santontestseq "\0017" " # \r\r\n # \0007"
264aaf5d128Santontestseq ": 1\n: 2\n\0020\0020\0017" \
265aaf5d128Santon	" # : 1\r\r\n # : 2\r\r\n # \r # : 2 \0010\r # : 1 \0010\r\r\n # \r # : 2 \0010"
266aaf5d128Santon
267aaf5d128Santon# QUIT: no-op
268aaf5d128Santontestseq "\0034" " # "
269aaf5d128Santon
270aaf5d128Santon# [n] ^[., ^[_: prev-hist-word
271aaf5d128Santontestseq "\0033.\0033_" " # \0007\0007"
272aaf5d128Santontestseq ": 1\n\0033." " # : 1\r\r\n # 1"
273aaf5d128Santontestseq ": 1\n\00331\0033." " # : 1\r\r\n # :"
274aaf5d128Santontestseq ": 1\n\00333\0033." " # : 1\r\r\n # "
275aaf5d128Santon
276aaf5d128Santon# ^V, ^^: quote
277aaf5d128Santontestseq "\0026\0001" " # ^A"
278aaf5d128Santontestseq "\0036\0001" " # ^A"
279aaf5d128Santon
280aaf5d128Santon# [n] ^[^]: search-character-backward
281aaf5d128Santontestseq "\0033\0035a" " # \0007"
282aaf5d128Santontestseq "echo\0033\0035e" " # echo\0010\0010\0010\0010"
283aaf5d128Santontestseq "echo\0033\0035a" " # echo\0007"
284aaf5d128Santontestseq "eecho\00332\0033\0035e" " # eecho\0010\0010\0010\0010\0010"
285aaf5d128Santontestseq "echo\00332\0033\0035e" " # echo\0007"
286aaf5d128Santon
287aaf5d128Santon# [n] ^]: search-character-forward
288aaf5d128Santontestseq "\0035a" " # \0007"
289aaf5d128Santontestseq "echo\0001\0035o" " # echo\0010\0010\0010\0010ech"
290aaf5d128Santontestseq "echo\0001\0035a" " # echo\0010\0010\0010\0010\0007"
291aaf5d128Santontestseq "echoo\0001\00332\0035o" " # echoo\0010\0010\0010\0010\0010echo"
292aaf5d128Santon# XXX differs from search-character-backward, should ring bell
293aaf5d128Santontestseq "echo\0001\00332\0035o" " # echo\0010\0010\0010\0010ech"
294aaf5d128Santon
295aaf5d128Santon# ^R: search-history
296aaf5d128Santontestseq "\0022" " # \r\nI-search: "
297aaf5d128Santontestseq "echo\n\0022e" \
298aaf5d128Santon	" # echo\r\r\n\r\n # \r\nI-search: \r\n\r # echo \0010\0010\0010\0010"
299aaf5d128Santontestseq "echo\n\0022a" " # echo\r\r\n\r\n # \r\nI-search: \0007\r\nI-search: a"
300aaf5d128Santon
301aaf5d128Santon# ^T: transpose-chars
302aaf5d128Santontestseq "\0024" " # \0007"
303aaf5d128Santontestseq "a\0024" " # a\0007"
304aaf5d128Santontestseq "ab\0024" " # ab\0010\0010ba"
305aaf5d128Santontestseq "ab\0001\0024" " # ab\0010\0010\0007"
306aaf5d128Santon# XXX UTF-8 testseq "\0303\0266a\0024" " # \0303\0266a\0010\0010a\303\0266"
307aaf5d128Santon
308aaf5d128Santon# [n] ^[U, ^[u: upcase-word
309aaf5d128Santontestseq "\0033U\0033u" " # \0007\0007"
310aaf5d128Santontestseq "ab\0001\0033U" " # ab\0010\0010AB"
311aaf5d128Santontestseq "ab cd\0001\00332\0033U" " # ab cd\0010\0010\0010\0010\0010AB CD"
312aaf5d128Santontestseq "ab\0001\00332\0033U" " # ab\0010\0010AB"
313aaf5d128Santontestseq "1a\0001\0033U" " # 1a\0010\00101A"
314aaf5d128Santontestseq "\0026\0002a\0001\0033U" " # ^Ba\0010\0010\0010^BA"
315aaf5d128Santontestseq "\0303\0266a\0001\0033U" " # \0303\0266a\0010\0010\0303\0266A"
316aaf5d128Santon
317aaf5d128Santon# ^Y: yank
318aaf5d128Santontestseq "\0031" " # \r\nnothing to yank\r\n # "
319aaf5d128Santontestseq "abc\0027\0031" " # abc\0010\0010\0010   \0010\0010\0010abc"
320aaf5d128Santontestseq "ab/cd\0027\0001\0031" \
321aaf5d128Santon	" # ab/cd\0010\0010  \0010\0010\0010\0010\0010cdab/\0010\0010\0010"
322aaf5d128Santon
323aaf5d128Santon# ^[y: yank-pop
324aaf5d128Santontestseq "\0033y" " # \r\nyank something first\r\n # "
325aaf5d128Santontestseq "ab/cd\0027\0027\0031\0033y" \
326aaf5d128Santon	" # ab/cd\0010\0010  \0010\0010\0010\0010\0010   \0010\0010\0010ab/\0010\0010\0010   \0010\0010\0010cd"
327