1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
" Tests for b:changedtick
func Test_changedtick_increments()
new
" New buffer has an empty line, tick starts at 2.
let expected = 2
call assert_equal(expected, b:changedtick)
call assert_equal(expected, b:['changedtick'])
call setline(1, 'hello')
let expected += 1
call assert_equal(expected, b:changedtick)
call assert_equal(expected, b:['changedtick'])
undo
" Somehow undo counts as two changes.
let expected += 2
call assert_equal(expected, b:changedtick)
call assert_equal(expected, b:['changedtick'])
bwipe!
endfunc
func Test_changedtick_dict_entry()
let d = b:
call assert_equal(b:changedtick, d['changedtick'])
endfunc
func Test_changedtick_bdel()
new
let bnr = bufnr('%')
let v = b:changedtick
bdel
" Delete counts as a change too.
call assert_equal(v + 1, getbufvar(bnr, 'changedtick'))
endfunc
func Test_changedtick_islocked()
call assert_equal(0, islocked('b:changedtick'))
let d = b:
call assert_equal(0, islocked('d.changedtick'))
endfunc
func Test_changedtick_fixed()
call assert_fails('let b:changedtick = 4', 'E46:')
call assert_fails('let b:["changedtick"] = 4', 'E46:')
call assert_fails('lockvar b:changedtick', 'E940:')
call assert_fails('lockvar b:["changedtick"]', 'E46:')
call assert_fails('unlockvar b:changedtick', 'E940:')
call assert_fails('unlockvar b:["changedtick"]', 'E46:')
call assert_fails('unlet b:changedtick', 'E795:')
call assert_fails('unlet b:["changedtick"]', 'E46:')
let d = b:
call assert_fails('lockvar d["changedtick"]', 'E46:')
call assert_fails('unlockvar d["changedtick"]', 'E46:')
call assert_fails('unlet d["changedtick"]', 'E46:')
endfunc
func Test_changedtick_not_incremented_with_write()
new
let fname = "XChangeTick"
exe 'w ' .. fname
" :write when the buffer is not changed does not increment changedtick
let expected = b:changedtick
w
call assert_equal(expected, b:changedtick)
" :write when the buffer IS changed DOES increment changedtick
let expected = b:changedtick + 1
setlocal modified
w
call assert_equal(expected, b:changedtick)
" Two ticks: change + write
let expected = b:changedtick + 2
call setline(1, 'hello')
w
call assert_equal(expected, b:changedtick)
" Two ticks: start insert + write
let expected = b:changedtick + 2
normal! o
w
call assert_equal(expected, b:changedtick)
" Three ticks: start insert + change + write
let expected = b:changedtick + 3
normal! ochanged
w
call assert_equal(expected, b:changedtick)
bwipe
call delete(fname)
endfunc
|