1397eadbeSBram Moolenaar" Tests for digraphs 2397eadbeSBram Moolenaar 3b46fecd3SBram Moolenaarsource check.vim 4b46fecd3SBram MoolenaarCheckFeature digraphs 5397eadbeSBram Moolenaar 65f73ef8dSBram Moolenaarfunc Put_Dig(chars) 7397eadbeSBram Moolenaar exe "norm! o\<c-k>".a:chars 8397eadbeSBram Moolenaarendfu 9397eadbeSBram Moolenaar 105f73ef8dSBram Moolenaarfunc Put_Dig_BS(char1, char2) 11397eadbeSBram Moolenaar exe "norm! o".a:char1."\<bs>".a:char2 12397eadbeSBram Moolenaarendfu 13397eadbeSBram Moolenaar 145f73ef8dSBram Moolenaarfunc Test_digraphs() 15397eadbeSBram Moolenaar new 16397eadbeSBram Moolenaar call Put_Dig("00") 17397eadbeSBram Moolenaar call assert_equal("∞", getline('.')) 18397eadbeSBram Moolenaar " not a digraph 19397eadbeSBram Moolenaar call Put_Dig("el") 20397eadbeSBram Moolenaar call assert_equal("l", getline('.')) 21397eadbeSBram Moolenaar call Put_Dig("ht") 22397eadbeSBram Moolenaar call assert_equal("þ", getline('.')) 23397eadbeSBram Moolenaar " digraph "ab" is the same as "ba" 24397eadbeSBram Moolenaar call Put_Dig("ab") 25397eadbeSBram Moolenaar call Put_Dig("ba") 26397eadbeSBram Moolenaar call assert_equal(["ば","ば"], getline(line('.')-1,line('.'))) 27397eadbeSBram Moolenaar " Euro sign 28397eadbeSBram Moolenaar call Put_Dig("e=") 29397eadbeSBram Moolenaar call Put_Dig("=e") 30397eadbeSBram Moolenaar call Put_Dig("Eu") 31397eadbeSBram Moolenaar call Put_Dig("uE") 32397eadbeSBram Moolenaar call assert_equal(['е']+repeat(["€"],3), getline(line('.')-3,line('.'))) 33397eadbeSBram Moolenaar " Rouble sign 34397eadbeSBram Moolenaar call Put_Dig("R=") 35397eadbeSBram Moolenaar call Put_Dig("=R") 36397eadbeSBram Moolenaar call Put_Dig("=P") 37397eadbeSBram Moolenaar call Put_Dig("P=") 38397eadbeSBram Moolenaar call assert_equal(['Р']+repeat(["₽"],2)+['П'], getline(line('.')-3,line('.'))) 39397eadbeSBram Moolenaar " Not a digraph 40397eadbeSBram Moolenaar call Put_Dig("a\<bs>") 41397eadbeSBram Moolenaar call Put_Dig("\<bs>a") 42397eadbeSBram Moolenaar call assert_equal(["<BS>", "<BS>a"], getline(line('.')-1,line('.'))) 43397eadbeSBram Moolenaar " Grave 44397eadbeSBram Moolenaar call Put_Dig("a!") 45397eadbeSBram Moolenaar call Put_Dig("!e") 46397eadbeSBram Moolenaar call Put_Dig("b!") " not defined 47397eadbeSBram Moolenaar call assert_equal(["à", "è", "!"], getline(line('.')-2,line('.'))) 48397eadbeSBram Moolenaar " Acute accent 49397eadbeSBram Moolenaar call Put_Dig("a'") 50397eadbeSBram Moolenaar call Put_Dig("'e") 51397eadbeSBram Moolenaar call Put_Dig("b'") " not defined 52397eadbeSBram Moolenaar call assert_equal(["á", "é", "'"], getline(line('.')-2,line('.'))) 53397eadbeSBram Moolenaar " Cicumflex 54397eadbeSBram Moolenaar call Put_Dig("a>") 55397eadbeSBram Moolenaar call Put_Dig(">e") 56397eadbeSBram Moolenaar call Put_Dig("b>") " not defined 57397eadbeSBram Moolenaar call assert_equal(['â', 'ê', '>'], getline(line('.')-2,line('.'))) 58397eadbeSBram Moolenaar " Tilde 59397eadbeSBram Moolenaar call Put_Dig("o~") 60397eadbeSBram Moolenaar call Put_Dig("~u") " not defined 61397eadbeSBram Moolenaar call Put_Dig("z~") " not defined 62397eadbeSBram Moolenaar call assert_equal(['õ', 'u', '~'], getline(line('.')-2,line('.'))) 63397eadbeSBram Moolenaar " Tilde 64397eadbeSBram Moolenaar call Put_Dig("o?") 65397eadbeSBram Moolenaar call Put_Dig("?u") 66397eadbeSBram Moolenaar call Put_Dig("z?") " not defined 67397eadbeSBram Moolenaar call assert_equal(['õ', 'ũ', '?'], getline(line('.')-2,line('.'))) 68397eadbeSBram Moolenaar " Macron 69397eadbeSBram Moolenaar call Put_Dig("o-") 70397eadbeSBram Moolenaar call Put_Dig("-u") 71397eadbeSBram Moolenaar call Put_Dig("z-") " not defined 72397eadbeSBram Moolenaar call assert_equal(['ō', 'ū', '-'], getline(line('.')-2,line('.'))) 73397eadbeSBram Moolenaar " Breve 74397eadbeSBram Moolenaar call Put_Dig("o(") 75397eadbeSBram Moolenaar call Put_Dig("(u") 76397eadbeSBram Moolenaar call Put_Dig("z(") " not defined 77397eadbeSBram Moolenaar call assert_equal(['ŏ', 'ŭ', '('], getline(line('.')-2,line('.'))) 78397eadbeSBram Moolenaar " Dot above 79397eadbeSBram Moolenaar call Put_Dig("b.") 80397eadbeSBram Moolenaar call Put_Dig(".e") 81397eadbeSBram Moolenaar call Put_Dig("a.") " not defined 82397eadbeSBram Moolenaar call assert_equal(['ḃ', 'ė', '.'], getline(line('.')-2,line('.'))) 834b96df5aSBram Moolenaar " Diaeresis 84397eadbeSBram Moolenaar call Put_Dig("a:") 85397eadbeSBram Moolenaar call Put_Dig(":u") 86397eadbeSBram Moolenaar call Put_Dig("b:") " not defined 87397eadbeSBram Moolenaar call assert_equal(['ä', 'ü', ':'], getline(line('.')-2,line('.'))) 88397eadbeSBram Moolenaar " Cedilla 89397eadbeSBram Moolenaar call Put_Dig("',") 90397eadbeSBram Moolenaar call Put_Dig(",C") 91397eadbeSBram Moolenaar call Put_Dig("b,") " not defined 92397eadbeSBram Moolenaar call assert_equal(['¸', 'Ç', ','], getline(line('.')-2,line('.'))) 93397eadbeSBram Moolenaar " Underline 94397eadbeSBram Moolenaar call Put_Dig("B_") 95397eadbeSBram Moolenaar call Put_Dig("_t") 96397eadbeSBram Moolenaar call Put_Dig("a_") " not defined 97397eadbeSBram Moolenaar call assert_equal(['Ḇ', 'ṯ', '_'], getline(line('.')-2,line('.'))) 98397eadbeSBram Moolenaar " Stroke 99397eadbeSBram Moolenaar call Put_Dig("j/") 100397eadbeSBram Moolenaar call Put_Dig("/l") 101397eadbeSBram Moolenaar call Put_Dig("b/") " not defined 102397eadbeSBram Moolenaar call assert_equal(['/', 'ł', '/'], getline(line('.')-2,line('.'))) 103397eadbeSBram Moolenaar " Double acute 104397eadbeSBram Moolenaar call Put_Dig('O"') 105397eadbeSBram Moolenaar call Put_Dig('"y') 106397eadbeSBram Moolenaar call Put_Dig('b"') " not defined 107397eadbeSBram Moolenaar call assert_equal(['Ő', 'ÿ', '"'], getline(line('.')-2,line('.'))) 108397eadbeSBram Moolenaar " Ogonek 109397eadbeSBram Moolenaar call Put_Dig('u;') 110397eadbeSBram Moolenaar call Put_Dig(';E') 111397eadbeSBram Moolenaar call Put_Dig('b;') " not defined 112397eadbeSBram Moolenaar call assert_equal(['ų', 'Ę', ';'], getline(line('.')-2,line('.'))) 113397eadbeSBram Moolenaar " Caron 114397eadbeSBram Moolenaar call Put_Dig('u<') 115397eadbeSBram Moolenaar call Put_Dig('<E') 116397eadbeSBram Moolenaar call Put_Dig('b<') " not defined 117397eadbeSBram Moolenaar call assert_equal(['ǔ', 'Ě', '<'], getline(line('.')-2,line('.'))) 118397eadbeSBram Moolenaar " Ring above 119397eadbeSBram Moolenaar call Put_Dig('u0') 120397eadbeSBram Moolenaar call Put_Dig('0E') " not defined 121397eadbeSBram Moolenaar call Put_Dig('b0') " not defined 122397eadbeSBram Moolenaar call assert_equal(['ů', 'E', '0'], getline(line('.')-2,line('.'))) 123397eadbeSBram Moolenaar " Hook 124397eadbeSBram Moolenaar call Put_Dig('u2') 125397eadbeSBram Moolenaar call Put_Dig('2E') 126397eadbeSBram Moolenaar call Put_Dig('b2') " not defined 127397eadbeSBram Moolenaar call assert_equal(['ủ', 'Ẻ', '2'], getline(line('.')-2,line('.'))) 128397eadbeSBram Moolenaar " Horn 129397eadbeSBram Moolenaar call Put_Dig('u9') 130397eadbeSBram Moolenaar call Put_Dig('9E') " not defined 131397eadbeSBram Moolenaar call Put_Dig('b9') " not defined 132397eadbeSBram Moolenaar call assert_equal(['ư', 'E', '9'], getline(line('.')-2,line('.'))) 133397eadbeSBram Moolenaar " Cyrillic 134397eadbeSBram Moolenaar call Put_Dig('u=') 135397eadbeSBram Moolenaar call Put_Dig('=b') 136397eadbeSBram Moolenaar call Put_Dig('=_') 137397eadbeSBram Moolenaar call assert_equal(['у', 'б', '〓'], getline(line('.')-2,line('.'))) 138397eadbeSBram Moolenaar " Greek 139397eadbeSBram Moolenaar call Put_Dig('u*') 140397eadbeSBram Moolenaar call Put_Dig('*b') 141397eadbeSBram Moolenaar call Put_Dig('*_') 142397eadbeSBram Moolenaar call assert_equal(['υ', 'β', '々'], getline(line('.')-2,line('.'))) 143397eadbeSBram Moolenaar " Greek/Cyrillic special 144397eadbeSBram Moolenaar call Put_Dig('u%') 145397eadbeSBram Moolenaar call Put_Dig('%b') " not defined 146397eadbeSBram Moolenaar call Put_Dig('%_') " not defined 147397eadbeSBram Moolenaar call assert_equal(['ύ', 'b', '_'], getline(line('.')-2,line('.'))) 148397eadbeSBram Moolenaar " Arabic 149397eadbeSBram Moolenaar call Put_Dig('u+') 150397eadbeSBram Moolenaar call Put_Dig('+b') 151397eadbeSBram Moolenaar call Put_Dig('+_') " japanese industrial symbol 152397eadbeSBram Moolenaar call assert_equal(['+', 'ب', '〄'], getline(line('.')-2,line('.'))) 153397eadbeSBram Moolenaar " Hebrew 154397eadbeSBram Moolenaar call Put_Dig('Q+') 155397eadbeSBram Moolenaar call Put_Dig('+B') 156397eadbeSBram Moolenaar call Put_Dig('+X') 157397eadbeSBram Moolenaar call assert_equal(['ק', 'ב', 'ח'], getline(line('.')-2,line('.'))) 158397eadbeSBram Moolenaar " Latin 159397eadbeSBram Moolenaar call Put_Dig('a3') 160397eadbeSBram Moolenaar call Put_Dig('A3') 161397eadbeSBram Moolenaar call Put_Dig('3X') 162397eadbeSBram Moolenaar call assert_equal(['ǣ', 'Ǣ', 'X'], getline(line('.')-2,line('.'))) 163397eadbeSBram Moolenaar " Bopomofo 164397eadbeSBram Moolenaar call Put_Dig('a4') 165397eadbeSBram Moolenaar call Put_Dig('A4') 166397eadbeSBram Moolenaar call Put_Dig('4X') 167397eadbeSBram Moolenaar call assert_equal(['ㄚ', '4', 'X'], getline(line('.')-2,line('.'))) 168397eadbeSBram Moolenaar " Hiragana 169397eadbeSBram Moolenaar call Put_Dig('a5') 170397eadbeSBram Moolenaar call Put_Dig('A5') 171397eadbeSBram Moolenaar call Put_Dig('5X') 172397eadbeSBram Moolenaar call assert_equal(['あ', 'ぁ', 'X'], getline(line('.')-2,line('.'))) 173397eadbeSBram Moolenaar " Katakana 174397eadbeSBram Moolenaar call Put_Dig('a6') 175397eadbeSBram Moolenaar call Put_Dig('A6') 176397eadbeSBram Moolenaar call Put_Dig('6X') 177397eadbeSBram Moolenaar call assert_equal(['ァ', 'ア', 'X'], getline(line('.')-2,line('.'))) 178397eadbeSBram Moolenaar " Superscripts 179397eadbeSBram Moolenaar call Put_Dig('1S') 180397eadbeSBram Moolenaar call Put_Dig('2S') 181397eadbeSBram Moolenaar call Put_Dig('3S') 182397eadbeSBram Moolenaar call assert_equal(['¹', '²', '³'], getline(line('.')-2,line('.'))) 183397eadbeSBram Moolenaar " Subscripts 184397eadbeSBram Moolenaar call Put_Dig('1s') 185397eadbeSBram Moolenaar call Put_Dig('2s') 186397eadbeSBram Moolenaar call Put_Dig('3s') 187397eadbeSBram Moolenaar call assert_equal(['₁', '₂', '₃'], getline(line('.')-2,line('.'))) 188397eadbeSBram Moolenaar " Eszet (only lowercase) 189397eadbeSBram Moolenaar call Put_Dig("ss") 190397eadbeSBram Moolenaar call Put_Dig("SS") " start of string 191397eadbeSBram Moolenaar call assert_equal(["ß", ""], getline(line('.')-1,line('.'))) 192397eadbeSBram Moolenaar " High bit set 193397eadbeSBram Moolenaar call Put_Dig("a ") 194397eadbeSBram Moolenaar call Put_Dig(" A") 195397eadbeSBram Moolenaar call assert_equal(['á', 'Á'], getline(line('.')-1,line('.'))) 196397eadbeSBram Moolenaar " Escape is not part of a digraph 197397eadbeSBram Moolenaar call Put_Dig("a\<esc>") 198397eadbeSBram Moolenaar call Put_Dig("\<esc>A") 199397eadbeSBram Moolenaar call assert_equal(['', 'A'], getline(line('.')-1,line('.'))) 200397eadbeSBram Moolenaar " define some custom digraphs 201397eadbeSBram Moolenaar " old: 00 ∞ 202397eadbeSBram Moolenaar " old: el l 203397eadbeSBram Moolenaar digraph 00 9216 204397eadbeSBram Moolenaar digraph el 0252 205397eadbeSBram Moolenaar call Put_Dig("00") 206397eadbeSBram Moolenaar call Put_Dig("el") 207397eadbeSBram Moolenaar " Reset digraphs 208397eadbeSBram Moolenaar digraph 00 8734 209397eadbeSBram Moolenaar digraph el 108 210397eadbeSBram Moolenaar call Put_Dig("00") 211397eadbeSBram Moolenaar call Put_Dig("el") 212397eadbeSBram Moolenaar call assert_equal(['␀', 'ü', '∞', 'l'], getline(line('.')-3,line('.'))) 213397eadbeSBram Moolenaar bw! 214397eadbeSBram Moolenaarendfunc 215397eadbeSBram Moolenaar 2165f73ef8dSBram Moolenaarfunc Test_digraphs_option() 217397eadbeSBram Moolenaar " reset whichwrap option, so that testing <esc><bs>A works, 218397eadbeSBram Moolenaar " without moving up a line 219dfd63e30SBram Moolenaar set digraph ww= 220397eadbeSBram Moolenaar new 221397eadbeSBram Moolenaar call Put_Dig_BS("0","0") 222397eadbeSBram Moolenaar call assert_equal("∞", getline('.')) 223397eadbeSBram Moolenaar " not a digraph 224397eadbeSBram Moolenaar call Put_Dig_BS("e","l") 225397eadbeSBram Moolenaar call assert_equal("l", getline('.')) 226397eadbeSBram Moolenaar call Put_Dig_BS("h","t") 227397eadbeSBram Moolenaar call assert_equal("þ", getline('.')) 228397eadbeSBram Moolenaar " digraph "ab" is the same as "ba" 229397eadbeSBram Moolenaar call Put_Dig_BS("a","b") 230397eadbeSBram Moolenaar call Put_Dig_BS("b","a") 231397eadbeSBram Moolenaar call assert_equal(["ば","ば"], getline(line('.')-1,line('.'))) 232397eadbeSBram Moolenaar " Euro sign 233397eadbeSBram Moolenaar call Put_Dig_BS("e","=") 234397eadbeSBram Moolenaar call Put_Dig_BS("=","e") 235397eadbeSBram Moolenaar call Put_Dig_BS("E","u") 236397eadbeSBram Moolenaar call Put_Dig_BS("u","E") 237397eadbeSBram Moolenaar call assert_equal(['е']+repeat(["€"],3), getline(line('.')-3,line('.'))) 238397eadbeSBram Moolenaar " Rouble sign 239397eadbeSBram Moolenaar call Put_Dig_BS("R","=") 240397eadbeSBram Moolenaar call Put_Dig_BS("=","R") 241397eadbeSBram Moolenaar call Put_Dig_BS("=","P") 242397eadbeSBram Moolenaar call Put_Dig_BS("P","=") 243397eadbeSBram Moolenaar call assert_equal(['Р']+repeat(["₽"],2)+['П'], getline(line('.')-3,line('.'))) 244397eadbeSBram Moolenaar " Not a digraph: this is different from <c-k>! 245397eadbeSBram Moolenaar call Put_Dig_BS("a","\<bs>") 246397eadbeSBram Moolenaar call Put_Dig_BS("\<bs>","a") 247397eadbeSBram Moolenaar call assert_equal(['','a'], getline(line('.')-1,line('.'))) 248397eadbeSBram Moolenaar " Grave 249397eadbeSBram Moolenaar call Put_Dig_BS("a","!") 250397eadbeSBram Moolenaar call Put_Dig_BS("!","e") 251397eadbeSBram Moolenaar call Put_Dig_BS("b","!") " not defined 252397eadbeSBram Moolenaar call assert_equal(["à", "è", "!"], getline(line('.')-2,line('.'))) 253397eadbeSBram Moolenaar " Acute accent 254397eadbeSBram Moolenaar call Put_Dig_BS("a","'") 255397eadbeSBram Moolenaar call Put_Dig_BS("'","e") 256397eadbeSBram Moolenaar call Put_Dig_BS("b","'") " not defined 257397eadbeSBram Moolenaar call assert_equal(["á", "é", "'"], getline(line('.')-2,line('.'))) 258397eadbeSBram Moolenaar " Cicumflex 259397eadbeSBram Moolenaar call Put_Dig_BS("a",">") 260397eadbeSBram Moolenaar call Put_Dig_BS(">","e") 261397eadbeSBram Moolenaar call Put_Dig_BS("b",">") " not defined 262397eadbeSBram Moolenaar call assert_equal(['â', 'ê', '>'], getline(line('.')-2,line('.'))) 263397eadbeSBram Moolenaar " Tilde 264397eadbeSBram Moolenaar call Put_Dig_BS("o","~") 265397eadbeSBram Moolenaar call Put_Dig_BS("~","u") " not defined 266397eadbeSBram Moolenaar call Put_Dig_BS("z","~") " not defined 267397eadbeSBram Moolenaar call assert_equal(['õ', 'u', '~'], getline(line('.')-2,line('.'))) 268397eadbeSBram Moolenaar " Tilde 269397eadbeSBram Moolenaar call Put_Dig_BS("o","?") 270397eadbeSBram Moolenaar call Put_Dig_BS("?","u") 271397eadbeSBram Moolenaar call Put_Dig_BS("z","?") " not defined 272397eadbeSBram Moolenaar call assert_equal(['õ', 'ũ', '?'], getline(line('.')-2,line('.'))) 273397eadbeSBram Moolenaar " Macron 274397eadbeSBram Moolenaar call Put_Dig_BS("o","-") 275397eadbeSBram Moolenaar call Put_Dig_BS("-","u") 276397eadbeSBram Moolenaar call Put_Dig_BS("z","-") " not defined 277397eadbeSBram Moolenaar call assert_equal(['ō', 'ū', '-'], getline(line('.')-2,line('.'))) 278397eadbeSBram Moolenaar " Breve 279397eadbeSBram Moolenaar call Put_Dig_BS("o","(") 280397eadbeSBram Moolenaar call Put_Dig_BS("(","u") 281397eadbeSBram Moolenaar call Put_Dig_BS("z","(") " not defined 282397eadbeSBram Moolenaar call assert_equal(['ŏ', 'ŭ', '('], getline(line('.')-2,line('.'))) 283397eadbeSBram Moolenaar " Dot above 284397eadbeSBram Moolenaar call Put_Dig_BS("b",".") 285397eadbeSBram Moolenaar call Put_Dig_BS(".","e") 286397eadbeSBram Moolenaar call Put_Dig_BS("a",".") " not defined 287397eadbeSBram Moolenaar call assert_equal(['ḃ', 'ė', '.'], getline(line('.')-2,line('.'))) 2884b96df5aSBram Moolenaar " Diaeresis 289397eadbeSBram Moolenaar call Put_Dig_BS("a",":") 290397eadbeSBram Moolenaar call Put_Dig_BS(":","u") 291397eadbeSBram Moolenaar call Put_Dig_BS("b",":") " not defined 292397eadbeSBram Moolenaar call assert_equal(['ä', 'ü', ':'], getline(line('.')-2,line('.'))) 293397eadbeSBram Moolenaar " Cedilla 294397eadbeSBram Moolenaar call Put_Dig_BS("'",",") 295397eadbeSBram Moolenaar call Put_Dig_BS(",","C") 296397eadbeSBram Moolenaar call Put_Dig_BS("b",",") " not defined 297397eadbeSBram Moolenaar call assert_equal(['¸', 'Ç', ','], getline(line('.')-2,line('.'))) 298397eadbeSBram Moolenaar " Underline 299397eadbeSBram Moolenaar call Put_Dig_BS("B","_") 300397eadbeSBram Moolenaar call Put_Dig_BS("_","t") 301397eadbeSBram Moolenaar call Put_Dig_BS("a","_") " not defined 302397eadbeSBram Moolenaar call assert_equal(['Ḇ', 'ṯ', '_'], getline(line('.')-2,line('.'))) 303397eadbeSBram Moolenaar " Stroke 304397eadbeSBram Moolenaar call Put_Dig_BS("j","/") 305397eadbeSBram Moolenaar call Put_Dig_BS("/","l") 306397eadbeSBram Moolenaar call Put_Dig_BS("b","/") " not defined 307397eadbeSBram Moolenaar call assert_equal(['/', 'ł', '/'], getline(line('.')-2,line('.'))) 308397eadbeSBram Moolenaar " Double acute 309397eadbeSBram Moolenaar call Put_Dig_BS('O','"') 310397eadbeSBram Moolenaar call Put_Dig_BS('"','y') 311397eadbeSBram Moolenaar call Put_Dig_BS('b','"') " not defined 312397eadbeSBram Moolenaar call assert_equal(['Ő', 'ÿ', '"'], getline(line('.')-2,line('.'))) 313397eadbeSBram Moolenaar " Ogonek 314397eadbeSBram Moolenaar call Put_Dig_BS('u',';') 315397eadbeSBram Moolenaar call Put_Dig_BS(';','E') 316397eadbeSBram Moolenaar call Put_Dig_BS('b',';') " not defined 317397eadbeSBram Moolenaar call assert_equal(['ų', 'Ę', ';'], getline(line('.')-2,line('.'))) 318397eadbeSBram Moolenaar " Caron 319397eadbeSBram Moolenaar call Put_Dig_BS('u','<') 320397eadbeSBram Moolenaar call Put_Dig_BS('<','E') 321397eadbeSBram Moolenaar call Put_Dig_BS('b','<') " not defined 322397eadbeSBram Moolenaar call assert_equal(['ǔ', 'Ě', '<'], getline(line('.')-2,line('.'))) 323397eadbeSBram Moolenaar " Ring above 324397eadbeSBram Moolenaar call Put_Dig_BS('u','0') 325397eadbeSBram Moolenaar call Put_Dig_BS('0','E') " not defined 326397eadbeSBram Moolenaar call Put_Dig_BS('b','0') " not defined 327397eadbeSBram Moolenaar call assert_equal(['ů', 'E', '0'], getline(line('.')-2,line('.'))) 328397eadbeSBram Moolenaar " Hook 329397eadbeSBram Moolenaar call Put_Dig_BS('u','2') 330397eadbeSBram Moolenaar call Put_Dig_BS('2','E') 331397eadbeSBram Moolenaar call Put_Dig_BS('b','2') " not defined 332397eadbeSBram Moolenaar call assert_equal(['ủ', 'Ẻ', '2'], getline(line('.')-2,line('.'))) 333397eadbeSBram Moolenaar " Horn 334397eadbeSBram Moolenaar call Put_Dig_BS('u','9') 335397eadbeSBram Moolenaar call Put_Dig_BS('9','E') " not defined 336397eadbeSBram Moolenaar call Put_Dig_BS('b','9') " not defined 337397eadbeSBram Moolenaar call assert_equal(['ư', 'E', '9'], getline(line('.')-2,line('.'))) 338397eadbeSBram Moolenaar " Cyrillic 339397eadbeSBram Moolenaar call Put_Dig_BS('u','=') 340397eadbeSBram Moolenaar call Put_Dig_BS('=','b') 341397eadbeSBram Moolenaar call Put_Dig_BS('=','_') 342397eadbeSBram Moolenaar call assert_equal(['у', 'б', '〓'], getline(line('.')-2,line('.'))) 343397eadbeSBram Moolenaar " Greek 344397eadbeSBram Moolenaar call Put_Dig_BS('u','*') 345397eadbeSBram Moolenaar call Put_Dig_BS('*','b') 346397eadbeSBram Moolenaar call Put_Dig_BS('*','_') 347397eadbeSBram Moolenaar call assert_equal(['υ', 'β', '々'], getline(line('.')-2,line('.'))) 348397eadbeSBram Moolenaar " Greek/Cyrillic special 349397eadbeSBram Moolenaar call Put_Dig_BS('u','%') 350397eadbeSBram Moolenaar call Put_Dig_BS('%','b') " not defined 351397eadbeSBram Moolenaar call Put_Dig_BS('%','_') " not defined 352397eadbeSBram Moolenaar call assert_equal(['ύ', 'b', '_'], getline(line('.')-2,line('.'))) 353397eadbeSBram Moolenaar " Arabic 354397eadbeSBram Moolenaar call Put_Dig_BS('u','+') 355397eadbeSBram Moolenaar call Put_Dig_BS('+','b') 356397eadbeSBram Moolenaar call Put_Dig_BS('+','_') " japanese industrial symbol 357397eadbeSBram Moolenaar call assert_equal(['+', 'ب', '〄'], getline(line('.')-2,line('.'))) 358397eadbeSBram Moolenaar " Hebrew 359397eadbeSBram Moolenaar call Put_Dig_BS('Q','+') 360397eadbeSBram Moolenaar call Put_Dig_BS('+','B') 361397eadbeSBram Moolenaar call Put_Dig_BS('+','X') 362397eadbeSBram Moolenaar call assert_equal(['ק', 'ב', 'ח'], getline(line('.')-2,line('.'))) 363397eadbeSBram Moolenaar " Latin 364397eadbeSBram Moolenaar call Put_Dig_BS('a','3') 365397eadbeSBram Moolenaar call Put_Dig_BS('A','3') 366397eadbeSBram Moolenaar call Put_Dig_BS('3','X') 367397eadbeSBram Moolenaar call assert_equal(['ǣ', 'Ǣ', 'X'], getline(line('.')-2,line('.'))) 368397eadbeSBram Moolenaar " Bopomofo 369397eadbeSBram Moolenaar call Put_Dig_BS('a','4') 370397eadbeSBram Moolenaar call Put_Dig_BS('A','4') 371397eadbeSBram Moolenaar call Put_Dig_BS('4','X') 372397eadbeSBram Moolenaar call assert_equal(['ㄚ', '4', 'X'], getline(line('.')-2,line('.'))) 373397eadbeSBram Moolenaar " Hiragana 374397eadbeSBram Moolenaar call Put_Dig_BS('a','5') 375397eadbeSBram Moolenaar call Put_Dig_BS('A','5') 376397eadbeSBram Moolenaar call Put_Dig_BS('5','X') 377397eadbeSBram Moolenaar call assert_equal(['あ', 'ぁ', 'X'], getline(line('.')-2,line('.'))) 378397eadbeSBram Moolenaar " Katakana 379397eadbeSBram Moolenaar call Put_Dig_BS('a','6') 380397eadbeSBram Moolenaar call Put_Dig_BS('A','6') 381397eadbeSBram Moolenaar call Put_Dig_BS('6','X') 382397eadbeSBram Moolenaar call assert_equal(['ァ', 'ア', 'X'], getline(line('.')-2,line('.'))) 383397eadbeSBram Moolenaar " Superscripts 384397eadbeSBram Moolenaar call Put_Dig_BS('1','S') 385397eadbeSBram Moolenaar call Put_Dig_BS('2','S') 386397eadbeSBram Moolenaar call Put_Dig_BS('3','S') 387397eadbeSBram Moolenaar call assert_equal(['¹', '²', '³'], getline(line('.')-2,line('.'))) 388397eadbeSBram Moolenaar " Subscripts 389397eadbeSBram Moolenaar call Put_Dig_BS('1','s') 390397eadbeSBram Moolenaar call Put_Dig_BS('2','s') 391397eadbeSBram Moolenaar call Put_Dig_BS('3','s') 392397eadbeSBram Moolenaar call assert_equal(['₁', '₂', '₃'], getline(line('.')-2,line('.'))) 393397eadbeSBram Moolenaar " Eszet (only lowercase) 394397eadbeSBram Moolenaar call Put_Dig_BS("s","s") 395397eadbeSBram Moolenaar call Put_Dig_BS("S","S") " start of string 396397eadbeSBram Moolenaar call assert_equal(["ß", ""], getline(line('.')-1,line('.'))) 397397eadbeSBram Moolenaar " High bit set (different from <c-k>) 398397eadbeSBram Moolenaar call Put_Dig_BS("a"," ") 399397eadbeSBram Moolenaar call Put_Dig_BS(" ","A") 400397eadbeSBram Moolenaar call assert_equal([' ', 'A'], getline(line('.')-1,line('.'))) 401397eadbeSBram Moolenaar " Escape is not part of a digraph (different from <c-k>) 402397eadbeSBram Moolenaar call Put_Dig_BS("a","\<esc>") 403397eadbeSBram Moolenaar call Put_Dig_BS("\<esc>","A") 404397eadbeSBram Moolenaar call assert_equal(['', ''], getline(line('.')-1,line('.'))) 405397eadbeSBram Moolenaar " define some custom digraphs 406397eadbeSBram Moolenaar " old: 00 ∞ 407397eadbeSBram Moolenaar " old: el l 408397eadbeSBram Moolenaar digraph 00 9216 409397eadbeSBram Moolenaar digraph el 0252 410397eadbeSBram Moolenaar call Put_Dig_BS("0","0") 411397eadbeSBram Moolenaar call Put_Dig_BS("e","l") 412397eadbeSBram Moolenaar " Reset digraphs 413397eadbeSBram Moolenaar digraph 00 8734 414397eadbeSBram Moolenaar digraph el 108 415397eadbeSBram Moolenaar call Put_Dig_BS("0","0") 416397eadbeSBram Moolenaar call Put_Dig_BS("e","l") 417397eadbeSBram Moolenaar call assert_equal(['␀', 'ü', '∞', 'l'], getline(line('.')-3,line('.'))) 418397eadbeSBram Moolenaar set nodigraph ww&vim 419397eadbeSBram Moolenaar bw! 420397eadbeSBram Moolenaarendfunc 421397eadbeSBram Moolenaar 4225f73ef8dSBram Moolenaarfunc Test_digraphs_output() 423e25bc5abSBram Moolenaar new 424e25bc5abSBram Moolenaar let out = execute(':digraph') 425e25bc5abSBram Moolenaar call assert_equal('Eu € 8364', matchstr(out, '\C\<Eu\D*8364\>')) 426e25bc5abSBram Moolenaar call assert_equal('=e € 8364', matchstr(out, '\C=e\D*8364\>')) 427e25bc5abSBram Moolenaar call assert_equal('=R ₽ 8381', matchstr(out, '\C=R\D*8381\>')) 428e25bc5abSBram Moolenaar call assert_equal('=P ₽ 8381', matchstr(out, '\C=P\D*8381\>')) 429e25bc5abSBram Moolenaar call assert_equal('o: ö 246', matchstr(out, '\C\<o:\D*246\>')) 430e25bc5abSBram Moolenaar call assert_equal('v4 ㄪ 12586', matchstr(out, '\C\<v4\D*12586\>')) 431e25bc5abSBram Moolenaar call assert_equal("'0 ˚ 730", matchstr(out, '\C''0\D*730\>')) 432e25bc5abSBram Moolenaar call assert_equal('Z% Ж 1046', matchstr(out, '\C\<Z%\D*1046\>')) 433e25bc5abSBram Moolenaar call assert_equal('u- ū 363', matchstr(out, '\C\<u-\D*363\>')) 434e25bc5abSBram Moolenaar call assert_equal('SH ^A 1', matchstr(out, '\C\<SH\D*1\>')) 435e25bc5abSBram Moolenaar bw! 436e25bc5abSBram Moolenaarendfunc 437e25bc5abSBram Moolenaar 4385f73ef8dSBram Moolenaarfunc Test_loadkeymap() 439f3621359SBram Moolenaar if !has('keymap') 440f3621359SBram Moolenaar return 441f3621359SBram Moolenaar endif 442e25bc5abSBram Moolenaar new 443e25bc5abSBram Moolenaar set keymap=czech 444e25bc5abSBram Moolenaar set iminsert=0 445e25bc5abSBram Moolenaar call feedkeys("o|\<c-^>|01234567890|\<esc>", 'tx') 446e25bc5abSBram Moolenaar call assert_equal("|'é+ěščřžýáíé'", getline('.')) 447e25bc5abSBram Moolenaar " reset keymap and encoding option 448e25bc5abSBram Moolenaar set keymap= 449e25bc5abSBram Moolenaar bw! 450e25bc5abSBram Moolenaarendfunc 451e25bc5abSBram Moolenaar 4525f73ef8dSBram Moolenaarfunc Test_digraph_cmndline() 453e25bc5abSBram Moolenaar " Create digraph on commandline 454*91ffc8a5SBram Moolenaar call feedkeys(":\"\<c-k>Eu\<cr>", 'xt') 455*91ffc8a5SBram Moolenaar call assert_equal('"€', @:) 456*91ffc8a5SBram Moolenaar 457*91ffc8a5SBram Moolenaar " Canceling a CTRL-K on the cmdline 458*91ffc8a5SBram Moolenaar call feedkeys(":\"a\<c-k>\<esc>b\<cr>", 'xt') 459*91ffc8a5SBram Moolenaar call assert_equal('"ab', @:) 460e25bc5abSBram Moolenaarendfunc 461e25bc5abSBram Moolenaar 4625f73ef8dSBram Moolenaarfunc Test_show_digraph() 4635f73ef8dSBram Moolenaar new 4645f73ef8dSBram Moolenaar call Put_Dig("e=") 4655f73ef8dSBram Moolenaar call assert_equal("\n<е> 1077, Hex 0435, Oct 2065, Digr e=", execute('ascii')) 4665f73ef8dSBram Moolenaar bwipe! 4675f73ef8dSBram Moolenaarendfunc 4685f73ef8dSBram Moolenaar 469bc5020aaSBram Moolenaarfunc Test_show_digraph_cp1251() 470bc5020aaSBram Moolenaar new 471bc5020aaSBram Moolenaar set encoding=cp1251 472bc5020aaSBram Moolenaar call Put_Dig("='") 473bc5020aaSBram Moolenaar call assert_equal("\n<\xfa> <|z> <M-z> 250, Hex fa, Oct 372, Digr ='", execute('ascii')) 474bc5020aaSBram Moolenaar set encoding=utf-8 475bc5020aaSBram Moolenaar bwipe! 476bc5020aaSBram Moolenaarendfunc 477bc5020aaSBram Moolenaar 4789e4d8215SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 479