Patch 7.4.2082
Problem:    Not much test coverage for digraphs.
Solution:   Add a new style digraph test. (Christian Brabandt)
Files:      src/Makefile, src/testdir/test_alot.vim,
            src/testdir/test_digraph.vim


*** ../vim-7.4.2081/src/Makefile        2016-07-19 16:38:45.503087037 +0200
--- src/Makefile        2016-07-20 21:50:11.630625807 +0200
***************
*** 2061,2066 ****
--- 2061,2067 ----
        test_cscope \
        test_cursor_func \
        test_delete \
+       test_digraph \
        test_ex_undo \
        test_execute_func \
        test_expand \
*** ../vim-7.4.2081/src/testdir/test_alot.vim   2016-07-15 21:24:41.193452608 
+0200
--- src/testdir/test_alot.vim   2016-07-20 21:48:41.383560719 +0200
***************
*** 5,10 ****
--- 5,11 ----
  source test_autocmd.vim
  source test_cursor_func.vim
  source test_delete.vim
+ source test_digraph.vim
  source test_execute_func.vim
  source test_ex_undo.vim
  source test_expand.vim
*** ../vim-7.4.2081/src/testdir/test_digraph.vim        2016-07-20 
22:00:40.684089049 +0200
--- src/testdir/test_digraph.vim        2016-07-20 21:55:43.999185332 +0200
***************
*** 0 ****
--- 1,430 ----
+ " Tests for digraphs
+ 
+ if !has("digraphs") || !has("multi_byte")
+   finish
+ endif
+ 
+ func! Put_Dig(chars)
+   exe "norm! o\<c-k>".a:chars
+ endfu
+ 
+ func! Put_Dig_BS(char1, char2)
+   exe "norm! o".a:char1."\<bs>".a:char2
+ endfu
+ 
+ func! Test_digraphs()
+   let _enc=&enc
+   set nocp enc=utf8
+   new
+   call Put_Dig("00")
+   call assert_equal("∞", getline('.'))
+   " not a digraph
+   call Put_Dig("el")
+   call assert_equal("l", getline('.'))
+   call Put_Dig("ht")
+   call assert_equal("þ", getline('.'))
+   " digraph "ab" is the same as "ba"
+   call Put_Dig("ab")
+   call Put_Dig("ba")
+   call assert_equal(["ば","ば"], getline(line('.')-1,line('.')))
+   " Euro sign
+   call Put_Dig("e=")
+   call Put_Dig("=e")
+   call Put_Dig("Eu")
+   call Put_Dig("uE")
+   call assert_equal(['е']+repeat(["€"],3), getline(line('.')-3,line('.')))
+   " Rouble sign
+   call Put_Dig("R=")
+   call Put_Dig("=R")
+   call Put_Dig("=P")
+   call Put_Dig("P=")
+   call assert_equal(['Р']+repeat(["₽"],2)+['П'], 
getline(line('.')-3,line('.')))
+   " Not a digraph
+   call Put_Dig("a\<bs>")
+   call Put_Dig("\<bs>a")
+   call assert_equal(["<BS>", "<BS>a"], getline(line('.')-1,line('.')))
+   " Grave
+   call Put_Dig("a!")
+   call Put_Dig("!e")
+   call Put_Dig("b!") " not defined
+   call assert_equal(["à", "è", "!"], getline(line('.')-2,line('.')))
+   " Acute accent
+   call Put_Dig("a'")
+   call Put_Dig("'e")
+   call Put_Dig("b'") " not defined
+   call assert_equal(["á", "é", "'"], getline(line('.')-2,line('.')))
+   " Cicumflex
+   call Put_Dig("a>")
+   call Put_Dig(">e")
+   call Put_Dig("b>") " not defined
+   call assert_equal(['â', 'ê', '>'], getline(line('.')-2,line('.')))
+   " Tilde
+   call Put_Dig("o~")
+   call Put_Dig("~u") " not defined
+   call Put_Dig("z~") " not defined
+   call assert_equal(['õ', 'u', '~'], getline(line('.')-2,line('.')))
+   " Tilde
+   call Put_Dig("o?")
+   call Put_Dig("?u")
+   call Put_Dig("z?") " not defined
+   call assert_equal(['õ', 'ũ', '?'], getline(line('.')-2,line('.')))
+   " Macron
+   call Put_Dig("o-")
+   call Put_Dig("-u")
+   call Put_Dig("z-") " not defined
+   call assert_equal(['ō', 'ū', '-'], getline(line('.')-2,line('.')))
+   " Breve
+   call Put_Dig("o(")
+   call Put_Dig("(u")
+   call Put_Dig("z(") " not defined
+   call assert_equal(['ŏ', 'ŭ', '('], getline(line('.')-2,line('.')))
+   " Dot above
+   call Put_Dig("b.")
+   call Put_Dig(".e")
+   call Put_Dig("a.") " not defined
+   call assert_equal(['ḃ', 'ė', '.'], getline(line('.')-2,line('.')))
+   " Diaresis
+   call Put_Dig("a:")
+   call Put_Dig(":u")
+   call Put_Dig("b:") " not defined
+   call assert_equal(['ä', 'ü', ':'], getline(line('.')-2,line('.')))
+   " Cedilla
+   call Put_Dig("',")
+   call Put_Dig(",C")
+   call Put_Dig("b,") " not defined
+   call assert_equal(['¸', 'Ç', ','], getline(line('.')-2,line('.')))
+   " Underline
+   call Put_Dig("B_")
+   call Put_Dig("_t")
+   call Put_Dig("a_") " not defined
+   call assert_equal(['Ḇ', 'ṯ', '_'], getline(line('.')-2,line('.')))
+   " Stroke
+   call Put_Dig("j/")
+   call Put_Dig("/l")
+   call Put_Dig("b/") " not defined
+   call assert_equal(['/', 'ł', '/'], getline(line('.')-2,line('.')))
+   " Double acute
+   call Put_Dig('O"')
+   call Put_Dig('"y')
+   call Put_Dig('b"') " not defined
+   call assert_equal(['Ő', 'ÿ', '"'], getline(line('.')-2,line('.')))
+   " Ogonek
+   call Put_Dig('u;')
+   call Put_Dig(';E')
+   call Put_Dig('b;') " not defined
+   call assert_equal(['ų', 'Ę', ';'], getline(line('.')-2,line('.')))
+   " Caron
+   call Put_Dig('u<')
+   call Put_Dig('<E')
+   call Put_Dig('b<') " not defined
+   call assert_equal(['ǔ', 'Ě', '<'], getline(line('.')-2,line('.')))
+   " Ring above
+   call Put_Dig('u0')
+   call Put_Dig('0E') " not defined
+   call Put_Dig('b0') " not defined
+   call assert_equal(['ů', 'E', '0'], getline(line('.')-2,line('.')))
+   " Hook
+   call Put_Dig('u2')
+   call Put_Dig('2E')
+   call Put_Dig('b2') " not defined
+   call assert_equal(['ủ', 'Ẻ', '2'], getline(line('.')-2,line('.')))
+   " Horn
+   call Put_Dig('u9')
+   call Put_Dig('9E') " not defined
+   call Put_Dig('b9') " not defined
+   call assert_equal(['ư', 'E', '9'], getline(line('.')-2,line('.')))
+   " Cyrillic
+   call Put_Dig('u=')
+   call Put_Dig('=b')
+   call Put_Dig('=_')
+   call assert_equal(['у', 'б', '〓'], getline(line('.')-2,line('.')))
+   " Greek
+   call Put_Dig('u*')
+   call Put_Dig('*b')
+   call Put_Dig('*_')
+   call assert_equal(['υ', 'β', '々'], getline(line('.')-2,line('.')))
+   " Greek/Cyrillic special
+   call Put_Dig('u%')
+   call Put_Dig('%b') " not defined
+   call Put_Dig('%_') " not defined
+   call assert_equal(['ύ', 'b', '_'], getline(line('.')-2,line('.')))
+   " Arabic
+   call Put_Dig('u+')
+   call Put_Dig('+b')
+   call Put_Dig('+_') " japanese industrial symbol
+   call assert_equal(['+', 'ب', '〄'], getline(line('.')-2,line('.')))
+   " Hebrew
+   call Put_Dig('Q+')
+   call Put_Dig('+B')
+   call Put_Dig('+X')
+   call assert_equal(['ק', 'ב', 'ח'], getline(line('.')-2,line('.')))
+   " Latin
+   call Put_Dig('a3')
+   call Put_Dig('A3')
+   call Put_Dig('3X')
+   call assert_equal(['ǣ', 'Ǣ', 'X'], getline(line('.')-2,line('.')))
+   " Bopomofo
+   call Put_Dig('a4')
+   call Put_Dig('A4')
+   call Put_Dig('4X')
+   call assert_equal(['ㄚ', '4', 'X'], getline(line('.')-2,line('.')))
+   " Hiragana
+   call Put_Dig('a5')
+   call Put_Dig('A5')
+   call Put_Dig('5X')
+   call assert_equal(['あ', 'ぁ', 'X'], getline(line('.')-2,line('.')))
+   " Katakana
+   call Put_Dig('a6')
+   call Put_Dig('A6')
+   call Put_Dig('6X')
+   call assert_equal(['ァ', 'ア', 'X'], getline(line('.')-2,line('.')))
+   " Superscripts
+   call Put_Dig('1S')
+   call Put_Dig('2S')
+   call Put_Dig('3S')
+   call assert_equal(['¹', '²', '³'], getline(line('.')-2,line('.')))
+   " Subscripts
+   call Put_Dig('1s')
+   call Put_Dig('2s')
+   call Put_Dig('3s')
+   call assert_equal(['₁', '₂', '₃'], getline(line('.')-2,line('.')))
+   " Eszet (only lowercase)
+   call Put_Dig("ss")
+   call Put_Dig("SS") " start of string
+   call assert_equal(["ß", "˜"], getline(line('.')-1,line('.')))
+   " High bit set
+   call Put_Dig("a ")
+   call Put_Dig(" A")
+   call assert_equal(['á', 'Á'], getline(line('.')-1,line('.')))
+   " Escape is not part of a digraph
+   call Put_Dig("a\<esc>")
+   call Put_Dig("\<esc>A")
+   call assert_equal(['', 'A'], getline(line('.')-1,line('.')))
+   " define some custom digraphs
+   " old: 00 ∞
+   " old: el l
+   digraph 00 9216
+   digraph el 0252
+   call Put_Dig("00")
+   call Put_Dig("el")
+   " Reset digraphs
+   digraph 00 8734
+   digraph el 108
+   call Put_Dig("00")
+   call Put_Dig("el")
+   call assert_equal(['␀', 'ü', '∞', 'l'], getline(line('.')-3,line('.')))
+   " reset encoding option
+   let &enc=_enc
+   bw!
+ endfunc
+ 
+ func! Test_digraphs_option()
+   let _enc=&enc
+   " reset whichwrap option, so that testing <esc><bs>A works,
+   " without moving up a line
+   set nocp enc=utf8 digraph ww=
+   new
+   call Put_Dig_BS("0","0")
+   call assert_equal("∞", getline('.'))
+   " not a digraph
+   call Put_Dig_BS("e","l")
+   call assert_equal("l", getline('.'))
+   call Put_Dig_BS("h","t")
+   call assert_equal("þ", getline('.'))
+   " digraph "ab" is the same as "ba"
+   call Put_Dig_BS("a","b")
+   call Put_Dig_BS("b","a")
+   call assert_equal(["ば","ば"], getline(line('.')-1,line('.')))
+   " Euro sign
+   call Put_Dig_BS("e","=")
+   call Put_Dig_BS("=","e")
+   call Put_Dig_BS("E","u")
+   call Put_Dig_BS("u","E")
+   call assert_equal(['е']+repeat(["€"],3), getline(line('.')-3,line('.')))
+   " Rouble sign
+   call Put_Dig_BS("R","=")
+   call Put_Dig_BS("=","R")
+   call Put_Dig_BS("=","P")
+   call Put_Dig_BS("P","=")
+   call assert_equal(['Р']+repeat(["₽"],2)+['П'], 
getline(line('.')-3,line('.')))
+   " Not a digraph: this is different from <c-k>!
+   call Put_Dig_BS("a","\<bs>")
+   call Put_Dig_BS("\<bs>","a")
+   call assert_equal(['','a'], getline(line('.')-1,line('.')))
+   " Grave
+   call Put_Dig_BS("a","!")
+   call Put_Dig_BS("!","e")
+   call Put_Dig_BS("b","!") " not defined
+   call assert_equal(["à", "è", "!"], getline(line('.')-2,line('.')))
+   " Acute accent
+   call Put_Dig_BS("a","'")
+   call Put_Dig_BS("'","e")
+   call Put_Dig_BS("b","'") " not defined
+   call assert_equal(["á", "é", "'"], getline(line('.')-2,line('.')))
+   " Cicumflex
+   call Put_Dig_BS("a",">")
+   call Put_Dig_BS(">","e")
+   call Put_Dig_BS("b",">") " not defined
+   call assert_equal(['â', 'ê', '>'], getline(line('.')-2,line('.')))
+   " Tilde
+   call Put_Dig_BS("o","~")
+   call Put_Dig_BS("~","u") " not defined
+   call Put_Dig_BS("z","~") " not defined
+   call assert_equal(['õ', 'u', '~'], getline(line('.')-2,line('.')))
+   " Tilde
+   call Put_Dig_BS("o","?")
+   call Put_Dig_BS("?","u")
+   call Put_Dig_BS("z","?") " not defined
+   call assert_equal(['õ', 'ũ', '?'], getline(line('.')-2,line('.')))
+   " Macron
+   call Put_Dig_BS("o","-")
+   call Put_Dig_BS("-","u")
+   call Put_Dig_BS("z","-") " not defined
+   call assert_equal(['ō', 'ū', '-'], getline(line('.')-2,line('.')))
+   " Breve
+   call Put_Dig_BS("o","(")
+   call Put_Dig_BS("(","u")
+   call Put_Dig_BS("z","(") " not defined
+   call assert_equal(['ŏ', 'ŭ', '('], getline(line('.')-2,line('.')))
+   " Dot above
+   call Put_Dig_BS("b",".")
+   call Put_Dig_BS(".","e")
+   call Put_Dig_BS("a",".") " not defined
+   call assert_equal(['ḃ', 'ė', '.'], getline(line('.')-2,line('.')))
+   " Diaresis
+   call Put_Dig_BS("a",":")
+   call Put_Dig_BS(":","u")
+   call Put_Dig_BS("b",":") " not defined
+   call assert_equal(['ä', 'ü', ':'], getline(line('.')-2,line('.')))
+   " Cedilla
+   call Put_Dig_BS("'",",")
+   call Put_Dig_BS(",","C")
+   call Put_Dig_BS("b",",") " not defined
+   call assert_equal(['¸', 'Ç', ','], getline(line('.')-2,line('.')))
+   " Underline
+   call Put_Dig_BS("B","_")
+   call Put_Dig_BS("_","t")
+   call Put_Dig_BS("a","_") " not defined
+   call assert_equal(['Ḇ', 'ṯ', '_'], getline(line('.')-2,line('.')))
+   " Stroke
+   call Put_Dig_BS("j","/")
+   call Put_Dig_BS("/","l")
+   call Put_Dig_BS("b","/") " not defined
+   call assert_equal(['/', 'ł', '/'], getline(line('.')-2,line('.')))
+   " Double acute
+   call Put_Dig_BS('O','"')
+   call Put_Dig_BS('"','y')
+   call Put_Dig_BS('b','"') " not defined
+   call assert_equal(['Ő', 'ÿ', '"'], getline(line('.')-2,line('.')))
+   " Ogonek
+   call Put_Dig_BS('u',';')
+   call Put_Dig_BS(';','E')
+   call Put_Dig_BS('b',';') " not defined
+   call assert_equal(['ų', 'Ę', ';'], getline(line('.')-2,line('.')))
+   " Caron
+   call Put_Dig_BS('u','<')
+   call Put_Dig_BS('<','E')
+   call Put_Dig_BS('b','<') " not defined
+   call assert_equal(['ǔ', 'Ě', '<'], getline(line('.')-2,line('.')))
+   " Ring above
+   call Put_Dig_BS('u','0')
+   call Put_Dig_BS('0','E') " not defined
+   call Put_Dig_BS('b','0') " not defined
+   call assert_equal(['ů', 'E', '0'], getline(line('.')-2,line('.')))
+   " Hook
+   call Put_Dig_BS('u','2')
+   call Put_Dig_BS('2','E')
+   call Put_Dig_BS('b','2') " not defined
+   call assert_equal(['ủ', 'Ẻ', '2'], getline(line('.')-2,line('.')))
+   " Horn
+   call Put_Dig_BS('u','9')
+   call Put_Dig_BS('9','E') " not defined
+   call Put_Dig_BS('b','9') " not defined
+   call assert_equal(['ư', 'E', '9'], getline(line('.')-2,line('.')))
+   " Cyrillic
+   call Put_Dig_BS('u','=')
+   call Put_Dig_BS('=','b')
+   call Put_Dig_BS('=','_')
+   call assert_equal(['у', 'б', '〓'], getline(line('.')-2,line('.')))
+   " Greek
+   call Put_Dig_BS('u','*')
+   call Put_Dig_BS('*','b')
+   call Put_Dig_BS('*','_')
+   call assert_equal(['υ', 'β', '々'], getline(line('.')-2,line('.')))
+   " Greek/Cyrillic special
+   call Put_Dig_BS('u','%')
+   call Put_Dig_BS('%','b') " not defined
+   call Put_Dig_BS('%','_') " not defined
+   call assert_equal(['ύ', 'b', '_'], getline(line('.')-2,line('.')))
+   " Arabic
+   call Put_Dig_BS('u','+')
+   call Put_Dig_BS('+','b')
+   call Put_Dig_BS('+','_') " japanese industrial symbol
+   call assert_equal(['+', 'ب', '〄'], getline(line('.')-2,line('.')))
+   " Hebrew
+   call Put_Dig_BS('Q','+')
+   call Put_Dig_BS('+','B')
+   call Put_Dig_BS('+','X')
+   call assert_equal(['ק', 'ב', 'ח'], getline(line('.')-2,line('.')))
+   " Latin
+   call Put_Dig_BS('a','3')
+   call Put_Dig_BS('A','3')
+   call Put_Dig_BS('3','X')
+   call assert_equal(['ǣ', 'Ǣ', 'X'], getline(line('.')-2,line('.')))
+   " Bopomofo
+   call Put_Dig_BS('a','4')
+   call Put_Dig_BS('A','4')
+   call Put_Dig_BS('4','X')
+   call assert_equal(['ㄚ', '4', 'X'], getline(line('.')-2,line('.')))
+   " Hiragana
+   call Put_Dig_BS('a','5')
+   call Put_Dig_BS('A','5')
+   call Put_Dig_BS('5','X')
+   call assert_equal(['あ', 'ぁ', 'X'], getline(line('.')-2,line('.')))
+   " Katakana
+   call Put_Dig_BS('a','6')
+   call Put_Dig_BS('A','6')
+   call Put_Dig_BS('6','X')
+   call assert_equal(['ァ', 'ア', 'X'], getline(line('.')-2,line('.')))
+   " Superscripts
+   call Put_Dig_BS('1','S')
+   call Put_Dig_BS('2','S')
+   call Put_Dig_BS('3','S')
+   call assert_equal(['¹', '²', '³'], getline(line('.')-2,line('.')))
+   " Subscripts
+   call Put_Dig_BS('1','s')
+   call Put_Dig_BS('2','s')
+   call Put_Dig_BS('3','s')
+   call assert_equal(['₁', '₂', '₃'], getline(line('.')-2,line('.')))
+   " Eszet (only lowercase)
+   call Put_Dig_BS("s","s")
+   call Put_Dig_BS("S","S") " start of string
+   call assert_equal(["ß", "˜"], getline(line('.')-1,line('.')))
+   " High bit set (different from <c-k>)
+   call Put_Dig_BS("a"," ")
+   call Put_Dig_BS(" ","A")
+   call assert_equal([' ', 'A'], getline(line('.')-1,line('.')))
+   " Escape is not part of a digraph (different from <c-k>)
+   call Put_Dig_BS("a","\<esc>")
+   call Put_Dig_BS("\<esc>","A")
+   call assert_equal(['', ''], getline(line('.')-1,line('.')))
+   " define some custom digraphs
+   " old: 00 ∞
+   " old: el l
+   digraph 00 9216
+   digraph el 0252
+   call Put_Dig_BS("0","0")
+   call Put_Dig_BS("e","l")
+   " Reset digraphs
+   digraph 00 8734
+   digraph el 108
+   call Put_Dig_BS("0","0")
+   call Put_Dig_BS("e","l")
+   call assert_equal(['␀', 'ü', '∞', 'l'], getline(line('.')-3,line('.')))
+   " reset encoding option
+   let &enc=_enc
+   set nodigraph ww&vim
+   bw!
+ endfunc
+ 
+ " vim: tabstop=2 shiftwidth=0 sts=-1 expandtab
*** ../vim-7.4.2081/src/version.c       2016-07-20 21:44:33.370131700 +0200
--- src/version.c       2016-07-20 21:51:01.826105948 +0200
***************
*** 760,761 ****
--- 760,763 ----
  {   /* Add new patch number below this line */
+ /**/
+     2082,
  /**/

-- 
Seen on the back of a biker's vest: If you can read this, my wife fell off.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui