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