annotate src/testdir/test_textprop.vim @ 30273:5f112a0b4da1 v9.0.0472

patch 9.0.0472: virtual text "below" doesn't show in list mode Commit: https://github.com/vim/vim/commit/a4abe514ecd9b7a038feed89f48476809775c80f Author: Bram Moolenaar <Bram@vim.org> Date: Thu Sep 15 19:44:09 2022 +0100 patch 9.0.0472: virtual text "below" doesn't show in list mode Problem: Virtual text "below" doesn't show in list mode. Solution: Reset lcs_eol_one when displaying text property.
author Bram Moolenaar <Bram@vim.org>
date Thu, 15 Sep 2022 20:45:03 +0200
parents 6b658ef69e93
children 914b3c64ab92
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1 " Tests for defining text property types and adding text properties to the
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
2 " buffer.
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
3
17089
8e9e9124c7a2 patch 8.1.1544: some balloon tests don't run when they can
Bram Moolenaar <Bram@vim.org>
parents: 17049
diff changeset
4 source check.vim
8e9e9124c7a2 patch 8.1.1544: some balloon tests don't run when they can
Bram Moolenaar <Bram@vim.org>
parents: 17049
diff changeset
5 CheckFeature textprop
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
6
15314
c4d62945d96f patch 8.1.0665: text property display wrong when 'spell' is set
Bram Moolenaar <Bram@vim.org>
parents: 15294
diff changeset
7 source screendump.vim
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 26384
diff changeset
8 import './vim9.vim' as v9
15314
c4d62945d96f patch 8.1.0665: text property display wrong when 'spell' is set
Bram Moolenaar <Bram@vim.org>
parents: 15294
diff changeset
9
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
10 func Test_proptype_global()
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
11 call prop_type_add('comment', {'highlight': 'Directory', 'priority': 123, 'start_incl': 1, 'end_incl': 1})
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
12 let proptypes = prop_type_list()
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
13 call assert_equal(1, len(proptypes))
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
14 call assert_equal('comment', proptypes[0])
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
15
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
16 let proptype = prop_type_get('comment')
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
17 call assert_equal('Directory', proptype['highlight'])
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
18 call assert_equal(123, proptype['priority'])
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
19 call assert_equal(1, proptype['start_incl'])
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
20 call assert_equal(1, proptype['end_incl'])
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
21
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
22 call prop_type_delete('comment')
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
23 call assert_equal(0, len(prop_type_list()))
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
24
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
25 call prop_type_add('one', {})
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
26 call assert_equal(1, len(prop_type_list()))
17980
52f23198af7f patch 8.1.1986: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents: 17694
diff changeset
27 let proptype = 'one'->prop_type_get()
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
28 call assert_false(has_key(proptype, 'highlight'))
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
29 call assert_equal(0, proptype['priority'])
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
30 call assert_equal(0, proptype['start_incl'])
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
31 call assert_equal(0, proptype['end_incl'])
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
32
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
33 call prop_type_add('two', {})
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
34 call assert_equal(2, len(prop_type_list()))
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
35 call prop_type_delete('one')
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
36 call assert_equal(1, len(prop_type_list()))
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
37 call prop_type_delete('two')
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
38 call assert_equal(0, len(prop_type_list()))
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
39 endfunc
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
40
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
41 func Test_proptype_buf()
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
42 let bufnr = bufnr('')
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
43 call prop_type_add('comment', #{bufnr: bufnr, highlight: 'Directory', priority: 123, start_incl: 1, end_incl: 1})
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
44 let proptypes = prop_type_list({'bufnr': bufnr})
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
45 call assert_equal(1, len(proptypes))
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
46 call assert_equal('comment', proptypes[0])
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
47
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
48 let proptype = prop_type_get('comment', {'bufnr': bufnr})
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
49 call assert_equal('Directory', proptype['highlight'])
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
50 call assert_equal(123, proptype['priority'])
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
51 call assert_equal(1, proptype['start_incl'])
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
52 call assert_equal(1, proptype['end_incl'])
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
53
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
54 call prop_type_delete('comment', {'bufnr': bufnr})
17980
52f23198af7f patch 8.1.1986: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents: 17694
diff changeset
55 call assert_equal(0, len({'bufnr': bufnr}->prop_type_list()))
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
56
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
57 call prop_type_add('one', {'bufnr': bufnr})
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
58 let proptype = prop_type_get('one', {'bufnr': bufnr})
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
59 call assert_false(has_key(proptype, 'highlight'))
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
60 call assert_equal(0, proptype['priority'])
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
61 call assert_equal(0, proptype['start_incl'])
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
62 call assert_equal(0, proptype['end_incl'])
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
63
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
64 call prop_type_add('two', {'bufnr': bufnr})
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
65 call assert_equal(2, len(prop_type_list({'bufnr': bufnr})))
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
66 call prop_type_delete('one', {'bufnr': bufnr})
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
67 call assert_equal(1, len(prop_type_list({'bufnr': bufnr})))
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
68 call prop_type_delete('two', {'bufnr': bufnr})
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
69 call assert_equal(0, len(prop_type_list({'bufnr': bufnr})))
16772
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
70
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
71 call assert_fails("call prop_type_add('one', {'bufnr': 98764})", "E158:")
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
72 endfunc
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
73
29664
6569c71c5ca5 patch 9.0.0172: trying to allocate zero bytes
Bram Moolenaar <Bram@vim.org>
parents: 29657
diff changeset
74 def Test_proptype_add_remove()
6569c71c5ca5 patch 9.0.0172: trying to allocate zero bytes
Bram Moolenaar <Bram@vim.org>
parents: 29657
diff changeset
75 # add and remove a prop type so that the array is empty
6569c71c5ca5 patch 9.0.0172: trying to allocate zero bytes
Bram Moolenaar <Bram@vim.org>
parents: 29657
diff changeset
76 prop_type_add('local', {bufnr: bufnr('%')})
6569c71c5ca5 patch 9.0.0172: trying to allocate zero bytes
Bram Moolenaar <Bram@vim.org>
parents: 29657
diff changeset
77 prop_type_delete('local', {bufnr: bufnr('%')})
6569c71c5ca5 patch 9.0.0172: trying to allocate zero bytes
Bram Moolenaar <Bram@vim.org>
parents: 29657
diff changeset
78 prop_type_add('global', {highlight: 'ErrorMsg'})
6569c71c5ca5 patch 9.0.0172: trying to allocate zero bytes
Bram Moolenaar <Bram@vim.org>
parents: 29657
diff changeset
79 prop_add(1, 1, {length: 1, type: 'global'})
6569c71c5ca5 patch 9.0.0172: trying to allocate zero bytes
Bram Moolenaar <Bram@vim.org>
parents: 29657
diff changeset
80 redraw
6569c71c5ca5 patch 9.0.0172: trying to allocate zero bytes
Bram Moolenaar <Bram@vim.org>
parents: 29657
diff changeset
81
6569c71c5ca5 patch 9.0.0172: trying to allocate zero bytes
Bram Moolenaar <Bram@vim.org>
parents: 29657
diff changeset
82 prop_clear(1)
6569c71c5ca5 patch 9.0.0172: trying to allocate zero bytes
Bram Moolenaar <Bram@vim.org>
parents: 29657
diff changeset
83 prop_type_delete('global')
6569c71c5ca5 patch 9.0.0172: trying to allocate zero bytes
Bram Moolenaar <Bram@vim.org>
parents: 29657
diff changeset
84 enddef
6569c71c5ca5 patch 9.0.0172: trying to allocate zero bytes
Bram Moolenaar <Bram@vim.org>
parents: 29657
diff changeset
85
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
86 def Test_proptype_buf_list()
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
87 new
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
88 var bufnr = bufnr('')
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
89 try
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
90 prop_type_add('global', {})
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
91 prop_type_add('local', {bufnr: bufnr})
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
92
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
93 prop_add(1, 1, {type: 'global'})
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
94 prop_add(1, 1, {type: 'local'})
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
95
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
96 assert_equal([
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
97 {type: 'local', type_bufnr: bufnr, id: 0, col: 1, end: 1, length: 0, start: 1},
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
98 {type: 'global', type_bufnr: 0, id: 0, col: 1, end: 1, length: 0, start: 1},
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
99 ], prop_list(1))
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
100 assert_equal(
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
101 {lnum: 1, id: 0, col: 1, type_bufnr: bufnr, end: 1, type: 'local', length: 0, start: 1},
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
102 prop_find({lnum: 1, type: 'local'}))
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
103 assert_equal(
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
104 {lnum: 1, id: 0, col: 1, type_bufnr: 0, end: 1, type: 'global', length: 0, start: 1},
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
105 prop_find({lnum: 1, type: 'global'}))
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
106
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
107 prop_remove({type: 'global'}, 1)
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
108 prop_remove({type: 'local'}, 1)
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
109 finally
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
110 prop_type_delete('global')
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
111 prop_type_delete('local', {bufnr: bufnr})
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
112 bwipe!
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
113 endtry
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
114 enddef
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
115
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
116 func AddPropTypes()
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
117 call prop_type_add('one', {})
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
118 call prop_type_add('two', {})
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
119 call prop_type_add('three', {})
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
120 call prop_type_add('whole', {})
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
121 endfunc
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
122
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
123 func DeletePropTypes()
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
124 call prop_type_delete('one')
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
125 call prop_type_delete('two')
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
126 call prop_type_delete('three')
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
127 call prop_type_delete('whole')
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
128 endfunc
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
129
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
130 func SetupPropsInFirstLine()
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
131 call setline(1, 'one two three')
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
132 call prop_add(1, 1, {'length': 3, 'id': 11, 'type': 'one'})
17980
52f23198af7f patch 8.1.1986: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents: 17694
diff changeset
133 eval 1->prop_add(5, {'length': 3, 'id': 12, 'type': 'two'})
15367
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
134 call prop_add(1, 9, {'length': 5, 'id': 13, 'type': 'three'})
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
135 call prop_add(1, 1, {'length': 13, 'id': 14, 'type': 'whole'})
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
136 endfunc
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
137
15367
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
138 func Get_expected_props()
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
139 return [
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
140 \ #{type_bufnr: 0, col: 1, length: 13, id: 14, type: 'whole', start: 1, end: 1},
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
141 \ #{type_bufnr: 0, col: 1, length: 3, id: 11, type: 'one', start: 1, end: 1},
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
142 \ #{type_bufnr: 0, col: 5, length: 3, id: 12, type: 'two', start: 1, end: 1},
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
143 \ #{type_bufnr: 0, col: 9, length: 5, id: 13, type: 'three', start: 1, end: 1},
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
144 \ ]
15367
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
145 endfunc
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
146
19100
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
147 func Test_prop_find()
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
148 new
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
149 call setline(1, ['one one one', 'twotwo', 'three', 'fourfour', 'five', 'sixsix'])
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
150
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
151 " Add two text props on lines 1 and 5, and one spanning lines 2 to 4.
19100
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
152 call prop_type_add('prop_name', {'highlight': 'Directory'})
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
153 call prop_add(1, 5, {'type': 'prop_name', 'id': 10, 'length': 3})
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
154 call prop_add(2, 4, {'type': 'prop_name', 'id': 11, 'end_lnum': 4, 'end_col': 9})
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
155 call prop_add(5, 4, {'type': 'prop_name', 'id': 12, 'length': 1})
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
156
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
157 let expected = [
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
158 \ #{type_bufnr: 0, lnum: 1, col: 5, length: 3, id: 10, type: 'prop_name', start: 1, end: 1},
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
159 \ #{type_bufnr: 0, lnum: 2, col: 4, id: 11, type: 'prop_name', start: 1, end: 0},
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
160 \ #{type_bufnr: 0, lnum: 5, col: 4, length: 1, id: 12, type: 'prop_name', start: 1, end: 1}
19100
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
161 \ ]
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
162
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
163 " Starting at line 5 col 1 this should find the prop at line 5 col 4.
29788
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
164 call cursor(5, 1)
19100
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
165 let result = prop_find({'type': 'prop_name'}, 'f')
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
166 call assert_equal(expected[2], result)
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
167
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
168 " With skipstart left at false (default), this should find the prop at line
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
169 " 5 col 4.
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
170 let result = prop_find({'type': 'prop_name', 'lnum': 5, 'col': 4}, 'b')
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
171 call assert_equal(expected[2], result)
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
172
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
173 " With skipstart set to true, this should skip the prop at line 5 col 4.
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
174 let result = prop_find({'type': 'prop_name', 'lnum': 5, 'col': 4, 'skipstart': 1}, 'b')
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
175 unlet result.length
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
176 call assert_equal(expected[1], result)
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
177
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
178 " Search backwards from line 1 col 10 to find the prop on the same line.
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
179 let result = prop_find({'type': 'prop_name', 'lnum': 1, 'col': 10}, 'b')
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
180 call assert_equal(expected[0], result)
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
181
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
182 " with skipstart set to false, if the start position is anywhere between the
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
183 " start and end lines of a text prop (searching forward or backward), the
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
184 " result should be the prop on the first line (the line with 'start' set to 1).
29788
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
185 call cursor(3, 1)
19100
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
186 let result = prop_find({'type': 'prop_name'}, 'f')
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
187 unlet result.length
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
188 call assert_equal(expected[1], result)
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
189 let result = prop_find({'type': 'prop_name'}, 'b')
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
190 unlet result.length
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
191 call assert_equal(expected[1], result)
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
192
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
193 " with skipstart set to true, if the start position is anywhere between the
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
194 " start and end lines of a text prop (searching forward or backward), all lines
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
195 " of the prop will be skipped.
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
196 let result = prop_find({'type': 'prop_name', 'skipstart': 1}, 'b')
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
197 call assert_equal(expected[0], result)
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
198 let result = prop_find({'type': 'prop_name', 'skipstart': 1}, 'f')
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
199 call assert_equal(expected[2], result)
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
200
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
201 " Use skipstart to search through all props with type name 'prop_name'.
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
202 " First forward...
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
203 let lnum = 1
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
204 let col = 1
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
205 let i = 0
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
206 for exp in expected
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
207 let result = prop_find({'type': 'prop_name', 'lnum': lnum, 'col': col, 'skipstart': 1}, 'f')
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
208 if !has_key(exp, "length")
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
209 unlet result.length
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
210 endif
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
211 call assert_equal(exp, result)
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
212 let lnum = result.lnum
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
213 let col = result.col
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
214 let i = i + 1
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
215 endfor
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
216
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
217 " ...then backwards.
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
218 let lnum = 6
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
219 let col = 4
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
220 let i = 2
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
221 while i >= 0
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
222 let result = prop_find({'type': 'prop_name', 'lnum': lnum, 'col': col, 'skipstart': 1}, 'b')
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
223 if !has_key(expected[i], "length")
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
224 unlet result.length
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
225 endif
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
226 call assert_equal(expected[i], result)
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
227 let lnum = result.lnum
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
228 let col = result.col
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
229 let i = i - 1
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
230 endwhile
19100
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
231
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
232 " Starting from line 6 col 1 search backwards for prop with id 10.
29788
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
233 call cursor(6, 1)
19100
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
234 let result = prop_find({'id': 10, 'skipstart': 1}, 'b')
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
235 call assert_equal(expected[0], result)
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
236
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
237 " Starting from line 1 col 1 search forwards for prop with id 12.
29788
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
238 call cursor(1, 1)
19100
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
239 let result = prop_find({'id': 12}, 'f')
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
240 call assert_equal(expected[2], result)
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
241
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
242 " Search for a prop with an unknown id.
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
243 let result = prop_find({'id': 999}, 'f')
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
244 call assert_equal({}, result)
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
245
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
246 " Search backwards from the proceeding position of the prop with id 11
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
247 " (at line num 2 col 4). This should return an empty dict.
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
248 let result = prop_find({'id': 11, 'lnum': 2, 'col': 3}, 'b')
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
249 call assert_equal({}, result)
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
250
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
251 " When lnum is given and col is omitted, use column 1.
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
252 let result = prop_find({'type': 'prop_name', 'lnum': 1}, 'f')
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
253 call assert_equal(expected[0], result)
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
254
25471
3678a11e71fa patch 8.2.3272: cannot use id zero with prop_find()
Bram Moolenaar <Bram@vim.org>
parents: 25441
diff changeset
255 " Negative ID is possible, just like prop is not found.
25441
e06540cc3371 patch 8.2.3257: calling prop_find() with -1 for ID gives errornous error
Bram Moolenaar <Bram@vim.org>
parents: 25392
diff changeset
256 call assert_equal({}, prop_find({'id': -1}))
25471
3678a11e71fa patch 8.2.3272: cannot use id zero with prop_find()
Bram Moolenaar <Bram@vim.org>
parents: 25441
diff changeset
257 call assert_equal({}, prop_find({'id': -2}))
3678a11e71fa patch 8.2.3272: cannot use id zero with prop_find()
Bram Moolenaar <Bram@vim.org>
parents: 25441
diff changeset
258
3678a11e71fa patch 8.2.3272: cannot use id zero with prop_find()
Bram Moolenaar <Bram@vim.org>
parents: 25441
diff changeset
259 call prop_clear(1, 6)
25441
e06540cc3371 patch 8.2.3257: calling prop_find() with -1 for ID gives errornous error
Bram Moolenaar <Bram@vim.org>
parents: 25392
diff changeset
260
25471
3678a11e71fa patch 8.2.3272: cannot use id zero with prop_find()
Bram Moolenaar <Bram@vim.org>
parents: 25441
diff changeset
261 " Default ID is zero
3678a11e71fa patch 8.2.3272: cannot use id zero with prop_find()
Bram Moolenaar <Bram@vim.org>
parents: 25441
diff changeset
262 call prop_add(5, 4, {'type': 'prop_name', 'length': 1})
3678a11e71fa patch 8.2.3272: cannot use id zero with prop_find()
Bram Moolenaar <Bram@vim.org>
parents: 25441
diff changeset
263 call assert_equal(#{lnum: 5, id: 0, col: 4, type_bufnr: 0, end: 1, type: 'prop_name', length: 1, start: 1}, prop_find({'id': 0}))
3678a11e71fa patch 8.2.3272: cannot use id zero with prop_find()
Bram Moolenaar <Bram@vim.org>
parents: 25441
diff changeset
264
19100
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
265 call prop_type_delete('prop_name')
25471
3678a11e71fa patch 8.2.3272: cannot use id zero with prop_find()
Bram Moolenaar <Bram@vim.org>
parents: 25441
diff changeset
266 call prop_clear(1, 6)
22069
87502e318c19 patch 8.2.1584: Vim9: cannot use "true" for "skipstart" in prop_find()
Bram Moolenaar <Bram@vim.org>
parents: 22037
diff changeset
267 bwipe!
87502e318c19 patch 8.2.1584: Vim9: cannot use "true" for "skipstart" in prop_find()
Bram Moolenaar <Bram@vim.org>
parents: 22037
diff changeset
268 endfunc
87502e318c19 patch 8.2.1584: Vim9: cannot use "true" for "skipstart" in prop_find()
Bram Moolenaar <Bram@vim.org>
parents: 22037
diff changeset
269
87502e318c19 patch 8.2.1584: Vim9: cannot use "true" for "skipstart" in prop_find()
Bram Moolenaar <Bram@vim.org>
parents: 22037
diff changeset
270 def Test_prop_find2()
87502e318c19 patch 8.2.1584: Vim9: cannot use "true" for "skipstart" in prop_find()
Bram Moolenaar <Bram@vim.org>
parents: 22037
diff changeset
271 # Multiple props per line, start on the first, should find the second.
87502e318c19 patch 8.2.1584: Vim9: cannot use "true" for "skipstart" in prop_find()
Bram Moolenaar <Bram@vim.org>
parents: 22037
diff changeset
272 new
87502e318c19 patch 8.2.1584: Vim9: cannot use "true" for "skipstart" in prop_find()
Bram Moolenaar <Bram@vim.org>
parents: 22037
diff changeset
273 ['the quikc bronw fox jumsp over the layz dog']->repeat(2)->setline(1)
23072
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
274 prop_type_add('misspell', {highlight: 'ErrorMsg'})
22037
35c8996a798e patch 8.2.1568: prop_find() skips properties in the same line
Bram Moolenaar <Bram@vim.org>
parents: 21552
diff changeset
275 for lnum in [1, 2]
35c8996a798e patch 8.2.1568: prop_find() skips properties in the same line
Bram Moolenaar <Bram@vim.org>
parents: 21552
diff changeset
276 for col in [8, 14, 24, 38]
23072
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
277 prop_add(lnum, col, {type: 'misspell', length: 2})
22037
35c8996a798e patch 8.2.1568: prop_find() skips properties in the same line
Bram Moolenaar <Bram@vim.org>
parents: 21552
diff changeset
278 endfor
35c8996a798e patch 8.2.1568: prop_find() skips properties in the same line
Bram Moolenaar <Bram@vim.org>
parents: 21552
diff changeset
279 endfor
22069
87502e318c19 patch 8.2.1584: Vim9: cannot use "true" for "skipstart" in prop_find()
Bram Moolenaar <Bram@vim.org>
parents: 22037
diff changeset
280 cursor(1, 8)
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
281 var expected = {type_bufnr: 0, lnum: 1, id: 0, col: 14, end: 1, type: 'misspell', length: 2, start: 1}
23072
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
282 var result = prop_find({type: 'misspell', skipstart: true}, 'f')
22069
87502e318c19 patch 8.2.1584: Vim9: cannot use "true" for "skipstart" in prop_find()
Bram Moolenaar <Bram@vim.org>
parents: 22037
diff changeset
283 assert_equal(expected, result)
22037
35c8996a798e patch 8.2.1568: prop_find() skips properties in the same line
Bram Moolenaar <Bram@vim.org>
parents: 21552
diff changeset
284
22069
87502e318c19 patch 8.2.1584: Vim9: cannot use "true" for "skipstart" in prop_find()
Bram Moolenaar <Bram@vim.org>
parents: 22037
diff changeset
285 prop_type_delete('misspell')
22037
35c8996a798e patch 8.2.1568: prop_find() skips properties in the same line
Bram Moolenaar <Bram@vim.org>
parents: 21552
diff changeset
286 bwipe!
22069
87502e318c19 patch 8.2.1584: Vim9: cannot use "true" for "skipstart" in prop_find()
Bram Moolenaar <Bram@vim.org>
parents: 22037
diff changeset
287 enddef
19100
91bb12995034 patch 8.2.0110: prop_find() is not implemented
Bram Moolenaar <Bram@vim.org>
parents: 19097
diff changeset
288
19642
647ef636a11e patch 8.2.0378: prop_find() does not find all props
Bram Moolenaar <Bram@vim.org>
parents: 19631
diff changeset
289 func Test_prop_find_smaller_len_than_match_col()
647ef636a11e patch 8.2.0378: prop_find() does not find all props
Bram Moolenaar <Bram@vim.org>
parents: 19631
diff changeset
290 new
647ef636a11e patch 8.2.0378: prop_find() does not find all props
Bram Moolenaar <Bram@vim.org>
parents: 19631
diff changeset
291 call prop_type_add('test', {'highlight': 'ErrorMsg'})
647ef636a11e patch 8.2.0378: prop_find() does not find all props
Bram Moolenaar <Bram@vim.org>
parents: 19631
diff changeset
292 call setline(1, ['xxxx', 'x'])
647ef636a11e patch 8.2.0378: prop_find() does not find all props
Bram Moolenaar <Bram@vim.org>
parents: 19631
diff changeset
293 call prop_add(1, 4, {'type': 'test'})
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
294 call assert_equal(
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
295 \ #{type_bufnr: 0, id: 0, lnum: 1, col: 4, type: 'test', length: 0, start: 1, end: 1},
19642
647ef636a11e patch 8.2.0378: prop_find() does not find all props
Bram Moolenaar <Bram@vim.org>
parents: 19631
diff changeset
296 \ prop_find({'type': 'test', 'lnum': 2, 'col': 1}, 'b'))
647ef636a11e patch 8.2.0378: prop_find() does not find all props
Bram Moolenaar <Bram@vim.org>
parents: 19631
diff changeset
297 bwipe!
647ef636a11e patch 8.2.0378: prop_find() does not find all props
Bram Moolenaar <Bram@vim.org>
parents: 19631
diff changeset
298 call prop_type_delete('test')
647ef636a11e patch 8.2.0378: prop_find() does not find all props
Bram Moolenaar <Bram@vim.org>
parents: 19631
diff changeset
299 endfunc
647ef636a11e patch 8.2.0378: prop_find() does not find all props
Bram Moolenaar <Bram@vim.org>
parents: 19631
diff changeset
300
24252
7422f2f719a3 patch 8.2.2667: prop_find() cannot find item matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 24039
diff changeset
301 func Test_prop_find_with_both_option_enabled()
7422f2f719a3 patch 8.2.2667: prop_find() cannot find item matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 24039
diff changeset
302 " Initialize
7422f2f719a3 patch 8.2.2667: prop_find() cannot find item matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 24039
diff changeset
303 new
7422f2f719a3 patch 8.2.2667: prop_find() cannot find item matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 24039
diff changeset
304 call AddPropTypes()
7422f2f719a3 patch 8.2.2667: prop_find() cannot find item matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 24039
diff changeset
305 call SetupPropsInFirstLine()
7422f2f719a3 patch 8.2.2667: prop_find() cannot find item matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 24039
diff changeset
306 let props = Get_expected_props()->map({_, v -> extend(v, {'lnum': 1})})
7422f2f719a3 patch 8.2.2667: prop_find() cannot find item matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 24039
diff changeset
307 " Test
7422f2f719a3 patch 8.2.2667: prop_find() cannot find item matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 24039
diff changeset
308 call assert_fails("call prop_find({'both': 1})", 'E968:')
7422f2f719a3 patch 8.2.2667: prop_find() cannot find item matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 24039
diff changeset
309 call assert_fails("call prop_find({'id': 11, 'both': 1})", 'E860:')
7422f2f719a3 patch 8.2.2667: prop_find() cannot find item matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 24039
diff changeset
310 call assert_fails("call prop_find({'type': 'three', 'both': 1})", 'E860:')
7422f2f719a3 patch 8.2.2667: prop_find() cannot find item matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 24039
diff changeset
311 call assert_equal({}, prop_find({'id': 11, 'type': 'three', 'both': 1}))
7422f2f719a3 patch 8.2.2667: prop_find() cannot find item matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 24039
diff changeset
312 call assert_equal({}, prop_find({'id': 130000, 'type': 'one', 'both': 1}))
7422f2f719a3 patch 8.2.2667: prop_find() cannot find item matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 24039
diff changeset
313 call assert_equal(props[2], prop_find({'id': 12, 'type': 'two', 'both': 1}))
7422f2f719a3 patch 8.2.2667: prop_find() cannot find item matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 24039
diff changeset
314 call assert_equal(props[0], prop_find({'id': 14, 'type': 'whole', 'both': 1}))
7422f2f719a3 patch 8.2.2667: prop_find() cannot find item matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 24039
diff changeset
315 " Clean up
7422f2f719a3 patch 8.2.2667: prop_find() cannot find item matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 24039
diff changeset
316 call DeletePropTypes()
7422f2f719a3 patch 8.2.2667: prop_find() cannot find item matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 24039
diff changeset
317 bwipe!
7422f2f719a3 patch 8.2.2667: prop_find() cannot find item matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 24039
diff changeset
318 endfunc
7422f2f719a3 patch 8.2.2667: prop_find() cannot find item matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 24039
diff changeset
319
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
320 func Test_prop_add()
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
321 new
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
322 call AddPropTypes()
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
323 call SetupPropsInFirstLine()
15367
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
324 let expected_props = Get_expected_props()
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
325 call assert_equal(expected_props, prop_list(1))
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
326 call assert_fails("call prop_add(10, 1, {'length': 1, 'id': 14, 'type': 'whole'})", 'E966:')
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
327 call assert_fails("call prop_add(1, 22, {'length': 1, 'id': 14, 'type': 'whole'})", 'E964:')
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
328
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
329 " Insert a line above, text props must still be there.
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
330 call append(0, 'empty')
15367
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
331 call assert_equal(expected_props, prop_list(2))
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
332 " Delete a line above, text props must still be there.
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
333 1del
15367
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
334 call assert_equal(expected_props, prop_list(1))
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
335
15335
18c20ceee4b5 patch 8.1.0675: text property column in screen columns is not practical
Bram Moolenaar <Bram@vim.org>
parents: 15318
diff changeset
336 " Prop without length or end column is zero length
18c20ceee4b5 patch 8.1.0675: text property column in screen columns is not practical
Bram Moolenaar <Bram@vim.org>
parents: 15318
diff changeset
337 call prop_clear(1)
19534
36ec10251b2b patch 8.2.0324: text property not updated correctly when inserting/deleting
Bram Moolenaar <Bram@vim.org>
parents: 19110
diff changeset
338 call prop_type_add('included', {'start_incl': 1, 'end_incl': 1})
36ec10251b2b patch 8.2.0324: text property not updated correctly when inserting/deleting
Bram Moolenaar <Bram@vim.org>
parents: 19110
diff changeset
339 call prop_add(1, 5, #{type: 'included'})
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
340 let expected = [#{type_bufnr: 0, col: 5, length: 0, type: 'included', id: 0, start: 1, end: 1}]
19534
36ec10251b2b patch 8.2.0324: text property not updated correctly when inserting/deleting
Bram Moolenaar <Bram@vim.org>
parents: 19110
diff changeset
341 call assert_equal(expected, prop_list(1))
36ec10251b2b patch 8.2.0324: text property not updated correctly when inserting/deleting
Bram Moolenaar <Bram@vim.org>
parents: 19110
diff changeset
342
36ec10251b2b patch 8.2.0324: text property not updated correctly when inserting/deleting
Bram Moolenaar <Bram@vim.org>
parents: 19110
diff changeset
343 " Inserting text makes the prop bigger.
36ec10251b2b patch 8.2.0324: text property not updated correctly when inserting/deleting
Bram Moolenaar <Bram@vim.org>
parents: 19110
diff changeset
344 exe "normal 5|ixx\<Esc>"
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
345 let expected = [#{type_bufnr: 0, col: 5, length: 2, type: 'included', id: 0, start: 1, end: 1}]
15335
18c20ceee4b5 patch 8.1.0675: text property column in screen columns is not practical
Bram Moolenaar <Bram@vim.org>
parents: 15318
diff changeset
346 call assert_equal(expected, prop_list(1))
18c20ceee4b5 patch 8.1.0675: text property column in screen columns is not practical
Bram Moolenaar <Bram@vim.org>
parents: 15318
diff changeset
347
16772
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
348 call assert_fails("call prop_add(1, 5, {'type': 'two', 'bufnr': 234343})", 'E158:')
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
349
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
350 call DeletePropTypes()
19534
36ec10251b2b patch 8.2.0324: text property not updated correctly when inserting/deleting
Bram Moolenaar <Bram@vim.org>
parents: 19110
diff changeset
351 call prop_type_delete('included')
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
352 bwipe!
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
353 endfunc
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
354
25640
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
355 " Test for the prop_add_list() function
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
356 func Test_prop_add_list()
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
357 new
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
358 call AddPropTypes()
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
359 call setline(1, ['one one one', 'two two two', 'six six six', 'ten ten ten'])
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
360 call prop_add_list(#{type: 'one', id: 2},
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
361 \ [[1, 1, 1, 3], [2, 5, 2, 7], [3, 6, 4, 6]])
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
362 call assert_equal([#{id: 2, col: 1, type_bufnr: 0, end: 1, type: 'one',
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
363 \ length: 2, start: 1}], prop_list(1))
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
364 call assert_equal([#{id: 2, col: 5, type_bufnr: 0, end: 1, type: 'one',
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
365 \ length: 2, start: 1}], prop_list(2))
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
366 call assert_equal([#{id: 2, col: 6, type_bufnr: 0, end: 0, type: 'one',
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
367 \ length: 7, start: 1}], prop_list(3))
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
368 call assert_equal([#{id: 2, col: 1, type_bufnr: 0, end: 1, type: 'one',
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
369 \ length: 5, start: 0}], prop_list(4))
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
370 call assert_fails('call prop_add_list([1, 2], [[1, 1, 3]])', 'E1206:')
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
371 call assert_fails('call prop_add_list({}, {})', 'E1211:')
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
372 call assert_fails('call prop_add_list({}, [[1, 1, 3]])', 'E965:')
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
373 call assert_fails('call prop_add_list(#{type: "abc"}, [[1, 1, 1, 3]])', 'E971:')
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
374 call assert_fails('call prop_add_list(#{type: "one"}, [[]])', 'E474:')
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
375 call assert_fails('call prop_add_list(#{type: "one"}, [[1, 1, 1, 1], {}])', 'E714:')
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
376 call assert_fails('call prop_add_list(#{type: "one"}, [[1, 1, "a"]])', 'E474:')
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
377 call assert_fails('call prop_add_list(#{type: "one"}, [[2, 2]])', 'E474:')
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
378 call assert_fails('call prop_add_list(#{type: "one"}, [[1, 1, 2], [2, 2]])', 'E474:')
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
379 call assert_fails('call prop_add_list(#{type: "one"}, [[1, 1, 1, 2], [4, 1, 5, 2]])', 'E966:')
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
380 call assert_fails('call prop_add_list(#{type: "one"}, [[3, 1, 1, 2]])', 'E966:')
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
381 call assert_fails('call prop_add_list(#{type: "one"}, [[2, 2, 2, 2], [3, 20, 3, 22]])', 'E964:')
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
382 call assert_fails('eval #{type: "one"}->prop_add_list([[2, 2, 2, 2], [3, 20, 3, 22]])', 'E964:')
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
383 call assert_fails('call prop_add_list(test_null_dict(), [[2, 2, 2]])', 'E965:')
30015
adb0de8be4ce patch 9.0.0345: error message for list argument could be clearer
Bram Moolenaar <Bram@vim.org>
parents: 29994
diff changeset
384 call assert_fails('call prop_add_list(#{type: "one"}, test_null_list())', 'E1298:')
25640
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
385 call assert_fails('call prop_add_list(#{type: "one"}, [test_null_list()])', 'E714:')
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
386 call DeletePropTypes()
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
387 bw!
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
388 endfunc
78ef12e0ce8c patch 8.2.3356: adding many text properties requires a lot of function calls
Bram Moolenaar <Bram@vim.org>
parents: 25628
diff changeset
389
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
390 func Test_prop_remove()
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
391 new
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
392 call AddPropTypes()
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
393 call SetupPropsInFirstLine()
15367
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
394 let props = Get_expected_props()
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
395 call assert_equal(props, prop_list(1))
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
396
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
397 " remove by id
17980
52f23198af7f patch 8.1.1986: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents: 17694
diff changeset
398 call assert_equal(1, {'id': 12}->prop_remove(1))
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
399 unlet props[2]
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
400 call assert_equal(props, prop_list(1))
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
401
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
402 " remove by type
16772
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
403 call assert_equal(1, prop_remove({'type': 'one'}, 1))
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
404 unlet props[1]
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
405 call assert_equal(props, prop_list(1))
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
406
16772
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
407 " remove from unknown buffer
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
408 call assert_fails("call prop_remove({'type': 'one', 'bufnr': 123456}, 1)", 'E158:')
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
409
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
410 call DeletePropTypes()
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
411 bwipe!
19601
67f39cb0a49c patch 8.2.0357: cannot delete a text property matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 19534
diff changeset
412
67f39cb0a49c patch 8.2.0357: cannot delete a text property matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 19534
diff changeset
413 new
67f39cb0a49c patch 8.2.0357: cannot delete a text property matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 19534
diff changeset
414 call AddPropTypes()
67f39cb0a49c patch 8.2.0357: cannot delete a text property matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 19534
diff changeset
415 call SetupPropsInFirstLine()
67f39cb0a49c patch 8.2.0357: cannot delete a text property matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 19534
diff changeset
416 call prop_add(1, 6, {'length': 2, 'id': 11, 'type': 'three'})
67f39cb0a49c patch 8.2.0357: cannot delete a text property matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 19534
diff changeset
417 let props = Get_expected_props()
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
418 call insert(props, #{type_bufnr: 0, col: 6, length: 2, id: 11, type: 'three', start: 1, end: 1}, 3)
19601
67f39cb0a49c patch 8.2.0357: cannot delete a text property matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 19534
diff changeset
419 call assert_equal(props, prop_list(1))
67f39cb0a49c patch 8.2.0357: cannot delete a text property matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 19534
diff changeset
420 call assert_equal(1, prop_remove({'type': 'three', 'id': 11, 'both': 1, 'all': 1}, 1))
67f39cb0a49c patch 8.2.0357: cannot delete a text property matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 19534
diff changeset
421 unlet props[3]
67f39cb0a49c patch 8.2.0357: cannot delete a text property matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 19534
diff changeset
422 call assert_equal(props, prop_list(1))
67f39cb0a49c patch 8.2.0357: cannot delete a text property matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 19534
diff changeset
423
22087
ff21e2962490 patch 8.2.1593: tests do not check the error number properly
Bram Moolenaar <Bram@vim.org>
parents: 22069
diff changeset
424 call assert_fails("call prop_remove({'id': 11, 'both': 1})", 'E860:')
ff21e2962490 patch 8.2.1593: tests do not check the error number properly
Bram Moolenaar <Bram@vim.org>
parents: 22069
diff changeset
425 call assert_fails("call prop_remove({'type': 'three', 'both': 1})", 'E860:')
19601
67f39cb0a49c patch 8.2.0357: cannot delete a text property matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 19534
diff changeset
426
67f39cb0a49c patch 8.2.0357: cannot delete a text property matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 19534
diff changeset
427 call DeletePropTypes()
67f39cb0a49c patch 8.2.0357: cannot delete a text property matching both id and type
Bram Moolenaar <Bram@vim.org>
parents: 19534
diff changeset
428 bwipe!
29788
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
429
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
430 new
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
431 call AddPropTypes()
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
432 call SetupPropsInFirstLine()
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
433 let props = Get_expected_props() " [whole, one, two, three]
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
434 call assert_equal(props, prop_list(1))
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
435
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
436 " remove one by types
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
437 call assert_equal(1, prop_remove({'types': ['one', 'two', 'three']}, 1))
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
438 unlet props[1] " [whole, two, three]
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
439 call assert_equal(props, prop_list(1))
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
440
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
441 " remove 'all' by types
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
442 call assert_equal(2, prop_remove({'types': ['three', 'whole'], 'all': 1}, 1))
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
443 unlet props[0] " [two, three]
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
444 unlet props[1] " [three]
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
445 call assert_equal(props, prop_list(1))
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
446
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
447 " remove none by types
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
448 call assert_equal(0, prop_remove({'types': ['three', 'whole'], 'all': 1}, 1))
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
449 call assert_equal(props, prop_list(1))
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
450
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
451 " no types
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
452 call assert_fails("call prop_remove({'types': []}, 1)", 'E968:')
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
453 call assert_fails("call prop_remove({'types': ['not_a_real_type']}, 1)", 'E971:')
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
454
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
455 " only one of types and type can be supplied
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
456 call assert_fails("call prop_remove({'type': 'one', 'types': ['three'], 'all': 1}, 1)", 'E1295:')
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
457
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
458 call DeletePropTypes()
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
459 bwipe!
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
460 endfunc
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
461
22127
9d3dfd420a45 patch 8.2.1613: Vim9: cannot pass "true" to prop_type_add()
Bram Moolenaar <Bram@vim.org>
parents: 22125
diff changeset
462 def Test_prop_add_vim9()
23072
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
463 prop_type_add('comment', {
22127
9d3dfd420a45 patch 8.2.1613: Vim9: cannot pass "true" to prop_type_add()
Bram Moolenaar <Bram@vim.org>
parents: 22125
diff changeset
464 highlight: 'Directory',
9d3dfd420a45 patch 8.2.1613: Vim9: cannot pass "true" to prop_type_add()
Bram Moolenaar <Bram@vim.org>
parents: 22125
diff changeset
465 priority: 123,
9d3dfd420a45 patch 8.2.1613: Vim9: cannot pass "true" to prop_type_add()
Bram Moolenaar <Bram@vim.org>
parents: 22125
diff changeset
466 start_incl: true,
9d3dfd420a45 patch 8.2.1613: Vim9: cannot pass "true" to prop_type_add()
Bram Moolenaar <Bram@vim.org>
parents: 22125
diff changeset
467 end_incl: true,
9d3dfd420a45 patch 8.2.1613: Vim9: cannot pass "true" to prop_type_add()
Bram Moolenaar <Bram@vim.org>
parents: 22125
diff changeset
468 combine: false,
9d3dfd420a45 patch 8.2.1613: Vim9: cannot pass "true" to prop_type_add()
Bram Moolenaar <Bram@vim.org>
parents: 22125
diff changeset
469 })
9d3dfd420a45 patch 8.2.1613: Vim9: cannot pass "true" to prop_type_add()
Bram Moolenaar <Bram@vim.org>
parents: 22125
diff changeset
470 prop_type_delete('comment')
9d3dfd420a45 patch 8.2.1613: Vim9: cannot pass "true" to prop_type_add()
Bram Moolenaar <Bram@vim.org>
parents: 22125
diff changeset
471 enddef
9d3dfd420a45 patch 8.2.1613: Vim9: cannot pass "true" to prop_type_add()
Bram Moolenaar <Bram@vim.org>
parents: 22125
diff changeset
472
22125
602e660d5ccf patch 8.2.1612: Vim9: cannot pass "true" to prop_remove()
Bram Moolenaar <Bram@vim.org>
parents: 22087
diff changeset
473 def Test_prop_remove_vim9()
602e660d5ccf patch 8.2.1612: Vim9: cannot pass "true" to prop_remove()
Bram Moolenaar <Bram@vim.org>
parents: 22087
diff changeset
474 new
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 26384
diff changeset
475 g:AddPropTypes()
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 26384
diff changeset
476 g:SetupPropsInFirstLine()
23072
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
477 assert_equal(1, prop_remove({type: 'three', id: 13, both: true, all: true}))
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 26384
diff changeset
478 g:DeletePropTypes()
22125
602e660d5ccf patch 8.2.1612: Vim9: cannot pass "true" to prop_remove()
Bram Moolenaar <Bram@vim.org>
parents: 22087
diff changeset
479 bwipe!
602e660d5ccf patch 8.2.1612: Vim9: cannot pass "true" to prop_remove()
Bram Moolenaar <Bram@vim.org>
parents: 22087
diff changeset
480 enddef
602e660d5ccf patch 8.2.1612: Vim9: cannot pass "true" to prop_remove()
Bram Moolenaar <Bram@vim.org>
parents: 22087
diff changeset
481
15349
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
482 func SetupOneLine()
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
483 call setline(1, 'xonex xtwoxx')
16662
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
484 normal gg0
15349
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
485 call AddPropTypes()
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
486 call prop_add(1, 2, {'length': 3, 'id': 11, 'type': 'one'})
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
487 call prop_add(1, 8, {'length': 3, 'id': 12, 'type': 'two'})
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
488 let expected = [
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
489 \ #{type_bufnr: 0, col: 2, length: 3, id: 11, type: 'one', start: 1, end: 1},
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
490 \ #{type_bufnr: 0, col: 8, length: 3, id: 12, type: 'two', start: 1, end: 1},
15349
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
491 \]
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
492 call assert_equal(expected, prop_list(1))
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
493 return expected
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
494 endfunc
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
495
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
496 func Test_prop_add_remove_buf()
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
497 new
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
498 let bufnr = bufnr('')
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
499 call AddPropTypes()
16060
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
500 for lnum in range(1, 4)
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
501 call setline(lnum, 'one two three')
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
502 endfor
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
503 wincmd w
16060
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
504 for lnum in range(1, 4)
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
505 call prop_add(lnum, 1, {'length': 3, 'id': 11, 'type': 'one', 'bufnr': bufnr})
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
506 call prop_add(lnum, 5, {'length': 3, 'id': 12, 'type': 'two', 'bufnr': bufnr})
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
507 call prop_add(lnum, 11, {'length': 3, 'id': 13, 'type': 'three', 'bufnr': bufnr})
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
508 endfor
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
509
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
510 let props = [
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
511 \ #{type_bufnr: 0, col: 1, length: 3, id: 11, type: 'one', start: 1, end: 1},
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
512 \ #{type_bufnr: 0, col: 5, length: 3, id: 12, type: 'two', start: 1, end: 1},
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
513 \ #{type_bufnr: 0, col: 11, length: 3, id: 13, type: 'three', start: 1, end: 1},
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
514 \]
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
515 call assert_equal(props, prop_list(1, {'bufnr': bufnr}))
16060
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
516
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
517 " remove by id
16060
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
518 let before_props = deepcopy(props)
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
519 unlet props[1]
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
520
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
521 call prop_remove({'id': 12, 'bufnr': bufnr}, 1)
16060
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
522 call assert_equal(props, prop_list(1, {'bufnr': bufnr}))
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
523 call assert_equal(before_props, prop_list(2, {'bufnr': bufnr}))
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
524 call assert_equal(before_props, prop_list(3, {'bufnr': bufnr}))
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
525 call assert_equal(before_props, prop_list(4, {'bufnr': bufnr}))
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
526
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
527 call prop_remove({'id': 12, 'bufnr': bufnr}, 3, 4)
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
528 call assert_equal(props, prop_list(1, {'bufnr': bufnr}))
16060
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
529 call assert_equal(before_props, prop_list(2, {'bufnr': bufnr}))
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
530 call assert_equal(props, prop_list(3, {'bufnr': bufnr}))
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
531 call assert_equal(props, prop_list(4, {'bufnr': bufnr}))
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
532
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
533 call prop_remove({'id': 12, 'bufnr': bufnr})
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
534 for lnum in range(1, 4)
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
535 call assert_equal(props, prop_list(lnum, {'bufnr': bufnr}))
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
536 endfor
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
537
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
538 " remove by type
16060
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
539 let before_props = deepcopy(props)
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
540 unlet props[0]
16060
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
541
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
542 call prop_remove({'type': 'one', 'bufnr': bufnr}, 1)
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
543 call assert_equal(props, prop_list(1, {'bufnr': bufnr}))
16060
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
544 call assert_equal(before_props, prop_list(2, {'bufnr': bufnr}))
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
545 call assert_equal(before_props, prop_list(3, {'bufnr': bufnr}))
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
546 call assert_equal(before_props, prop_list(4, {'bufnr': bufnr}))
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
547
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
548 call prop_remove({'type': 'one', 'bufnr': bufnr}, 3, 4)
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
549 call assert_equal(props, prop_list(1, {'bufnr': bufnr}))
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
550 call assert_equal(before_props, prop_list(2, {'bufnr': bufnr}))
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
551 call assert_equal(props, prop_list(3, {'bufnr': bufnr}))
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
552 call assert_equal(props, prop_list(4, {'bufnr': bufnr}))
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
553
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
554 call prop_remove({'type': 'one', 'bufnr': bufnr})
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
555 for lnum in range(1, 4)
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
556 call assert_equal(props, prop_list(lnum, {'bufnr': bufnr}))
176872829dc2 patch 8.1.1035: prop_remove() second argument is not optional
Bram Moolenaar <Bram@vim.org>
parents: 15928
diff changeset
557 endfor
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
558
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
559 call DeletePropTypes()
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
560 wincmd w
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
561 bwipe!
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
562 endfunc
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
563
15347
f6b522596993 patch 8.1.0681: text properties as not adjusted for deleted text
Bram Moolenaar <Bram@vim.org>
parents: 15341
diff changeset
564 func Test_prop_backspace()
f6b522596993 patch 8.1.0681: text properties as not adjusted for deleted text
Bram Moolenaar <Bram@vim.org>
parents: 15341
diff changeset
565 new
f6b522596993 patch 8.1.0681: text properties as not adjusted for deleted text
Bram Moolenaar <Bram@vim.org>
parents: 15341
diff changeset
566 set bs=2
15349
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
567 let expected = SetupOneLine() " 'xonex xtwoxx'
15347
f6b522596993 patch 8.1.0681: text properties as not adjusted for deleted text
Bram Moolenaar <Bram@vim.org>
parents: 15341
diff changeset
568
f6b522596993 patch 8.1.0681: text properties as not adjusted for deleted text
Bram Moolenaar <Bram@vim.org>
parents: 15341
diff changeset
569 exe "normal 0li\<BS>\<Esc>fxli\<BS>\<Esc>"
f6b522596993 patch 8.1.0681: text properties as not adjusted for deleted text
Bram Moolenaar <Bram@vim.org>
parents: 15341
diff changeset
570 call assert_equal('one xtwoxx', getline(1))
f6b522596993 patch 8.1.0681: text properties as not adjusted for deleted text
Bram Moolenaar <Bram@vim.org>
parents: 15341
diff changeset
571 let expected[0].col = 1
f6b522596993 patch 8.1.0681: text properties as not adjusted for deleted text
Bram Moolenaar <Bram@vim.org>
parents: 15341
diff changeset
572 let expected[1].col = 6
f6b522596993 patch 8.1.0681: text properties as not adjusted for deleted text
Bram Moolenaar <Bram@vim.org>
parents: 15341
diff changeset
573 call assert_equal(expected, prop_list(1))
f6b522596993 patch 8.1.0681: text properties as not adjusted for deleted text
Bram Moolenaar <Bram@vim.org>
parents: 15341
diff changeset
574
f6b522596993 patch 8.1.0681: text properties as not adjusted for deleted text
Bram Moolenaar <Bram@vim.org>
parents: 15341
diff changeset
575 call DeletePropTypes()
f6b522596993 patch 8.1.0681: text properties as not adjusted for deleted text
Bram Moolenaar <Bram@vim.org>
parents: 15341
diff changeset
576 bwipe!
f6b522596993 patch 8.1.0681: text properties as not adjusted for deleted text
Bram Moolenaar <Bram@vim.org>
parents: 15341
diff changeset
577 set bs&
f6b522596993 patch 8.1.0681: text properties as not adjusted for deleted text
Bram Moolenaar <Bram@vim.org>
parents: 15341
diff changeset
578 endfunc
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
579
28841
77a00aa3e215 patch 8.2.4944: text properties are wrong after "cc"
Bram Moolenaar <Bram@vim.org>
parents: 28526
diff changeset
580 func Test_prop_change()
77a00aa3e215 patch 8.2.4944: text properties are wrong after "cc"
Bram Moolenaar <Bram@vim.org>
parents: 28526
diff changeset
581 new
77a00aa3e215 patch 8.2.4944: text properties are wrong after "cc"
Bram Moolenaar <Bram@vim.org>
parents: 28526
diff changeset
582 let expected = SetupOneLine() " 'xonex xtwoxx'
77a00aa3e215 patch 8.2.4944: text properties are wrong after "cc"
Bram Moolenaar <Bram@vim.org>
parents: 28526
diff changeset
583
77a00aa3e215 patch 8.2.4944: text properties are wrong after "cc"
Bram Moolenaar <Bram@vim.org>
parents: 28526
diff changeset
584 " Characterwise.
77a00aa3e215 patch 8.2.4944: text properties are wrong after "cc"
Bram Moolenaar <Bram@vim.org>
parents: 28526
diff changeset
585 exe "normal 7|c$\<Esc>"
77a00aa3e215 patch 8.2.4944: text properties are wrong after "cc"
Bram Moolenaar <Bram@vim.org>
parents: 28526
diff changeset
586 call assert_equal('xonex ', getline(1))
77a00aa3e215 patch 8.2.4944: text properties are wrong after "cc"
Bram Moolenaar <Bram@vim.org>
parents: 28526
diff changeset
587 call assert_equal(expected[:0], prop_list(1))
77a00aa3e215 patch 8.2.4944: text properties are wrong after "cc"
Bram Moolenaar <Bram@vim.org>
parents: 28526
diff changeset
588 " Linewise.
77a00aa3e215 patch 8.2.4944: text properties are wrong after "cc"
Bram Moolenaar <Bram@vim.org>
parents: 28526
diff changeset
589 exe "normal cc\<Esc>"
77a00aa3e215 patch 8.2.4944: text properties are wrong after "cc"
Bram Moolenaar <Bram@vim.org>
parents: 28526
diff changeset
590 call assert_equal('', getline(1))
77a00aa3e215 patch 8.2.4944: text properties are wrong after "cc"
Bram Moolenaar <Bram@vim.org>
parents: 28526
diff changeset
591 call assert_equal([], prop_list(1))
77a00aa3e215 patch 8.2.4944: text properties are wrong after "cc"
Bram Moolenaar <Bram@vim.org>
parents: 28526
diff changeset
592
77a00aa3e215 patch 8.2.4944: text properties are wrong after "cc"
Bram Moolenaar <Bram@vim.org>
parents: 28526
diff changeset
593 call DeletePropTypes()
77a00aa3e215 patch 8.2.4944: text properties are wrong after "cc"
Bram Moolenaar <Bram@vim.org>
parents: 28526
diff changeset
594 bwipe!
77a00aa3e215 patch 8.2.4944: text properties are wrong after "cc"
Bram Moolenaar <Bram@vim.org>
parents: 28526
diff changeset
595 set bs&
77a00aa3e215 patch 8.2.4944: text properties are wrong after "cc"
Bram Moolenaar <Bram@vim.org>
parents: 28526
diff changeset
596 endfunc
77a00aa3e215 patch 8.2.4944: text properties are wrong after "cc"
Bram Moolenaar <Bram@vim.org>
parents: 28526
diff changeset
597
15349
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
598 func Test_prop_replace()
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
599 new
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
600 set bs=2
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
601 let expected = SetupOneLine() " 'xonex xtwoxx'
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
602
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
603 exe "normal 0Ryyy\<Esc>"
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
604 call assert_equal('yyyex xtwoxx', getline(1))
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
605 call assert_equal(expected, prop_list(1))
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
606
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
607 exe "normal ftRyy\<BS>"
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
608 call assert_equal('yyyex xywoxx', getline(1))
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
609 call assert_equal(expected, prop_list(1))
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
610
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
611 exe "normal 0fwRyy\<BS>"
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
612 call assert_equal('yyyex xyyoxx', getline(1))
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
613 call assert_equal(expected, prop_list(1))
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
614
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
615 exe "normal 0foRyy\<BS>\<BS>"
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
616 call assert_equal('yyyex xyyoxx', getline(1))
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
617 call assert_equal(expected, prop_list(1))
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
618
28931
b57caac54649 patch 8.2.4988: textprop in wrong position when replacing multi-byte chars
Bram Moolenaar <Bram@vim.org>
parents: 28875
diff changeset
619 " Replace three 1-byte chars with three 2-byte ones.
b57caac54649 patch 8.2.4988: textprop in wrong position when replacing multi-byte chars
Bram Moolenaar <Bram@vim.org>
parents: 28875
diff changeset
620 exe "normal 0l3rø"
b57caac54649 patch 8.2.4988: textprop in wrong position when replacing multi-byte chars
Bram Moolenaar <Bram@vim.org>
parents: 28875
diff changeset
621 call assert_equal('yøøøx xyyoxx', getline(1))
b57caac54649 patch 8.2.4988: textprop in wrong position when replacing multi-byte chars
Bram Moolenaar <Bram@vim.org>
parents: 28875
diff changeset
622 let expected[0].length += 3
b57caac54649 patch 8.2.4988: textprop in wrong position when replacing multi-byte chars
Bram Moolenaar <Bram@vim.org>
parents: 28875
diff changeset
623 let expected[1].col += 3
b57caac54649 patch 8.2.4988: textprop in wrong position when replacing multi-byte chars
Bram Moolenaar <Bram@vim.org>
parents: 28875
diff changeset
624 call assert_equal(expected, prop_list(1))
b57caac54649 patch 8.2.4988: textprop in wrong position when replacing multi-byte chars
Bram Moolenaar <Bram@vim.org>
parents: 28875
diff changeset
625
15349
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
626 call DeletePropTypes()
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
627 bwipe!
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
628 set bs&
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
629 endfunc
6abee072b93c patch 8.1.0682: text properties not adjusted when backspacing replaced text
Bram Moolenaar <Bram@vim.org>
parents: 15347
diff changeset
630
16662
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
631 func Test_prop_open_line()
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
632 new
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
633
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
634 " open new line, props stay in top line
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
635 let expected = SetupOneLine() " 'xonex xtwoxx'
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
636 exe "normal o\<Esc>"
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
637 call assert_equal('xonex xtwoxx', getline(1))
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
638 call assert_equal('', getline(2))
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
639 call assert_equal(expected, prop_list(1))
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
640 call DeletePropTypes()
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
641
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
642 " move all props to next line
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
643 let expected = SetupOneLine() " 'xonex xtwoxx'
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
644 exe "normal 0i\<CR>\<Esc>"
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
645 call assert_equal('', getline(1))
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
646 call assert_equal('xonex xtwoxx', getline(2))
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
647 call assert_equal(expected, prop_list(2))
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
648 call DeletePropTypes()
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
649
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
650 " split just before prop, move all props to next line
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
651 let expected = SetupOneLine() " 'xonex xtwoxx'
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
652 exe "normal 0li\<CR>\<Esc>"
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
653 call assert_equal('x', getline(1))
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
654 call assert_equal('onex xtwoxx', getline(2))
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
655 let expected[0].col -= 1
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
656 let expected[1].col -= 1
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
657 call assert_equal(expected, prop_list(2))
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
658 call DeletePropTypes()
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
659
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
660 " split inside prop, split first prop
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
661 let expected = SetupOneLine() " 'xonex xtwoxx'
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
662 exe "normal 0lli\<CR>\<Esc>"
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
663 call assert_equal('xo', getline(1))
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
664 call assert_equal('nex xtwoxx', getline(2))
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
665 let exp_first = [deepcopy(expected[0])]
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
666 let exp_first[0].length = 1
20583
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
667 let exp_first[0].end = 0
16662
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
668 call assert_equal(exp_first, prop_list(1))
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
669 let expected[0].col = 1
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
670 let expected[0].length = 2
20583
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
671 let expected[0].start = 0
16662
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
672 let expected[1].col -= 2
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
673 call assert_equal(expected, prop_list(2))
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
674 call DeletePropTypes()
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
675
16670
5733d8e33bce patch 8.1.1337: get empty text prop when splitting line just after text prop
Bram Moolenaar <Bram@vim.org>
parents: 16662
diff changeset
676 " split just after first prop, second prop move to next line
16662
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
677 let expected = SetupOneLine() " 'xonex xtwoxx'
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
678 exe "normal 0fea\<CR>\<Esc>"
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
679 call assert_equal('xone', getline(1))
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
680 call assert_equal('x xtwoxx', getline(2))
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
681 let exp_first = expected[0:0]
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
682 call assert_equal(exp_first, prop_list(1))
16670
5733d8e33bce patch 8.1.1337: get empty text prop when splitting line just after text prop
Bram Moolenaar <Bram@vim.org>
parents: 16662
diff changeset
683 let expected = expected[1:1]
5733d8e33bce patch 8.1.1337: get empty text prop when splitting line just after text prop
Bram Moolenaar <Bram@vim.org>
parents: 16662
diff changeset
684 let expected[0].col -= 4
16662
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
685 call assert_equal(expected, prop_list(2))
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
686 call DeletePropTypes()
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
687
28865
a04815de0bd3 patch 8.2.4955: text property in wrong position after auto-indent
Bram Moolenaar <Bram@vim.org>
parents: 28863
diff changeset
688 " split at the space character with 'ai' active, the leading space is removed
a04815de0bd3 patch 8.2.4955: text property in wrong position after auto-indent
Bram Moolenaar <Bram@vim.org>
parents: 28863
diff changeset
689 " in the second line and the prop is shifted accordingly.
a04815de0bd3 patch 8.2.4955: text property in wrong position after auto-indent
Bram Moolenaar <Bram@vim.org>
parents: 28863
diff changeset
690 let expected = SetupOneLine() " 'xonex xtwoxx'
a04815de0bd3 patch 8.2.4955: text property in wrong position after auto-indent
Bram Moolenaar <Bram@vim.org>
parents: 28863
diff changeset
691 set ai
a04815de0bd3 patch 8.2.4955: text property in wrong position after auto-indent
Bram Moolenaar <Bram@vim.org>
parents: 28863
diff changeset
692 exe "normal 6|i\<CR>\<Esc>"
a04815de0bd3 patch 8.2.4955: text property in wrong position after auto-indent
Bram Moolenaar <Bram@vim.org>
parents: 28863
diff changeset
693 call assert_equal('xonex', getline(1))
a04815de0bd3 patch 8.2.4955: text property in wrong position after auto-indent
Bram Moolenaar <Bram@vim.org>
parents: 28863
diff changeset
694 call assert_equal('xtwoxx', getline(2))
a04815de0bd3 patch 8.2.4955: text property in wrong position after auto-indent
Bram Moolenaar <Bram@vim.org>
parents: 28863
diff changeset
695 let expected[1].col -= 6
a04815de0bd3 patch 8.2.4955: text property in wrong position after auto-indent
Bram Moolenaar <Bram@vim.org>
parents: 28863
diff changeset
696 call assert_equal(expected, prop_list(1) + prop_list(2))
a04815de0bd3 patch 8.2.4955: text property in wrong position after auto-indent
Bram Moolenaar <Bram@vim.org>
parents: 28863
diff changeset
697 set ai&
a04815de0bd3 patch 8.2.4955: text property in wrong position after auto-indent
Bram Moolenaar <Bram@vim.org>
parents: 28863
diff changeset
698 call DeletePropTypes()
a04815de0bd3 patch 8.2.4955: text property in wrong position after auto-indent
Bram Moolenaar <Bram@vim.org>
parents: 28863
diff changeset
699
16662
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
700 bwipe!
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
701 set bs&
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
702 endfunc
1fc9cd08cf3c patch 8.1.1333: text properties don't always move after changes
Bram Moolenaar <Bram@vim.org>
parents: 16545
diff changeset
703
29645
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
704 func Test_prop_put()
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
705 new
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
706 let expected = SetupOneLine() " 'xonex xtwoxx'
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
707
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
708 let @a = 'new'
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
709 " insert just after the prop
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
710 normal 03l"ap
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
711 " insert inside the prop
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
712 normal 02l"ap
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
713 " insert just before the prop
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
714 normal 0"ap
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
715
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
716 call assert_equal('xnewonnewenewx xtwoxx', getline(1))
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
717 let expected[0].col += 3
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
718 let expected[0].length += 3
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
719 let expected[1].col += 9
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
720 call assert_equal(expected, prop_list(1))
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
721
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
722 " Visually select 4 chars in the prop and put "AB" to replace them
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
723 let @a = 'AB'
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
724 normal 05lv3l"ap
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
725 call assert_equal('xnewoABenewx xtwoxx', getline(1))
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
726 let expected[0].length -= 2
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
727 let expected[1].col -= 2
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
728 call assert_equal(expected, prop_list(1))
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
729
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
730 call DeletePropTypes()
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
731 bwipe!
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
732 endfunc
9cd050914eb6 patch 9.0.0163: text property not adjusted for text inserted with "p"
Bram Moolenaar <Bram@vim.org>
parents: 29643
diff changeset
733
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
734 func Test_prop_clear()
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
735 new
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
736 call AddPropTypes()
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
737 call SetupPropsInFirstLine()
15367
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
738 call assert_equal(Get_expected_props(), prop_list(1))
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
739
17980
52f23198af7f patch 8.1.1986: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents: 17694
diff changeset
740 eval 1->prop_clear()
52f23198af7f patch 8.1.1986: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents: 17694
diff changeset
741 call assert_equal([], 1->prop_list())
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
742
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
743 call DeletePropTypes()
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
744 bwipe!
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
745 endfunc
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
746
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
747 func Test_prop_clear_buf()
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
748 new
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
749 call AddPropTypes()
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
750 call SetupPropsInFirstLine()
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
751 let bufnr = bufnr('')
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
752 wincmd w
15367
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
753 call assert_equal(Get_expected_props(), prop_list(1, {'bufnr': bufnr}))
15138
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
754
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
755 call prop_clear(1, 1, {'bufnr': bufnr})
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
756 call assert_equal([], prop_list(1, {'bufnr': bufnr}))
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
757
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
758 wincmd w
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
759 call DeletePropTypes()
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
760 bwipe!
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
761 endfunc
9df130fd5e0d patch 8.1.0579: cannot attach properties to text
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
762
15365
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
763 func Test_prop_setline()
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
764 new
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
765 call AddPropTypes()
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
766 call SetupPropsInFirstLine()
15367
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
767 call assert_equal(Get_expected_props(), prop_list(1))
15365
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
768
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
769 call setline(1, 'foobar')
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
770 call assert_equal([], prop_list(1))
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
771
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
772 call DeletePropTypes()
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
773 bwipe!
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
774 endfunc
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
775
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
776 func Test_prop_setbufline()
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
777 new
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
778 call AddPropTypes()
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
779 call SetupPropsInFirstLine()
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
780 let bufnr = bufnr('')
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
781 wincmd w
15367
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
782 call assert_equal(Get_expected_props(), prop_list(1, {'bufnr': bufnr}))
15365
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
783
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
784 call setbufline(bufnr, 1, 'foobar')
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
785 call assert_equal([], prop_list(1, {'bufnr': bufnr}))
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
786
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
787 wincmd w
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
788 call DeletePropTypes()
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
789 bwipe!
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
790 endfunc
01ee8dc12313 patch 8.1.0690: setline() and setbufline() do not clear text properties
Bram Moolenaar <Bram@vim.org>
parents: 15363
diff changeset
791
15367
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
792 func Test_prop_substitute()
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
793 new
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
794 " Set first line to 'one two three'
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
795 call AddPropTypes()
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
796 call SetupPropsInFirstLine()
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
797 let expected_props = Get_expected_props()
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
798 call assert_equal(expected_props, prop_list(1))
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
799
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
800 " Change "n" in "one" to XX: 'oXXe two three'
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
801 s/n/XX/
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
802 let expected_props[0].length += 1
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
803 let expected_props[1].length += 1
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
804 let expected_props[2].col += 1
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
805 let expected_props[3].col += 1
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
806 call assert_equal(expected_props, prop_list(1))
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
807
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
808 " Delete "t" in "two" and "three" to XX: 'oXXe wo hree'
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
809 s/t//g
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
810 let expected_props[0].length -= 2
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
811 let expected_props[2].length -= 1
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
812 let expected_props[3].length -= 1
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
813 let expected_props[3].col -= 1
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
814 call assert_equal(expected_props, prop_list(1))
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
815
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
816 " Split the line by changing w to line break: 'oXXe ', 'o hree'
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
817 " The long prop is split and spans both lines.
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
818 " The props on "two" and "three" move to the next line.
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
819 s/w/\r/
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
820 let new_props = [
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
821 \ copy(expected_props[0]),
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
822 \ copy(expected_props[2]),
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
823 \ copy(expected_props[3]),
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
824 \ ]
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
825 let expected_props[0].length = 5
20583
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
826 let expected_props[0].end = 0
15367
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
827 unlet expected_props[3]
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
828 unlet expected_props[2]
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
829 call assert_equal(expected_props, prop_list(1))
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
830
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
831 let new_props[0].length = 6
20583
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
832 let new_props[0].start = 0
15367
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
833 let new_props[1].col = 1
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
834 let new_props[1].length = 1
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
835 let new_props[2].col = 3
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
836 call assert_equal(new_props, prop_list(2))
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
837
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
838 call DeletePropTypes()
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
839 bwipe!
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
840 endfunc
273649cad196 patch 8.1.0691: text properties are not adjusted for :substitute
Bram Moolenaar <Bram@vim.org>
parents: 15365
diff changeset
841
15398
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
842 func Test_prop_change_indent()
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
843 call prop_type_add('comment', {'highlight': 'Directory'})
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
844 new
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
845 call setline(1, [' xxx', 'yyyyy'])
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
846 call prop_add(2, 2, {'length': 2, 'type': 'comment'})
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
847 let expect = #{type_bufnr: 0, col: 2, length: 2, type: 'comment', start: 1, end: 1, id: 0}
15398
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
848 call assert_equal([expect], prop_list(2))
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
849
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
850 set shiftwidth=3
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
851 normal 2G>>
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
852 call assert_equal(' yyyyy', getline(2))
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
853 let expect.col += 3
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
854 call assert_equal([expect], prop_list(2))
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
855
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
856 normal 2G==
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
857 call assert_equal(' yyyyy', getline(2))
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
858 let expect.col = 6
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
859 call assert_equal([expect], prop_list(2))
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
860
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
861 call prop_clear(2)
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
862 call prop_add(2, 2, {'length': 5, 'type': 'comment'})
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
863 let expect.col = 2
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
864 let expect.length = 5
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
865 call assert_equal([expect], prop_list(2))
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
866
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
867 normal 2G<<
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
868 call assert_equal(' yyyyy', getline(2))
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
869 let expect.length = 2
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
870 call assert_equal([expect], prop_list(2))
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
871
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
872 set shiftwidth&
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
873 call prop_type_delete('comment')
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
874 endfunc
3e02464faaac patch 8.1.0707: text property columns are not adjusted for changed indent
Bram Moolenaar <Bram@vim.org>
parents: 15367
diff changeset
875
15292
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
876 " Setup a three line prop in lines 2 - 4.
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
877 " Add short props in line 1 and 5.
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
878 func Setup_three_line_prop()
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
879 new
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
880 call setline(1, ['one', 'twotwo', 'three', 'fourfour', 'five'])
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
881 call prop_add(1, 2, {'length': 1, 'type': 'comment'})
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
882 call prop_add(2, 4, {'end_lnum': 4, 'end_col': 5, 'type': 'comment'})
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
883 call prop_add(5, 2, {'length': 1, 'type': 'comment'})
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
884 endfunc
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
885
15251
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
886 func Test_prop_multiline()
17980
52f23198af7f patch 8.1.1986: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents: 17694
diff changeset
887 eval 'comment'->prop_type_add({'highlight': 'Directory'})
15251
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
888 new
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
889 call setline(1, ['xxxxxxx', 'yyyyyyyyy', 'zzzzzzzz'])
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
890
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
891 " start halfway line 1, end halfway line 3
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
892 call prop_add(1, 3, {'end_lnum': 3, 'end_col': 5, 'type': 'comment'})
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
893 let expect1 = #{type_bufnr: 0, col: 3, length: 6, type: 'comment', start: 1, end: 0, id: 0}
15251
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
894 call assert_equal([expect1], prop_list(1))
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
895 let expect2 = #{type_bufnr: 0, col: 1, length: 10, type: 'comment', start: 0, end: 0, id: 0}
15251
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
896 call assert_equal([expect2], prop_list(2))
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
897 let expect3 = #{type_bufnr: 0, col: 1, length: 4, type: 'comment', start: 0, end: 1, id: 0}
15251
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
898 call assert_equal([expect3], prop_list(3))
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
899 call prop_clear(1, 3)
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
900
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
901 " include all three lines
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
902 call prop_add(1, 1, {'end_lnum': 3, 'end_col': 999, 'type': 'comment'})
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
903 let expect1.col = 1
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
904 let expect1.length = 8
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
905 call assert_equal([expect1], prop_list(1))
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
906 call assert_equal([expect2], prop_list(2))
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
907 let expect3.length = 9
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
908 call assert_equal([expect3], prop_list(3))
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
909 call prop_clear(1, 3)
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
910
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
911 bwipe!
15292
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
912
15335
18c20ceee4b5 patch 8.1.0675: text property column in screen columns is not practical
Bram Moolenaar <Bram@vim.org>
parents: 15318
diff changeset
913 " Test deleting the first line of a multi-line prop.
15292
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
914 call Setup_three_line_prop()
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
915 let expect_short = #{type_bufnr: 0, col: 2, length: 1, type: 'comment', start: 1, end: 1, id: 0}
15335
18c20ceee4b5 patch 8.1.0675: text property column in screen columns is not practical
Bram Moolenaar <Bram@vim.org>
parents: 15318
diff changeset
916 call assert_equal([expect_short], prop_list(1))
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
917 let expect2 = #{type_bufnr: 0, col: 4, length: 4, type: 'comment', start: 1, end: 0, id: 0}
15292
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
918 call assert_equal([expect2], prop_list(2))
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
919 2del
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
920 call assert_equal([expect_short], prop_list(1))
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
921 let expect2 = #{type_bufnr: 0, col: 1, length: 6, type: 'comment', start: 1, end: 0, id: 0}
15292
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
922 call assert_equal([expect2], prop_list(2))
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
923 bwipe!
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
924
15335
18c20ceee4b5 patch 8.1.0675: text property column in screen columns is not practical
Bram Moolenaar <Bram@vim.org>
parents: 15318
diff changeset
925 " Test deleting the last line of a multi-line prop.
15292
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
926 call Setup_three_line_prop()
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
927 let expect3 = #{type_bufnr: 0, col: 1, length: 6, type: 'comment', start: 0, end: 0, id: 0}
15292
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
928 call assert_equal([expect3], prop_list(3))
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
929 let expect4 = #{type_bufnr: 0, col: 1, length: 4, type: 'comment', start: 0, end: 1, id: 0}
15292
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
930 call assert_equal([expect4], prop_list(4))
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
931 4del
15335
18c20ceee4b5 patch 8.1.0675: text property column in screen columns is not practical
Bram Moolenaar <Bram@vim.org>
parents: 15318
diff changeset
932 let expect3.end = 1
15292
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
933 call assert_equal([expect3], prop_list(3))
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
934 call assert_equal([expect_short], prop_list(4))
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
935 bwipe!
ba6f0f1bb9d0 patch 8.1.0654: when deleting a line text property flags are not adjusted
Bram Moolenaar <Bram@vim.org>
parents: 15269
diff changeset
936
15335
18c20ceee4b5 patch 8.1.0675: text property column in screen columns is not practical
Bram Moolenaar <Bram@vim.org>
parents: 15318
diff changeset
937 " Test appending a line below the multi-line text prop start.
15294
2d8225cc1315 patch 8.1.0655: when appending a line text property flags are not added
Bram Moolenaar <Bram@vim.org>
parents: 15292
diff changeset
938 call Setup_three_line_prop()
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
939 let expect2 = #{type_bufnr: 0, col: 4, length: 4, type: 'comment', start: 1, end: 0, id: 0}
15294
2d8225cc1315 patch 8.1.0655: when appending a line text property flags are not added
Bram Moolenaar <Bram@vim.org>
parents: 15292
diff changeset
940 call assert_equal([expect2], prop_list(2))
2d8225cc1315 patch 8.1.0655: when appending a line text property flags are not added
Bram Moolenaar <Bram@vim.org>
parents: 15292
diff changeset
941 call append(2, "new line")
2d8225cc1315 patch 8.1.0655: when appending a line text property flags are not added
Bram Moolenaar <Bram@vim.org>
parents: 15292
diff changeset
942 call assert_equal([expect2], prop_list(2))
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
943 let expect3 = #{type_bufnr: 0, col: 1, length: 9, type: 'comment', start: 0, end: 0, id: 0}
15294
2d8225cc1315 patch 8.1.0655: when appending a line text property flags are not added
Bram Moolenaar <Bram@vim.org>
parents: 15292
diff changeset
944 call assert_equal([expect3], prop_list(3))
2d8225cc1315 patch 8.1.0655: when appending a line text property flags are not added
Bram Moolenaar <Bram@vim.org>
parents: 15292
diff changeset
945 bwipe!
2d8225cc1315 patch 8.1.0655: when appending a line text property flags are not added
Bram Moolenaar <Bram@vim.org>
parents: 15292
diff changeset
946
15251
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
947 call prop_type_delete('comment')
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
948 endfunc
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
949
29657
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
950 func Run_test_with_line2byte(add_props)
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
951 new
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
952 setlocal ff=unix
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
953 if a:add_props
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
954 call prop_type_add('textprop', #{highlight: 'Search'})
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
955 endif
29682
57cfb39b7842 patch 9.0.0181: textprop test with line2byte() fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 29680
diff changeset
956 " Add a text prop to every fourth line and then change every fifth line so
57cfb39b7842 patch 9.0.0181: textprop test with line2byte() fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 29680
diff changeset
957 " that it causes a data block split a few times.
29657
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
958 for nr in range(1, 1000)
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
959 call setline(nr, 'some longer text here')
29682
57cfb39b7842 patch 9.0.0181: textprop test with line2byte() fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 29680
diff changeset
960 if a:add_props && nr % 4 == 0
29657
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
961 call prop_add(nr, 13, #{type: 'textprop', length: 4})
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
962 endif
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
963 endfor
29682
57cfb39b7842 patch 9.0.0181: textprop test with line2byte() fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 29680
diff changeset
964 let expected = 22 * 997 + 1
57cfb39b7842 patch 9.0.0181: textprop test with line2byte() fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 29680
diff changeset
965 call assert_equal(expected, line2byte(998))
57cfb39b7842 patch 9.0.0181: textprop test with line2byte() fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 29680
diff changeset
966
57cfb39b7842 patch 9.0.0181: textprop test with line2byte() fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 29680
diff changeset
967 for nr in range(1, 1000, 5)
29657
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
968 exe nr .. "s/longer/much more/"
29682
57cfb39b7842 patch 9.0.0181: textprop test with line2byte() fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 29680
diff changeset
969 let expected += 3
57cfb39b7842 patch 9.0.0181: textprop test with line2byte() fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 29680
diff changeset
970 call assert_equal(expected, line2byte(998), 'line ' .. nr)
29657
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
971 endfor
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
972
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
973 if a:add_props
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
974 call prop_type_delete('textprop')
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
975 endif
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
976 bwipe!
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
977 endfunc
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
978
19110
e40814841406 patch 8.2.0115: byte2line() does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 19100
diff changeset
979 func Test_prop_line2byte()
15255
19e79a1ed6b6 patch 8.1.0636: line2byte() gives wrong values with text properties
Bram Moolenaar <Bram@vim.org>
parents: 15251
diff changeset
980 call prop_type_add('comment', {'highlight': 'Directory'})
19e79a1ed6b6 patch 8.1.0636: line2byte() gives wrong values with text properties
Bram Moolenaar <Bram@vim.org>
parents: 15251
diff changeset
981 new
15269
27783a6f430b patch 8.1.0643: computing byte offset wrong
Bram Moolenaar <Bram@vim.org>
parents: 15261
diff changeset
982 call setline(1, ['line1', 'second line', ''])
15261
c5cb5151940d patch 8.1.0639: text properties test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 15255
diff changeset
983 set ff=unix
15269
27783a6f430b patch 8.1.0643: computing byte offset wrong
Bram Moolenaar <Bram@vim.org>
parents: 15261
diff changeset
984 call assert_equal(19, line2byte(3))
15255
19e79a1ed6b6 patch 8.1.0636: line2byte() gives wrong values with text properties
Bram Moolenaar <Bram@vim.org>
parents: 15251
diff changeset
985 call prop_add(1, 1, {'end_col': 3, 'type': 'comment'})
15269
27783a6f430b patch 8.1.0643: computing byte offset wrong
Bram Moolenaar <Bram@vim.org>
parents: 15261
diff changeset
986 call assert_equal(19, line2byte(3))
25624
0ef8ef1af478 patch 8.2.3348: line2byte() returns wrong value after adding textprop
Bram Moolenaar <Bram@vim.org>
parents: 25471
diff changeset
987 bwipe!
15255
19e79a1ed6b6 patch 8.1.0636: line2byte() gives wrong values with text properties
Bram Moolenaar <Bram@vim.org>
parents: 15251
diff changeset
988
25624
0ef8ef1af478 patch 8.2.3348: line2byte() returns wrong value after adding textprop
Bram Moolenaar <Bram@vim.org>
parents: 25471
diff changeset
989 new
25628
0407a3db3ef6 patch 8.2.3350: text properties test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 25624
diff changeset
990 setlocal ff=unix
25624
0ef8ef1af478 patch 8.2.3348: line2byte() returns wrong value after adding textprop
Bram Moolenaar <Bram@vim.org>
parents: 25471
diff changeset
991 call setline(1, range(500))
0ef8ef1af478 patch 8.2.3348: line2byte() returns wrong value after adding textprop
Bram Moolenaar <Bram@vim.org>
parents: 25471
diff changeset
992 call assert_equal(1491, line2byte(401))
0ef8ef1af478 patch 8.2.3348: line2byte() returns wrong value after adding textprop
Bram Moolenaar <Bram@vim.org>
parents: 25471
diff changeset
993 call prop_add(2, 1, {'type': 'comment'})
0ef8ef1af478 patch 8.2.3348: line2byte() returns wrong value after adding textprop
Bram Moolenaar <Bram@vim.org>
parents: 25471
diff changeset
994 call prop_add(222, 1, {'type': 'comment'})
0ef8ef1af478 patch 8.2.3348: line2byte() returns wrong value after adding textprop
Bram Moolenaar <Bram@vim.org>
parents: 25471
diff changeset
995 call assert_equal(1491, line2byte(401))
0ef8ef1af478 patch 8.2.3348: line2byte() returns wrong value after adding textprop
Bram Moolenaar <Bram@vim.org>
parents: 25471
diff changeset
996 call prop_remove({'type': 'comment'})
0ef8ef1af478 patch 8.2.3348: line2byte() returns wrong value after adding textprop
Bram Moolenaar <Bram@vim.org>
parents: 25471
diff changeset
997 call assert_equal(1491, line2byte(401))
15255
19e79a1ed6b6 patch 8.1.0636: line2byte() gives wrong values with text properties
Bram Moolenaar <Bram@vim.org>
parents: 15251
diff changeset
998 bwipe!
25624
0ef8ef1af478 patch 8.2.3348: line2byte() returns wrong value after adding textprop
Bram Moolenaar <Bram@vim.org>
parents: 25471
diff changeset
999
25672
ab42c36d1a27 patch 8.2.3372: line2byte() value wrong when adding a text property
Bram Moolenaar <Bram@vim.org>
parents: 25640
diff changeset
1000 new
25674
1d14b5d3de17 patch 8.2.3373: text property test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 25672
diff changeset
1001 setlocal ff=unix
25672
ab42c36d1a27 patch 8.2.3372: line2byte() value wrong when adding a text property
Bram Moolenaar <Bram@vim.org>
parents: 25640
diff changeset
1002 call setline(1, range(520))
ab42c36d1a27 patch 8.2.3372: line2byte() value wrong when adding a text property
Bram Moolenaar <Bram@vim.org>
parents: 25640
diff changeset
1003 call assert_equal(1491, line2byte(401))
ab42c36d1a27 patch 8.2.3372: line2byte() value wrong when adding a text property
Bram Moolenaar <Bram@vim.org>
parents: 25640
diff changeset
1004 call prop_add(2, 1, {'type': 'comment'})
ab42c36d1a27 patch 8.2.3372: line2byte() value wrong when adding a text property
Bram Moolenaar <Bram@vim.org>
parents: 25640
diff changeset
1005 call assert_equal(1491, line2byte(401))
ab42c36d1a27 patch 8.2.3372: line2byte() value wrong when adding a text property
Bram Moolenaar <Bram@vim.org>
parents: 25640
diff changeset
1006 2delete
ab42c36d1a27 patch 8.2.3372: line2byte() value wrong when adding a text property
Bram Moolenaar <Bram@vim.org>
parents: 25640
diff changeset
1007 call assert_equal(1489, line2byte(400))
ab42c36d1a27 patch 8.2.3372: line2byte() value wrong when adding a text property
Bram Moolenaar <Bram@vim.org>
parents: 25640
diff changeset
1008 bwipe!
ab42c36d1a27 patch 8.2.3372: line2byte() value wrong when adding a text property
Bram Moolenaar <Bram@vim.org>
parents: 25640
diff changeset
1009
29657
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
1010 " Add many lines so that the data block is split.
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
1011 " With and without props should give the same result.
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
1012 call Run_test_with_line2byte(0)
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
1013 call Run_test_with_line2byte(1)
b90b037e80be patch 9.0.0169: insufficient testing for line2byte() with text properties
Bram Moolenaar <Bram@vim.org>
parents: 29655
diff changeset
1014
15255
19e79a1ed6b6 patch 8.1.0636: line2byte() gives wrong values with text properties
Bram Moolenaar <Bram@vim.org>
parents: 15251
diff changeset
1015 call prop_type_delete('comment')
19e79a1ed6b6 patch 8.1.0636: line2byte() gives wrong values with text properties
Bram Moolenaar <Bram@vim.org>
parents: 15251
diff changeset
1016 endfunc
19e79a1ed6b6 patch 8.1.0636: line2byte() gives wrong values with text properties
Bram Moolenaar <Bram@vim.org>
parents: 15251
diff changeset
1017
19110
e40814841406 patch 8.2.0115: byte2line() does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 19100
diff changeset
1018 func Test_prop_byte2line()
e40814841406 patch 8.2.0115: byte2line() does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 19100
diff changeset
1019 new
e40814841406 patch 8.2.0115: byte2line() does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 19100
diff changeset
1020 set ff=unix
e40814841406 patch 8.2.0115: byte2line() does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 19100
diff changeset
1021 call setline(1, ['one one', 'two two', 'three three', 'four four', 'five'])
e40814841406 patch 8.2.0115: byte2line() does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 19100
diff changeset
1022 call assert_equal(4, byte2line(line2byte(4)))
e40814841406 patch 8.2.0115: byte2line() does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 19100
diff changeset
1023 call assert_equal(5, byte2line(line2byte(5)))
e40814841406 patch 8.2.0115: byte2line() does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 19100
diff changeset
1024
e40814841406 patch 8.2.0115: byte2line() does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 19100
diff changeset
1025 call prop_type_add('prop', {'highlight': 'Directory'})
e40814841406 patch 8.2.0115: byte2line() does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 19100
diff changeset
1026 call prop_add(3, 1, {'length': 5, 'type': 'prop'})
e40814841406 patch 8.2.0115: byte2line() does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 19100
diff changeset
1027 call assert_equal(4, byte2line(line2byte(4)))
e40814841406 patch 8.2.0115: byte2line() does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 19100
diff changeset
1028 call assert_equal(5, byte2line(line2byte(5)))
e40814841406 patch 8.2.0115: byte2line() does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 19100
diff changeset
1029
e40814841406 patch 8.2.0115: byte2line() does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 19100
diff changeset
1030 bwipe!
e40814841406 patch 8.2.0115: byte2line() does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 19100
diff changeset
1031 call prop_type_delete('prop')
e40814841406 patch 8.2.0115: byte2line() does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 19100
diff changeset
1032 endfunc
e40814841406 patch 8.2.0115: byte2line() does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 19100
diff changeset
1033
23776
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1034 func Test_prop_goto_byte()
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1035 new
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1036 call setline(1, '')
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1037 call setline(2, 'two three')
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1038 call setline(3, '')
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1039 call setline(4, 'four five')
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1040
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1041 call prop_type_add('testprop', {'highlight': 'Directory'})
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1042 call search('^two')
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1043 call prop_add(line('.'), col('.'), {
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1044 \ 'length': len('two'),
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1045 \ 'type': 'testprop'
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1046 \ })
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1047
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1048 call search('two \zsthree')
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1049 let expected_pos = line2byte(line('.')) + col('.') - 1
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1050 exe expected_pos .. 'goto'
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1051 let actual_pos = line2byte(line('.')) + col('.') - 1
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1052 eval actual_pos->assert_equal(expected_pos)
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1053
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1054 call search('four \zsfive')
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1055 let expected_pos = line2byte(line('.')) + col('.') - 1
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1056 exe expected_pos .. 'goto'
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1057 let actual_pos = line2byte(line('.')) + col('.') - 1
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1058 eval actual_pos->assert_equal(expected_pos)
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1059
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1060 call prop_type_delete('testprop')
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1061 bwipe!
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1062 endfunc
9f692a75d481 patch 8.2.2429: :goto does not work correctly with text properties
Bram Moolenaar <Bram@vim.org>
parents: 23306
diff changeset
1063
15363
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1064 func Test_prop_undo()
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1065 new
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1066 call prop_type_add('comment', {'highlight': 'Directory'})
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1067 call setline(1, ['oneone', 'twotwo', 'three'])
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1068 " Set 'undolevels' to break changes into undo-able pieces.
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1069 set ul&
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1070
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1071 call prop_add(1, 3, {'end_col': 5, 'type': 'comment'})
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1072 let expected = [#{type_bufnr: 0, col: 3, length: 2, id: 0, type: 'comment', start: 1, end: 1}]
15363
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1073 call assert_equal(expected, prop_list(1))
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1074
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1075 " Insert a character, then undo.
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1076 exe "normal 0lllix\<Esc>"
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1077 set ul&
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1078 let expected[0].length = 3
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1079 call assert_equal(expected, prop_list(1))
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1080 undo
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1081 let expected[0].length = 2
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1082 call assert_equal(expected, prop_list(1))
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1083
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1084 " Delete a character, then undo
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1085 exe "normal 0lllx"
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1086 set ul&
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1087 let expected[0].length = 1
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1088 call assert_equal(expected, prop_list(1))
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1089 undo
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1090 let expected[0].length = 2
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1091 call assert_equal(expected, prop_list(1))
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1092
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1093 " Delete the line, then undo
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1094 1d
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1095 set ul&
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1096 call assert_equal([], prop_list(1))
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1097 undo
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1098 call assert_equal(expected, prop_list(1))
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1099
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1100 " Insert a character, delete two characters, then undo with "U"
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1101 exe "normal 0lllix\<Esc>"
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1102 set ul&
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1103 let expected[0].length = 3
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1104 call assert_equal(expected, prop_list(1))
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1105 exe "normal 0lllxx"
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1106 set ul&
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1107 let expected[0].length = 1
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1108 call assert_equal(expected, prop_list(1))
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1109 normal U
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1110 let expected[0].length = 2
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1111 call assert_equal(expected, prop_list(1))
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1112
16698
23af483c4ceb patch 8.1.1351: text property wrong after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 16682
diff changeset
1113 " substitute a word, then undo
23af483c4ceb patch 8.1.1351: text property wrong after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 16682
diff changeset
1114 call setline(1, 'the number 123 is highlighted.')
23af483c4ceb patch 8.1.1351: text property wrong after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 16682
diff changeset
1115 call prop_add(1, 12, {'length': 3, 'type': 'comment'})
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1116 let expected = [#{type_bufnr: 0, col: 12, length: 3, id: 0, type: 'comment', start: 1, end: 1} ]
16698
23af483c4ceb patch 8.1.1351: text property wrong after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 16682
diff changeset
1117 call assert_equal(expected, prop_list(1))
23af483c4ceb patch 8.1.1351: text property wrong after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 16682
diff changeset
1118 set ul&
23af483c4ceb patch 8.1.1351: text property wrong after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 16682
diff changeset
1119 1s/number/foo
23af483c4ceb patch 8.1.1351: text property wrong after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 16682
diff changeset
1120 let expected[0].col = 9
23af483c4ceb patch 8.1.1351: text property wrong after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 16682
diff changeset
1121 call assert_equal(expected, prop_list(1))
23af483c4ceb patch 8.1.1351: text property wrong after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 16682
diff changeset
1122 undo
23af483c4ceb patch 8.1.1351: text property wrong after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 16682
diff changeset
1123 let expected[0].col = 12
23af483c4ceb patch 8.1.1351: text property wrong after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 16682
diff changeset
1124 call assert_equal(expected, prop_list(1))
16714
ba592f30c082 patch 8.1.1359: text property wrong after :substitute with backslash
Bram Moolenaar <Bram@vim.org>
parents: 16698
diff changeset
1125 call prop_clear(1)
ba592f30c082 patch 8.1.1359: text property wrong after :substitute with backslash
Bram Moolenaar <Bram@vim.org>
parents: 16698
diff changeset
1126
ba592f30c082 patch 8.1.1359: text property wrong after :substitute with backslash
Bram Moolenaar <Bram@vim.org>
parents: 16698
diff changeset
1127 " substitute with backslash
ba592f30c082 patch 8.1.1359: text property wrong after :substitute with backslash
Bram Moolenaar <Bram@vim.org>
parents: 16698
diff changeset
1128 call setline(1, 'the number 123 is highlighted.')
ba592f30c082 patch 8.1.1359: text property wrong after :substitute with backslash
Bram Moolenaar <Bram@vim.org>
parents: 16698
diff changeset
1129 call prop_add(1, 12, {'length': 3, 'type': 'comment'})
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1130 let expected = [#{type_bufnr: 0, col: 12, length: 3, id: 0, type: 'comment', start: 1, end: 1} ]
16714
ba592f30c082 patch 8.1.1359: text property wrong after :substitute with backslash
Bram Moolenaar <Bram@vim.org>
parents: 16698
diff changeset
1131 call assert_equal(expected, prop_list(1))
ba592f30c082 patch 8.1.1359: text property wrong after :substitute with backslash
Bram Moolenaar <Bram@vim.org>
parents: 16698
diff changeset
1132 1s/the/\The
ba592f30c082 patch 8.1.1359: text property wrong after :substitute with backslash
Bram Moolenaar <Bram@vim.org>
parents: 16698
diff changeset
1133 call assert_equal(expected, prop_list(1))
ba592f30c082 patch 8.1.1359: text property wrong after :substitute with backslash
Bram Moolenaar <Bram@vim.org>
parents: 16698
diff changeset
1134 1s/^/\\
ba592f30c082 patch 8.1.1359: text property wrong after :substitute with backslash
Bram Moolenaar <Bram@vim.org>
parents: 16698
diff changeset
1135 let expected[0].col += 1
ba592f30c082 patch 8.1.1359: text property wrong after :substitute with backslash
Bram Moolenaar <Bram@vim.org>
parents: 16698
diff changeset
1136 call assert_equal(expected, prop_list(1))
ba592f30c082 patch 8.1.1359: text property wrong after :substitute with backslash
Bram Moolenaar <Bram@vim.org>
parents: 16698
diff changeset
1137 1s/^/\~
ba592f30c082 patch 8.1.1359: text property wrong after :substitute with backslash
Bram Moolenaar <Bram@vim.org>
parents: 16698
diff changeset
1138 let expected[0].col += 1
ba592f30c082 patch 8.1.1359: text property wrong after :substitute with backslash
Bram Moolenaar <Bram@vim.org>
parents: 16698
diff changeset
1139 call assert_equal(expected, prop_list(1))
ba592f30c082 patch 8.1.1359: text property wrong after :substitute with backslash
Bram Moolenaar <Bram@vim.org>
parents: 16698
diff changeset
1140 1s/123/12\\3
ba592f30c082 patch 8.1.1359: text property wrong after :substitute with backslash
Bram Moolenaar <Bram@vim.org>
parents: 16698
diff changeset
1141 let expected[0].length += 1
ba592f30c082 patch 8.1.1359: text property wrong after :substitute with backslash
Bram Moolenaar <Bram@vim.org>
parents: 16698
diff changeset
1142 call assert_equal(expected, prop_list(1))
ba592f30c082 patch 8.1.1359: text property wrong after :substitute with backslash
Bram Moolenaar <Bram@vim.org>
parents: 16698
diff changeset
1143 call prop_clear(1)
16698
23af483c4ceb patch 8.1.1351: text property wrong after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 16682
diff changeset
1144
15363
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1145 bwipe!
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1146 call prop_type_delete('comment')
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1147 endfunc
45f36b66a032 patch 8.1.0689: undo with text properties not tested
Bram Moolenaar <Bram@vim.org>
parents: 15349
diff changeset
1148
18631
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1149 func Test_prop_delete_text()
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1150 new
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1151 call prop_type_add('comment', {'highlight': 'Directory'})
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1152 call setline(1, ['oneone', 'twotwo', 'three'])
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1153
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1154 " zero length property
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1155 call prop_add(1, 3, {'type': 'comment'})
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1156 let expected = [#{type_bufnr: 0, col: 3, length: 0, id: 0, type: 'comment', start: 1, end: 1} ]
18631
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1157 call assert_equal(expected, prop_list(1))
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1158
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1159 " delete one char moves the property
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1160 normal! x
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1161 let expected = [#{type_bufnr: 0, col: 2, length: 0, id: 0, type: 'comment', start: 1, end: 1} ]
18631
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1162 call assert_equal(expected, prop_list(1))
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1163
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1164 " delete char of the property has no effect
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1165 normal! lx
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1166 let expected = [#{type_bufnr: 0, col: 2, length: 0, id: 0, type: 'comment', start: 1, end: 1} ]
18631
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1167 call assert_equal(expected, prop_list(1))
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1168
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1169 " delete more chars moves property to first column, is not deleted
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1170 normal! 0xxxx
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1171 let expected = [#{type_bufnr: 0, col: 1, length: 0, id: 0, type: 'comment', start: 1, end: 1} ]
18631
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1172 call assert_equal(expected, prop_list(1))
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1173
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1174 bwipe!
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1175 call prop_type_delete('comment')
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1176 endfunc
e2d9f4d030fa patch 8.1.2308: deleting text before zero-width textprop removes it
Bram Moolenaar <Bram@vim.org>
parents: 18605
diff changeset
1177
15314
c4d62945d96f patch 8.1.0665: text property display wrong when 'spell' is set
Bram Moolenaar <Bram@vim.org>
parents: 15294
diff changeset
1178 " screenshot test with textprop highlighting
16682
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1179 func Test_textprop_screenshot_various()
18317
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1180 CheckScreendump
15928
857ce36c8412 patch 8.1.0970: text properties test fails when 'encoding' is not utf-8
Bram Moolenaar <Bram@vim.org>
parents: 15398
diff changeset
1181 " The Vim running in the terminal needs to use utf-8.
18317
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1182 if g:orig_encoding != 'utf-8'
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1183 throw 'Skipped: not using utf-8'
15314
c4d62945d96f patch 8.1.0665: text property display wrong when 'spell' is set
Bram Moolenaar <Bram@vim.org>
parents: 15294
diff changeset
1184 endif
c4d62945d96f patch 8.1.0665: text property display wrong when 'spell' is set
Bram Moolenaar <Bram@vim.org>
parents: 15294
diff changeset
1185 call writefile([
16545
7a563ee902b6 patch 8.1.1276: cannot combine text properties with syntax highlighting
Bram Moolenaar <Bram@vim.org>
parents: 16060
diff changeset
1186 \ "call setline(1, ["
7a563ee902b6 patch 8.1.1276: cannot combine text properties with syntax highlighting
Bram Moolenaar <Bram@vim.org>
parents: 16060
diff changeset
1187 \ .. "'One two',"
7a563ee902b6 patch 8.1.1276: cannot combine text properties with syntax highlighting
Bram Moolenaar <Bram@vim.org>
parents: 16060
diff changeset
1188 \ .. "'Numbér 123 änd thœn 4¾7.',"
7a563ee902b6 patch 8.1.1276: cannot combine text properties with syntax highlighting
Bram Moolenaar <Bram@vim.org>
parents: 16060
diff changeset
1189 \ .. "'--aa--bb--cc--dd--',"
7a563ee902b6 patch 8.1.1276: cannot combine text properties with syntax highlighting
Bram Moolenaar <Bram@vim.org>
parents: 16060
diff changeset
1190 \ .. "'// comment with error in it',"
16678
6f453673eb19 patch 8.1.1341: text properties are lost when joining lines
Bram Moolenaar <Bram@vim.org>
parents: 16676
diff changeset
1191 \ .. "'first line',"
6f453673eb19 patch 8.1.1341: text properties are lost when joining lines
Bram Moolenaar <Bram@vim.org>
parents: 16676
diff changeset
1192 \ .. "' second line ',"
6f453673eb19 patch 8.1.1341: text properties are lost when joining lines
Bram Moolenaar <Bram@vim.org>
parents: 16676
diff changeset
1193 \ .. "'third line',"
6f453673eb19 patch 8.1.1341: text properties are lost when joining lines
Bram Moolenaar <Bram@vim.org>
parents: 16676
diff changeset
1194 \ .. "' fourth line',"
16545
7a563ee902b6 patch 8.1.1276: cannot combine text properties with syntax highlighting
Bram Moolenaar <Bram@vim.org>
parents: 16060
diff changeset
1195 \ .. "])",
15314
c4d62945d96f patch 8.1.0665: text property display wrong when 'spell' is set
Bram Moolenaar <Bram@vim.org>
parents: 15294
diff changeset
1196 \ "hi NumberProp ctermfg=blue",
c4d62945d96f patch 8.1.0665: text property display wrong when 'spell' is set
Bram Moolenaar <Bram@vim.org>
parents: 15294
diff changeset
1197 \ "hi LongProp ctermbg=yellow",
16545
7a563ee902b6 patch 8.1.1276: cannot combine text properties with syntax highlighting
Bram Moolenaar <Bram@vim.org>
parents: 16060
diff changeset
1198 \ "hi BackgroundProp ctermbg=lightgrey",
7a563ee902b6 patch 8.1.1276: cannot combine text properties with syntax highlighting
Bram Moolenaar <Bram@vim.org>
parents: 16060
diff changeset
1199 \ "hi UnderlineProp cterm=underline",
15314
c4d62945d96f patch 8.1.0665: text property display wrong when 'spell' is set
Bram Moolenaar <Bram@vim.org>
parents: 15294
diff changeset
1200 \ "call prop_type_add('number', {'highlight': 'NumberProp'})",
17980
52f23198af7f patch 8.1.1986: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents: 17694
diff changeset
1201 \ "call prop_type_add('long', {'highlight': 'NumberProp'})",
52f23198af7f patch 8.1.1986: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents: 17694
diff changeset
1202 \ "call prop_type_change('long', {'highlight': 'LongProp'})",
15341
03a7a9fdb792 patch 8.1.0678: text properties as not adjusted for inserted text
Bram Moolenaar <Bram@vim.org>
parents: 15335
diff changeset
1203 \ "call prop_type_add('start', {'highlight': 'NumberProp', 'start_incl': 1})",
03a7a9fdb792 patch 8.1.0678: text properties as not adjusted for inserted text
Bram Moolenaar <Bram@vim.org>
parents: 15335
diff changeset
1204 \ "call prop_type_add('end', {'highlight': 'NumberProp', 'end_incl': 1})",
03a7a9fdb792 patch 8.1.0678: text properties as not adjusted for inserted text
Bram Moolenaar <Bram@vim.org>
parents: 15335
diff changeset
1205 \ "call prop_type_add('both', {'highlight': 'NumberProp', 'start_incl': 1, 'end_incl': 1})",
18570
0ac88fdbf089 patch 8.1.2279: computation of highlight attributes is too complicated
Bram Moolenaar <Bram@vim.org>
parents: 18444
diff changeset
1206 \ "call prop_type_add('background', {'highlight': 'BackgroundProp', 'combine': 0})",
0ac88fdbf089 patch 8.1.2279: computation of highlight attributes is too complicated
Bram Moolenaar <Bram@vim.org>
parents: 18444
diff changeset
1207 \ "call prop_type_add('backgroundcomb', {'highlight': 'NumberProp', 'combine': 1})",
0ac88fdbf089 patch 8.1.2279: computation of highlight attributes is too complicated
Bram Moolenaar <Bram@vim.org>
parents: 18444
diff changeset
1208 \ "eval 'backgroundcomb'->prop_type_change({'highlight': 'BackgroundProp'})",
18605
63d855ad505c patch 8.1.2296: text properties are not combined with syntax by default
Bram Moolenaar <Bram@vim.org>
parents: 18570
diff changeset
1209 \ "call prop_type_add('error', {'highlight': 'UnderlineProp'})",
15314
c4d62945d96f patch 8.1.0665: text property display wrong when 'spell' is set
Bram Moolenaar <Bram@vim.org>
parents: 15294
diff changeset
1210 \ "call prop_add(1, 4, {'end_lnum': 3, 'end_col': 3, 'type': 'long'})",
15335
18c20ceee4b5 patch 8.1.0675: text property column in screen columns is not practical
Bram Moolenaar <Bram@vim.org>
parents: 15318
diff changeset
1211 \ "call prop_add(2, 9, {'length': 3, 'type': 'number'})",
18c20ceee4b5 patch 8.1.0675: text property column in screen columns is not practical
Bram Moolenaar <Bram@vim.org>
parents: 15318
diff changeset
1212 \ "call prop_add(2, 24, {'length': 4, 'type': 'number'})",
15341
03a7a9fdb792 patch 8.1.0678: text properties as not adjusted for inserted text
Bram Moolenaar <Bram@vim.org>
parents: 15335
diff changeset
1213 \ "call prop_add(3, 3, {'length': 2, 'type': 'number'})",
03a7a9fdb792 patch 8.1.0678: text properties as not adjusted for inserted text
Bram Moolenaar <Bram@vim.org>
parents: 15335
diff changeset
1214 \ "call prop_add(3, 7, {'length': 2, 'type': 'start'})",
03a7a9fdb792 patch 8.1.0678: text properties as not adjusted for inserted text
Bram Moolenaar <Bram@vim.org>
parents: 15335
diff changeset
1215 \ "call prop_add(3, 11, {'length': 2, 'type': 'end'})",
03a7a9fdb792 patch 8.1.0678: text properties as not adjusted for inserted text
Bram Moolenaar <Bram@vim.org>
parents: 15335
diff changeset
1216 \ "call prop_add(3, 15, {'length': 2, 'type': 'both'})",
18570
0ac88fdbf089 patch 8.1.2279: computation of highlight attributes is too complicated
Bram Moolenaar <Bram@vim.org>
parents: 18444
diff changeset
1217 \ "call prop_add(4, 6, {'length': 3, 'type': 'background'})",
0ac88fdbf089 patch 8.1.2279: computation of highlight attributes is too complicated
Bram Moolenaar <Bram@vim.org>
parents: 18444
diff changeset
1218 \ "call prop_add(4, 12, {'length': 10, 'type': 'backgroundcomb'})",
16545
7a563ee902b6 patch 8.1.1276: cannot combine text properties with syntax highlighting
Bram Moolenaar <Bram@vim.org>
parents: 16060
diff changeset
1219 \ "call prop_add(4, 17, {'length': 5, 'type': 'error'})",
16678
6f453673eb19 patch 8.1.1341: text properties are lost when joining lines
Bram Moolenaar <Bram@vim.org>
parents: 16676
diff changeset
1220 \ "call prop_add(5, 7, {'length': 4, 'type': 'long'})",
6f453673eb19 patch 8.1.1341: text properties are lost when joining lines
Bram Moolenaar <Bram@vim.org>
parents: 16676
diff changeset
1221 \ "call prop_add(6, 1, {'length': 8, 'type': 'long'})",
6f453673eb19 patch 8.1.1341: text properties are lost when joining lines
Bram Moolenaar <Bram@vim.org>
parents: 16676
diff changeset
1222 \ "call prop_add(8, 1, {'length': 1, 'type': 'long'})",
6f453673eb19 patch 8.1.1341: text properties are lost when joining lines
Bram Moolenaar <Bram@vim.org>
parents: 16676
diff changeset
1223 \ "call prop_add(8, 11, {'length': 4, 'type': 'long'})",
16676
79c5f723bb5d patch 8.1.1340: attributes from 'cursorline' overwrite textprop
Bram Moolenaar <Bram@vim.org>
parents: 16670
diff changeset
1224 \ "set number cursorline",
15335
18c20ceee4b5 patch 8.1.0675: text property column in screen columns is not practical
Bram Moolenaar <Bram@vim.org>
parents: 15318
diff changeset
1225 \ "hi clear SpellBad",
15314
c4d62945d96f patch 8.1.0665: text property display wrong when 'spell' is set
Bram Moolenaar <Bram@vim.org>
parents: 15294
diff changeset
1226 \ "set spell",
16545
7a563ee902b6 patch 8.1.1276: cannot combine text properties with syntax highlighting
Bram Moolenaar <Bram@vim.org>
parents: 16060
diff changeset
1227 \ "syn match Comment '//.*'",
7a563ee902b6 patch 8.1.1276: cannot combine text properties with syntax highlighting
Bram Moolenaar <Bram@vim.org>
parents: 16060
diff changeset
1228 \ "hi Comment ctermfg=green",
15341
03a7a9fdb792 patch 8.1.0678: text properties as not adjusted for inserted text
Bram Moolenaar <Bram@vim.org>
parents: 15335
diff changeset
1229 \ "normal 3G0llix\<Esc>lllix\<Esc>lllix\<Esc>lllix\<Esc>lllix\<Esc>lllix\<Esc>lllix\<Esc>lllix\<Esc>",
15347
f6b522596993 patch 8.1.0681: text properties as not adjusted for deleted text
Bram Moolenaar <Bram@vim.org>
parents: 15341
diff changeset
1230 \ "normal 3G0lli\<BS>\<Esc>",
16678
6f453673eb19 patch 8.1.1341: text properties are lost when joining lines
Bram Moolenaar <Bram@vim.org>
parents: 16676
diff changeset
1231 \ "normal 6G0i\<BS>\<Esc>",
6f453673eb19 patch 8.1.1341: text properties are lost when joining lines
Bram Moolenaar <Bram@vim.org>
parents: 16676
diff changeset
1232 \ "normal 3J",
6f453673eb19 patch 8.1.1341: text properties are lost when joining lines
Bram Moolenaar <Bram@vim.org>
parents: 16676
diff changeset
1233 \ "normal 3G",
15314
c4d62945d96f patch 8.1.0665: text property display wrong when 'spell' is set
Bram Moolenaar <Bram@vim.org>
parents: 15294
diff changeset
1234 \], 'XtestProp')
16678
6f453673eb19 patch 8.1.1341: text properties are lost when joining lines
Bram Moolenaar <Bram@vim.org>
parents: 16676
diff changeset
1235 let buf = RunVimInTerminal('-S XtestProp', {'rows': 8})
15314
c4d62945d96f patch 8.1.0665: text property display wrong when 'spell' is set
Bram Moolenaar <Bram@vim.org>
parents: 15294
diff changeset
1236 call VerifyScreenDump(buf, 'Test_textprop_01', {})
15251
17525ca95e1e patch 8.1.0634: text properties cannot cross line boundaries
Bram Moolenaar <Bram@vim.org>
parents: 15138
diff changeset
1237
15314
c4d62945d96f patch 8.1.0665: text property display wrong when 'spell' is set
Bram Moolenaar <Bram@vim.org>
parents: 15294
diff changeset
1238 " clean up
c4d62945d96f patch 8.1.0665: text property display wrong when 'spell' is set
Bram Moolenaar <Bram@vim.org>
parents: 15294
diff changeset
1239 call StopVimInTerminal(buf)
15318
f58e7895cb40 patch 8.1.0667: textprop test leaves file behind
Bram Moolenaar <Bram@vim.org>
parents: 15314
diff changeset
1240 call delete('XtestProp')
15314
c4d62945d96f patch 8.1.0665: text property display wrong when 'spell' is set
Bram Moolenaar <Bram@vim.org>
parents: 15294
diff changeset
1241 endfunc
16682
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1242
29607
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1243 func Test_textprop_hl_override()
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1244 CheckScreendump
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1245
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1246 let lines =<< trim END
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1247 call setline(1, ['One one one one one', 'Two two two two two', 'Three three three three'])
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1248 hi OverProp ctermfg=blue ctermbg=yellow
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1249 hi CursorLine cterm=bold,underline ctermfg=red ctermbg=green
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1250 hi Vsual ctermfg=cyan ctermbg=grey
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1251 call prop_type_add('under', #{highlight: 'OverProp'})
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1252 call prop_type_add('over', #{highlight: 'OverProp', override: 1})
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1253 call prop_add(1, 5, #{type: 'under', length: 4})
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1254 call prop_add(1, 13, #{type: 'over', length: 4})
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1255 call prop_add(2, 5, #{type: 'under', length: 4})
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1256 call prop_add(2, 13, #{type: 'over', length: 4})
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1257 call prop_add(3, 5, #{type: 'under', length: 4})
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1258 call prop_add(3, 13, #{type: 'over', length: 4})
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1259 set cursorline
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1260 2
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1261 END
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1262 call writefile(lines, 'XtestOverProp')
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1263 let buf = RunVimInTerminal('-S XtestOverProp', {'rows': 8})
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1264 call VerifyScreenDump(buf, 'Test_textprop_hl_override_1', {})
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1265
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1266 call term_sendkeys(buf, "3Gllv$hh")
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1267 call VerifyScreenDump(buf, 'Test_textprop_hl_override_2', {})
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1268 call term_sendkeys(buf, "\<Esc>")
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1269
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1270 " clean up
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1271 call StopVimInTerminal(buf)
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1272 call delete('XtestOverProp')
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1273 endfunc
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1274
16682
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1275 func RunTestVisualBlock(width, dump)
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1276 call writefile([
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1277 \ "call setline(1, ["
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1278 \ .. "'xxxxxxxxx 123 x',"
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1279 \ .. "'xxxxxxxx 123 x',"
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1280 \ .. "'xxxxxxx 123 x',"
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1281 \ .. "'xxxxxx 123 x',"
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1282 \ .. "'xxxxx 123 x',"
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1283 \ .. "'xxxx 123 xx',"
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1284 \ .. "'xxx 123 xxx',"
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1285 \ .. "'xx 123 xxxx',"
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1286 \ .. "'x 123 xxxxx',"
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1287 \ .. "' 123 xxxxxx',"
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1288 \ .. "])",
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1289 \ "hi SearchProp ctermbg=yellow",
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1290 \ "call prop_type_add('search', {'highlight': 'SearchProp'})",
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1291 \ "call prop_add(1, 11, {'length': 3, 'type': 'search'})",
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1292 \ "call prop_add(2, 10, {'length': 3, 'type': 'search'})",
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1293 \ "call prop_add(3, 9, {'length': 3, 'type': 'search'})",
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1294 \ "call prop_add(4, 8, {'length': 3, 'type': 'search'})",
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1295 \ "call prop_add(5, 7, {'length': 3, 'type': 'search'})",
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1296 \ "call prop_add(6, 6, {'length': 3, 'type': 'search'})",
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1297 \ "call prop_add(7, 5, {'length': 3, 'type': 'search'})",
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1298 \ "call prop_add(8, 4, {'length': 3, 'type': 'search'})",
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1299 \ "call prop_add(9, 3, {'length': 3, 'type': 'search'})",
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1300 \ "call prop_add(10, 2, {'length': 3, 'type': 'search'})",
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1301 \ "normal 1G6|\<C-V>" .. repeat('l', a:width - 1) .. "10jx",
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1302 \], 'XtestPropVis')
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1303 let buf = RunVimInTerminal('-S XtestPropVis', {'rows': 12})
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1304 call VerifyScreenDump(buf, 'Test_textprop_vis_' .. a:dump, {})
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1305
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1306 " clean up
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1307 call StopVimInTerminal(buf)
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1308 call delete('XtestPropVis')
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1309 endfunc
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1310
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1311 " screenshot test with Visual block mode operations
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1312 func Test_textprop_screenshot_visual()
18317
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1313 CheckScreendump
16682
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1314
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1315 " Delete two columns while text props are three chars wide.
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1316 call RunTestVisualBlock(2, '01')
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1317
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1318 " Same, but delete four columns
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1319 call RunTestVisualBlock(4, '02')
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1320 endfunc
16770
09c81f17f83c patch 8.1.1387: calling prop_add() in an empty buffer doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 16714
diff changeset
1321
17143
ee090ecd70f6 patch 8.1.1571: textprop highlight starts too early if just after a tab
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
1322 func Test_textprop_after_tab()
18317
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1323 CheckScreendump
17147
a001a0d88d42 patch 8.1.1573: textprop test fails if screenhots do not work
Bram Moolenaar <Bram@vim.org>
parents: 17143
diff changeset
1324
17143
ee090ecd70f6 patch 8.1.1571: textprop highlight starts too early if just after a tab
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
1325 let lines =<< trim END
ee090ecd70f6 patch 8.1.1571: textprop highlight starts too early if just after a tab
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
1326 call setline(1, [
ee090ecd70f6 patch 8.1.1571: textprop highlight starts too early if just after a tab
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
1327 \ "\txxx",
ee090ecd70f6 patch 8.1.1571: textprop highlight starts too early if just after a tab
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
1328 \ "x\txxx",
ee090ecd70f6 patch 8.1.1571: textprop highlight starts too early if just after a tab
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
1329 \ ])
ee090ecd70f6 patch 8.1.1571: textprop highlight starts too early if just after a tab
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
1330 hi SearchProp ctermbg=yellow
ee090ecd70f6 patch 8.1.1571: textprop highlight starts too early if just after a tab
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
1331 call prop_type_add('search', {'highlight': 'SearchProp'})
ee090ecd70f6 patch 8.1.1571: textprop highlight starts too early if just after a tab
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
1332 call prop_add(1, 2, {'length': 3, 'type': 'search'})
ee090ecd70f6 patch 8.1.1571: textprop highlight starts too early if just after a tab
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
1333 call prop_add(2, 3, {'length': 3, 'type': 'search'})
ee090ecd70f6 patch 8.1.1571: textprop highlight starts too early if just after a tab
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
1334 END
ee090ecd70f6 patch 8.1.1571: textprop highlight starts too early if just after a tab
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
1335 call writefile(lines, 'XtestPropTab')
ee090ecd70f6 patch 8.1.1571: textprop highlight starts too early if just after a tab
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
1336 let buf = RunVimInTerminal('-S XtestPropTab', {'rows': 6})
ee090ecd70f6 patch 8.1.1571: textprop highlight starts too early if just after a tab
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
1337 call VerifyScreenDump(buf, 'Test_textprop_tab', {})
ee090ecd70f6 patch 8.1.1571: textprop highlight starts too early if just after a tab
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
1338
ee090ecd70f6 patch 8.1.1571: textprop highlight starts too early if just after a tab
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
1339 " clean up
ee090ecd70f6 patch 8.1.1571: textprop highlight starts too early if just after a tab
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
1340 call StopVimInTerminal(buf)
ee090ecd70f6 patch 8.1.1571: textprop highlight starts too early if just after a tab
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
1341 call delete('XtestPropTab')
ee090ecd70f6 patch 8.1.1571: textprop highlight starts too early if just after a tab
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
1342 endfunc
ee090ecd70f6 patch 8.1.1571: textprop highlight starts too early if just after a tab
Bram Moolenaar <Bram@vim.org>
parents: 17089
diff changeset
1343
23901
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1344 func Test_textprop_nowrap_scrolled()
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1345 CheckScreendump
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1346
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1347 let lines =<< trim END
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1348 vim9script
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1349 set nowrap
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1350 setline(1, 'The number 123 is smaller than 4567.' .. repeat('X', &columns))
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1351 prop_type_add('number', {'highlight': 'ErrorMsg'})
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1352 prop_add(1, 12, {'length': 3, 'type': 'number'})
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1353 prop_add(1, 32, {'length': 4, 'type': 'number'})
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1354 feedkeys('gg20zl', 'nxt')
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1355 END
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1356 call writefile(lines, 'XtestNowrap')
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1357 let buf = RunVimInTerminal('-S XtestNowrap', {'rows': 6})
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1358 call VerifyScreenDump(buf, 'Test_textprop_nowrap_01', {})
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1359
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1360 call term_sendkeys(buf, "$")
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1361 call VerifyScreenDump(buf, 'Test_textprop_nowrap_02', {})
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1362
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1363 " clean up
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1364 call StopVimInTerminal(buf)
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1365 call delete('XtestNowrap')
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1366 endfunc
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1367
29690
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1368 func Test_textprop_text_priority()
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1369 CheckScreendump
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1370
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1371 let lines =<< trim END
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1372 call setline(1, "function( call, argument, here )")
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1373
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1374 call prop_type_add('one', #{highlight: 'Error'})
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1375 call prop_type_add('two', #{highlight: 'Function'})
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1376 call prop_type_add('three', #{highlight: 'DiffChange'})
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1377 call prop_type_add('arg', #{highlight: 'Search'})
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1378
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1379 call prop_add(1, 27, #{type: 'arg', length: len('here')})
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1380 call prop_add(1, 27, #{type: 'three', text: 'three: '})
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1381 call prop_add(1, 11, #{type: 'one', text: 'one: '})
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1382 call prop_add(1, 11, #{type: 'arg', length: len('call')})
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1383 call prop_add(1, 17, #{type: 'two', text: 'two: '})
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1384 call prop_add(1, 17, #{type: 'arg', length: len('argument')})
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1385 END
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1386 call writefile(lines, 'XtestPropPrio')
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1387 let buf = RunVimInTerminal('-S XtestPropPrio', {'rows': 5})
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1388 call VerifyScreenDump(buf, 'Test_prop_at_same_pos', {})
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1389
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1390 " clean up
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1391 call StopVimInTerminal(buf)
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1392 call delete('XtestPropPrio')
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1393 endfunc
1a9b3c96ed08 patch 9.0.0185: virtual text does not show if text prop at same position
Bram Moolenaar <Bram@vim.org>
parents: 29688
diff changeset
1394
18317
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1395 func Test_textprop_with_syntax()
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1396 CheckScreendump
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1397
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1398 let lines =<< trim END
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1399 call setline(1, [
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1400 \ "(abc)",
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1401 \ ])
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1402 syn match csParens "[()]" display
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1403 hi! link csParens MatchParen
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1404
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1405 call prop_type_add('TPTitle', #{ highlight: 'Title' })
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1406 call prop_add(1, 2, #{type: 'TPTitle', end_col: 5})
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1407 END
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1408 call writefile(lines, 'XtestPropSyn')
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1409 let buf = RunVimInTerminal('-S XtestPropSyn', {'rows': 6})
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1410 call VerifyScreenDump(buf, 'Test_textprop_syn_1', {})
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1411
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1412 " clean up
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1413 call StopVimInTerminal(buf)
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1414 call delete('XtestPropSyn')
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1415 endfunc
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1416
16770
09c81f17f83c patch 8.1.1387: calling prop_add() in an empty buffer doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 16714
diff changeset
1417 " Adding a text property to a new buffer should not fail
09c81f17f83c patch 8.1.1387: calling prop_add() in an empty buffer doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 16714
diff changeset
1418 func Test_textprop_empty_buffer()
09c81f17f83c patch 8.1.1387: calling prop_add() in an empty buffer doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 16714
diff changeset
1419 call prop_type_add('comment', {'highlight': 'Search'})
09c81f17f83c patch 8.1.1387: calling prop_add() in an empty buffer doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 16714
diff changeset
1420 new
09c81f17f83c patch 8.1.1387: calling prop_add() in an empty buffer doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 16714
diff changeset
1421 call prop_add(1, 1, {'type': 'comment'})
09c81f17f83c patch 8.1.1387: calling prop_add() in an empty buffer doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 16714
diff changeset
1422 close
16786
98ca522e6453 patch 8.1.1395: saving for undo may access invalid memory
Bram Moolenaar <Bram@vim.org>
parents: 16772
diff changeset
1423 call prop_type_delete('comment')
98ca522e6453 patch 8.1.1395: saving for undo may access invalid memory
Bram Moolenaar <Bram@vim.org>
parents: 16772
diff changeset
1424 endfunc
98ca522e6453 patch 8.1.1395: saving for undo may access invalid memory
Bram Moolenaar <Bram@vim.org>
parents: 16772
diff changeset
1425
17208
13d0753511fe patch 8.1.1603: crash when using unknown highlighting in text property
Bram Moolenaar <Bram@vim.org>
parents: 17147
diff changeset
1426 " Adding a text property with invalid highlight should be ignored.
13d0753511fe patch 8.1.1603: crash when using unknown highlighting in text property
Bram Moolenaar <Bram@vim.org>
parents: 17147
diff changeset
1427 func Test_textprop_invalid_highlight()
13d0753511fe patch 8.1.1603: crash when using unknown highlighting in text property
Bram Moolenaar <Bram@vim.org>
parents: 17147
diff changeset
1428 call assert_fails("call prop_type_add('dni', {'highlight': 'DoesNotExist'})", 'E970:')
13d0753511fe patch 8.1.1603: crash when using unknown highlighting in text property
Bram Moolenaar <Bram@vim.org>
parents: 17147
diff changeset
1429 new
29788
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
1430 call setline(1, ['asdf', 'asdf'])
17208
13d0753511fe patch 8.1.1603: crash when using unknown highlighting in text property
Bram Moolenaar <Bram@vim.org>
parents: 17147
diff changeset
1431 call prop_add(1, 1, {'length': 4, 'type': 'dni'})
13d0753511fe patch 8.1.1603: crash when using unknown highlighting in text property
Bram Moolenaar <Bram@vim.org>
parents: 17147
diff changeset
1432 redraw
13d0753511fe patch 8.1.1603: crash when using unknown highlighting in text property
Bram Moolenaar <Bram@vim.org>
parents: 17147
diff changeset
1433 bwipe!
13d0753511fe patch 8.1.1603: crash when using unknown highlighting in text property
Bram Moolenaar <Bram@vim.org>
parents: 17147
diff changeset
1434 call prop_type_delete('dni')
13d0753511fe patch 8.1.1603: crash when using unknown highlighting in text property
Bram Moolenaar <Bram@vim.org>
parents: 17147
diff changeset
1435 endfunc
13d0753511fe patch 8.1.1603: crash when using unknown highlighting in text property
Bram Moolenaar <Bram@vim.org>
parents: 17147
diff changeset
1436
16786
98ca522e6453 patch 8.1.1395: saving for undo may access invalid memory
Bram Moolenaar <Bram@vim.org>
parents: 16772
diff changeset
1437 " Adding a text property to an empty buffer and then editing another
98ca522e6453 patch 8.1.1395: saving for undo may access invalid memory
Bram Moolenaar <Bram@vim.org>
parents: 16772
diff changeset
1438 func Test_textprop_empty_buffer_next()
98ca522e6453 patch 8.1.1395: saving for undo may access invalid memory
Bram Moolenaar <Bram@vim.org>
parents: 16772
diff changeset
1439 call prop_type_add("xxx", {})
98ca522e6453 patch 8.1.1395: saving for undo may access invalid memory
Bram Moolenaar <Bram@vim.org>
parents: 16772
diff changeset
1440 call prop_add(1, 1, {"type": "xxx"})
98ca522e6453 patch 8.1.1395: saving for undo may access invalid memory
Bram Moolenaar <Bram@vim.org>
parents: 16772
diff changeset
1441 next X
98ca522e6453 patch 8.1.1395: saving for undo may access invalid memory
Bram Moolenaar <Bram@vim.org>
parents: 16772
diff changeset
1442 call prop_type_delete('xxx')
16770
09c81f17f83c patch 8.1.1387: calling prop_add() in an empty buffer doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 16714
diff changeset
1443 endfunc
16772
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
1444
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
1445 func Test_textprop_remove_from_buf()
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
1446 new
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
1447 let buf = bufnr('')
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
1448 call prop_type_add('one', {'bufnr': buf})
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
1449 call prop_add(1, 1, {'type': 'one', 'id': 234})
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
1450 file x
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
1451 edit y
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
1452 call prop_remove({'id': 234, 'bufnr': buf}, 1)
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
1453 call prop_type_delete('one', {'bufnr': buf})
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
1454 bwipe! x
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
1455 close
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
1456 endfunc
17694
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1457
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1458 func Test_textprop_in_unloaded_buf()
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1459 edit Xaaa
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1460 call setline(1, 'aaa')
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1461 write
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1462 edit Xbbb
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1463 call setline(1, 'bbb')
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1464 write
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1465 let bnr = bufnr('')
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1466 edit Xaaa
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1467
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1468 call prop_type_add('ErrorMsg', #{highlight:'ErrorMsg'})
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1469 call assert_fails("call prop_add(1, 1, #{end_lnum: 1, endcol: 2, type: 'ErrorMsg', bufnr: bnr})", 'E275:')
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1470 exe 'buf ' .. bnr
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1471 call assert_equal('bbb', getline(1))
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1472 call assert_equal(0, prop_list(1)->len())
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1473
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1474 bwipe! Xaaa
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1475 bwipe! Xbbb
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1476 cal delete('Xaaa')
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1477 cal delete('Xbbb')
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1478 endfunc
18444
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1479
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1480 func Test_proptype_substitute2()
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1481 new
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1482 " text_prop.vim
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1483 call setline(1, [
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1484 \ 'The num 123 is smaller than 4567.',
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1485 \ '123 The number 123 is smaller than 4567.',
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1486 \ '123 The number 123 is smaller than 4567.'])
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1487
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1488 call prop_type_add('number', {'highlight': 'ErrorMsg'})
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1489
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1490 call prop_add(1, 12, {'length': 3, 'type': 'number'})
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1491 call prop_add(2, 1, {'length': 3, 'type': 'number'})
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1492 call prop_add(3, 36, {'length': 4, 'type': 'number'})
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1493 set ul&
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1494 let expected = [
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1495 \ #{type_bufnr: 0, id: 0, col: 13, end: 1, type: 'number', length: 3, start: 1},
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1496 \ #{type_bufnr: 0, id: 0, col: 1, end: 1, type: 'number', length: 3, start: 1},
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1497 \ #{type_bufnr: 0, id: 0, col: 50, end: 1, type: 'number', length: 4, start: 1}]
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1498
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1499 " TODO
29609
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1500 if 0
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1501 " Add some text in between
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1502 %s/\s\+/ /g
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1503 call assert_equal(expected, prop_list(1) + prop_list(2) + prop_list(3))
18444
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1504
29609
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1505 " remove some text
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1506 :1s/[a-z]\{3\}//g
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1507 let expected = [{'id': 0, 'col': 10, 'end': 1, 'type': 'number', 'length': 3, 'start': 1}]
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1508 call assert_equal(expected, prop_list(1))
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1509 endif
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1510
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1511 call prop_type_delete('number')
18444
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1512 bwipe!
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1513 endfunc
19045
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1514
22331
0271c2b8bb35 patch 8.2.1714: text properties corrupted with substitute command
Bram Moolenaar <Bram@vim.org>
parents: 22282
diff changeset
1515 " This was causing property corruption.
0271c2b8bb35 patch 8.2.1714: text properties corrupted with substitute command
Bram Moolenaar <Bram@vim.org>
parents: 22282
diff changeset
1516 func Test_proptype_substitute3()
0271c2b8bb35 patch 8.2.1714: text properties corrupted with substitute command
Bram Moolenaar <Bram@vim.org>
parents: 22282
diff changeset
1517 new
0271c2b8bb35 patch 8.2.1714: text properties corrupted with substitute command
Bram Moolenaar <Bram@vim.org>
parents: 22282
diff changeset
1518 call setline(1, ['abcxxx', 'def'])
0271c2b8bb35 patch 8.2.1714: text properties corrupted with substitute command
Bram Moolenaar <Bram@vim.org>
parents: 22282
diff changeset
1519 call prop_type_add("test", {"highlight": "Search"})
0271c2b8bb35 patch 8.2.1714: text properties corrupted with substitute command
Bram Moolenaar <Bram@vim.org>
parents: 22282
diff changeset
1520 call prop_add(1, 2, {"end_lnum": 2, "end_col": 2, "type": "test"})
0271c2b8bb35 patch 8.2.1714: text properties corrupted with substitute command
Bram Moolenaar <Bram@vim.org>
parents: 22282
diff changeset
1521 %s/x\+$//
0271c2b8bb35 patch 8.2.1714: text properties corrupted with substitute command
Bram Moolenaar <Bram@vim.org>
parents: 22282
diff changeset
1522 redraw
0271c2b8bb35 patch 8.2.1714: text properties corrupted with substitute command
Bram Moolenaar <Bram@vim.org>
parents: 22282
diff changeset
1523
0271c2b8bb35 patch 8.2.1714: text properties corrupted with substitute command
Bram Moolenaar <Bram@vim.org>
parents: 22282
diff changeset
1524 call prop_type_delete('test')
0271c2b8bb35 patch 8.2.1714: text properties corrupted with substitute command
Bram Moolenaar <Bram@vim.org>
parents: 22282
diff changeset
1525 bwipe!
0271c2b8bb35 patch 8.2.1714: text properties corrupted with substitute command
Bram Moolenaar <Bram@vim.org>
parents: 22282
diff changeset
1526 endfunc
0271c2b8bb35 patch 8.2.1714: text properties corrupted with substitute command
Bram Moolenaar <Bram@vim.org>
parents: 22282
diff changeset
1527
29609
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1528 func Test_proptype_substitute_join()
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1529 new
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1530 call setline(1, [
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1531 \ 'This is some end',
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1532 \ 'start is highlighted end',
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1533 \ 'some is highlighted',
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1534 \ 'start is also highlighted'])
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1535
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1536 call prop_type_add('number', {'highlight': 'ErrorMsg'})
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1537
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1538 call prop_add(1, 6, {'length': 2, 'type': 'number'})
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1539 call prop_add(2, 7, {'length': 2, 'type': 'number'})
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1540 call prop_add(3, 6, {'length': 2, 'type': 'number'})
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1541 call prop_add(4, 7, {'length': 2, 'type': 'number'})
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1542 " The highlighted "is" in line 1, 2 and 4 is kept and ajudsted.
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1543 " The highlighted "is" in line 3 is deleted.
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1544 let expected = [
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1545 \ #{type_bufnr: 0, id: 0, col: 6, end: 1, type: 'number', length: 2, start: 1},
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1546 \ #{type_bufnr: 0, id: 0, col: 21, end: 1, type: 'number', length: 2, start: 1},
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1547 \ #{type_bufnr: 0, id: 0, col: 43, end: 1, type: 'number', length: 2, start: 1}]
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1548
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1549 s/end\nstart/joined/
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1550 s/end\n.*\nstart/joined/
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1551 call assert_equal('This is some joined is highlighted joined is also highlighted', getline(1))
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1552 call assert_equal(expected, prop_list(1))
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1553
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1554 call prop_type_delete('number')
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1555 bwipe!
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1556 endfunc
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1557
19097
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1558 func SaveOptions()
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1559 let d = #{tabstop: &tabstop,
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1560 \ softtabstop: &softtabstop,
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1561 \ shiftwidth: &shiftwidth,
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1562 \ expandtab: &expandtab,
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1563 \ foldmethod: '"' .. &foldmethod .. '"',
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1564 \ }
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1565 return d
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1566 endfunc
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1567
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1568 func RestoreOptions(dict)
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1569 for name in keys(a:dict)
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1570 exe 'let &' .. name .. ' = ' .. a:dict[name]
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1571 endfor
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1572 endfunc
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1573
19045
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1574 func Test_textprop_noexpandtab()
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1575 new
19097
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1576 let save_dict = SaveOptions()
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1577
19045
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1578 set tabstop=8
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1579 set softtabstop=4
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1580 set shiftwidth=4
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1581 set noexpandtab
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1582 set foldmethod=marker
19097
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1583
19045
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1584 call feedkeys("\<esc>\<esc>0Ca\<cr>\<esc>\<up>", "tx")
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1585 call prop_type_add('test', {'highlight': 'ErrorMsg'})
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1586 call prop_add(1, 1, {'end_col': 2, 'type': 'test'})
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1587 call feedkeys("0i\<tab>", "tx")
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1588 call prop_remove({'type': 'test'})
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1589 call prop_add(1, 2, {'end_col': 3, 'type': 'test'})
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1590 call feedkeys("A\<left>\<tab>", "tx")
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1591 call prop_remove({'type': 'test'})
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1592 try
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1593 " It is correct that this does not pass
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1594 call prop_add(1, 6, {'end_col': 7, 'type': 'test'})
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1595 " Has already collapsed here, start_col:6 does not result in an error
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1596 call feedkeys("A\<left>\<tab>", "tx")
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1597 catch /^Vim\%((\a\+)\)\=:E964/
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1598 endtry
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1599 call prop_remove({'type': 'test'})
19097
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1600 call prop_type_delete('test')
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1601
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1602 call RestoreOptions(save_dict)
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1603 bwipe!
19045
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1604 endfunc
19097
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1605
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1606 func Test_textprop_noexpandtab_redraw()
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1607 new
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1608 let save_dict = SaveOptions()
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1609
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1610 set tabstop=8
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1611 set softtabstop=4
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1612 set shiftwidth=4
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1613 set noexpandtab
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1614 set foldmethod=marker
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1615
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1616 call feedkeys("\<esc>\<esc>0Ca\<cr>\<space>\<esc>\<up>", "tx")
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1617 call prop_type_add('test', {'highlight': 'ErrorMsg'})
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1618 call prop_add(1, 1, {'end_col': 2, 'type': 'test'})
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1619 call feedkeys("0i\<tab>", "tx")
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1620 " Internally broken at the next line
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1621 call feedkeys("A\<left>\<tab>", "tx")
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1622 redraw
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1623 " Index calculation failed internally on next line
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1624 call prop_add(1, 1, {'end_col': 2, 'type': 'test'})
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1625 call prop_remove({'type': 'test', 'all': v:true})
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1626 call prop_type_delete('test')
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1627 call prop_type_delete('test')
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1628
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1629 call RestoreOptions(save_dict)
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1630 bwipe!
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1631 endfunc
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1632
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1633 func Test_textprop_ins_str()
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1634 new
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1635 call setline(1, 'just some text')
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1636 call prop_type_add('test', {'highlight': 'ErrorMsg'})
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1637 call prop_add(1, 1, {'end_col': 2, 'type': 'test'})
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1638 call assert_equal([#{type_bufnr: 0, id: 0, col: 1, end: 1, type: 'test', length: 1, start: 1}], prop_list(1))
19097
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1639
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1640 call feedkeys("foi\<F8>\<Esc>", "tx")
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1641 call assert_equal('just s<F8>ome text', getline(1))
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1642 call assert_equal([#{type_bufnr: 0, id: 0, col: 1, end: 1, type: 'test', length: 1, start: 1}], prop_list(1))
19097
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1643
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1644 bwipe!
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1645 call prop_remove({'type': 'test'})
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1646 call prop_type_delete('test')
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1647 endfunc
19631
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1648
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1649 func Test_find_prop_later_in_line()
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1650 new
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1651 call prop_type_add('test', {'highlight': 'ErrorMsg'})
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1652 call setline(1, 'just some text')
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1653 call prop_add(1, 1, {'length': 4, 'type': 'test'})
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1654 call prop_add(1, 10, {'length': 3, 'type': 'test'})
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1655
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1656 call assert_equal(
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1657 \ #{type_bufnr: 0, id: 0, lnum: 1, col: 10, end: 1, type: 'test', length: 3, start: 1},
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1658 \ prop_find(#{type: 'test', lnum: 1, col: 6}))
19631
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1659
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1660 bwipe!
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1661 call prop_type_delete('test')
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1662 endfunc
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1663
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1664 func Test_find_zerowidth_prop_sol()
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1665 new
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1666 call prop_type_add('test', {'highlight': 'ErrorMsg'})
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1667 call setline(1, 'just some text')
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1668 call prop_add(1, 1, {'length': 0, 'type': 'test'})
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1669
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1670 call assert_equal(
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1671 \ #{type_bufnr: 0, id: 0, lnum: 1, col: 1, end: 1, type: 'test', length: 0, start: 1},
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1672 \ prop_find(#{type: 'test', lnum: 1}))
19631
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1673
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1674 bwipe!
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1675 call prop_type_delete('test')
1d493fce1fbd patch 8.2.0372: prop_find() may not find text property at start of the line
Bram Moolenaar <Bram@vim.org>
parents: 19601
diff changeset
1676 endfunc
20178
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
1677
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
1678 " Test for passing invalid arguments to prop_xxx() functions
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
1679 func Test_prop_func_invalid_args()
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
1680 call assert_fails('call prop_clear(1, 2, [])', 'E715:')
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
1681 call assert_fails('call prop_clear(-1, 2)', 'E16:')
29994
86eb4aba16c3 patch 9.0.0335: checks for Dictionary argument often give a vague error
Bram Moolenaar <Bram@vim.org>
parents: 29918
diff changeset
1682 call assert_fails('call prop_find(test_null_dict())', 'E1297:')
21265
6a4806e326dd patch 8.2.1183: assert_fails() checks the last error message
Bram Moolenaar <Bram@vim.org>
parents: 20583
diff changeset
1683 call assert_fails('call prop_find({"bufnr" : []})', 'E730:')
20178
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
1684 call assert_fails('call prop_find({})', 'E968:')
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
1685 call assert_fails('call prop_find({}, "x")', 'E474:')
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
1686 call assert_fails('call prop_find({"lnum" : -2})', 'E16:')
29994
86eb4aba16c3 patch 9.0.0335: checks for Dictionary argument often give a vague error
Bram Moolenaar <Bram@vim.org>
parents: 29918
diff changeset
1687 call assert_fails('call prop_list(1, [])', 'E1206:')
21552
cbc570e66d11 patch 8.2.1326: Vim9: skipping over white space after list
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
1688 call assert_fails('call prop_list(-1, {})', 'E16:')
29994
86eb4aba16c3 patch 9.0.0335: checks for Dictionary argument often give a vague error
Bram Moolenaar <Bram@vim.org>
parents: 29918
diff changeset
1689 call assert_fails('call prop_remove([])', 'E1206:')
20178
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
1690 call assert_fails('call prop_remove({}, -2)', 'E16:')
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
1691 call assert_fails('call prop_remove({})', 'E968:')
21265
6a4806e326dd patch 8.2.1183: assert_fails() checks the last error message
Bram Moolenaar <Bram@vim.org>
parents: 20583
diff changeset
1692 call assert_fails('call prop_type_add([], {})', 'E730:')
20178
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
1693 call assert_fails("call prop_type_change('long', {'xyz' : 10})", 'E971:')
21265
6a4806e326dd patch 8.2.1183: assert_fails() checks the last error message
Bram Moolenaar <Bram@vim.org>
parents: 20583
diff changeset
1694 call assert_fails("call prop_type_delete([])", 'E730:')
20178
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
1695 call assert_fails("call prop_type_delete('xyz', [])", 'E715:')
21265
6a4806e326dd patch 8.2.1183: assert_fails() checks the last error message
Bram Moolenaar <Bram@vim.org>
parents: 20583
diff changeset
1696 call assert_fails("call prop_type_get([])", 'E730:')
20178
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
1697 call assert_fails("call prop_type_get('', [])", 'E474:')
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
1698 call assert_fails("call prop_type_list([])", 'E715:')
24039
a5478836fcb7 patch 8.2.2561: not all textprop code is covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 23901
diff changeset
1699 call assert_fails("call prop_type_add('yyy', 'not_a_dict')", 'E715:')
a5478836fcb7 patch 8.2.2561: not all textprop code is covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 23901
diff changeset
1700 call assert_fails("call prop_add(1, 5, {'type':'missing_type', 'length':1})", 'E971:')
a5478836fcb7 patch 8.2.2561: not all textprop code is covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 23901
diff changeset
1701 call assert_fails("call prop_add(1, 5, {'type': ''})", 'E971:')
29994
86eb4aba16c3 patch 9.0.0335: checks for Dictionary argument often give a vague error
Bram Moolenaar <Bram@vim.org>
parents: 29918
diff changeset
1702 call assert_fails('call prop_add(1, 1, 0)', 'E1206:')
24039
a5478836fcb7 patch 8.2.2561: not all textprop code is covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 23901
diff changeset
1703
a5478836fcb7 patch 8.2.2561: not all textprop code is covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 23901
diff changeset
1704 new
a5478836fcb7 patch 8.2.2561: not all textprop code is covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 23901
diff changeset
1705 call setline(1, ['first', 'second'])
a5478836fcb7 patch 8.2.2561: not all textprop code is covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 23901
diff changeset
1706 call prop_type_add('xxx', {})
a5478836fcb7 patch 8.2.2561: not all textprop code is covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 23901
diff changeset
1707
a5478836fcb7 patch 8.2.2561: not all textprop code is covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 23901
diff changeset
1708 call assert_fails("call prop_type_add('xxx', {})", 'E969:')
a5478836fcb7 patch 8.2.2561: not all textprop code is covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 23901
diff changeset
1709 call assert_fails("call prop_add(2, 0, {'type': 'xxx'})", 'E964:')
a5478836fcb7 patch 8.2.2561: not all textprop code is covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 23901
diff changeset
1710 call assert_fails("call prop_add(2, 3, {'type': 'xxx', 'end_lnum':1})", 'E475:')
a5478836fcb7 patch 8.2.2561: not all textprop code is covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 23901
diff changeset
1711 call assert_fails("call prop_add(2, 3, {'type': 'xxx', 'end_lnum':3})", 'E966:')
a5478836fcb7 patch 8.2.2561: not all textprop code is covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 23901
diff changeset
1712 call assert_fails("call prop_add(2, 3, {'type': 'xxx', 'length':-1})", 'E475:')
a5478836fcb7 patch 8.2.2561: not all textprop code is covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 23901
diff changeset
1713 call assert_fails("call prop_add(2, 3, {'type': 'xxx', 'end_col':0})", 'E475:')
a5478836fcb7 patch 8.2.2561: not all textprop code is covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 23901
diff changeset
1714 call assert_fails("call prop_add(2, 3, {'length':1})", 'E965:')
a5478836fcb7 patch 8.2.2561: not all textprop code is covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 23901
diff changeset
1715
a5478836fcb7 patch 8.2.2561: not all textprop code is covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 23901
diff changeset
1716 call prop_type_delete('xxx')
a5478836fcb7 patch 8.2.2561: not all textprop code is covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 23901
diff changeset
1717 bwipe!
20178
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
1718 endfunc
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
1719
22278
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1720 func Test_prop_split_join()
20583
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
1721 new
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
1722 call prop_type_add('test', {'highlight': 'ErrorMsg'})
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
1723 call setline(1, 'just some text')
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
1724 call prop_add(1, 6, {'length': 4, 'type': 'test'})
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
1725
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
1726 " Split in middle of "some"
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
1727 execute "normal! 8|i\<CR>"
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1728 call assert_equal(
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1729 \ [#{type_bufnr: 0, id: 0, col: 6, end: 0, type: 'test', length: 2, start: 1}],
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1730 \ prop_list(1))
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1731 call assert_equal(
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1732 \ [#{type_bufnr: 0, id: 0, col: 1, end: 1, type: 'test', length: 2, start: 0}],
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1733 \ prop_list(2))
20583
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
1734
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
1735 " Join the two lines back together
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
1736 normal! 1GJ
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1737 call assert_equal([#{type_bufnr: 0, id: 0, col: 6, end: 1, type: 'test', length: 5, start: 1}], prop_list(1))
20583
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
1738
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
1739 bwipe!
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
1740 call prop_type_delete('test')
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
1741 endfunc
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
1742
22278
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1743 func Test_prop_increment_decrement()
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1744 new
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1745 call prop_type_add('test', {'highlight': 'ErrorMsg'})
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1746 call setline(1, 'its 998 times')
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1747 call prop_add(1, 5, {'length': 3, 'type': 'test'})
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1748
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1749 exe "normal! 0f9\<C-A>"
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1750 eval getline(1)->assert_equal('its 999 times')
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1751 eval prop_list(1)->assert_equal([
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1752 \ #{type_bufnr: 0, id: 0, col: 5, end: 1, type: 'test', length: 3, start: 1}])
22278
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1753
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1754 exe "normal! 0f9\<C-A>"
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1755 eval getline(1)->assert_equal('its 1000 times')
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1756 eval prop_list(1)->assert_equal([
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1757 \ #{type_bufnr: 0, id: 0, col: 5, end: 1, type: 'test', length: 4, start: 1}])
22278
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1758
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1759 bwipe!
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1760 call prop_type_delete('test')
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1761 endfunc
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1762
22282
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1763 func Test_prop_block_insert()
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1764 new
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1765 call prop_type_add('test', {'highlight': 'ErrorMsg'})
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1766 call setline(1, ['one ', 'two '])
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1767 call prop_add(1, 1, {'length': 3, 'type': 'test'})
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1768 call prop_add(2, 1, {'length': 3, 'type': 'test'})
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1769
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1770 " insert "xx" in the first column of both lines
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1771 exe "normal! gg0\<C-V>jIxx\<Esc>"
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1772 eval getline(1, 2)->assert_equal(['xxone ', 'xxtwo '])
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1773 let expected = [#{type_bufnr: 0, id: 0, col: 3, end: 1, type: 'test', length: 3, start: 1}]
22282
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1774 eval prop_list(1)->assert_equal(expected)
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1775 eval prop_list(2)->assert_equal(expected)
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1776
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1777 " insert "yy" inside the text props to make them longer
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1778 exe "normal! gg03l\<C-V>jIyy\<Esc>"
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1779 eval getline(1, 2)->assert_equal(['xxoyyne ', 'xxtyywo '])
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1780 let expected[0].length = 5
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1781 eval prop_list(1)->assert_equal(expected)
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1782 eval prop_list(2)->assert_equal(expected)
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1783
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1784 " insert "zz" after the text props, text props don't change
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1785 exe "normal! gg07l\<C-V>jIzz\<Esc>"
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1786 eval getline(1, 2)->assert_equal(['xxoyynezz ', 'xxtyywozz '])
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1787 eval prop_list(1)->assert_equal(expected)
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1788 eval prop_list(2)->assert_equal(expected)
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1789
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1790 bwipe!
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1791 call prop_type_delete('test')
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1792 endfunc
5adb97bf0b32 patch 8.2.1690: text properties not adjusted for "I" in Visual block mode
Bram Moolenaar <Bram@vim.org>
parents: 22278
diff changeset
1793
23306
90ea5037a7e3 patch 8.2.2198: ml_get error when resizing window and using text property
Bram Moolenaar <Bram@vim.org>
parents: 23072
diff changeset
1794 " this was causing an ml_get error because w_botline was wrong
90ea5037a7e3 patch 8.2.2198: ml_get error when resizing window and using text property
Bram Moolenaar <Bram@vim.org>
parents: 23072
diff changeset
1795 func Test_prop_one_line_window()
90ea5037a7e3 patch 8.2.2198: ml_get error when resizing window and using text property
Bram Moolenaar <Bram@vim.org>
parents: 23072
diff changeset
1796 enew
90ea5037a7e3 patch 8.2.2198: ml_get error when resizing window and using text property
Bram Moolenaar <Bram@vim.org>
parents: 23072
diff changeset
1797 call range(2)->setline(1)
90ea5037a7e3 patch 8.2.2198: ml_get error when resizing window and using text property
Bram Moolenaar <Bram@vim.org>
parents: 23072
diff changeset
1798 call prop_type_add('testprop', {})
90ea5037a7e3 patch 8.2.2198: ml_get error when resizing window and using text property
Bram Moolenaar <Bram@vim.org>
parents: 23072
diff changeset
1799 call prop_add(1, 1, {'type': 'testprop'})
90ea5037a7e3 patch 8.2.2198: ml_get error when resizing window and using text property
Bram Moolenaar <Bram@vim.org>
parents: 23072
diff changeset
1800 call popup_create('popup', {'textprop': 'testprop'})
90ea5037a7e3 patch 8.2.2198: ml_get error when resizing window and using text property
Bram Moolenaar <Bram@vim.org>
parents: 23072
diff changeset
1801 $
90ea5037a7e3 patch 8.2.2198: ml_get error when resizing window and using text property
Bram Moolenaar <Bram@vim.org>
parents: 23072
diff changeset
1802 new
90ea5037a7e3 patch 8.2.2198: ml_get error when resizing window and using text property
Bram Moolenaar <Bram@vim.org>
parents: 23072
diff changeset
1803 wincmd _
90ea5037a7e3 patch 8.2.2198: ml_get error when resizing window and using text property
Bram Moolenaar <Bram@vim.org>
parents: 23072
diff changeset
1804 call feedkeys("\r", 'xt')
90ea5037a7e3 patch 8.2.2198: ml_get error when resizing window and using text property
Bram Moolenaar <Bram@vim.org>
parents: 23072
diff changeset
1805 redraw
90ea5037a7e3 patch 8.2.2198: ml_get error when resizing window and using text property
Bram Moolenaar <Bram@vim.org>
parents: 23072
diff changeset
1806
90ea5037a7e3 patch 8.2.2198: ml_get error when resizing window and using text property
Bram Moolenaar <Bram@vim.org>
parents: 23072
diff changeset
1807 call popup_clear()
90ea5037a7e3 patch 8.2.2198: ml_get error when resizing window and using text property
Bram Moolenaar <Bram@vim.org>
parents: 23072
diff changeset
1808 call prop_type_delete('testprop')
90ea5037a7e3 patch 8.2.2198: ml_get error when resizing window and using text property
Bram Moolenaar <Bram@vim.org>
parents: 23072
diff changeset
1809 close
90ea5037a7e3 patch 8.2.2198: ml_get error when resizing window and using text property
Bram Moolenaar <Bram@vim.org>
parents: 23072
diff changeset
1810 bwipe!
90ea5037a7e3 patch 8.2.2198: ml_get error when resizing window and using text property
Bram Moolenaar <Bram@vim.org>
parents: 23072
diff changeset
1811 endfunc
90ea5037a7e3 patch 8.2.2198: ml_get error when resizing window and using text property
Bram Moolenaar <Bram@vim.org>
parents: 23072
diff changeset
1812
29587
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1813 def Test_prop_column_zero_error()
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1814 prop_type_add('proptype', {highlight: 'Search'})
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1815 var caught = false
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1816 try
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1817 popup_create([{
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1818 text: 'a',
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1819 props: [{col: 0, length: 1, type: 'type'}],
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1820 }], {})
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1821 catch /E964:/
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1822 caught = true
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1823 endtry
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1824 assert_true(caught)
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1825
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1826 popup_clear()
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1827 prop_type_delete('proptype')
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1828 enddef
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1829
24703
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1830 " This was calling ml_append_int() and copy a text property from a previous
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1831 " line at the wrong moment. Exact text length matters.
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1832 def Test_prop_splits_data_block()
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1833 new
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1834 var lines: list<string> = [repeat('x', 35)]->repeat(41)
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1835 + [repeat('!', 35)]
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1836 + [repeat('x', 35)]->repeat(56)
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1837 lines->setline(1)
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1838 prop_type_add('someprop', {highlight: 'ErrorMsg'})
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1839 prop_add(1, 27, {end_lnum: 1, end_col: 70, type: 'someprop'})
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1840 prop_remove({type: 'someprop'}, 1)
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1841 prop_add(35, 22, {end_lnum: 43, end_col: 43, type: 'someprop'})
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1842 prop_remove({type: 'someprop'}, 35, 43)
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1843 assert_equal([], prop_list(42))
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1844
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1845 bwipe!
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1846 prop_type_delete('someprop')
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1847 enddef
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1848
25050
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1849 " This was calling ml_delete_int() and try to change text properties.
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1850 def Test_prop_add_delete_line()
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1851 new
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1852 var a = 10
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1853 var b = 20
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1854 repeat([''], a)->append('$')
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1855 prop_type_add('Test', {highlight: 'ErrorMsg'})
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1856 for lnum in range(1, a)
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1857 for col in range(1, b)
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1858 prop_add(1, 1, {end_lnum: lnum, end_col: col, type: 'Test'})
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1859 endfor
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1860 endfor
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1861
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1862 # check deleting lines is OK
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1863 :5del
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1864 :1del
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1865 :$del
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1866
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1867 prop_type_delete('Test')
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1868 bwipe!
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1869 enddef
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1870
28875
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1871 " This test is to detect a regression related to #10430. It is not an attempt
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1872 " fully cover deleting lines in the presence of multi-line properties.
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1873 def Test_delete_line_within_multiline_prop()
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1874 new
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1875 setline(1, '# Top.')
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1876 append(1, ['some_text = """', 'A string.', '"""', '# Bottom.'])
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1877 prop_type_add('Identifier', {'highlight': 'ModeMsg', 'priority': 0, 'combine': 0, 'start_incl': 0, 'end_incl': 0})
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1878 prop_type_add('String', {'highlight': 'MoreMsg', 'priority': 0, 'combine': 0, 'start_incl': 0, 'end_incl': 0})
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1879 prop_add(2, 1, {'type': 'Identifier', 'end_lnum': 2, 'end_col': 9})
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1880 prop_add(2, 13, {'type': 'String', 'end_lnum': 4, 'end_col': 4})
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1881
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1882 # The property for line 3 should extend into the previous and next lines.
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1883 var props = prop_list(3)
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1884 var prop = props[0]
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1885 assert_equal(1, len(props))
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1886 assert_equal(0, prop['start'])
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1887 assert_equal(0, prop['end'])
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1888
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1889 # This deletion should run without raising an exception.
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1890 try
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1891 :2 del
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1892 catch
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1893 assert_report('Line delete should have workd, but it raised an error.')
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1894 endtry
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1895
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1896 # The property for line 2 (was 3) should no longer extend into the previous
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1897 # line.
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1898 props = prop_list(2)
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1899 prop = props[0]
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1900 assert_equal(1, len(props))
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1901 assert_equal(1, prop['start'], 'Property was not changed to start within the line.')
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1902
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1903 # This deletion should run without raising an exception.
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1904 try
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1905 :3 del
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1906 catch
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1907 assert_report('Line delete should have workd, but it raised an error.')
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1908 endtry
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1909
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1910 # The property for line 2 (originally 3) should no longer extend into the next
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1911 # line.
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1912 props = prop_list(2)
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1913 prop = props[0]
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1914 assert_equal(1, len(props))
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1915 assert_equal(1, prop['end'], 'Property was not changed to end within the line.')
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1916
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1917 prop_type_delete('Identifier')
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1918 prop_type_delete('String')
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1919 bwip!
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1920 enddef
78ebb50d6fcb patch 8.2.4960: text properties that cross lines not updated for deleted line
Bram Moolenaar <Bram@vim.org>
parents: 28869
diff changeset
1921
26338
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1922 func Test_prop_in_linebreak()
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1923 CheckRunVimInTerminal
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1924
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1925 let lines =<< trim END
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1926 set breakindent linebreak breakat+=]
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1927 call printf('%s]%s', repeat('x', 50), repeat('x', 70))->setline(1)
30039
4b9b237d1211 patch 9.0.0357: 'linebreak' interferes with text property highlight
Bram Moolenaar <Bram@vim.org>
parents: 30015
diff changeset
1928 call prop_type_add('test', #{highlight: 'MatchParen'})
26338
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1929 call prop_add(1, 51, #{length: 1, type: 'test'})
30039
4b9b237d1211 patch 9.0.0357: 'linebreak' interferes with text property highlight
Bram Moolenaar <Bram@vim.org>
parents: 30015
diff changeset
1930 func AddMatch()
4b9b237d1211 patch 9.0.0357: 'linebreak' interferes with text property highlight
Bram Moolenaar <Bram@vim.org>
parents: 30015
diff changeset
1931 syntax on
4b9b237d1211 patch 9.0.0357: 'linebreak' interferes with text property highlight
Bram Moolenaar <Bram@vim.org>
parents: 30015
diff changeset
1932 syntax match xTest /.*/
4b9b237d1211 patch 9.0.0357: 'linebreak' interferes with text property highlight
Bram Moolenaar <Bram@vim.org>
parents: 30015
diff changeset
1933 hi link xTest Comment
4b9b237d1211 patch 9.0.0357: 'linebreak' interferes with text property highlight
Bram Moolenaar <Bram@vim.org>
parents: 30015
diff changeset
1934 set signcolumn=yes
4b9b237d1211 patch 9.0.0357: 'linebreak' interferes with text property highlight
Bram Moolenaar <Bram@vim.org>
parents: 30015
diff changeset
1935 endfunc
26338
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1936 END
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1937 call writefile(lines, 'XscriptPropLinebreak')
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1938 let buf = RunVimInTerminal('-S XscriptPropLinebreak', #{rows: 10})
30039
4b9b237d1211 patch 9.0.0357: 'linebreak' interferes with text property highlight
Bram Moolenaar <Bram@vim.org>
parents: 30015
diff changeset
1939 call VerifyScreenDump(buf, 'Test_prop_linebreak_1', {})
4b9b237d1211 patch 9.0.0357: 'linebreak' interferes with text property highlight
Bram Moolenaar <Bram@vim.org>
parents: 30015
diff changeset
1940
4b9b237d1211 patch 9.0.0357: 'linebreak' interferes with text property highlight
Bram Moolenaar <Bram@vim.org>
parents: 30015
diff changeset
1941 call term_sendkeys(buf, ":call AddMatch()\<CR>")
4b9b237d1211 patch 9.0.0357: 'linebreak' interferes with text property highlight
Bram Moolenaar <Bram@vim.org>
parents: 30015
diff changeset
1942 call VerifyScreenDump(buf, 'Test_prop_linebreak_2', {})
26338
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1943
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1944 call StopVimInTerminal(buf)
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1945 call delete('XscriptPropLinebreak')
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1946 endfunc
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1947
29686
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1948 func Test_prop_with_linebreak()
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1949 CheckRunVimInTerminal
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1950
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1951 let lines =<< trim END
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1952 vim9script
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1953 set linebreak
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1954 setline(1, 'one twoword')
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1955 prop_type_add('test', {highlight: 'Special'})
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1956 prop_add(1, 4, {text: ': virtual text', type: 'test', text_wrap: 'wrap'})
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1957 END
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1958 call writefile(lines, 'XscriptPropWithLinebreak')
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1959 let buf = RunVimInTerminal('-S XscriptPropWithLinebreak', #{rows: 6, cols: 50})
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1960 call VerifyScreenDump(buf, 'Test_prop_with_linebreak_1', {})
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1961 call term_sendkeys(buf, "iasdf asdf asdf asdf asdf as\<Esc>")
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1962 call VerifyScreenDump(buf, 'Test_prop_with_linebreak_2', {})
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1963
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1964 call StopVimInTerminal(buf)
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1965 call delete('XscriptPropWithLinebreak')
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1966 endfunc
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1967
29688
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1968 func Test_prop_with_wrap()
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1969 CheckRunVimInTerminal
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1970
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1971 let lines =<< trim END
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1972 vim9script
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1973 set linebreak
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1974 setline(1, 'asdf '->repeat(15))
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1975 prop_type_add('test', {highlight: 'Special'})
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1976 prop_add(1, 43, {text: 'some virtual text', type: 'test'})
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1977 END
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1978 call writefile(lines, 'XscriptPropWithWrap')
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1979 let buf = RunVimInTerminal('-S XscriptPropWithWrap', #{rows: 6, cols: 50})
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1980 call VerifyScreenDump(buf, 'Test_prop_with_wrap_1', {})
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1981
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1982 call StopVimInTerminal(buf)
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1983 call delete('XscriptPropWithWrap')
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1984 endfunc
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1985
26350
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
1986 func Test_prop_after_tab()
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
1987 CheckRunVimInTerminal
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
1988
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
1989 let lines =<< trim END
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
1990 set breakindent linebreak breakat+=]
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
1991 call setline(1, "\t[xxx]")
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
1992 call prop_type_add('test', #{highlight: 'ErrorMsg'})
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
1993 call prop_add(1, 2, #{length: 1, type: 'test'})
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
1994 END
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
1995 call writefile(lines, 'XscriptPropAfterTab')
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
1996 let buf = RunVimInTerminal('-S XscriptPropAfterTab', #{rows: 10})
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
1997 call VerifyScreenDump(buf, 'Test_prop_after_tab', {})
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
1998
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
1999 call StopVimInTerminal(buf)
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
2000 call delete('XscriptPropAfterTab')
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
2001 endfunc
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
2002
29676
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2003 func Test_prop_before_tab()
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2004 CheckRunVimInTerminal
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2005
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2006 let lines =<< trim END
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2007 call setline(1, ["\tx"]->repeat(6))
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2008 call prop_type_add('test', #{highlight: 'Search'})
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2009 call prop_add(1, 1, #{type: 'test', text: '123'})
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2010 call prop_add(2, 1, #{type: 'test', text: '1234567'})
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2011 call prop_add(3, 1, #{type: 'test', text: '12345678'})
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2012 call prop_add(4, 1, #{type: 'test', text: '123456789'})
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2013 call prop_add(5, 2, #{type: 'test', text: 'ABC'})
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2014 call prop_add(6, 3, #{type: 'test', text: 'ABC'})
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2015 normal gg0
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2016 END
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2017 call writefile(lines, 'XscriptPropBeforeTab')
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2018 let buf = RunVimInTerminal('-S XscriptPropBeforeTab', #{rows: 8})
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2019 call VerifyScreenDump(buf, 'Test_prop_before_tab_01', {})
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2020 call term_sendkeys(buf, "$")
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2021 call VerifyScreenDump(buf, 'Test_prop_before_tab_02', {})
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2022 call term_sendkeys(buf, "j0")
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2023 call VerifyScreenDump(buf, 'Test_prop_before_tab_03', {})
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2024 call term_sendkeys(buf, "$")
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2025 call VerifyScreenDump(buf, 'Test_prop_before_tab_04', {})
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2026 call term_sendkeys(buf, "j0")
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2027 call VerifyScreenDump(buf, 'Test_prop_before_tab_05', {})
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2028 call term_sendkeys(buf, "$")
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2029 call VerifyScreenDump(buf, 'Test_prop_before_tab_06', {})
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2030 call term_sendkeys(buf, "j0")
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2031 call VerifyScreenDump(buf, 'Test_prop_before_tab_07', {})
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2032 call term_sendkeys(buf, "$")
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2033 call VerifyScreenDump(buf, 'Test_prop_before_tab_08', {})
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2034 call term_sendkeys(buf, "j")
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2035 call VerifyScreenDump(buf, 'Test_prop_before_tab_09', {})
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2036 call term_sendkeys(buf, "j")
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2037 call VerifyScreenDump(buf, 'Test_prop_before_tab_10', {})
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2038
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2039 call StopVimInTerminal(buf)
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2040 call delete('XscriptPropBeforeTab')
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2041 endfunc
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2042
26384
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2043 func Test_prop_after_linebreak()
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2044 CheckRunVimInTerminal
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2045
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2046 let lines =<< trim END
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2047 set linebreak wrap
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2048 call printf('%s+(%s)', 'x'->repeat(&columns / 2), 'x'->repeat(&columns / 2))->setline(1)
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2049 call prop_type_add('test', #{highlight: 'ErrorMsg'})
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2050 call prop_add(1, (&columns / 2) + 2, #{length: 1, type: 'test'})
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2051 END
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2052 call writefile(lines, 'XscriptPropAfterLinebreak')
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2053 let buf = RunVimInTerminal('-S XscriptPropAfterLinebreak', #{rows: 10})
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2054 call VerifyScreenDump(buf, 'Test_prop_after_linebreak', {})
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2055
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2056 call StopVimInTerminal(buf)
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2057 call delete('XscriptPropAfterLinebreak')
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2058 endfunc
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2059
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2060 " Buffer number of 0 should be ignored, as if the parameter wasn't passed.
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2061 def Test_prop_bufnr_zero()
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2062 new
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2063 try
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2064 var bufnr = bufnr('')
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2065 setline(1, 'hello')
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2066 prop_type_add('bufnr-global', {highlight: 'ErrorMsg'})
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2067 prop_type_add('bufnr-buffer', {highlight: 'StatusLine', bufnr: bufnr})
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2068
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2069 prop_add(1, 1, {type: 'bufnr-global', length: 1})
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2070 prop_add(1, 2, {type: 'bufnr-buffer', length: 1})
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2071
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2072 var list = prop_list(1)
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2073 assert_equal([
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2074 {id: 0, col: 1, type_bufnr: 0, end: 1, type: 'bufnr-global', length: 1, start: 1},
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2075 {id: 0, col: 2, type_bufnr: bufnr, end: 1, type: 'bufnr-buffer', length: 1, start: 1},
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2076 ], list)
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2077
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2078 assert_equal(
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2079 {highlight: 'ErrorMsg', end_incl: 0, start_incl: 0, priority: 0, combine: 1},
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2080 prop_type_get('bufnr-global', {bufnr: list[0].type_bufnr}))
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2081
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2082 assert_equal(
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2083 {highlight: 'StatusLine', end_incl: 0, start_incl: 0, priority: 0, bufnr: bufnr, combine: 1},
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2084 prop_type_get('bufnr-buffer', {bufnr: list[1].type_bufnr}))
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2085 finally
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2086 bwipe!
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2087 prop_type_delete('bufnr-global')
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2088 endtry
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2089 enddef
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2090
26242
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2091 " Tests for the prop_list() function
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2092 func Test_prop_list()
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2093 let lines =<< trim END
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2094 new
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 26384
diff changeset
2095 call g:AddPropTypes()
26242
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2096 call setline(1, repeat([repeat('a', 60)], 10))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2097 call prop_add(1, 4, {'type': 'one', 'id': 5, 'end_col': 6})
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2098 call prop_add(1, 5, {'type': 'two', 'id': 10, 'end_col': 7})
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2099 call prop_add(3, 12, {'type': 'one', 'id': 20, 'end_col': 14})
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2100 call prop_add(3, 13, {'type': 'two', 'id': 10, 'end_col': 15})
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2101 call prop_add(5, 20, {'type': 'one', 'id': 10, 'end_col': 22})
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2102 call prop_add(5, 21, {'type': 'two', 'id': 20, 'end_col': 23})
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2103 call assert_equal([
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2104 \ {'id': 5, 'col': 4, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2105 \ 'type': 'one', 'length': 2, 'start': 1},
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2106 \ {'id': 10, 'col': 5, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2107 \ 'type': 'two', 'length': 2, 'start': 1}], prop_list(1))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2108 #" text properties between a few lines
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2109 call assert_equal([
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2110 \ {'lnum': 3, 'id': 20, 'col': 12, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2111 \ 'type': 'one', 'length': 2, 'start': 1},
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2112 \ {'lnum': 3, 'id': 10, 'col': 13, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2113 \ 'type': 'two', 'length': 2, 'start': 1},
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2114 \ {'lnum': 5, 'id': 10, 'col': 20, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2115 \ 'type': 'one', 'length': 2, 'start': 1},
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2116 \ {'lnum': 5, 'id': 20, 'col': 21, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2117 \ 'type': 'two', 'length': 2, 'start': 1}],
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2118 \ prop_list(2, {'end_lnum': 5}))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2119 #" text properties across all the lines
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2120 call assert_equal([
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2121 \ {'lnum': 1, 'id': 5, 'col': 4, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2122 \ 'type': 'one', 'length': 2, 'start': 1},
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2123 \ {'lnum': 3, 'id': 20, 'col': 12, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2124 \ 'type': 'one', 'length': 2, 'start': 1},
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2125 \ {'lnum': 5, 'id': 10, 'col': 20, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2126 \ 'type': 'one', 'length': 2, 'start': 1}],
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2127 \ prop_list(1, {'types': ['one'], 'end_lnum': -1}))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2128 #" text properties with the specified identifier
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2129 call assert_equal([
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2130 \ {'lnum': 3, 'id': 20, 'col': 12, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2131 \ 'type': 'one', 'length': 2, 'start': 1},
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2132 \ {'lnum': 5, 'id': 20, 'col': 21, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2133 \ 'type': 'two', 'length': 2, 'start': 1}],
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2134 \ prop_list(1, {'ids': [20], 'end_lnum': 10}))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2135 #" text properties of the specified type and id
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2136 call assert_equal([
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2137 \ {'lnum': 1, 'id': 10, 'col': 5, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2138 \ 'type': 'two', 'length': 2, 'start': 1},
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2139 \ {'lnum': 3, 'id': 10, 'col': 13, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2140 \ 'type': 'two', 'length': 2, 'start': 1}],
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2141 \ prop_list(1, {'types': ['two'], 'ids': [10], 'end_lnum': 20}))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2142 call assert_equal([], prop_list(1, {'ids': [40, 50], 'end_lnum': 10}))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2143 call assert_equal([], prop_list(6, {'end_lnum': 10}))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2144 call assert_equal([], prop_list(2, {'end_lnum': 2}))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2145 #" error cases
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2146 call assert_fails("echo prop_list(1, {'end_lnum': -20})", 'E16:')
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2147 call assert_fails("echo prop_list(4, {'end_lnum': 2})", 'E16:')
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2148 call assert_fails("echo prop_list(1, {'end_lnum': '$'})", 'E889:')
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2149 call assert_fails("echo prop_list(1, {'types': ['blue'], 'end_lnum': 10})",
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2150 \ 'E971:')
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2151 call assert_fails("echo prop_list(1, {'types': ['one', 'blue'],
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2152 \ 'end_lnum': 10})", 'E971:')
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2153 call assert_fails("echo prop_list(1, {'types': ['one', 10],
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2154 \ 'end_lnum': 10})", 'E928:')
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2155 call assert_fails("echo prop_list(1, {'types': ['']})", 'E971:')
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2156 call assert_equal([], prop_list(2, {'types': []}))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2157 call assert_equal([], prop_list(2, {'types': test_null_list()}))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2158 call assert_fails("call prop_list(1, {'types': {}})", 'E714:')
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2159 call assert_fails("call prop_list(1, {'types': 'one'})", 'E714:')
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2160 call assert_equal([], prop_list(2, {'types': ['one'],
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2161 \ 'ids': test_null_list()}))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2162 call assert_equal([], prop_list(2, {'types': ['one'], 'ids': []}))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2163 call assert_fails("call prop_list(1, {'types': ['one'], 'ids': {}})",
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2164 \ 'E714:')
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2165 call assert_fails("call prop_list(1, {'types': ['one'], 'ids': 10})",
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2166 \ 'E714:')
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2167 call assert_fails("call prop_list(1, {'types': ['one'], 'ids': [[]]})",
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2168 \ 'E745:')
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2169 call assert_fails("call prop_list(1, {'types': ['one'], 'ids': [10, []]})",
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2170 \ 'E745:')
25392
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2171
26242
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2172 #" get text properties from a non-current buffer
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2173 wincmd w
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2174 call assert_equal([
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2175 \ {'lnum': 1, 'id': 5, 'col': 4, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2176 \ 'type': 'one', 'length': 2, 'start': 1},
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2177 \ {'lnum': 1, 'id': 10, 'col': 5, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2178 \ 'type': 'two', 'length': 2, 'start': 1},
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2179 \ {'lnum': 3, 'id': 20, 'col': 12, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2180 \ 'type': 'one', 'length': 2, 'start': 1},
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2181 \ {'lnum': 3, 'id': 10, 'col': 13, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2182 \ 'type': 'two', 'length': 2, 'start': 1}],
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2183 \ prop_list(1, {'bufnr': winbufnr(1), 'end_lnum': 4}))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2184 wincmd w
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2185
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2186 #" get text properties after clearing all the properties
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2187 call prop_clear(1, line('$'))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2188 call assert_equal([], prop_list(1, {'end_lnum': 10}))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2189
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2190 call prop_add(2, 4, {'type': 'one', 'id': 5, 'end_col': 6})
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2191 call prop_add(2, 4, {'type': 'two', 'id': 10, 'end_col': 6})
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2192 call prop_add(2, 4, {'type': 'three', 'id': 15, 'end_col': 6})
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2193 #" get text properties with a list of types
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2194 call assert_equal([
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2195 \ {'id': 10, 'col': 4, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2196 \ 'type': 'two', 'length': 2, 'start': 1},
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2197 \ {'id': 5, 'col': 4, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2198 \ 'type': 'one', 'length': 2, 'start': 1}],
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2199 \ prop_list(2, {'types': ['one', 'two']}))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2200 call assert_equal([
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2201 \ {'id': 15, 'col': 4, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2202 \ 'type': 'three', 'length': 2, 'start': 1},
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2203 \ {'id': 5, 'col': 4, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2204 \ 'type': 'one', 'length': 2, 'start': 1}],
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2205 \ prop_list(2, {'types': ['one', 'three']}))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2206 #" get text properties with a list of identifiers
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2207 call assert_equal([
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2208 \ {'id': 10, 'col': 4, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2209 \ 'type': 'two', 'length': 2, 'start': 1},
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2210 \ {'id': 5, 'col': 4, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2211 \ 'type': 'one', 'length': 2, 'start': 1}],
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2212 \ prop_list(2, {'ids': [5, 10, 20]}))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2213 call prop_clear(1, line('$'))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2214 call assert_equal([], prop_list(2, {'types': ['one', 'two']}))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2215 call assert_equal([], prop_list(2, {'ids': [5, 10, 20]}))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2216
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2217 #" get text properties from a hidden buffer
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2218 edit! Xaaa
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2219 call setline(1, repeat([repeat('b', 60)], 10))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2220 call prop_add(1, 4, {'type': 'one', 'id': 5, 'end_col': 6})
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2221 call prop_add(4, 8, {'type': 'two', 'id': 10, 'end_col': 10})
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2222 VAR bnr = bufnr()
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2223 hide edit Xbbb
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2224 call assert_equal([
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2225 \ {'lnum': 1, 'id': 5, 'col': 4, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2226 \ 'type': 'one', 'length': 2, 'start': 1},
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2227 \ {'lnum': 4, 'id': 10, 'col': 8, 'type_bufnr': 0, 'end': 1,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2228 \ 'type': 'two', 'length': 2, 'start': 1}],
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2229 \ prop_list(1, {'bufnr': bnr,
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2230 \ 'types': ['one', 'two'], 'ids': [5, 10], 'end_lnum': -1}))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2231 #" get text properties from an unloaded buffer
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2232 bunload! Xaaa
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2233 call assert_equal([], prop_list(1, {'bufnr': bnr, 'end_lnum': -1}))
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2234
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 26384
diff changeset
2235 call g:DeletePropTypes()
26242
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2236 :%bw!
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2237 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 26384
diff changeset
2238 call v9.CheckLegacyAndVim9Success(lines)
26242
685206b54ecf patch 8.2.3652: can only get text properties one line at a time
Bram Moolenaar <Bram@vim.org>
parents: 25674
diff changeset
2239 endfunc
23306
90ea5037a7e3 patch 8.2.2198: ml_get error when resizing window and using text property
Bram Moolenaar <Bram@vim.org>
parents: 23072
diff changeset
2240
28526
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2241 func Test_prop_find_prev_on_same_line()
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2242 new
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2243
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2244 call setline(1, 'the quikc bronw fox jumsp over the layz dog')
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2245 call prop_type_add('misspell', #{highlight: 'ErrorMsg'})
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2246 for col in [8, 14, 24, 38]
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2247 call prop_add(1, col, #{type: 'misspell', length: 2})
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2248 endfor
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2249
29788
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
2250 call cursor(1, 18)
28526
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2251 let expected = [
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2252 \ #{lnum: 1, id: 0, col: 14, end: 1, type: 'misspell', type_bufnr: 0, length: 2, start: 1},
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2253 \ #{lnum: 1, id: 0, col: 24, end: 1, type: 'misspell', type_bufnr: 0, length: 2, start: 1}
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2254 \ ]
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2255
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2256 let result = prop_find(#{type: 'misspell'}, 'b')
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2257 call assert_equal(expected[0], result)
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2258 let result = prop_find(#{type: 'misspell'}, 'f')
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2259 call assert_equal(expected[1], result)
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2260
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2261 call prop_type_delete('misspell')
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2262 bwipe!
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2263 endfunc
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2264
28848
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2265 func Test_prop_spell()
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2266 new
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2267 set spell
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2268 call AddPropTypes()
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2269
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2270 call setline(1, ["helo world", "helo helo helo"])
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2271 call prop_add(1, 1, #{type: 'one', length: 4})
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2272 call prop_add(1, 6, #{type: 'two', length: 5})
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2273 call prop_add(2, 1, #{type: 'three', length: 4})
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2274 call prop_add(2, 6, #{type: 'three', length: 4})
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2275 call prop_add(2, 11, #{type: 'three', length: 4})
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2276
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2277 " The first prop over 'helo' increases its length after the word is corrected
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2278 " to 'Hello', the second one is shifted to the right.
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2279 let expected = [
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2280 \ {'id': 0, 'col': 1, 'type_bufnr': 0, 'end': 1, 'type': 'one',
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2281 \ 'length': 5, 'start': 1},
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2282 \ {'id': 0, 'col': 7, 'type_bufnr': 0, 'end': 1, 'type': 'two',
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2283 \ 'length': 5, 'start': 1}
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2284 \ ]
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2285 call feedkeys("z=1\<CR>", 'xt')
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2286
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2287 call assert_equal('Hello world', getline(1))
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2288 call assert_equal(expected, prop_list(1))
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2289
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2290 " Repeat the replacement done by z=
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2291 spellrepall
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2292
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2293 let expected = [
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2294 \ {'id': 0, 'col': 1, 'type_bufnr': 0, 'end': 1, 'type': 'three',
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2295 \ 'length': 5, 'start': 1},
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2296 \ {'id': 0, 'col': 7, 'type_bufnr': 0, 'end': 1, 'type': 'three',
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2297 \ 'length': 5, 'start': 1},
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2298 \ {'id': 0, 'col': 13, 'type_bufnr': 0, 'end': 1, 'type': 'three',
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2299 \ 'length': 5, 'start': 1}
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2300 \ ]
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2301 call assert_equal('Hello Hello Hello', getline(2))
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2302 call assert_equal(expected, prop_list(2))
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2303
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2304 call DeletePropTypes()
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2305 set spell&
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2306 bwipe!
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2307 endfunc
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2308
28854
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2309 func Test_prop_shift_block()
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2310 new
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2311 call AddPropTypes()
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2312
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2313 call setline(1, ['some highlighted text']->repeat(2))
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2314 call prop_add(1, 10, #{type: 'one', length: 11})
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2315 call prop_add(2, 10, #{type: 'two', length: 11})
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2316
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2317 call cursor(1, 1)
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2318 call feedkeys("5l\<c-v>>", 'nxt')
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2319 call cursor(2, 1)
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2320 call feedkeys("5l\<c-v><", 'nxt')
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2321
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2322 let expected = [
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2323 \ {'lnum': 1, 'id': 0, 'col': 8, 'type_bufnr': 0, 'end': 1, 'type': 'one',
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2324 \ 'length': 11, 'start' : 1},
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2325 \ {'lnum': 2, 'id': 0, 'col': 6, 'type_bufnr': 0, 'end': 1, 'type': 'two',
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2326 \ 'length': 11, 'start' : 1}
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2327 \ ]
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2328 call assert_equal(expected, prop_list(1, #{end_lnum: 2}))
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2329
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2330 call DeletePropTypes()
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2331 bwipe!
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2332 endfunc
28848
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2333
28863
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2334 func Test_prop_insert_multiline()
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2335 new
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2336 call AddPropTypes()
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2337
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2338 call setline(1, ['foobar', 'barbaz'])
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2339 call prop_add(1, 4, #{end_lnum: 2, end_col: 4, type: 'one'})
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2340
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2341 call feedkeys("1Goquxqux\<Esc>", 'nxt')
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2342 call feedkeys("2GOquxqux\<Esc>", 'nxt')
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2343
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2344 let lines =<< trim END
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2345 foobar
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2346 quxqux
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2347 quxqux
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2348 barbaz
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2349 END
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2350 call assert_equal(lines, getline(1, '$'))
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2351 let expected = [
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2352 \ {'lnum': 1, 'id': 0, 'col': 4, 'type_bufnr': 0, 'end': 0, 'type': 'one',
29788
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
2353 \ 'length': 4 , 'start': 1},
28863
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2354 \ {'lnum': 2, 'id': 0, 'col': 1, 'type_bufnr': 0, 'end': 0, 'type': 'one',
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2355 \ 'length': 7, 'start': 0},
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2356 \ {'lnum': 3, 'id': 0, 'col': 1, 'type_bufnr': 0, 'end': 0, 'type': 'one',
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2357 \ 'length': 7, 'start': 0},
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2358 \ {'lnum': 4, 'id': 0, 'col': 1, 'type_bufnr': 0, 'end': 1, 'type': 'one',
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2359 \ 'length': 3, 'start': 0}
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2360 \ ]
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2361 call assert_equal(expected, prop_list(1, #{end_lnum: 10}))
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2362
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2363 call DeletePropTypes()
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2364 bwipe!
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2365 endfunc
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2366
28869
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2367 func Test_prop_blockwise_change()
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2368 new
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2369 call AddPropTypes()
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2370
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2371 call setline(1, ['foooooo', 'bar', 'baaaaz'])
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2372 call prop_add(1, 1, #{end_col: 3, type: 'one'})
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2373 call prop_add(2, 1, #{end_col: 3, type: 'two'})
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2374 call prop_add(3, 1, #{end_col: 3, type: 'three'})
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2375
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2376 " Replace the first two columns with '123', since 'start_incl' is false the
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2377 " prop is not extended.
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2378 call feedkeys("gg\<c-v>2jc123\<Esc>", 'nxt')
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2379
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2380 let lines =<< trim END
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2381 123oooooo
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2382 123ar
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2383 123aaaaz
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2384 END
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2385 call assert_equal(lines, getline(1, '$'))
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2386 let expected = [
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2387 \ {'lnum': 1, 'id': 0, 'col': 4, 'type_bufnr': 0, 'end': 1, 'type': 'one',
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2388 \ 'length': 1, 'start': 1},
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2389 \ {'lnum': 2, 'id': 0, 'col': 4, 'type_bufnr': 0, 'end': 1, 'type': 'two',
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2390 \ 'length': 1, 'start': 1},
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2391 \ {'lnum': 3, 'id': 0, 'col': 4, 'type_bufnr': 0, 'end': 1 ,
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2392 \ 'type': 'three', 'length': 1, 'start': 1}
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2393 \ ]
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2394 call assert_equal(expected, prop_list(1, #{end_lnum: 10}))
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2395
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2396 call DeletePropTypes()
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2397 bwipe!
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2398 endfunc
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2399
28984
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2400 func Do_test_props_do_not_affect_byte_offsets(ff, increment)
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2401 new
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2402 let lcount = 410
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2403
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2404 " File format affects byte-offset calculations, so make sure it is known.
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2405 exec 'setlocal fileformat=' . a:ff
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2406
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2407 " Fill the buffer with varying length lines. We need a suitably large number
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2408 " to force Vim code through paths wehere previous error have occurred. This
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2409 " is more 'art' than 'science'.
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2410 let text = 'a'
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2411 call setline(1, text)
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2412 let offsets = [1]
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2413 for idx in range(lcount)
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2414 call add(offsets, offsets[idx] + len(text) + a:increment)
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2415 if (idx % 6) == 0
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2416 let text = text . 'a'
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2417 endif
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2418 call append(line('$'), text)
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2419 endfor
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2420
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2421 " Set a property that spans a few lines to cause Vim's internal buffer code
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2422 " to perform a reasonable amount of rearrangement.
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2423 call prop_type_add('one', {'highlight': 'ErrorMsg'})
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2424 call prop_add(1, 1, {'type': 'one', 'end_lnum': 6, 'end_col': 2})
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2425
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2426 for idx in range(lcount)
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2427 let boff = line2byte(idx + 1)
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2428 call assert_equal(offsets[idx], boff, 'Bad byte offset at line ' . (idx + 1))
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2429 endfor
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2430
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2431 call prop_type_delete('one')
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2432 bwipe!
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2433 endfunc
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2434
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2435 func Test_props_do_not_affect_byte_offsets()
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2436 call Do_test_props_do_not_affect_byte_offsets('unix', 1)
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2437 endfunc
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2438
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2439 func Test_props_do_not_affect_byte_offsets_dos()
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2440 call Do_test_props_do_not_affect_byte_offsets('dos', 2)
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2441 endfunc
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2442
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2443 func Test_props_do_not_affect_byte_offsets_editline()
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2444 new
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2445 let lcount = 410
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2446
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2447 " File format affects byte-offset calculations, so make sure it is known.
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2448 setlocal fileformat=unix
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2449
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2450 " Fill the buffer with varying length lines. We need a suitably large number
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2451 " to force Vim code through paths wehere previous error have occurred. This
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2452 " is more 'art' than 'science'.
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2453 let text = 'aa'
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2454 call setline(1, text)
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2455 let offsets = [1]
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2456 for idx in range(lcount)
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2457 call add(offsets, offsets[idx] + len(text) + 1)
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2458 if (idx % 6) == 0
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2459 let text = text . 'a'
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2460 endif
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2461 call append(line('$'), text)
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2462 endfor
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2463
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2464 " Set a property that just covers the first line. When this test was
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2465 " developed, this did not trigger a byte-offset error.
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2466 call prop_type_add('one', {'highlight': 'ErrorMsg'})
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2467 call prop_add(1, 1, {'type': 'one', 'end_lnum': 1, 'end_col': 3})
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2468
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2469 for idx in range(lcount)
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2470 let boff = line2byte(idx + 1)
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2471 call assert_equal(offsets[idx], boff,
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2472 \ 'Confounding bad byte offset at line ' . (idx + 1))
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2473 endfor
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2474
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2475 " Insert text in the middle of the first line, keeping the property
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2476 " unchanged.
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2477 :1
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2478 normal aHello
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2479 for idx in range(1, lcount)
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2480 let offsets[idx] = offsets[idx] + 5
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2481 endfor
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2482
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2483 for idx in range(lcount)
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2484 let boff = line2byte(idx + 1)
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2485 call assert_equal(offsets[idx], boff,
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2486 \ 'Bad byte offset at line ' . (idx + 1))
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2487 endfor
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2488
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2489 call prop_type_delete('one')
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2490 bwipe!
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2491 endfunc
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2492
29451
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2493 func Test_prop_inserts_text()
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2494 CheckRunVimInTerminal
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2495
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2496 " Just a basic check for now
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2497 let lines =<< trim END
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2498 call setline(1, 'insert some text here and other text there and some more text after wrapping')
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2499 call prop_type_add('someprop', #{highlight: 'ErrorMsg'})
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2500 call prop_type_add('otherprop', #{highlight: 'Search'})
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2501 call prop_type_add('moreprop', #{highlight: 'DiffAdd'})
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2502 call prop_add(1, 18, #{type: 'someprop', text: 'SOME '})
29581
4a79bca8a76e patch 9.0.0131: virtual text with Tab is not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29579
diff changeset
2503 call prop_add(1, 38, #{type: 'otherprop', text: "OTHER\t"})
29451
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2504 call prop_add(1, 69, #{type: 'moreprop', text: 'MORE '})
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2505 normal $
29583
32aee589fc9a patch 9.0.0132: multi-byte characters in virtual text not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 29581
diff changeset
2506
32aee589fc9a patch 9.0.0132: multi-byte characters in virtual text not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 29581
diff changeset
2507 call setline(2, 'prepost')
32aee589fc9a patch 9.0.0132: multi-byte characters in virtual text not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 29581
diff changeset
2508 call prop_type_add('multibyte', #{highlight: 'Visual'})
32aee589fc9a patch 9.0.0132: multi-byte characters in virtual text not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 29581
diff changeset
2509 call prop_add(2, 4, #{type: 'multibyte', text: 'söme和平téxt'})
29605
0340a59e04ca patch 9.0.0143: cursor positioned after virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29597
diff changeset
2510
29655
53e434838a85 patch 9.0.0168: cursor positioned wrong with two virtual text properties
Bram Moolenaar <Bram@vim.org>
parents: 29645
diff changeset
2511 call setline(3, 'Foo foo = { 1, 2 };')
29692
042f357b455d patch 9.0.0186: virtual text without highlighting does not show
Bram Moolenaar <Bram@vim.org>
parents: 29690
diff changeset
2512 call prop_type_add('testprop', #{highlight: 'Comment'})
29655
53e434838a85 patch 9.0.0168: cursor positioned wrong with two virtual text properties
Bram Moolenaar <Bram@vim.org>
parents: 29645
diff changeset
2513 call prop_add(3, 13, #{type: 'testprop', text: '.x='})
53e434838a85 patch 9.0.0168: cursor positioned wrong with two virtual text properties
Bram Moolenaar <Bram@vim.org>
parents: 29645
diff changeset
2514 call prop_add(3, 16, #{type: 'testprop', text: '.y='})
53e434838a85 patch 9.0.0168: cursor positioned wrong with two virtual text properties
Bram Moolenaar <Bram@vim.org>
parents: 29645
diff changeset
2515
53e434838a85 patch 9.0.0168: cursor positioned wrong with two virtual text properties
Bram Moolenaar <Bram@vim.org>
parents: 29645
diff changeset
2516 call setline(4, '')
53e434838a85 patch 9.0.0168: cursor positioned wrong with two virtual text properties
Bram Moolenaar <Bram@vim.org>
parents: 29645
diff changeset
2517 call prop_add(4, 1, #{type: 'someprop', text: 'empty line'})
29692
042f357b455d patch 9.0.0186: virtual text without highlighting does not show
Bram Moolenaar <Bram@vim.org>
parents: 29690
diff changeset
2518
042f357b455d patch 9.0.0186: virtual text without highlighting does not show
Bram Moolenaar <Bram@vim.org>
parents: 29690
diff changeset
2519 call setline(5, 'look highlight')
042f357b455d patch 9.0.0186: virtual text without highlighting does not show
Bram Moolenaar <Bram@vim.org>
parents: 29690
diff changeset
2520 call prop_type_add('nohi', #{})
042f357b455d patch 9.0.0186: virtual text without highlighting does not show
Bram Moolenaar <Bram@vim.org>
parents: 29690
diff changeset
2521 call prop_add(5, 6, #{type: 'nohi', text: 'no '})
29451
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2522 END
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2523 call writefile(lines, 'XscriptPropsWithText')
29655
53e434838a85 patch 9.0.0168: cursor positioned wrong with two virtual text properties
Bram Moolenaar <Bram@vim.org>
parents: 29645
diff changeset
2524 let buf = RunVimInTerminal('-S XscriptPropsWithText', #{rows: 8, cols: 60})
29550
ec5f48ab361b patch 9.0.0116: virtual text not displayed if 'signcolumn' is "yes"
Bram Moolenaar <Bram@vim.org>
parents: 29451
diff changeset
2525 call VerifyScreenDump(buf, 'Test_prop_inserts_text_1', {})
ec5f48ab361b patch 9.0.0116: virtual text not displayed if 'signcolumn' is "yes"
Bram Moolenaar <Bram@vim.org>
parents: 29451
diff changeset
2526
ec5f48ab361b patch 9.0.0116: virtual text not displayed if 'signcolumn' is "yes"
Bram Moolenaar <Bram@vim.org>
parents: 29451
diff changeset
2527 call term_sendkeys(buf, ":set signcolumn=yes\<CR>")
ec5f48ab361b patch 9.0.0116: virtual text not displayed if 'signcolumn' is "yes"
Bram Moolenaar <Bram@vim.org>
parents: 29451
diff changeset
2528 call VerifyScreenDump(buf, 'Test_prop_inserts_text_2', {})
29451
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2529
29605
0340a59e04ca patch 9.0.0143: cursor positioned after virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29597
diff changeset
2530 call term_sendkeys(buf, "2G$")
0340a59e04ca patch 9.0.0143: cursor positioned after virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29597
diff changeset
2531 call VerifyScreenDump(buf, 'Test_prop_inserts_text_3', {})
0340a59e04ca patch 9.0.0143: cursor positioned after virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29597
diff changeset
2532
29655
53e434838a85 patch 9.0.0168: cursor positioned wrong with two virtual text properties
Bram Moolenaar <Bram@vim.org>
parents: 29645
diff changeset
2533 call term_sendkeys(buf, "3Gf1")
29605
0340a59e04ca patch 9.0.0143: cursor positioned after virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29597
diff changeset
2534 call VerifyScreenDump(buf, 'Test_prop_inserts_text_4', {})
29655
53e434838a85 patch 9.0.0168: cursor positioned wrong with two virtual text properties
Bram Moolenaar <Bram@vim.org>
parents: 29645
diff changeset
2535 call term_sendkeys(buf, "f2")
53e434838a85 patch 9.0.0168: cursor positioned wrong with two virtual text properties
Bram Moolenaar <Bram@vim.org>
parents: 29645
diff changeset
2536 call VerifyScreenDump(buf, 'Test_prop_inserts_text_5', {})
53e434838a85 patch 9.0.0168: cursor positioned wrong with two virtual text properties
Bram Moolenaar <Bram@vim.org>
parents: 29645
diff changeset
2537
53e434838a85 patch 9.0.0168: cursor positioned wrong with two virtual text properties
Bram Moolenaar <Bram@vim.org>
parents: 29645
diff changeset
2538 call term_sendkeys(buf, "4G")
53e434838a85 patch 9.0.0168: cursor positioned wrong with two virtual text properties
Bram Moolenaar <Bram@vim.org>
parents: 29645
diff changeset
2539 call VerifyScreenDump(buf, 'Test_prop_inserts_text_6', {})
29605
0340a59e04ca patch 9.0.0143: cursor positioned after virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29597
diff changeset
2540
29451
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2541 call StopVimInTerminal(buf)
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2542 call delete('XscriptPropsWithText')
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2543 endfunc
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2544
29706
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2545 func Test_prop_inserts_text_highlight()
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2546 CheckRunVimInTerminal
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2547
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2548 " Just a basic check for now
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2549 let lines =<< trim END
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2550 call setline(1, 'insert some text (here) and there')
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2551 call prop_type_add('someprop', #{highlight: 'ErrorMsg'})
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2552 let bef_prop = prop_add(1, 18, #{type: 'someprop', text: 'BEFORE'})
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2553 set hlsearch
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2554 let thematch = matchaddpos("DiffAdd", [[1, 18]])
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2555 func DoAfter()
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2556 call prop_remove(#{id: g:bef_prop})
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2557 call prop_add(1, 19, #{type: 'someprop', text: 'AFTER'})
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2558 let g:thematch = matchaddpos("DiffAdd", [[1, 18]])
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2559 let @/ = ''
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2560 endfunc
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2561 END
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2562 call writefile(lines, 'XscriptPropsWithHighlight')
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2563 let buf = RunVimInTerminal('-S XscriptPropsWithHighlight', #{rows: 6, cols: 60})
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2564 call VerifyScreenDump(buf, 'Test_prop_inserts_text_hi_1', {})
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2565 call term_sendkeys(buf, "/text (he\<CR>")
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2566 call VerifyScreenDump(buf, 'Test_prop_inserts_text_hi_2', {})
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2567 call term_sendkeys(buf, ":call matchdelete(thematch)\<CR>")
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2568 call VerifyScreenDump(buf, 'Test_prop_inserts_text_hi_3', {})
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2569
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2570 call term_sendkeys(buf, ":call DoAfter()\<CR>")
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2571 call VerifyScreenDump(buf, 'Test_prop_inserts_text_hi_4', {})
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2572 call term_sendkeys(buf, "/text (he\<CR>")
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2573 call VerifyScreenDump(buf, 'Test_prop_inserts_text_hi_5', {})
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2574 call term_sendkeys(buf, ":call matchdelete(thematch)\<CR>")
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2575 call VerifyScreenDump(buf, 'Test_prop_inserts_text_hi_6', {})
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2576
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2577 call StopVimInTerminal(buf)
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2578 call delete('XscriptPropsWithHighlight')
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2579 endfunc
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2580
29718
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2581 func Test_props_with_text_right_align_twice()
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2582 CheckRunVimInTerminal
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2583
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2584 let lines =<< trim END
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2585 call setline(1, ["some text some text some text some text", 'line two'])
29918
e6e0f1c39edb patch 9.0.0297: cursor position wrong after right aligned virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29826
diff changeset
2586 call prop_type_add('MyErrorText', #{ highlight: 'ErrorMsg'})
e6e0f1c39edb patch 9.0.0297: cursor position wrong after right aligned virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29826
diff changeset
2587 call prop_type_add('MyPadding', #{ highlight: 'DiffChange'})
e6e0f1c39edb patch 9.0.0297: cursor position wrong after right aligned virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29826
diff changeset
2588 call prop_add(1, 0, #{type: 'MyPadding', text: ' nothing here', text_wrap: 'wrap'})
e6e0f1c39edb patch 9.0.0297: cursor position wrong after right aligned virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29826
diff changeset
2589 call prop_add(1, 0, #{type: 'MyErrorText', text: 'Some error', text_wrap: 'wrap', text_align: 'right'})
e6e0f1c39edb patch 9.0.0297: cursor position wrong after right aligned virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29826
diff changeset
2590 call prop_add(1, 0, #{type: 'MyErrorText', text: 'Another error', text_wrap: 'wrap', text_align: 'right'})
29718
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2591 normal G$
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2592 END
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2593 call writefile(lines, 'XscriptPropsRightAlign')
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2594 let buf = RunVimInTerminal('-S XscriptPropsRightAlign', #{rows: 8})
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2595 call VerifyScreenDump(buf, 'Test_prop_right_align_twice_1', {})
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2596
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2597 call term_sendkeys(buf, "ggisome more text\<Esc>G$")
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2598 call VerifyScreenDump(buf, 'Test_prop_right_align_twice_2', {})
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2599
29918
e6e0f1c39edb patch 9.0.0297: cursor position wrong after right aligned virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29826
diff changeset
2600 call term_sendkeys(buf, ":set signcolumn=yes\<CR>")
e6e0f1c39edb patch 9.0.0297: cursor position wrong after right aligned virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29826
diff changeset
2601 call VerifyScreenDump(buf, 'Test_prop_right_align_twice_3', {})
e6e0f1c39edb patch 9.0.0297: cursor position wrong after right aligned virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29826
diff changeset
2602
29718
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2603 call StopVimInTerminal(buf)
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2604 call delete('XscriptPropsRightAlign')
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2605 endfunc
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2606
29560
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2607 func Test_props_with_text_after()
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2608 CheckRunVimInTerminal
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2609
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2610 let lines =<< trim END
29615
bab343b21da8 patch 9.0.0148: a "below" aligned text property gets 'showbreak' displayed
Bram Moolenaar <Bram@vim.org>
parents: 29613
diff changeset
2611 set showbreak=+++
29643
b54dfe92ee10 patch 9.0.0162: text property "below" gets indent if 'breakindent' is set
Bram Moolenaar <Bram@vim.org>
parents: 29635
diff changeset
2612 set breakindent
b54dfe92ee10 patch 9.0.0162: text property "below" gets indent if 'breakindent' is set
Bram Moolenaar <Bram@vim.org>
parents: 29635
diff changeset
2613 call setline(1, ' some text here and other text there')
29560
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2614 call prop_type_add('rightprop', #{highlight: 'ErrorMsg'})
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2615 call prop_type_add('afterprop', #{highlight: 'Search'})
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2616 call prop_type_add('belowprop', #{highlight: 'DiffAdd'})
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2617 call prop_add(1, 0, #{type: 'rightprop', text: ' RIGHT ', text_align: 'right'})
29581
4a79bca8a76e patch 9.0.0131: virtual text with Tab is not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29579
diff changeset
2618 call prop_add(1, 0, #{type: 'afterprop', text: "\tAFTER\t", text_align: 'after'})
29560
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2619 call prop_add(1, 0, #{type: 'belowprop', text: ' BELOW ', text_align: 'below'})
29613
1a0aea1e23f4 patch 9.0.0147: cursor positioned wrong after two "below" text properties
Bram Moolenaar <Bram@vim.org>
parents: 29609
diff changeset
2620 call prop_add(1, 0, #{type: 'belowprop', text: ' ALSO BELOW ', text_align: 'below'})
29568
8f71840ecf07 patch 9.0.0125: cursor positioned wrong with virtual text after the line
Bram Moolenaar <Bram@vim.org>
parents: 29560
diff changeset
2621
8f71840ecf07 patch 9.0.0125: cursor positioned wrong with virtual text after the line
Bram Moolenaar <Bram@vim.org>
parents: 29560
diff changeset
2622 call setline(2, 'Last line.')
8f71840ecf07 patch 9.0.0125: cursor positioned wrong with virtual text after the line
Bram Moolenaar <Bram@vim.org>
parents: 29560
diff changeset
2623 call prop_add(2, 0, #{type: 'afterprop', text: ' After Last ', text_align: 'after'})
8f71840ecf07 patch 9.0.0125: cursor positioned wrong with virtual text after the line
Bram Moolenaar <Bram@vim.org>
parents: 29560
diff changeset
2624 normal G$
29583
32aee589fc9a patch 9.0.0132: multi-byte characters in virtual text not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 29581
diff changeset
2625
32aee589fc9a patch 9.0.0132: multi-byte characters in virtual text not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 29581
diff changeset
2626 call setline(3, 'right here')
32aee589fc9a patch 9.0.0132: multi-byte characters in virtual text not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 29581
diff changeset
2627 call prop_add(3, 0, #{type: 'rightprop', text: 'söme和平téxt', text_align: 'right'})
29560
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2628 END
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2629 call writefile(lines, 'XscriptPropsWithTextAfter')
29613
1a0aea1e23f4 patch 9.0.0147: cursor positioned wrong after two "below" text properties
Bram Moolenaar <Bram@vim.org>
parents: 29609
diff changeset
2630 let buf = RunVimInTerminal('-S XscriptPropsWithTextAfter', #{rows: 8, cols: 60})
29560
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2631 call VerifyScreenDump(buf, 'Test_prop_with_text_after_1', {})
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2632
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2633 call StopVimInTerminal(buf)
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2634 call delete('XscriptPropsWithTextAfter')
29696
c1c599a367d4 patch 9.0.0188: strange effects when using "text_align" with non-zero column
Bram Moolenaar <Bram@vim.org>
parents: 29692
diff changeset
2635
c1c599a367d4 patch 9.0.0188: strange effects when using "text_align" with non-zero column
Bram Moolenaar <Bram@vim.org>
parents: 29692
diff changeset
2636 call assert_fails('call prop_add(1, 2, #{text: "yes", text_align: "right", type: "some"})', 'E1294:')
29560
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2637 endfunc
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2638
29633
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2639 func Test_props_with_text_after_below_trunc()
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2640 CheckRunVimInTerminal
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2641
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2642 let lines =<< trim END
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2643 vim9script
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2644 edit foobar
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2645 set showbreak=+++
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2646 setline(1, ['onasdf asdf asdf asdf asd fas df', 'two'])
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2647 prop_type_add('test', {highlight: 'Special'})
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2648 prop_add(1, 0, {
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2649 type: 'test',
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2650 text: 'the quick brown fox jumps over the lazy dog',
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2651 text_align: 'after'
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2652 })
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2653 prop_add(1, 0, {
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2654 type: 'test',
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2655 text: 'the quick brown fox jumps over the lazy dog',
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2656 text_align: 'below'
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2657 })
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2658 normal G$
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2659 END
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2660 call writefile(lines, 'XscriptPropsAfterTrunc')
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2661 let buf = RunVimInTerminal('-S XscriptPropsAfterTrunc', #{rows: 8, cols: 60})
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2662 call VerifyScreenDump(buf, 'Test_prop_with_text_after_below_trunc_1', {})
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2663
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2664 call StopVimInTerminal(buf)
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2665 call delete('XscriptPropsAfterTrunc')
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2666 endfunc
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2667
29585
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2668 func Test_props_with_text_after_joined()
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2669 CheckRunVimInTerminal
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2670
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2671 let lines =<< trim END
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2672 call setline(1, ['one', 'two', 'three', 'four'])
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2673 call prop_type_add('afterprop', #{highlight: 'Search'})
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2674 call prop_add(1, 0, #{type: 'afterprop', text: ' ONE', text_align: 'after'})
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2675 call prop_add(4, 0, #{type: 'afterprop', text: ' FOUR', text_align: 'after'})
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2676 normal ggJ
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2677 normal GkJ
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2678
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2679 call setline(3, ['a', 'b', 'c', 'd', 'e', 'f'])
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2680 call prop_add(3, 0, #{type: 'afterprop', text: ' AAA', text_align: 'after'})
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2681 call prop_add(5, 0, #{type: 'afterprop', text: ' CCC', text_align: 'after'})
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2682 call prop_add(7, 0, #{type: 'afterprop', text: ' EEE', text_align: 'after'})
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2683 call prop_add(8, 0, #{type: 'afterprop', text: ' FFF', text_align: 'after'})
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2684 normal 3G6J
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2685 END
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2686 call writefile(lines, 'XscriptPropsWithTextAfterJoined')
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2687 let buf = RunVimInTerminal('-S XscriptPropsWithTextAfterJoined', #{rows: 6, cols: 60})
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2688 call VerifyScreenDump(buf, 'Test_prop_with_text_after_joined_1', {})
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2689
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2690 call StopVimInTerminal(buf)
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2691 call delete('XscriptPropsWithTextAfterJoined')
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2692 endfunc
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2693
29597
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2694 func Test_props_with_text_after_truncated()
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2695 CheckRunVimInTerminal
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2696
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2697 let lines =<< trim END
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2698 call setline(1, ['one two three four five six seven'])
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2699 call prop_type_add('afterprop', #{highlight: 'Search'})
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2700 call prop_add(1, 0, #{type: 'afterprop', text: ' ONE and TWO and THREE and FOUR and FIVE'})
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2701
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2702 call setline(2, ['one two three four five six seven'])
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2703 call prop_add(2, 0, #{type: 'afterprop', text: ' one AND two AND three AND four AND five', text_align: 'right'})
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2704
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2705 call setline(3, ['one two three four five six seven'])
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2706 call prop_add(3, 0, #{type: 'afterprop', text: ' one AND two AND three AND four AND five lets wrap after some more text', text_align: 'below'})
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2707
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2708 call setline(4, ['cursor here'])
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2709 normal 4Gfh
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2710 END
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2711 call writefile(lines, 'XscriptPropsWithTextAfterTrunc')
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2712 let buf = RunVimInTerminal('-S XscriptPropsWithTextAfterTrunc', #{rows: 9, cols: 60})
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2713 call VerifyScreenDump(buf, 'Test_prop_with_text_after_trunc_1', {})
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2714
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2715 call term_sendkeys(buf, ":37vsp\<CR>gg")
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2716 call VerifyScreenDump(buf, 'Test_prop_with_text_after_trunc_2', {})
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2717
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2718 call term_sendkeys(buf, ":36wincmd |\<CR>")
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2719 call term_sendkeys(buf, "2G$")
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2720 call VerifyScreenDump(buf, 'Test_prop_with_text_after_trunc_3', {})
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2721
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2722 call term_sendkeys(buf, ":33wincmd |\<CR>")
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2723 call VerifyScreenDump(buf, 'Test_prop_with_text_after_trunc_4', {})
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2724
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2725 call term_sendkeys(buf, ":18wincmd |\<CR>")
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2726 call term_sendkeys(buf, "0fx")
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2727 call VerifyScreenDump(buf, 'Test_prop_with_text_after_trunc_5', {})
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2728
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2729 call StopVimInTerminal(buf)
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2730 call delete('XscriptPropsWithTextAfterTrunc')
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2731 endfunc
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2732
29678
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2733 func Test_props_with_text_empty_line()
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2734 CheckRunVimInTerminal
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2735
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2736 let lines =<< trim END
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2737 call setline(1, ['', 'aaa', '', 'bbbbbb'])
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2738 call prop_type_add('prop1', #{highlight: 'Search'})
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2739 call prop_add(1, 1, #{type: 'prop1', text_wrap: 'wrap', text: repeat('X', &columns)})
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2740 call prop_add(3, 1, #{type: 'prop1', text_wrap: 'wrap', text: repeat('X', &columns + 1)})
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2741 normal gg0
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2742 END
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2743 call writefile(lines, 'XscriptPropsWithTextEmptyLine')
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2744 let buf = RunVimInTerminal('-S XscriptPropsWithTextEmptyLine', #{rows: 8, cols: 60})
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2745 call VerifyScreenDump(buf, 'Test_prop_with_text_empty_line_1', {})
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2746 call term_sendkeys(buf, "$")
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2747 call VerifyScreenDump(buf, 'Test_prop_with_text_empty_line_2', {})
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2748 call term_sendkeys(buf, "j")
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2749 call VerifyScreenDump(buf, 'Test_prop_with_text_empty_line_3', {})
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2750 call term_sendkeys(buf, "j")
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2751 call VerifyScreenDump(buf, 'Test_prop_with_text_empty_line_4', {})
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2752 call term_sendkeys(buf, "j")
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2753 call VerifyScreenDump(buf, 'Test_prop_with_text_empty_line_5', {})
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2754
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2755 call StopVimInTerminal(buf)
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2756 call delete('XscriptPropsWithTextEmptyLine')
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2757 endfunc
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2758
29597
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2759 func Test_props_with_text_after_wraps()
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2760 CheckRunVimInTerminal
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2761
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2762 let lines =<< trim END
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2763 call setline(1, ['one two three four five six seven'])
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2764 call prop_type_add('afterprop', #{highlight: 'Search'})
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2765 call prop_add(1, 0, #{type: 'afterprop', text: ' ONE and TWO and THREE and FOUR and FIVE', text_wrap: 'wrap'})
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2766
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2767 call setline(2, ['one two three four five six seven'])
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2768 call prop_add(2, 0, #{type: 'afterprop', text: ' one AND two AND three AND four AND five', text_align: 'right', text_wrap: 'wrap'})
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2769
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2770 call setline(3, ['one two three four five six seven'])
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2771 call prop_add(3, 0, #{type: 'afterprop', text: ' one AND two AND three AND four AND five lets wrap after some more text', text_align: 'below', text_wrap: 'wrap'})
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2772
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2773 call setline(4, ['cursor here'])
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2774 normal 4Gfh
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2775 END
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2776 call writefile(lines, 'XscriptPropsWithTextAfterWraps')
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2777 let buf = RunVimInTerminal('-S XscriptPropsWithTextAfterWraps', #{rows: 9, cols: 60})
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2778 call VerifyScreenDump(buf, 'Test_prop_with_text_after_wraps_1', {})
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2779
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2780 call StopVimInTerminal(buf)
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2781 call delete('XscriptPropsWithTextAfterWraps')
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2782 endfunc
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2783
29621
f1ed6f520d09 patch 9.0.0151: a "below" aligned text property does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 29615
diff changeset
2784 func Test_props_with_text_after_nowrap()
f1ed6f520d09 patch 9.0.0151: a "below" aligned text property does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 29615
diff changeset
2785 CheckRunVimInTerminal
f1ed6f520d09 patch 9.0.0151: a "below" aligned text property does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 29615
diff changeset
2786
f1ed6f520d09 patch 9.0.0151: a "below" aligned text property does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 29615
diff changeset
2787 let lines =<< trim END
f1ed6f520d09 patch 9.0.0151: a "below" aligned text property does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 29615
diff changeset
2788 set nowrap
29720
bf965640744d patch 9.0.0200: cursor wrong if 'nowrap' and two right aligned text props
Bram Moolenaar <Bram@vim.org>
parents: 29718
diff changeset
2789 call setline(1, ['one', 'two', 'three', 'four'])
29621
f1ed6f520d09 patch 9.0.0151: a "below" aligned text property does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 29615
diff changeset
2790 call prop_type_add('belowprop', #{highlight: 'ErrorMsg'})
f1ed6f520d09 patch 9.0.0151: a "below" aligned text property does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 29615
diff changeset
2791 call prop_type_add('anotherprop', #{highlight: 'Search'})
29629
2f5610696bcd patch 9.0.0155 Problem: No test for what patch 9.0.0155 fixes. Solution: Add a test. Fix typos. (closes #10822)
Bram Moolenaar <Bram@vim.org>
parents: 29627
diff changeset
2792 call prop_type_add('someprop', #{highlight: 'DiffChange'})
29621
f1ed6f520d09 patch 9.0.0151: a "below" aligned text property does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 29615
diff changeset
2793 call prop_add(1, 0, #{type: 'belowprop', text: ' Below the line ', text_align: 'below'})
f1ed6f520d09 patch 9.0.0151: a "below" aligned text property does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 29615
diff changeset
2794 call prop_add(2, 0, #{type: 'anotherprop', text: 'another', text_align: 'below'})
f1ed6f520d09 patch 9.0.0151: a "below" aligned text property does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 29615
diff changeset
2795 call prop_add(2, 0, #{type: 'belowprop', text: 'One More Here', text_align: 'below'})
29629
2f5610696bcd patch 9.0.0155 Problem: No test for what patch 9.0.0155 fixes. Solution: Add a test. Fix typos. (closes #10822)
Bram Moolenaar <Bram@vim.org>
parents: 29627
diff changeset
2796 call prop_add(1, 0, #{type: 'someprop', text: 'right here', text_align: 'right'})
2f5610696bcd patch 9.0.0155 Problem: No test for what patch 9.0.0155 fixes. Solution: Add a test. Fix typos. (closes #10822)
Bram Moolenaar <Bram@vim.org>
parents: 29627
diff changeset
2797 call prop_add(1, 0, #{type: 'someprop', text: ' After the text', text_align: 'after'})
29720
bf965640744d patch 9.0.0200: cursor wrong if 'nowrap' and two right aligned text props
Bram Moolenaar <Bram@vim.org>
parents: 29718
diff changeset
2798 normal 3G$
bf965640744d patch 9.0.0200: cursor wrong if 'nowrap' and two right aligned text props
Bram Moolenaar <Bram@vim.org>
parents: 29718
diff changeset
2799
bf965640744d patch 9.0.0200: cursor wrong if 'nowrap' and two right aligned text props
Bram Moolenaar <Bram@vim.org>
parents: 29718
diff changeset
2800 call prop_add(3, 0, #{type: 'anotherprop', text: 'right aligned', text_align: 'right'})
bf965640744d patch 9.0.0200: cursor wrong if 'nowrap' and two right aligned text props
Bram Moolenaar <Bram@vim.org>
parents: 29718
diff changeset
2801 call prop_add(3, 0, #{type: 'anotherprop', text: 'also right aligned', text_align: 'right'})
29722
f88671dbe88b patch 9.0.0201: CursorLine highlight overrules virtual text highlight
Bram Moolenaar <Bram@vim.org>
parents: 29720
diff changeset
2802 hi CursorLine ctermbg=lightgrey
29621
f1ed6f520d09 patch 9.0.0151: a "below" aligned text property does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 29615
diff changeset
2803 END
f1ed6f520d09 patch 9.0.0151: a "below" aligned text property does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 29615
diff changeset
2804 call writefile(lines, 'XscriptPropsAfterNowrap')
29720
bf965640744d patch 9.0.0200: cursor wrong if 'nowrap' and two right aligned text props
Bram Moolenaar <Bram@vim.org>
parents: 29718
diff changeset
2805 let buf = RunVimInTerminal('-S XscriptPropsAfterNowrap', #{rows: 12, cols: 60})
29621
f1ed6f520d09 patch 9.0.0151: a "below" aligned text property does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 29615
diff changeset
2806 call VerifyScreenDump(buf, 'Test_prop_with_text_after_nowrap_1', {})
f1ed6f520d09 patch 9.0.0151: a "below" aligned text property does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 29615
diff changeset
2807
29722
f88671dbe88b patch 9.0.0201: CursorLine highlight overrules virtual text highlight
Bram Moolenaar <Bram@vim.org>
parents: 29720
diff changeset
2808 call term_sendkeys(buf, ":set signcolumn=yes foldcolumn=3 cursorline\<CR>")
29625
78418bd45852 patch 9.0.0153: no fold and sign column for virtual text with "below" align
Bram Moolenaar <Bram@vim.org>
parents: 29621
diff changeset
2809 call VerifyScreenDump(buf, 'Test_prop_with_text_after_nowrap_2', {})
78418bd45852 patch 9.0.0153: no fold and sign column for virtual text with "below" align
Bram Moolenaar <Bram@vim.org>
parents: 29621
diff changeset
2810
29720
bf965640744d patch 9.0.0200: cursor wrong if 'nowrap' and two right aligned text props
Bram Moolenaar <Bram@vim.org>
parents: 29718
diff changeset
2811 call term_sendkeys(buf, "j")
bf965640744d patch 9.0.0200: cursor wrong if 'nowrap' and two right aligned text props
Bram Moolenaar <Bram@vim.org>
parents: 29718
diff changeset
2812 call VerifyScreenDump(buf, 'Test_prop_with_text_after_nowrap_3', {})
bf965640744d patch 9.0.0200: cursor wrong if 'nowrap' and two right aligned text props
Bram Moolenaar <Bram@vim.org>
parents: 29718
diff changeset
2813
29621
f1ed6f520d09 patch 9.0.0151: a "below" aligned text property does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 29615
diff changeset
2814 call StopVimInTerminal(buf)
f1ed6f520d09 patch 9.0.0151: a "below" aligned text property does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 29615
diff changeset
2815 call delete('XscriptPropsAfterNowrap')
f1ed6f520d09 patch 9.0.0151: a "below" aligned text property does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 29615
diff changeset
2816 endfunc
f1ed6f520d09 patch 9.0.0151: a "below" aligned text property does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 29615
diff changeset
2817
29635
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2818 func Test_props_with_text_below_nowrap()
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2819 CheckRunVimInTerminal
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2820
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2821 let lines =<< trim END
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2822 vim9script
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2823 edit foobar
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2824 set nowrap
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2825 set showbreak=+++\
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2826 setline(1, ['onasdf asdf asdf sdf df asdf asdf e asdf asdf asdf asdf asd fas df', 'two'])
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2827 prop_type_add('test', {highlight: 'Special'})
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2828 prop_add(1, 0, {
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2829 type: 'test',
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2830 text: 'the quick brown fox jumps over the lazy dog',
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2831 text_align: 'after'
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2832 })
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2833 prop_add(1, 0, {
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2834 type: 'test',
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2835 text: 'the quick brown fox jumps over the lazy dog',
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2836 text_align: 'below'
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2837 })
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2838 normal G$
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2839 END
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2840 call writefile(lines, 'XscriptPropsBelowNowrap')
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2841 let buf = RunVimInTerminal('-S XscriptPropsBelowNowrap', #{rows: 8, cols: 60})
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2842 call VerifyScreenDump(buf, 'Test_prop_with_text_below_nowrap_1', {})
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2843
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2844 call term_sendkeys(buf, "gg$")
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2845 call VerifyScreenDump(buf, 'Test_prop_with_text_below_nowrap_2', {})
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2846
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2847 call StopVimInTerminal(buf)
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2848 call delete('XscriptPropsBelowNowrap')
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2849 endfunc
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2850
30205
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2851 func Test_props_with_text_above()
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2852 CheckRunVimInTerminal
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2853
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2854 let lines =<< trim END
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2855 call setline(1, ['one two', 'three four', 'five six'])
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2856 call prop_type_add('above1', #{highlight: 'Search'})
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2857 call prop_type_add('above2', #{highlight: 'DiffChange'})
30233
8d660a45299f patch 9.0.0452: Visual highlighting extends into virtual text prop
Bram Moolenaar <Bram@vim.org>
parents: 30231
diff changeset
2858 call prop_type_add('below', #{highlight: 'DiffAdd'})
30205
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2859 call prop_add(1, 0, #{type: 'above1', text: 'first thing above', text_align: 'above'})
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2860 call prop_add(1, 0, #{type: 'above2', text: 'second thing above', text_align: 'above'})
30213
4fedacdad3b4 patch 9.0.0442: virtual text "above" doesn't handel line numbers
Bram Moolenaar <Bram@vim.org>
parents: 30207
diff changeset
2861 call prop_add(3, 0, #{type: 'above1', text: 'another thing', text_align: 'above', text_padding_left: 3})
30205
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2862
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2863 normal gglllj
30233
8d660a45299f patch 9.0.0452: Visual highlighting extends into virtual text prop
Bram Moolenaar <Bram@vim.org>
parents: 30231
diff changeset
2864 func AddPropBelow()
8d660a45299f patch 9.0.0452: Visual highlighting extends into virtual text prop
Bram Moolenaar <Bram@vim.org>
parents: 30231
diff changeset
2865 call prop_add(1, 0, #{type: 'below', text: 'below', text_align: 'below'})
8d660a45299f patch 9.0.0452: Visual highlighting extends into virtual text prop
Bram Moolenaar <Bram@vim.org>
parents: 30231
diff changeset
2866 endfunc
30205
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2867 END
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2868 call writefile(lines, 'XscriptPropsWithTextAbove', 'D')
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2869 let buf = RunVimInTerminal('-S XscriptPropsWithTextAbove', #{rows: 9, cols: 60})
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2870 call VerifyScreenDump(buf, 'Test_prop_with_text_above_1', {})
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2871
30207
7147c6059e80 patch 9.0.0439: cursor wrong if inserting before line with virtual text above
Bram Moolenaar <Bram@vim.org>
parents: 30205
diff changeset
2872 call term_sendkeys(buf, "ggI")
7147c6059e80 patch 9.0.0439: cursor wrong if inserting before line with virtual text above
Bram Moolenaar <Bram@vim.org>
parents: 30205
diff changeset
2873 call VerifyScreenDump(buf, 'Test_prop_with_text_above_2', {})
7147c6059e80 patch 9.0.0439: cursor wrong if inserting before line with virtual text above
Bram Moolenaar <Bram@vim.org>
parents: 30205
diff changeset
2874 call term_sendkeys(buf, "inserted \<Esc>")
7147c6059e80 patch 9.0.0439: cursor wrong if inserting before line with virtual text above
Bram Moolenaar <Bram@vim.org>
parents: 30205
diff changeset
2875 call VerifyScreenDump(buf, 'Test_prop_with_text_above_3', {})
7147c6059e80 patch 9.0.0439: cursor wrong if inserting before line with virtual text above
Bram Moolenaar <Bram@vim.org>
parents: 30205
diff changeset
2876
30213
4fedacdad3b4 patch 9.0.0442: virtual text "above" doesn't handel line numbers
Bram Moolenaar <Bram@vim.org>
parents: 30207
diff changeset
2877 call term_sendkeys(buf, ":set number signcolumn=yes\<CR>")
4fedacdad3b4 patch 9.0.0442: virtual text "above" doesn't handel line numbers
Bram Moolenaar <Bram@vim.org>
parents: 30207
diff changeset
2878 call VerifyScreenDump(buf, 'Test_prop_with_text_above_4', {})
4fedacdad3b4 patch 9.0.0442: virtual text "above" doesn't handel line numbers
Bram Moolenaar <Bram@vim.org>
parents: 30207
diff changeset
2879
30231
0d084880276a patch 9.0.0451: virtual text "above" does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 30213
diff changeset
2880 call term_sendkeys(buf, ":set nowrap\<CR>gg$j")
0d084880276a patch 9.0.0451: virtual text "above" does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 30213
diff changeset
2881 call VerifyScreenDump(buf, 'Test_prop_with_text_above_5', {})
0d084880276a patch 9.0.0451: virtual text "above" does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 30213
diff changeset
2882
30233
8d660a45299f patch 9.0.0452: Visual highlighting extends into virtual text prop
Bram Moolenaar <Bram@vim.org>
parents: 30231
diff changeset
2883 call term_sendkeys(buf, ":call AddPropBelow()\<CR>")
8d660a45299f patch 9.0.0452: Visual highlighting extends into virtual text prop
Bram Moolenaar <Bram@vim.org>
parents: 30231
diff changeset
2884 call term_sendkeys(buf, "ggve")
8d660a45299f patch 9.0.0452: Visual highlighting extends into virtual text prop
Bram Moolenaar <Bram@vim.org>
parents: 30231
diff changeset
2885 call VerifyScreenDump(buf, 'Test_prop_with_text_above_6', {})
8d660a45299f patch 9.0.0452: Visual highlighting extends into virtual text prop
Bram Moolenaar <Bram@vim.org>
parents: 30231
diff changeset
2886 call term_sendkeys(buf, "V")
8d660a45299f patch 9.0.0452: Visual highlighting extends into virtual text prop
Bram Moolenaar <Bram@vim.org>
parents: 30231
diff changeset
2887 call VerifyScreenDump(buf, 'Test_prop_with_text_above_7', {})
8d660a45299f patch 9.0.0452: Visual highlighting extends into virtual text prop
Bram Moolenaar <Bram@vim.org>
parents: 30231
diff changeset
2888
30245
8f85b5c45432 patch 9.0.0458: splitting a line with a text prop "above" moves it down
Bram Moolenaar <Bram@vim.org>
parents: 30233
diff changeset
2889 call term_sendkeys(buf, "\<Esc>ls\<CR>\<Esc>")
8f85b5c45432 patch 9.0.0458: splitting a line with a text prop "above" moves it down
Bram Moolenaar <Bram@vim.org>
parents: 30233
diff changeset
2890 call VerifyScreenDump(buf, 'Test_prop_with_text_above_8', {})
8f85b5c45432 patch 9.0.0458: splitting a line with a text prop "above" moves it down
Bram Moolenaar <Bram@vim.org>
parents: 30233
diff changeset
2891
30205
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2892 call StopVimInTerminal(buf)
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2893 endfunc
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2894
30257
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2895 func Test_prop_above_with_indent()
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2896 new
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2897 call setline(1, ['first line', ' second line', ' line below'])
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2898 setlocal cindent
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2899 call prop_type_add('indented', #{highlight: 'Search'})
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2900 call prop_add(3, 0, #{type: 'indented', text: 'here', text_align: 'above', text_padding_left: 4})
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2901 call assert_equal(' line below', getline(3))
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2902
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2903 exe "normal 3G2|a\<CR>"
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2904 call assert_equal(' ', getline(3))
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2905 call assert_equal(' line below', getline(4))
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2906
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2907 bwipe!
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2908 call prop_type_delete('indented')
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2909 endfunc
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2910
30261
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2911 func Test_prop_below_split_line()
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2912 CheckRunVimInTerminal
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2913
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2914 let lines =<< trim END
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2915 vim9script
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2916 setline(1, ['one one one', 'two two two', 'three three three'])
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2917 prop_type_add('test', {highlight: 'ModeMsg'})
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2918 prop_add(2, 0, {
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2919 text: '└─ Virtual text below the 2nd line',
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2920 type: 'test',
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2921 text_align: 'below',
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2922 text_padding_left: 3
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2923 })
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2924 END
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2925 call writefile(lines, 'XscriptPropBelowSpitLine', 'D')
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2926 let buf = RunVimInTerminal('-S XscriptPropBelowSpitLine', #{rows: 8})
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2927 call term_sendkeys(buf, "2GA\<CR>xx")
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2928 call VerifyScreenDump(buf, 'Test_prop_below_split_line_1', {})
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2929
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2930 call term_sendkeys(buf, "\<Esc>")
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2931 call StopVimInTerminal(buf)
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2932 endfunc
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2933
29736
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2934 func Test_props_with_text_override()
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2935 CheckRunVimInTerminal
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2936
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2937 let lines =<< trim END
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2938 vim9script
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2939 setline(1, 'some text here')
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2940 hi Likethis ctermfg=blue ctermbg=cyan
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2941 prop_type_add('prop', {highlight: 'Likethis', override: true})
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2942 prop_add(1, 6, {type: 'prop', text: ' inserted '})
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2943 hi CursorLine cterm=underline ctermbg=lightgrey
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2944 set cursorline
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2945 END
30261
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2946 call writefile(lines, 'XscriptPropsOverride', 'D')
29736
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2947 let buf = RunVimInTerminal('-S XscriptPropsOverride', #{rows: 6, cols: 60})
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2948 call VerifyScreenDump(buf, 'Test_prop_with_text_override_1', {})
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2949
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2950 call term_sendkeys(buf, ":set nocursorline\<CR>")
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2951 call term_sendkeys(buf, "0llvfr")
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2952 call VerifyScreenDump(buf, 'Test_prop_with_text_override_2', {})
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2953
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2954 call StopVimInTerminal(buf)
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2955 endfunc
65348cc3b656 patch 9.0.0208: the override flag has no effect for virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29730
diff changeset
2956
29708
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2957 func Test_props_with_text_CursorMoved()
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2958 CheckRunVimInTerminal
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2959
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2960 let lines =<< trim END
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2961 call setline(1, ['this is line one', 'this is line two', 'three', 'four', 'five'])
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2962
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2963 call prop_type_add('prop', #{highlight: 'Error'})
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2964 let g:long_text = repeat('x', &columns * 2)
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2965
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2966 let g:prop_id = v:null
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2967 func! Update()
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2968 if line('.') == 1
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2969 if g:prop_id == v:null
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2970 let g:prop_id = prop_add(1, 0, #{type: 'prop', text_wrap: 'wrap', text: g:long_text})
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2971 endif
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2972 elseif g:prop_id != v:null
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2973 call prop_remove(#{id: g:prop_id})
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2974 let g:prop_id = v:null
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2975 endif
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2976 endfunc
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2977
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2978 autocmd CursorMoved * call Update()
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2979 END
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2980 call writefile(lines, 'XscriptPropsCursorMovec')
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2981 let buf = RunVimInTerminal('-S XscriptPropsCursorMovec', #{rows: 8, cols: 60})
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2982 call term_sendkeys(buf, "gg0w")
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2983 call VerifyScreenDump(buf, 'Test_prop_with_text_cursormoved_1', {})
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2984
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2985 call term_sendkeys(buf, "j")
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2986 call VerifyScreenDump(buf, 'Test_prop_with_text_cursormoved_2', {})
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2987
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2988 " back to the first state
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2989 call term_sendkeys(buf, "k")
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2990 call VerifyScreenDump(buf, 'Test_prop_with_text_cursormoved_1', {})
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2991
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2992 call StopVimInTerminal(buf)
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2993 call delete('XscriptPropsCursorMovec')
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2994 endfunc
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2995
29627
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
2996 func Test_props_with_text_after_split_join()
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
2997 CheckRunVimInTerminal
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
2998
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
2999 let lines =<< trim END
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3000 call setline(1, ['1122'])
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3001 call prop_type_add('belowprop', #{highlight: 'ErrorMsg'})
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3002 call prop_add(1, 0, #{type: 'belowprop', text: ' Below the line ', text_align: 'below'})
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3003 exe "normal f2i\<CR>\<Esc>"
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3004
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3005 func AddMore()
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3006 call prop_type_add('another', #{highlight: 'Search'})
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3007 call prop_add(1, 0, #{type: 'another', text: ' after the text ', text_align: 'after'})
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3008 call prop_add(1, 0, #{type: 'another', text: ' right here', text_align: 'right'})
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3009 endfunc
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3010 END
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3011 call writefile(lines, 'XscriptPropsAfterSplitJoin')
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3012 let buf = RunVimInTerminal('-S XscriptPropsAfterSplitJoin', #{rows: 8, cols: 60})
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3013 call VerifyScreenDump(buf, 'Test_prop_with_text_after_join_split_1', {})
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3014
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3015 call term_sendkeys(buf, "ggJ")
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3016 call VerifyScreenDump(buf, 'Test_prop_with_text_after_join_split_2', {})
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3017
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3018 call term_sendkeys(buf, ":call AddMore()\<CR>")
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3019 call VerifyScreenDump(buf, 'Test_prop_with_text_after_join_split_3', {})
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3020
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3021 call term_sendkeys(buf, "ggf s\<CR>\<Esc>")
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3022 call VerifyScreenDump(buf, 'Test_prop_with_text_after_join_split_4', {})
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3023
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3024 call term_sendkeys(buf, "ggJ")
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3025 call VerifyScreenDump(buf, 'Test_prop_with_text_after_join_split_5', {})
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3026
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3027 call StopVimInTerminal(buf)
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3028 call delete('XscriptPropsAfterSplitJoin')
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3029 endfunc
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3030
29552
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3031 func Test_removed_prop_with_text_cleans_up_array()
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3032 new
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3033 call setline(1, 'some text here')
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3034 call prop_type_add('some', #{highlight: 'ErrorMsg'})
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3035 let id1 = prop_add(1, 5, #{type: 'some', text: "SOME"})
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3036 call assert_equal(-1, id1)
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3037 let id2 = prop_add(1, 10, #{type: 'some', text: "HERE"})
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3038 call assert_equal(-2, id2)
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3039
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3040 " removing the props resets the index
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3041 call prop_remove(#{id: id1})
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3042 call prop_remove(#{id: id2})
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3043 let id1 = prop_add(1, 5, #{type: 'some', text: "SOME"})
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3044 call assert_equal(-1, id1)
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3045
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3046 call prop_type_delete('some')
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3047 bwipe!
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3048 endfunc
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3049
29579
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3050 def Test_insert_text_before_virtual_text()
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3051 new foobar
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3052 setline(1, '12345678')
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3053 prop_type_add('test', {highlight: 'Search'})
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3054 prop_add(1, 5, {
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3055 type: 'test',
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3056 text: ' virtual text '
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3057 })
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3058 normal! f4axyz
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3059 normal! f5iXYZ
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3060 assert_equal('1234xyzXYZ5678', getline(1))
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3061
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3062 prop_type_delete('test')
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3063 bwipe!
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3064 enddef
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3065
29730
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3066 func Test_insert_text_start_incl()
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3067 CheckRunVimInTerminal
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3068
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3069 let lines =<< trim END
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3070 vim9script
29748
7e2321707fea patch 9.0.0214: splitting a line may duplicate virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29740
diff changeset
3071 setline(1, ['text one text two', '', 'function(arg)'])
29730
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3072
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3073 prop_type_add('propincl', {highlight: 'NonText', start_incl: true})
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3074 prop_add(1, 6, {type: 'propincl', text: 'after '})
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3075 cursor(1, 6)
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3076 prop_type_add('propnotincl', {highlight: 'NonText', start_incl: false})
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3077 prop_add(1, 15, {type: 'propnotincl', text: 'before '})
29748
7e2321707fea patch 9.0.0214: splitting a line may duplicate virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29740
diff changeset
3078
7e2321707fea patch 9.0.0214: splitting a line may duplicate virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29740
diff changeset
3079 set cindent sw=4
7e2321707fea patch 9.0.0214: splitting a line may duplicate virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29740
diff changeset
3080 prop_type_add('argname', {highlight: 'DiffChange', start_incl: true})
7e2321707fea patch 9.0.0214: splitting a line may duplicate virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29740
diff changeset
3081 prop_add(3, 10, {type: 'argname', text: 'arg: '})
29730
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3082 END
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3083 call writefile(lines, 'XscriptPropsStartIncl')
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3084 let buf = RunVimInTerminal('-S XscriptPropsStartIncl', #{rows: 8, cols: 60})
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3085 call VerifyScreenDump(buf, 'Test_prop_insert_start_incl_1', {})
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3086
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3087 call term_sendkeys(buf, "i")
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3088 call VerifyScreenDump(buf, 'Test_prop_insert_start_incl_2', {})
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3089 call term_sendkeys(buf, "xx\<Esc>")
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3090 call VerifyScreenDump(buf, 'Test_prop_insert_start_incl_3', {})
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3091
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3092 call term_sendkeys(buf, "2wi")
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3093 call VerifyScreenDump(buf, 'Test_prop_insert_start_incl_4', {})
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3094 call term_sendkeys(buf, "yy\<Esc>")
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3095 call VerifyScreenDump(buf, 'Test_prop_insert_start_incl_5', {})
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3096
29748
7e2321707fea patch 9.0.0214: splitting a line may duplicate virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29740
diff changeset
3097 call term_sendkeys(buf, "3Gfai\<CR>\<Esc>")
7e2321707fea patch 9.0.0214: splitting a line may duplicate virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29740
diff changeset
3098 call VerifyScreenDump(buf, 'Test_prop_insert_start_incl_6', {})
7e2321707fea patch 9.0.0214: splitting a line may duplicate virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29740
diff changeset
3099 call term_sendkeys(buf, ">>")
7e2321707fea patch 9.0.0214: splitting a line may duplicate virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29740
diff changeset
3100 call VerifyScreenDump(buf, 'Test_prop_insert_start_incl_7', {})
7e2321707fea patch 9.0.0214: splitting a line may duplicate virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29740
diff changeset
3101 call term_sendkeys(buf, "<<<<")
7e2321707fea patch 9.0.0214: splitting a line may duplicate virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29740
diff changeset
3102 call VerifyScreenDump(buf, 'Test_prop_insert_start_incl_8', {})
7e2321707fea patch 9.0.0214: splitting a line may duplicate virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29740
diff changeset
3103
29730
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3104 call StopVimInTerminal(buf)
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3105 call delete('XscriptPropsStartIncl')
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3106 endfunc
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3107
29740
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3108 func Test_insert_text_list_mode()
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3109 CheckRunVimInTerminal
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3110
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3111 let lines =<< trim END
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3112 vim9script
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3113 setline(1, ['This is a line with quite a bit of text here.',
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3114 'second line', 'third line'])
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3115 set list listchars+=extends:»
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3116 prop_type_add('Prop1', {highlight: 'Error'})
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3117 prop_add(1, 0, {
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3118 type: 'Prop1',
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3119 text: 'The quick brown fox jumps over the lazy dog',
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3120 text_align: 'right'
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3121 })
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3122 END
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3123 call writefile(lines, 'XscriptPropsListMode')
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3124 let buf = RunVimInTerminal('-S XscriptPropsListMode', #{rows: 8, cols: 60})
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3125 call term_sendkeys(buf, "ggj")
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3126 call VerifyScreenDump(buf, 'Test_prop_insert_list_mode_1', {})
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3127
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3128 call term_sendkeys(buf, ":set nowrap\<CR>")
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3129 call VerifyScreenDump(buf, 'Test_prop_insert_list_mode_2', {})
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3130
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3131 call term_sendkeys(buf, "ggd32l")
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3132 call VerifyScreenDump(buf, 'Test_prop_insert_list_mode_3', {})
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3133
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3134 call StopVimInTerminal(buf)
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3135 call delete('XscriptPropsListMode')
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3136 endfunc
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3137
29816
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3138 func Test_insert_text_with_padding()
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3139 CheckRunVimInTerminal
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3140
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3141 let lines =<< trim END
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3142 vim9script
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3143 setline(1, ['Some text to add virtual text to.',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3144 'second line',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3145 'Another line with some text to make the wrap.'])
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3146 prop_type_add('theprop', {highlight: 'DiffChange'})
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3147 prop_add(1, 0, {
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3148 type: 'theprop',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3149 text: 'after',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3150 text_align: 'after',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3151 text_padding_left: 3,
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3152 })
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3153 prop_add(1, 0, {
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3154 type: 'theprop',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3155 text: 'right aligned',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3156 text_align: 'right',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3157 text_padding_left: 5,
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3158 })
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3159 prop_add(1, 0, {
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3160 type: 'theprop',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3161 text: 'below the line',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3162 text_align: 'below',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3163 text_padding_left: 4,
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3164 })
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3165 prop_add(3, 0, {
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3166 type: 'theprop',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3167 text: 'rightmost',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3168 text_align: 'right',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3169 text_padding_left: 6,
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3170 text_wrap: 'wrap',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3171 })
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3172 END
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3173 call writefile(lines, 'XscriptPropsPadded')
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3174 let buf = RunVimInTerminal('-S XscriptPropsPadded', #{rows: 8, cols: 60})
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3175 call VerifyScreenDump(buf, 'Test_prop_text_with_padding_1', {})
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3176
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3177 call term_sendkeys(buf, "ggixxxxxxxxxx\<Esc>")
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3178 call term_sendkeys(buf, "3Gix\<Esc>")
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3179 call VerifyScreenDump(buf, 'Test_prop_text_with_padding_2', {})
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3180
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3181 call term_sendkeys(buf, "ggix\<Esc>")
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3182 call VerifyScreenDump(buf, 'Test_prop_text_with_padding_3', {})
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3183
30273
5f112a0b4da1 patch 9.0.0472: virtual text "below" doesn't show in list mode
Bram Moolenaar <Bram@vim.org>
parents: 30261
diff changeset
3184 call term_sendkeys(buf, ":set list\<CR>")
5f112a0b4da1 patch 9.0.0472: virtual text "below" doesn't show in list mode
Bram Moolenaar <Bram@vim.org>
parents: 30261
diff changeset
3185 call VerifyScreenDump(buf, 'Test_prop_text_with_padding_4', {})
5f112a0b4da1 patch 9.0.0472: virtual text "below" doesn't show in list mode
Bram Moolenaar <Bram@vim.org>
parents: 30261
diff changeset
3186
29816
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3187 call StopVimInTerminal(buf)
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3188 call delete('XscriptPropsPadded')
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3189 endfunc
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3190
29826
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3191 func Test_insert_text_change_arg()
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3192 CheckRunVimInTerminal
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3193
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3194 let lines =<< trim END
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3195 vim9script
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3196 setline(1, ['SetErrorCode( 10, 20 )', 'second line'])
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3197 prop_type_add('param', {highlight: 'DiffChange', start_incl: 1})
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3198 prop_type_add('padd', {highlight: 'NonText', start_incl: 1})
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3199 prop_add(1, 15, {
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3200 type: 'param',
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3201 text: 'id:',
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3202 })
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3203 prop_add(1, 15, {
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3204 type: 'padd',
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3205 text: '-',
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3206 })
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3207 prop_add(1, 19, {
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3208 type: 'param',
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3209 text: 'id:',
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3210 })
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3211 prop_add(1, 19, {
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3212 type: 'padd',
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3213 text: '-',
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3214 })
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3215 END
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3216 call writefile(lines, 'XscriptPropsChange')
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3217 let buf = RunVimInTerminal('-S XscriptPropsChange', #{rows: 5, cols: 60})
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3218 call VerifyScreenDump(buf, 'Test_prop_text_change_arg_1', {})
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3219
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3220 call term_sendkeys(buf, "ggf1cw1234\<Esc>")
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3221 call VerifyScreenDump(buf, 'Test_prop_text_change_arg_2', {})
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3222
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3223 call StopVimInTerminal(buf)
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3224 call delete('XscriptPropsChange')
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3225 endfunc
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3226
20178
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
3227 " vim: shiftwidth=2 sts=2 expandtab