Mercurial > vim
comparison src/testdir/test_cursorline.vim @ 18047:6650e3dff8d4 v8.1.2019
patch 8.1.2019: 'cursorline' always highlights the whole line
Commit: https://github.com/vim/vim/commit/410e98a70bc00ea4bed51e55a8fe20e56a72c087
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Sep 9 22:05:49 2019 +0200
patch 8.1.2019: 'cursorline' always highlights the whole line
Problem: 'cursorline' always highlights the whole line.
Solution: Add 'cursorlineopt' to specify what is highlighted.
(closes #4693)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 09 Sep 2019 22:15:04 +0200 |
parents | |
children | 1101eacc1444 |
comparison
equal
deleted
inserted
replaced
18046:4b4c49dee5e6 | 18047:6650e3dff8d4 |
---|---|
1 " Test for cursorline and cursorlineopt | |
2 " | |
3 source view_util.vim | |
4 source check.vim | |
5 | |
6 function! s:screen_attr(lnum) abort | |
7 return map(range(1, 8), 'screenattr(a:lnum, v:val)') | |
8 endfunction | |
9 | |
10 function! s:test_windows(h, w) abort | |
11 call NewWindow(a:h, a:w) | |
12 endfunction | |
13 | |
14 function! s:close_windows() abort | |
15 call CloseWindow() | |
16 endfunction | |
17 | |
18 function! s:new_hi() abort | |
19 redir => save_hi | |
20 silent! hi CursorLineNr | |
21 redir END | |
22 let save_hi = join(split(substitute(save_hi, '\s*xxx\s*', ' ', ''), "\n"), '') | |
23 exe 'hi' save_hi 'ctermbg=0 guibg=Black' | |
24 return save_hi | |
25 endfunction | |
26 | |
27 func Test_cursorline_highlight1() | |
28 let save_hi = s:new_hi() | |
29 try | |
30 call s:test_windows(10, 20) | |
31 call setline(1, repeat(['aaaa'], 10)) | |
32 redraw | |
33 let attr01 = s:screen_attr(1) | |
34 call assert_equal(repeat([attr01[0]], 8), attr01) | |
35 | |
36 setl number numberwidth=4 | |
37 redraw | |
38 let attr11 = s:screen_attr(1) | |
39 call assert_equal(repeat([attr11[0]], 4), attr11[0:3]) | |
40 call assert_equal(repeat([attr11[4]], 4), attr11[4:7]) | |
41 call assert_notequal(attr11[0], attr11[4]) | |
42 | |
43 setl cursorline | |
44 redraw | |
45 let attr21 = s:screen_attr(1) | |
46 let attr22 = s:screen_attr(2) | |
47 call assert_equal(repeat([attr21[0]], 4), attr21[0:3]) | |
48 call assert_equal(repeat([attr21[4]], 4), attr21[4:7]) | |
49 call assert_equal(attr11, attr22) | |
50 call assert_notequal(attr22, attr21) | |
51 | |
52 setl nocursorline relativenumber | |
53 redraw | |
54 let attr31 = s:screen_attr(1) | |
55 call assert_equal(attr21[0:3], attr31[0:3]) | |
56 call assert_equal(attr11[4:7], attr31[4:7]) | |
57 | |
58 call s:close_windows() | |
59 finally | |
60 exe 'hi' save_hi | |
61 endtry | |
62 endfunc | |
63 | |
64 func Test_cursorline_highlight2() | |
65 CheckOption cursorlineopt | |
66 | |
67 let save_hi = s:new_hi() | |
68 try | |
69 call s:test_windows(10, 20) | |
70 call setline(1, repeat(['aaaa'], 10)) | |
71 redraw | |
72 let attr0 = s:screen_attr(1) | |
73 call assert_equal(repeat([attr0[0]], 8), attr0) | |
74 | |
75 setl number | |
76 redraw | |
77 let attr1 = s:screen_attr(1) | |
78 call assert_notequal(attr0[0:3], attr1[0:3]) | |
79 call assert_equal(attr0[0:3], attr1[4:7]) | |
80 | |
81 setl cursorline cursorlineopt=both | |
82 redraw | |
83 let attr2 = s:screen_attr(1) | |
84 call assert_notequal(attr1[0:3], attr2[0:3]) | |
85 call assert_notequal(attr1[4:7], attr2[4:7]) | |
86 | |
87 setl cursorlineopt=line | |
88 redraw | |
89 let attr3 = s:screen_attr(1) | |
90 call assert_equal(attr1[0:3], attr3[0:3]) | |
91 call assert_equal(attr2[4:7], attr3[4:7]) | |
92 | |
93 setl cursorlineopt=number | |
94 redraw | |
95 let attr4 = s:screen_attr(1) | |
96 call assert_equal(attr2[0:3], attr4[0:3]) | |
97 call assert_equal(attr1[4:7], attr4[4:7]) | |
98 | |
99 setl nonumber | |
100 redraw | |
101 let attr5 = s:screen_attr(1) | |
102 call assert_equal(attr0, attr5) | |
103 | |
104 call s:close_windows() | |
105 finally | |
106 exe 'hi' save_hi | |
107 endtry | |
108 endfunc |