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