aboutsummaryrefslogtreecommitdiff
path: root/test/functional/legacy/100_undo_level_spec.lua
blob: 9143d9e540ce7a11ce43f58084518dbec4a33ed6 (plain) (blame)
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
-- Tests for 'undolevel' setting being global-local

local helpers = require('test.functional.helpers')
local feed, insert, source = helpers.feed, helpers.insert, helpers.source
local clear, execute, expect = helpers.clear, helpers.execute, helpers.expect

describe('undolevel', function()
  setup(clear)

  it('is working', function()
    source([[
      set ul=5
      fu! FillBuffer()
        for i in range(1,13)
          put=i
          exe "setg ul=" . &g:ul
        endfor
      endfu
      fu! UndoLevel()
        redir @z 
          setglobal undolevels? 
          echon ' global' 
          setlocal undolevels? 
          echon ' local' 
        redir end
        $put z
      endfu

      0put ='ONE: expecting global undolevels: 5, local undolevels: -123456 (default)'
      call FillBuffer()
      setlocal undolevels<
      earlier 10
      call UndoLevel()
      set ff=unix
      %yank A
      %delete

      0put ='TWO: expecting global undolevels: 5, local undolevels: 2 (first) then 10 (afterwards)'
      setlocal ul=2
      call FillBuffer()
      earlier 10
      call UndoLevel()
      setlocal ul=10
      call UndoLevel()
      set ff=unix
      %yank A
      %delete
      setlocal undolevels<
      redir @A
        echo "global value shouldn't be changed and still be 5!" 
        echo 'ONE: expecting global undolevels: 5, local undolevels: -123456 (default)'
        setglobal undolevels? 
        echon ' global' 
        setlocal undolevels? 
        echon ' local' 
        echo "" 
      redir end

      setglobal ul=50
      1put ='global value should be changed to 50'
      2put ='THREE: expecting global undolevels: 50, local undolevels: -123456 (default)'
      call UndoLevel()
      set ff=unix
      %yank A
      %delete
      setglobal lispwords=foo,bar,baz
      setlocal lispwords-=foo 
      setlocal lispwords+=quux
      redir @A
        echo "Testing 'lispwords' local value" 
        setglobal lispwords? 
        setlocal lispwords? 
        echo &lispwords 
        echo ''
      redir end
      setlocal lispwords<
      redir @A
        echo "Testing 'lispwords' value reset" 
        setglobal lispwords? 
        setlocal lispwords? 
        echo &lispwords
      redir end

      0put a
      $d
    ]])

    -- Assert buffer contents.
    expect([[
      ONE: expecting global undolevels: 5, local undolevels: -123456 (default)
      1
      2
      3
      4
      5
      6
      7
      
      
        undolevels=5 global
        undolevels=-123456 local
      TWO: expecting global undolevels: 5, local undolevels: 2 (first) then 10 (afterwards)
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      
      
        undolevels=5 global
        undolevels=2 local
      
        undolevels=5 global
        undolevels=10 local
      
      global value shouldn't be changed and still be 5!
      ONE: expecting global undolevels: 5, local undolevels: -123456 (default)
        undolevels=5 global
        undolevels=-123456 local
      
      global value should be changed to 50
      THREE: expecting global undolevels: 50, local undolevels: -123456 (default)
      
        undolevels=50 global
        undolevels=-123456 local
      
      Testing 'lispwords' local value
        lispwords=foo,bar,baz
        lispwords=bar,baz,quux
      bar,baz,quux
      
      Testing 'lispwords' value reset
        lispwords=foo,bar,baz
        lispwords=foo,bar,baz
      foo,bar,baz]])
  end)
end)