xref: /vim-8.2.3635/src/testdir/test_digraph.vim (revision dfd63e30)
1397eadbeSBram Moolenaar" Tests for digraphs
2397eadbeSBram Moolenaar
3397eadbeSBram Moolenaarif !has("digraphs") || !has("multi_byte")
4397eadbeSBram Moolenaar  finish
5397eadbeSBram Moolenaarendif
6397eadbeSBram Moolenaar
7*dfd63e30SBram Moolenaarset enc=utf-8
860084333SBram Moolenaarscriptencoding utf-8
960084333SBram Moolenaar
10397eadbeSBram Moolenaarfunc! Put_Dig(chars)
11397eadbeSBram Moolenaar  exe "norm! o\<c-k>".a:chars
12397eadbeSBram Moolenaarendfu
13397eadbeSBram Moolenaar
14397eadbeSBram Moolenaarfunc! Put_Dig_BS(char1, char2)
15397eadbeSBram Moolenaar  exe "norm! o".a:char1."\<bs>".a:char2
16397eadbeSBram Moolenaarendfu
17397eadbeSBram Moolenaar
18397eadbeSBram Moolenaarfunc! Test_digraphs()
19397eadbeSBram Moolenaar  new
20397eadbeSBram Moolenaar  call Put_Dig("00")
21397eadbeSBram Moolenaar  call assert_equal("∞", getline('.'))
22397eadbeSBram Moolenaar  " not a digraph
23397eadbeSBram Moolenaar  call Put_Dig("el")
24397eadbeSBram Moolenaar  call assert_equal("l", getline('.'))
25397eadbeSBram Moolenaar  call Put_Dig("ht")
26397eadbeSBram Moolenaar  call assert_equal("þ", getline('.'))
27397eadbeSBram Moolenaar  " digraph "ab" is the same as "ba"
28397eadbeSBram Moolenaar  call Put_Dig("ab")
29397eadbeSBram Moolenaar  call Put_Dig("ba")
30397eadbeSBram Moolenaar  call assert_equal(["ば","ば"], getline(line('.')-1,line('.')))
31397eadbeSBram Moolenaar  " Euro sign
32397eadbeSBram Moolenaar  call Put_Dig("e=")
33397eadbeSBram Moolenaar  call Put_Dig("=e")
34397eadbeSBram Moolenaar  call Put_Dig("Eu")
35397eadbeSBram Moolenaar  call Put_Dig("uE")
36397eadbeSBram Moolenaar  call assert_equal(['е']+repeat(["€"],3), getline(line('.')-3,line('.')))
37397eadbeSBram Moolenaar  " Rouble sign
38397eadbeSBram Moolenaar  call Put_Dig("R=")
39397eadbeSBram Moolenaar  call Put_Dig("=R")
40397eadbeSBram Moolenaar  call Put_Dig("=P")
41397eadbeSBram Moolenaar  call Put_Dig("P=")
42397eadbeSBram Moolenaar  call assert_equal(['Р']+repeat(["₽"],2)+['П'], getline(line('.')-3,line('.')))
43397eadbeSBram Moolenaar  " Not a digraph
44397eadbeSBram Moolenaar  call Put_Dig("a\<bs>")
45397eadbeSBram Moolenaar  call Put_Dig("\<bs>a")
46397eadbeSBram Moolenaar  call assert_equal(["<BS>", "<BS>a"], getline(line('.')-1,line('.')))
47397eadbeSBram Moolenaar  " Grave
48397eadbeSBram Moolenaar  call Put_Dig("a!")
49397eadbeSBram Moolenaar  call Put_Dig("!e")
50397eadbeSBram Moolenaar  call Put_Dig("b!") " not defined
51397eadbeSBram Moolenaar  call assert_equal(["à", "è", "!"], getline(line('.')-2,line('.')))
52397eadbeSBram Moolenaar  " Acute accent
53397eadbeSBram Moolenaar  call Put_Dig("a'")
54397eadbeSBram Moolenaar  call Put_Dig("'e")
55397eadbeSBram Moolenaar  call Put_Dig("b'") " not defined
56397eadbeSBram Moolenaar  call assert_equal(["á", "é", "'"], getline(line('.')-2,line('.')))
57397eadbeSBram Moolenaar  " Cicumflex
58397eadbeSBram Moolenaar  call Put_Dig("a>")
59397eadbeSBram Moolenaar  call Put_Dig(">e")
60397eadbeSBram Moolenaar  call Put_Dig("b>") " not defined
61397eadbeSBram Moolenaar  call assert_equal(['â', 'ê', '>'], getline(line('.')-2,line('.')))
62397eadbeSBram Moolenaar  " Tilde
63397eadbeSBram Moolenaar  call Put_Dig("o~")
64397eadbeSBram Moolenaar  call Put_Dig("~u") " not defined
65397eadbeSBram Moolenaar  call Put_Dig("z~") " not defined
66397eadbeSBram Moolenaar  call assert_equal(['õ', 'u', '~'], getline(line('.')-2,line('.')))
67397eadbeSBram Moolenaar  " Tilde
68397eadbeSBram Moolenaar  call Put_Dig("o?")
69397eadbeSBram Moolenaar  call Put_Dig("?u")
70397eadbeSBram Moolenaar  call Put_Dig("z?") " not defined
71397eadbeSBram Moolenaar  call assert_equal(['õ', 'ũ', '?'], getline(line('.')-2,line('.')))
72397eadbeSBram Moolenaar  " Macron
73397eadbeSBram Moolenaar  call Put_Dig("o-")
74397eadbeSBram Moolenaar  call Put_Dig("-u")
75397eadbeSBram Moolenaar  call Put_Dig("z-") " not defined
76397eadbeSBram Moolenaar  call assert_equal(['ō', 'ū', '-'], getline(line('.')-2,line('.')))
77397eadbeSBram Moolenaar  " Breve
78397eadbeSBram Moolenaar  call Put_Dig("o(")
79397eadbeSBram Moolenaar  call Put_Dig("(u")
80397eadbeSBram Moolenaar  call Put_Dig("z(") " not defined
81397eadbeSBram Moolenaar  call assert_equal(['ŏ', 'ŭ', '('], getline(line('.')-2,line('.')))
82397eadbeSBram Moolenaar  " Dot above
83397eadbeSBram Moolenaar  call Put_Dig("b.")
84397eadbeSBram Moolenaar  call Put_Dig(".e")
85397eadbeSBram Moolenaar  call Put_Dig("a.") " not defined
86397eadbeSBram Moolenaar  call assert_equal(['ḃ', 'ė', '.'], getline(line('.')-2,line('.')))
87397eadbeSBram Moolenaar  " Diaresis
88397eadbeSBram Moolenaar  call Put_Dig("a:")
89397eadbeSBram Moolenaar  call Put_Dig(":u")
90397eadbeSBram Moolenaar  call Put_Dig("b:") " not defined
91397eadbeSBram Moolenaar  call assert_equal(['ä', 'ü', ':'], getline(line('.')-2,line('.')))
92397eadbeSBram Moolenaar  " Cedilla
93397eadbeSBram Moolenaar  call Put_Dig("',")
94397eadbeSBram Moolenaar  call Put_Dig(",C")
95397eadbeSBram Moolenaar  call Put_Dig("b,") " not defined
96397eadbeSBram Moolenaar  call assert_equal(['¸', 'Ç', ','], getline(line('.')-2,line('.')))
97397eadbeSBram Moolenaar  " Underline
98397eadbeSBram Moolenaar  call Put_Dig("B_")
99397eadbeSBram Moolenaar  call Put_Dig("_t")
100397eadbeSBram Moolenaar  call Put_Dig("a_") " not defined
101397eadbeSBram Moolenaar  call assert_equal(['Ḇ', 'ṯ', '_'], getline(line('.')-2,line('.')))
102397eadbeSBram Moolenaar  " Stroke
103397eadbeSBram Moolenaar  call Put_Dig("j/")
104397eadbeSBram Moolenaar  call Put_Dig("/l")
105397eadbeSBram Moolenaar  call Put_Dig("b/") " not defined
106397eadbeSBram Moolenaar  call assert_equal(['/', 'ł', '/'], getline(line('.')-2,line('.')))
107397eadbeSBram Moolenaar  " Double acute
108397eadbeSBram Moolenaar  call Put_Dig('O"')
109397eadbeSBram Moolenaar  call Put_Dig('"y')
110397eadbeSBram Moolenaar  call Put_Dig('b"') " not defined
111397eadbeSBram Moolenaar  call assert_equal(['Ő', 'ÿ', '"'], getline(line('.')-2,line('.')))
112397eadbeSBram Moolenaar  " Ogonek
113397eadbeSBram Moolenaar  call Put_Dig('u;')
114397eadbeSBram Moolenaar  call Put_Dig(';E')
115397eadbeSBram Moolenaar  call Put_Dig('b;') " not defined
116397eadbeSBram Moolenaar  call assert_equal(['ų', 'Ę', ';'], getline(line('.')-2,line('.')))
117397eadbeSBram Moolenaar  " Caron
118397eadbeSBram Moolenaar  call Put_Dig('u<')
119397eadbeSBram Moolenaar  call Put_Dig('<E')
120397eadbeSBram Moolenaar  call Put_Dig('b<') " not defined
121397eadbeSBram Moolenaar  call assert_equal(['ǔ', 'Ě', '<'], getline(line('.')-2,line('.')))
122397eadbeSBram Moolenaar  " Ring above
123397eadbeSBram Moolenaar  call Put_Dig('u0')
124397eadbeSBram Moolenaar  call Put_Dig('0E') " not defined
125397eadbeSBram Moolenaar  call Put_Dig('b0') " not defined
126397eadbeSBram Moolenaar  call assert_equal(['ů', 'E', '0'], getline(line('.')-2,line('.')))
127397eadbeSBram Moolenaar  " Hook
128397eadbeSBram Moolenaar  call Put_Dig('u2')
129397eadbeSBram Moolenaar  call Put_Dig('2E')
130397eadbeSBram Moolenaar  call Put_Dig('b2') " not defined
131397eadbeSBram Moolenaar  call assert_equal(['ủ', 'Ẻ', '2'], getline(line('.')-2,line('.')))
132397eadbeSBram Moolenaar  " Horn
133397eadbeSBram Moolenaar  call Put_Dig('u9')
134397eadbeSBram Moolenaar  call Put_Dig('9E') " not defined
135397eadbeSBram Moolenaar  call Put_Dig('b9') " not defined
136397eadbeSBram Moolenaar  call assert_equal(['ư', 'E', '9'], getline(line('.')-2,line('.')))
137397eadbeSBram Moolenaar  " Cyrillic
138397eadbeSBram Moolenaar  call Put_Dig('u=')
139397eadbeSBram Moolenaar  call Put_Dig('=b')
140397eadbeSBram Moolenaar  call Put_Dig('=_')
141397eadbeSBram Moolenaar  call assert_equal(['у', 'б', '〓'], getline(line('.')-2,line('.')))
142397eadbeSBram Moolenaar  " Greek
143397eadbeSBram Moolenaar  call Put_Dig('u*')
144397eadbeSBram Moolenaar  call Put_Dig('*b')
145397eadbeSBram Moolenaar  call Put_Dig('*_')
146397eadbeSBram Moolenaar  call assert_equal(['υ', 'β', '々'], getline(line('.')-2,line('.')))
147397eadbeSBram Moolenaar  " Greek/Cyrillic special
148397eadbeSBram Moolenaar  call Put_Dig('u%')
149397eadbeSBram Moolenaar  call Put_Dig('%b') " not defined
150397eadbeSBram Moolenaar  call Put_Dig('%_') " not defined
151397eadbeSBram Moolenaar  call assert_equal(['ύ', 'b', '_'], getline(line('.')-2,line('.')))
152397eadbeSBram Moolenaar  " Arabic
153397eadbeSBram Moolenaar  call Put_Dig('u+')
154397eadbeSBram Moolenaar  call Put_Dig('+b')
155397eadbeSBram Moolenaar  call Put_Dig('+_') " japanese industrial symbol
156397eadbeSBram Moolenaar  call assert_equal(['+', 'ب', '〄'], getline(line('.')-2,line('.')))
157397eadbeSBram Moolenaar  " Hebrew
158397eadbeSBram Moolenaar  call Put_Dig('Q+')
159397eadbeSBram Moolenaar  call Put_Dig('+B')
160397eadbeSBram Moolenaar  call Put_Dig('+X')
161397eadbeSBram Moolenaar  call assert_equal(['ק', 'ב', 'ח'], getline(line('.')-2,line('.')))
162397eadbeSBram Moolenaar  " Latin
163397eadbeSBram Moolenaar  call Put_Dig('a3')
164397eadbeSBram Moolenaar  call Put_Dig('A3')
165397eadbeSBram Moolenaar  call Put_Dig('3X')
166397eadbeSBram Moolenaar  call assert_equal(['ǣ', 'Ǣ', 'X'], getline(line('.')-2,line('.')))
167397eadbeSBram Moolenaar  " Bopomofo
168397eadbeSBram Moolenaar  call Put_Dig('a4')
169397eadbeSBram Moolenaar  call Put_Dig('A4')
170397eadbeSBram Moolenaar  call Put_Dig('4X')
171397eadbeSBram Moolenaar  call assert_equal(['ㄚ', '4', 'X'], getline(line('.')-2,line('.')))
172397eadbeSBram Moolenaar  " Hiragana
173397eadbeSBram Moolenaar  call Put_Dig('a5')
174397eadbeSBram Moolenaar  call Put_Dig('A5')
175397eadbeSBram Moolenaar  call Put_Dig('5X')
176397eadbeSBram Moolenaar  call assert_equal(['あ', 'ぁ', 'X'], getline(line('.')-2,line('.')))
177397eadbeSBram Moolenaar  " Katakana
178397eadbeSBram Moolenaar  call Put_Dig('a6')
179397eadbeSBram Moolenaar  call Put_Dig('A6')
180397eadbeSBram Moolenaar  call Put_Dig('6X')
181397eadbeSBram Moolenaar  call assert_equal(['ァ', 'ア', 'X'], getline(line('.')-2,line('.')))
182397eadbeSBram Moolenaar  " Superscripts
183397eadbeSBram Moolenaar  call Put_Dig('1S')
184397eadbeSBram Moolenaar  call Put_Dig('2S')
185397eadbeSBram Moolenaar  call Put_Dig('3S')
186397eadbeSBram Moolenaar  call assert_equal(['¹', '²', '³'], getline(line('.')-2,line('.')))
187397eadbeSBram Moolenaar  " Subscripts
188397eadbeSBram Moolenaar  call Put_Dig('1s')
189397eadbeSBram Moolenaar  call Put_Dig('2s')
190397eadbeSBram Moolenaar  call Put_Dig('3s')
191397eadbeSBram Moolenaar  call assert_equal(['₁', '₂', '₃'], getline(line('.')-2,line('.')))
192397eadbeSBram Moolenaar  " Eszet (only lowercase)
193397eadbeSBram Moolenaar  call Put_Dig("ss")
194397eadbeSBram Moolenaar  call Put_Dig("SS") " start of string
195397eadbeSBram Moolenaar  call assert_equal(["ß", "˜"], getline(line('.')-1,line('.')))
196397eadbeSBram Moolenaar  " High bit set
197397eadbeSBram Moolenaar  call Put_Dig("a ")
198397eadbeSBram Moolenaar  call Put_Dig(" A")
199397eadbeSBram Moolenaar  call assert_equal(['á', 'Á'], getline(line('.')-1,line('.')))
200397eadbeSBram Moolenaar  " Escape is not part of a digraph
201397eadbeSBram Moolenaar  call Put_Dig("a\<esc>")
202397eadbeSBram Moolenaar  call Put_Dig("\<esc>A")
203397eadbeSBram Moolenaar  call assert_equal(['', 'A'], getline(line('.')-1,line('.')))
204397eadbeSBram Moolenaar  " define some custom digraphs
205397eadbeSBram Moolenaar  " old: 00 ∞
206397eadbeSBram Moolenaar  " old: el l
207397eadbeSBram Moolenaar  digraph 00 9216
208397eadbeSBram Moolenaar  digraph el 0252
209397eadbeSBram Moolenaar  call Put_Dig("00")
210397eadbeSBram Moolenaar  call Put_Dig("el")
211397eadbeSBram Moolenaar  " Reset digraphs
212397eadbeSBram Moolenaar  digraph 00 8734
213397eadbeSBram Moolenaar  digraph el 108
214397eadbeSBram Moolenaar  call Put_Dig("00")
215397eadbeSBram Moolenaar  call Put_Dig("el")
216397eadbeSBram Moolenaar  call assert_equal(['␀', 'ü', '∞', 'l'], getline(line('.')-3,line('.')))
217397eadbeSBram Moolenaar  bw!
218397eadbeSBram Moolenaarendfunc
219397eadbeSBram Moolenaar
220397eadbeSBram Moolenaarfunc! Test_digraphs_option()
221397eadbeSBram Moolenaar  " reset whichwrap option, so that testing <esc><bs>A works,
222397eadbeSBram Moolenaar  " without moving up a line
223*dfd63e30SBram Moolenaar  set digraph ww=
224397eadbeSBram Moolenaar  new
225397eadbeSBram Moolenaar  call Put_Dig_BS("0","0")
226397eadbeSBram Moolenaar  call assert_equal("∞", getline('.'))
227397eadbeSBram Moolenaar  " not a digraph
228397eadbeSBram Moolenaar  call Put_Dig_BS("e","l")
229397eadbeSBram Moolenaar  call assert_equal("l", getline('.'))
230397eadbeSBram Moolenaar  call Put_Dig_BS("h","t")
231397eadbeSBram Moolenaar  call assert_equal("þ", getline('.'))
232397eadbeSBram Moolenaar  " digraph "ab" is the same as "ba"
233397eadbeSBram Moolenaar  call Put_Dig_BS("a","b")
234397eadbeSBram Moolenaar  call Put_Dig_BS("b","a")
235397eadbeSBram Moolenaar  call assert_equal(["ば","ば"], getline(line('.')-1,line('.')))
236397eadbeSBram Moolenaar  " Euro sign
237397eadbeSBram Moolenaar  call Put_Dig_BS("e","=")
238397eadbeSBram Moolenaar  call Put_Dig_BS("=","e")
239397eadbeSBram Moolenaar  call Put_Dig_BS("E","u")
240397eadbeSBram Moolenaar  call Put_Dig_BS("u","E")
241397eadbeSBram Moolenaar  call assert_equal(['е']+repeat(["€"],3), getline(line('.')-3,line('.')))
242397eadbeSBram Moolenaar  " Rouble sign
243397eadbeSBram Moolenaar  call Put_Dig_BS("R","=")
244397eadbeSBram Moolenaar  call Put_Dig_BS("=","R")
245397eadbeSBram Moolenaar  call Put_Dig_BS("=","P")
246397eadbeSBram Moolenaar  call Put_Dig_BS("P","=")
247397eadbeSBram Moolenaar  call assert_equal(['Р']+repeat(["₽"],2)+['П'], getline(line('.')-3,line('.')))
248397eadbeSBram Moolenaar  " Not a digraph: this is different from <c-k>!
249397eadbeSBram Moolenaar  call Put_Dig_BS("a","\<bs>")
250397eadbeSBram Moolenaar  call Put_Dig_BS("\<bs>","a")
251397eadbeSBram Moolenaar  call assert_equal(['','a'], getline(line('.')-1,line('.')))
252397eadbeSBram Moolenaar  " Grave
253397eadbeSBram Moolenaar  call Put_Dig_BS("a","!")
254397eadbeSBram Moolenaar  call Put_Dig_BS("!","e")
255397eadbeSBram Moolenaar  call Put_Dig_BS("b","!") " not defined
256397eadbeSBram Moolenaar  call assert_equal(["à", "è", "!"], getline(line('.')-2,line('.')))
257397eadbeSBram Moolenaar  " Acute accent
258397eadbeSBram Moolenaar  call Put_Dig_BS("a","'")
259397eadbeSBram Moolenaar  call Put_Dig_BS("'","e")
260397eadbeSBram Moolenaar  call Put_Dig_BS("b","'") " not defined
261397eadbeSBram Moolenaar  call assert_equal(["á", "é", "'"], getline(line('.')-2,line('.')))
262397eadbeSBram Moolenaar  " Cicumflex
263397eadbeSBram Moolenaar  call Put_Dig_BS("a",">")
264397eadbeSBram Moolenaar  call Put_Dig_BS(">","e")
265397eadbeSBram Moolenaar  call Put_Dig_BS("b",">") " not defined
266397eadbeSBram Moolenaar  call assert_equal(['â', 'ê', '>'], getline(line('.')-2,line('.')))
267397eadbeSBram Moolenaar  " Tilde
268397eadbeSBram Moolenaar  call Put_Dig_BS("o","~")
269397eadbeSBram Moolenaar  call Put_Dig_BS("~","u") " not defined
270397eadbeSBram Moolenaar  call Put_Dig_BS("z","~") " not defined
271397eadbeSBram Moolenaar  call assert_equal(['õ', 'u', '~'], getline(line('.')-2,line('.')))
272397eadbeSBram Moolenaar  " Tilde
273397eadbeSBram Moolenaar  call Put_Dig_BS("o","?")
274397eadbeSBram Moolenaar  call Put_Dig_BS("?","u")
275397eadbeSBram Moolenaar  call Put_Dig_BS("z","?") " not defined
276397eadbeSBram Moolenaar  call assert_equal(['õ', 'ũ', '?'], getline(line('.')-2,line('.')))
277397eadbeSBram Moolenaar  " Macron
278397eadbeSBram Moolenaar  call Put_Dig_BS("o","-")
279397eadbeSBram Moolenaar  call Put_Dig_BS("-","u")
280397eadbeSBram Moolenaar  call Put_Dig_BS("z","-") " not defined
281397eadbeSBram Moolenaar  call assert_equal(['ō', 'ū', '-'], getline(line('.')-2,line('.')))
282397eadbeSBram Moolenaar  " Breve
283397eadbeSBram Moolenaar  call Put_Dig_BS("o","(")
284397eadbeSBram Moolenaar  call Put_Dig_BS("(","u")
285397eadbeSBram Moolenaar  call Put_Dig_BS("z","(") " not defined
286397eadbeSBram Moolenaar  call assert_equal(['ŏ', 'ŭ', '('], getline(line('.')-2,line('.')))
287397eadbeSBram Moolenaar  " Dot above
288397eadbeSBram Moolenaar  call Put_Dig_BS("b",".")
289397eadbeSBram Moolenaar  call Put_Dig_BS(".","e")
290397eadbeSBram Moolenaar  call Put_Dig_BS("a",".") " not defined
291397eadbeSBram Moolenaar  call assert_equal(['ḃ', 'ė', '.'], getline(line('.')-2,line('.')))
292397eadbeSBram Moolenaar  " Diaresis
293397eadbeSBram Moolenaar  call Put_Dig_BS("a",":")
294397eadbeSBram Moolenaar  call Put_Dig_BS(":","u")
295397eadbeSBram Moolenaar  call Put_Dig_BS("b",":") " not defined
296397eadbeSBram Moolenaar  call assert_equal(['ä', 'ü', ':'], getline(line('.')-2,line('.')))
297397eadbeSBram Moolenaar  " Cedilla
298397eadbeSBram Moolenaar  call Put_Dig_BS("'",",")
299397eadbeSBram Moolenaar  call Put_Dig_BS(",","C")
300397eadbeSBram Moolenaar  call Put_Dig_BS("b",",") " not defined
301397eadbeSBram Moolenaar  call assert_equal(['¸', 'Ç', ','], getline(line('.')-2,line('.')))
302397eadbeSBram Moolenaar  " Underline
303397eadbeSBram Moolenaar  call Put_Dig_BS("B","_")
304397eadbeSBram Moolenaar  call Put_Dig_BS("_","t")
305397eadbeSBram Moolenaar  call Put_Dig_BS("a","_") " not defined
306397eadbeSBram Moolenaar  call assert_equal(['Ḇ', 'ṯ', '_'], getline(line('.')-2,line('.')))
307397eadbeSBram Moolenaar  " Stroke
308397eadbeSBram Moolenaar  call Put_Dig_BS("j","/")
309397eadbeSBram Moolenaar  call Put_Dig_BS("/","l")
310397eadbeSBram Moolenaar  call Put_Dig_BS("b","/") " not defined
311397eadbeSBram Moolenaar  call assert_equal(['/', 'ł', '/'], getline(line('.')-2,line('.')))
312397eadbeSBram Moolenaar  " Double acute
313397eadbeSBram Moolenaar  call Put_Dig_BS('O','"')
314397eadbeSBram Moolenaar  call Put_Dig_BS('"','y')
315397eadbeSBram Moolenaar  call Put_Dig_BS('b','"') " not defined
316397eadbeSBram Moolenaar  call assert_equal(['Ő', 'ÿ', '"'], getline(line('.')-2,line('.')))
317397eadbeSBram Moolenaar  " Ogonek
318397eadbeSBram Moolenaar  call Put_Dig_BS('u',';')
319397eadbeSBram Moolenaar  call Put_Dig_BS(';','E')
320397eadbeSBram Moolenaar  call Put_Dig_BS('b',';') " not defined
321397eadbeSBram Moolenaar  call assert_equal(['ų', 'Ę', ';'], getline(line('.')-2,line('.')))
322397eadbeSBram Moolenaar  " Caron
323397eadbeSBram Moolenaar  call Put_Dig_BS('u','<')
324397eadbeSBram Moolenaar  call Put_Dig_BS('<','E')
325397eadbeSBram Moolenaar  call Put_Dig_BS('b','<') " not defined
326397eadbeSBram Moolenaar  call assert_equal(['ǔ', 'Ě', '<'], getline(line('.')-2,line('.')))
327397eadbeSBram Moolenaar  " Ring above
328397eadbeSBram Moolenaar  call Put_Dig_BS('u','0')
329397eadbeSBram Moolenaar  call Put_Dig_BS('0','E') " not defined
330397eadbeSBram Moolenaar  call Put_Dig_BS('b','0') " not defined
331397eadbeSBram Moolenaar  call assert_equal(['ů', 'E', '0'], getline(line('.')-2,line('.')))
332397eadbeSBram Moolenaar  " Hook
333397eadbeSBram Moolenaar  call Put_Dig_BS('u','2')
334397eadbeSBram Moolenaar  call Put_Dig_BS('2','E')
335397eadbeSBram Moolenaar  call Put_Dig_BS('b','2') " not defined
336397eadbeSBram Moolenaar  call assert_equal(['ủ', 'Ẻ', '2'], getline(line('.')-2,line('.')))
337397eadbeSBram Moolenaar  " Horn
338397eadbeSBram Moolenaar  call Put_Dig_BS('u','9')
339397eadbeSBram Moolenaar  call Put_Dig_BS('9','E') " not defined
340397eadbeSBram Moolenaar  call Put_Dig_BS('b','9') " not defined
341397eadbeSBram Moolenaar  call assert_equal(['ư', 'E', '9'], getline(line('.')-2,line('.')))
342397eadbeSBram Moolenaar  " Cyrillic
343397eadbeSBram Moolenaar  call Put_Dig_BS('u','=')
344397eadbeSBram Moolenaar  call Put_Dig_BS('=','b')
345397eadbeSBram Moolenaar  call Put_Dig_BS('=','_')
346397eadbeSBram Moolenaar  call assert_equal(['у', 'б', '〓'], getline(line('.')-2,line('.')))
347397eadbeSBram Moolenaar  " Greek
348397eadbeSBram Moolenaar  call Put_Dig_BS('u','*')
349397eadbeSBram Moolenaar  call Put_Dig_BS('*','b')
350397eadbeSBram Moolenaar  call Put_Dig_BS('*','_')
351397eadbeSBram Moolenaar  call assert_equal(['υ', 'β', '々'], getline(line('.')-2,line('.')))
352397eadbeSBram Moolenaar  " Greek/Cyrillic special
353397eadbeSBram Moolenaar  call Put_Dig_BS('u','%')
354397eadbeSBram Moolenaar  call Put_Dig_BS('%','b') " not defined
355397eadbeSBram Moolenaar  call Put_Dig_BS('%','_') " not defined
356397eadbeSBram Moolenaar  call assert_equal(['ύ', 'b', '_'], getline(line('.')-2,line('.')))
357397eadbeSBram Moolenaar  " Arabic
358397eadbeSBram Moolenaar  call Put_Dig_BS('u','+')
359397eadbeSBram Moolenaar  call Put_Dig_BS('+','b')
360397eadbeSBram Moolenaar  call Put_Dig_BS('+','_') " japanese industrial symbol
361397eadbeSBram Moolenaar  call assert_equal(['+', 'ب', '〄'], getline(line('.')-2,line('.')))
362397eadbeSBram Moolenaar  " Hebrew
363397eadbeSBram Moolenaar  call Put_Dig_BS('Q','+')
364397eadbeSBram Moolenaar  call Put_Dig_BS('+','B')
365397eadbeSBram Moolenaar  call Put_Dig_BS('+','X')
366397eadbeSBram Moolenaar  call assert_equal(['ק', 'ב', 'ח'], getline(line('.')-2,line('.')))
367397eadbeSBram Moolenaar  " Latin
368397eadbeSBram Moolenaar  call Put_Dig_BS('a','3')
369397eadbeSBram Moolenaar  call Put_Dig_BS('A','3')
370397eadbeSBram Moolenaar  call Put_Dig_BS('3','X')
371397eadbeSBram Moolenaar  call assert_equal(['ǣ', 'Ǣ', 'X'], getline(line('.')-2,line('.')))
372397eadbeSBram Moolenaar  " Bopomofo
373397eadbeSBram Moolenaar  call Put_Dig_BS('a','4')
374397eadbeSBram Moolenaar  call Put_Dig_BS('A','4')
375397eadbeSBram Moolenaar  call Put_Dig_BS('4','X')
376397eadbeSBram Moolenaar  call assert_equal(['ㄚ', '4', 'X'], getline(line('.')-2,line('.')))
377397eadbeSBram Moolenaar  " Hiragana
378397eadbeSBram Moolenaar  call Put_Dig_BS('a','5')
379397eadbeSBram Moolenaar  call Put_Dig_BS('A','5')
380397eadbeSBram Moolenaar  call Put_Dig_BS('5','X')
381397eadbeSBram Moolenaar  call assert_equal(['あ', 'ぁ', 'X'], getline(line('.')-2,line('.')))
382397eadbeSBram Moolenaar  " Katakana
383397eadbeSBram Moolenaar  call Put_Dig_BS('a','6')
384397eadbeSBram Moolenaar  call Put_Dig_BS('A','6')
385397eadbeSBram Moolenaar  call Put_Dig_BS('6','X')
386397eadbeSBram Moolenaar  call assert_equal(['ァ', 'ア', 'X'], getline(line('.')-2,line('.')))
387397eadbeSBram Moolenaar  " Superscripts
388397eadbeSBram Moolenaar  call Put_Dig_BS('1','S')
389397eadbeSBram Moolenaar  call Put_Dig_BS('2','S')
390397eadbeSBram Moolenaar  call Put_Dig_BS('3','S')
391397eadbeSBram Moolenaar  call assert_equal(['¹', '²', '³'], getline(line('.')-2,line('.')))
392397eadbeSBram Moolenaar  " Subscripts
393397eadbeSBram Moolenaar  call Put_Dig_BS('1','s')
394397eadbeSBram Moolenaar  call Put_Dig_BS('2','s')
395397eadbeSBram Moolenaar  call Put_Dig_BS('3','s')
396397eadbeSBram Moolenaar  call assert_equal(['₁', '₂', '₃'], getline(line('.')-2,line('.')))
397397eadbeSBram Moolenaar  " Eszet (only lowercase)
398397eadbeSBram Moolenaar  call Put_Dig_BS("s","s")
399397eadbeSBram Moolenaar  call Put_Dig_BS("S","S") " start of string
400397eadbeSBram Moolenaar  call assert_equal(["ß", "˜"], getline(line('.')-1,line('.')))
401397eadbeSBram Moolenaar  " High bit set (different from <c-k>)
402397eadbeSBram Moolenaar  call Put_Dig_BS("a"," ")
403397eadbeSBram Moolenaar  call Put_Dig_BS(" ","A")
404397eadbeSBram Moolenaar  call assert_equal([' ', 'A'], getline(line('.')-1,line('.')))
405397eadbeSBram Moolenaar  " Escape is not part of a digraph (different from <c-k>)
406397eadbeSBram Moolenaar  call Put_Dig_BS("a","\<esc>")
407397eadbeSBram Moolenaar  call Put_Dig_BS("\<esc>","A")
408397eadbeSBram Moolenaar  call assert_equal(['', ''], getline(line('.')-1,line('.')))
409397eadbeSBram Moolenaar  " define some custom digraphs
410397eadbeSBram Moolenaar  " old: 00 ∞
411397eadbeSBram Moolenaar  " old: el l
412397eadbeSBram Moolenaar  digraph 00 9216
413397eadbeSBram Moolenaar  digraph el 0252
414397eadbeSBram Moolenaar  call Put_Dig_BS("0","0")
415397eadbeSBram Moolenaar  call Put_Dig_BS("e","l")
416397eadbeSBram Moolenaar  " Reset digraphs
417397eadbeSBram Moolenaar  digraph 00 8734
418397eadbeSBram Moolenaar  digraph el 108
419397eadbeSBram Moolenaar  call Put_Dig_BS("0","0")
420397eadbeSBram Moolenaar  call Put_Dig_BS("e","l")
421397eadbeSBram Moolenaar  call assert_equal(['␀', 'ü', '∞', 'l'], getline(line('.')-3,line('.')))
422397eadbeSBram Moolenaar  set nodigraph ww&vim
423397eadbeSBram Moolenaar  bw!
424397eadbeSBram Moolenaarendfunc
425397eadbeSBram Moolenaar
426397eadbeSBram Moolenaar" vim: tabstop=2 shiftwidth=0 sts=-1 expandtab
427