@@ -441,7 +441,7 @@ func Test_conceal_mouse_click()
441441 call test_setmouse (1 , 19 )
442442 call feedkeys (" \<LeftMouse> " , " tx" )
443443 call assert_equal ([0 , 1 , 23 , 0 , 23 ], getcurpos ())
444- " click after end of line puts cursor there without 'virtualedit'
444+ " click after end of line puts cursor there with 'virtualedit'
445445 call test_setmouse (1 , 20 )
446446 call feedkeys (" \<LeftMouse> " , " tx" )
447447 call assert_equal ([0 , 1 , 24 , 0 , 24 ], getcurpos ())
@@ -464,10 +464,9 @@ endfunc
464464
465465" Test that cursor is drawn at the correct column when it is after end of the
466466" line with 'virtualedit' and concealing.
467- func Test_conceal_virtualedit_after_eol ()
468- CheckScreendump
469-
470- let code = << trim [CODE]
467+ func Run_test_conceal_virtualedit_after_eol (wrap )
468+ let code = << trim eval [CODE]
469+ let &wrap = {a: wrap }
471470 call setline (1 , ' abcdefgh|hidden|ijklmnpop' )
472471 syntax match test / |hidden|/ conceal
473472 set conceallevel= 2 concealcursor= n virtualedit = all
@@ -489,12 +488,17 @@ func Test_conceal_virtualedit_after_eol()
489488 call StopVimInTerminal (buf )
490489endfunc
491490
492- " Same as Test_conceal_virtualedit_after_eol(), but with 'rightleft' set.
493- func Test_conceal_virtualedit_after_eol_rightleft ()
494- CheckFeature rightleft
491+ func Test_conceal_virtualedit_after_eol ()
495492 CheckScreendump
496493
497- let code = << trim [CODE]
494+ call Run_test_conceal_virtualedit_after_eol (1 )
495+ call Run_test_conceal_virtualedit_after_eol (0 )
496+ endfunc
497+
498+ " Same as Run_test_conceal_virtualedit_after_eol(), but with 'rightleft'.
499+ func Run_test_conceal_virtualedit_after_eol_rightleft (wrap )
500+ let code = << trim eval [CODE]
501+ let &wrap = {a: wrap }
498502 call setline (1 , ' abcdefgh|hidden|ijklmnpop' )
499503 syntax match test / |hidden|/ conceal
500504 set conceallevel= 2 concealcursor= n virtualedit = all rightleft
@@ -516,4 +520,66 @@ func Test_conceal_virtualedit_after_eol_rightleft()
516520 call StopVimInTerminal (buf )
517521endfunc
518522
523+ func Test_conceal_virtualedit_after_eol_rightleft ()
524+ CheckFeature rightleft
525+ CheckScreendump
526+
527+ call Run_test_conceal_virtualedit_after_eol_rightleft (1 )
528+ call Run_test_conceal_virtualedit_after_eol_rightleft (0 )
529+ endfunc
530+
531+ " Test that cursor position is correct when double-width chars are concealed.
532+ func Run_test_conceal_double_width (wrap )
533+ let code = << trim eval [CODE]
534+ let &wrap = {a: wrap }
535+ call setline (1 , [' aaaaa口=口bbbbb口=口ccccc' , ' foobar' ])
536+ syntax match test / 口=口/ conceal cchar =β
537+ set conceallevel= 2 concealcursor= n colorcolumn = 30
538+ normal ! $
539+ [CODE]
540+ call writefile (code, ' XTest_conceal_double_width' , ' D' )
541+ let buf = RunVimInTerminal (' -S XTest_conceal_double_width' , {' rows' : 4 })
542+ call VerifyScreenDump (buf , ' Test_conceal_double_width_1' , {})
543+ call term_sendkeys (buf , " gM" )
544+ call VerifyScreenDump (buf , ' Test_conceal_double_width_2' , {})
545+ call term_sendkeys (buf , " :set conceallevel=3\<CR> " )
546+ call VerifyScreenDump (buf , ' Test_conceal_double_width_3' , {})
547+ call term_sendkeys (buf , " $" )
548+ call VerifyScreenDump (buf , ' Test_conceal_double_width_4' , {})
549+
550+ " clean up
551+ call StopVimInTerminal (buf )
552+ endfunc
553+
554+ func Test_conceal_double_width ()
555+ CheckScreendump
556+
557+ call Run_test_conceal_double_width (1 )
558+ call Run_test_conceal_double_width (0 )
559+ endfunc
560+
561+ " Test that line wrapping is correct when double-width chars are concealed.
562+ func Test_conceal_double_width_wrap ()
563+ CheckScreendump
564+
565+ let code = << trim [CODE]
566+ call setline (1 , ' aaaaaaaaaa口=口bbbbbbbbbb口=口cccccccccc' )
567+ syntax match test / 口=口/ conceal cchar =β
568+ set conceallevel= 2 concealcursor= n
569+ normal ! $
570+ [CODE]
571+ call writefile (code, ' XTest_conceal_double_width_wrap' , ' D' )
572+ let buf = RunVimInTerminal (' -S XTest_conceal_double_width_wrap' , {' rows' : 4 , ' cols' : 20 })
573+ call VerifyScreenDump (buf , ' Test_conceal_double_width_wrap_1' , {})
574+ call term_sendkeys (buf , " gM" )
575+ call VerifyScreenDump (buf , ' Test_conceal_double_width_wrap_2' , {})
576+ call term_sendkeys (buf , " :set conceallevel=3\<CR> " )
577+ call VerifyScreenDump (buf , ' Test_conceal_double_width_wrap_3' , {})
578+ call term_sendkeys (buf , " $" )
579+ call VerifyScreenDump (buf , ' Test_conceal_double_width_wrap_4' , {})
580+
581+ " clean up
582+ call StopVimInTerminal (buf )
583+ endfunc
584+
519585" vim: shiftwidth = 2 sts = 2 expandtab
0 commit comments