annotate src/testdir/test_textprop.vim @ 30459:300e973cb91d v9.0.0565

patch 9.0.0565: cscope test causes problems with test timeout timer Commit: https://github.com/vim/vim/commit/dfa8be4944b49c228d401e788aaade47b4abb658 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Sep 23 23:19:18 2022 +0100 patch 9.0.0565: cscope test causes problems with test timeout timer Problem: Cscope test causes problems when code for test timeout timer is included (even when commented out). Solution: Disable part of the cscope test for now.
author Bram Moolenaar <Bram@vim.org>
date Sat, 24 Sep 2022 00:30:07 +0200
parents 748b8dcfba57
children 11875afe85b2
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",
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
1234 \], 'XtestProp', 'D')
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)
c4d62945d96f patch 8.1.0665: text property display wrong when 'spell' is set
Bram Moolenaar <Bram@vim.org>
parents: 15294
diff changeset
1240 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
1241
29607
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1242 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
1243 CheckScreendump
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1244
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1245 let lines =<< trim END
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1246 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
1247 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
1248 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
1249 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
1250 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
1251 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
1252 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
1253 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
1254 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
1255 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
1256 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
1257 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
1258 set cursorline
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1259 2
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1260 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
1261 call writefile(lines, 'XtestOverProp', 'D')
29607
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1262 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
1263 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
1264
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1265 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
1266 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
1267 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
1268
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1269 " clean up
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1270 call StopVimInTerminal(buf)
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1271 endfunc
33d7c1fa2dac patch 9.0.0144: text property cannot override 'cursorline' highlight
Bram Moolenaar <Bram@vim.org>
parents: 29605
diff changeset
1272
16682
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1273 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
1274 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
1275 \ "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
1276 \ .. "'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
1277 \ .. "'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
1278 \ .. "'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
1279 \ .. "'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
1280 \ .. "'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
1281 \ .. "'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
1282 \ .. "'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
1283 \ .. "'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
1284 \ .. "'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
1285 \ .. "' 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
1286 \ .. "])",
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1287 \ "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
1288 \ "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
1289 \ "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
1290 \ "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
1291 \ "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
1292 \ "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
1293 \ "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
1294 \ "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
1295 \ "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
1296 \ "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
1297 \ "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
1298 \ "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
1299 \ "normal 1G6|\<C-V>" .. repeat('l', a:width - 1) .. "10jx",
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
1300 \], 'XtestPropVis', 'D')
16682
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1301 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
1302 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
1303
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1304 " 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
1305 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
1306 endfunc
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1307
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1308 " 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
1309 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
1310 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
1311
7847d281cbbf patch 8.1.1343: text properties not adjusted for Visual block mode delete
Bram Moolenaar <Bram@vim.org>
parents: 16678
diff changeset
1312 " 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
1313 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
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 " 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
1316 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
1317 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
1318
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
1319 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
1320 CheckScreendump
17147
a001a0d88d42 patch 8.1.1573: textprop test fails if screenhots do not work
Bram Moolenaar <Bram@vim.org>
parents: 17143
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 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
1323 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
1324 \ "\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
1325 \ "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
1326 \ ])
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 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
1328 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
1329 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
1330 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
1331 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
1332 call writefile(lines, 'XtestPropTab', 'D')
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
1333 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
1334 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
1335
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 " 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
1337 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
1338 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
1339
23901
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1340 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
1341 CheckScreendump
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1342
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1343 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
1344 vim9script
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1345 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
1346 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
1347 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
1348 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
1349 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
1350 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
1351 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
1352 call writefile(lines, 'XtestNowrap', 'D')
23901
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1353 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
1354 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
1355
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 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
1357 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
1358
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1359 " 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
1360 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
1361 endfunc
6793853063e5 patch 8.2.2493: text property for text left of window shows up
Bram Moolenaar <Bram@vim.org>
parents: 23776
diff changeset
1362
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
1363 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
1364 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
1365
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
1366 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
1367 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
1368
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 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
1370 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
1371 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
1372 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
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_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
1375 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
1376 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
1377 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
1378 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
1379 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
1380 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
1381 call writefile(lines, 'XtestPropPrio', 'D')
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
1382 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
1383 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
1384
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 " 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
1386 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
1387 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
1388
18317
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1389 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
1390 CheckScreendump
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1391
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1392 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
1393 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
1394 \ "(abc)",
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1395 \ ])
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1396 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
1397 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
1398
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1399 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
1400 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
1401 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
1402 call writefile(lines, 'XtestPropSyn', 'D')
18317
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1403 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
1404 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
1405
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1406 " clean up
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1407 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
1408 endfunc
d2228d4cf1f6 patch 8.1.2153: combining text property and syntax highlight is wrong
Bram Moolenaar <Bram@vim.org>
parents: 17980
diff changeset
1409
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
1410 " 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
1411 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
1412 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
1413 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
1414 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
1415 close
16786
98ca522e6453 patch 8.1.1395: saving for undo may access invalid memory
Bram Moolenaar <Bram@vim.org>
parents: 16772
diff changeset
1416 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
1417 endfunc
98ca522e6453 patch 8.1.1395: saving for undo may access invalid memory
Bram Moolenaar <Bram@vim.org>
parents: 16772
diff changeset
1418
17208
13d0753511fe patch 8.1.1603: crash when using unknown highlighting in text property
Bram Moolenaar <Bram@vim.org>
parents: 17147
diff changeset
1419 " 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
1420 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
1421 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
1422 new
29788
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
1423 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
1424 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
1425 redraw
13d0753511fe patch 8.1.1603: crash when using unknown highlighting in text property
Bram Moolenaar <Bram@vim.org>
parents: 17147
diff changeset
1426 bwipe!
13d0753511fe patch 8.1.1603: crash when using unknown highlighting in text property
Bram Moolenaar <Bram@vim.org>
parents: 17147
diff changeset
1427 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
1428 endfunc
13d0753511fe patch 8.1.1603: crash when using unknown highlighting in text property
Bram Moolenaar <Bram@vim.org>
parents: 17147
diff changeset
1429
16786
98ca522e6453 patch 8.1.1395: saving for undo may access invalid memory
Bram Moolenaar <Bram@vim.org>
parents: 16772
diff changeset
1430 " 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
1431 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
1432 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
1433 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
1434 next X
98ca522e6453 patch 8.1.1395: saving for undo may access invalid memory
Bram Moolenaar <Bram@vim.org>
parents: 16772
diff changeset
1435 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
1436 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
1437
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
1438 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
1439 new
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
1440 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
1441 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
1442 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
1443 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
1444 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
1445 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
1446 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
1447 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
1448 close
18093a6accb5 patch 8.1.1388: errors when calling prop_remove() for an unloaded buffer
Bram Moolenaar <Bram@vim.org>
parents: 16770
diff changeset
1449 endfunc
17694
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1450
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1451 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
1452 edit Xaaa
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1453 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
1454 write
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1455 edit Xbbb
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1456 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
1457 write
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1458 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
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
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1461 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
1462 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
1463 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
1464 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
1465 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
1466
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1467 bwipe! Xaaa
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1468 bwipe! Xbbb
6f9cde96ee3c patch 8.1.1844: buffer no longer unloaded when adding text properties
Bram Moolenaar <Bram@vim.org>
parents: 17208
diff changeset
1469 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
1470 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
1471 endfunc
18444
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1472
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1473 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
1474 new
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1475 " text_prop.vim
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1476 call setline(1, [
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1477 \ '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
1478 \ '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
1479 \ '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
1480
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1481 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
1482
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1483 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
1484 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
1485 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
1486 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
1487 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
1488 \ #{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
1489 \ #{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
1490 \ #{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
1491
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
1492 " TODO
29609
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1493 if 0
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1494 " 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
1495 %s/\s\+/ /g
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1496 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
1497
29609
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1498 " remove some text
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1499 :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
1500 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
1501 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
1502 endif
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1503
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1504 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
1505 bwipe!
967ca19425e3 patch 8.1.2216: text property in wrong place after :substitute
Bram Moolenaar <Bram@vim.org>
parents: 18317
diff changeset
1506 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
1507
22331
0271c2b8bb35 patch 8.2.1714: text properties corrupted with substitute command
Bram Moolenaar <Bram@vim.org>
parents: 22282
diff changeset
1508 " 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
1509 func Test_proptype_substitute3()
0271c2b8bb35 patch 8.2.1714: text properties corrupted with substitute command
Bram Moolenaar <Bram@vim.org>
parents: 22282
diff changeset
1510 new
0271c2b8bb35 patch 8.2.1714: text properties corrupted with substitute command
Bram Moolenaar <Bram@vim.org>
parents: 22282
diff changeset
1511 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
1512 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
1513 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
1514 %s/x\+$//
0271c2b8bb35 patch 8.2.1714: text properties corrupted with substitute command
Bram Moolenaar <Bram@vim.org>
parents: 22282
diff changeset
1515 redraw
0271c2b8bb35 patch 8.2.1714: text properties corrupted with substitute command
Bram Moolenaar <Bram@vim.org>
parents: 22282
diff changeset
1516
0271c2b8bb35 patch 8.2.1714: text properties corrupted with substitute command
Bram Moolenaar <Bram@vim.org>
parents: 22282
diff changeset
1517 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
1518 bwipe!
0271c2b8bb35 patch 8.2.1714: text properties corrupted with substitute command
Bram Moolenaar <Bram@vim.org>
parents: 22282
diff changeset
1519 endfunc
0271c2b8bb35 patch 8.2.1714: text properties corrupted with substitute command
Bram Moolenaar <Bram@vim.org>
parents: 22282
diff changeset
1520
29609
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1521 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
1522 new
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1523 call setline(1, [
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1524 \ '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
1525 \ '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
1526 \ 'some is highlighted',
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1527 \ '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
1528
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1529 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
1530
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1531 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
1532 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
1533 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
1534 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
1535 " 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
1536 " 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
1537 let expected = [
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1538 \ #{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
1539 \ #{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
1540 \ #{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
1541
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1542 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
1543 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
1544 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
1545 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
1546
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1547 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
1548 bwipe!
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1549 endfunc
e1c370197030 patch 9.0.0145: substitute that joins lines drops text properties
Bram Moolenaar <Bram@vim.org>
parents: 29607
diff changeset
1550
19097
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1551 func SaveOptions()
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1552 let d = #{tabstop: &tabstop,
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1553 \ softtabstop: &softtabstop,
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1554 \ shiftwidth: &shiftwidth,
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1555 \ expandtab: &expandtab,
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1556 \ foldmethod: '"' .. &foldmethod .. '"',
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1557 \ }
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1558 return d
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1559 endfunc
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1560
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1561 func RestoreOptions(dict)
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1562 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
1563 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
1564 endfor
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1565 endfunc
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1566
19045
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1567 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
1568 new
19097
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1569 let save_dict = SaveOptions()
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1570
19045
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1571 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
1572 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
1573 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
1574 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
1575 set foldmethod=marker
19097
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1576
19045
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1577 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
1578 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
1579 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
1580 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
1581 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
1582 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
1583 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
1584 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
1585 try
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1586 " 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
1587 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
1588 " 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
1589 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
1590 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
1591 endtry
143d44d8f477 patch 8.2.0083: text properties wrong when tabs and spaces are exchanged
Bram Moolenaar <Bram@vim.org>
parents: 18631
diff changeset
1592 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
1593 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
1594
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1595 call RestoreOptions(save_dict)
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1596 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
1597 endfunc
19097
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1598
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1599 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
1600 new
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1601 let save_dict = SaveOptions()
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1602
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1603 set tabstop=8
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1604 set softtabstop=4
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1605 set shiftwidth=4
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1606 set noexpandtab
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1607 set foldmethod=marker
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1608
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1609 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
1610 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
1611 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
1612 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
1613 " 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
1614 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
1615 redraw
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1616 " 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
1617 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
1618 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
1619 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
1620 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
1621
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1622 call RestoreOptions(save_dict)
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1623 bwipe!
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1624 endfunc
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1625
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1626 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
1627 new
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1628 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
1629 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
1630 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
1631 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
1632
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1633 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
1634 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
1635 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
1636
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1637 bwipe!
bcbc9fe665b5 patch 8.2.0109: corrupted text properties when expanding spaces
Bram Moolenaar <Bram@vim.org>
parents: 19045
diff changeset
1638 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
1639 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
1640 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
1641
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
1642 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
1643 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
1644 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
1645 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
1646 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
1647 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
1648
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
1649 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
1650 \ #{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
1651 \ 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
1652
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 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
1654 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
1655 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
1656
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
1657 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
1658 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
1659 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
1660 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
1661 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
1662
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
1663 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
1664 \ #{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
1665 \ 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
1666
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 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
1668 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
1669 endfunc
20178
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
1670
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
1671 " 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
1672 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
1673 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
1674 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
1675 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
1676 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
1677 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
1678 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
1679 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
1680 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
1681 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
1682 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
1683 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
1684 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
1685 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
1686 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
1687 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
1688 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
1689 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
1690 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
1691 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
1692 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
1693 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
1694 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
1695 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
1696
a5478836fcb7 patch 8.2.2561: not all textprop code is covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 23901
diff changeset
1697 new
a5478836fcb7 patch 8.2.2561: not all textprop code is covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 23901
diff changeset
1698 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
1699 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
1700
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_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
1702 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
1703 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
1704 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
1705 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
1706 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
1707 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
1708
a5478836fcb7 patch 8.2.2561: not all textprop code is covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 23901
diff changeset
1709 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
1710 bwipe!
20178
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
1711 endfunc
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
1712
22278
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1713 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
1714 new
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
1715 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
1716 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
1717 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
1718
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
1719 " 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
1720 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
1721 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
1722 \ [#{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
1723 \ 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
1724 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
1725 \ [#{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
1726 \ 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
1727
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
1728 " 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
1729 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
1730 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
1731
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
1732 bwipe!
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
1733 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
1734 endfunc
d067be761cd7 patch 8.2.0845: text properties crossing lines not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 20178
diff changeset
1735
22278
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1736 func Test_prop_increment_decrement()
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1737 new
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1738 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
1739 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
1740 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
1741
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1742 exe "normal! 0f9\<C-A>"
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1743 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
1744 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
1745 \ #{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
1746
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1747 exe "normal! 0f9\<C-A>"
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1748 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
1749 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
1750 \ #{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
1751
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1752 bwipe!
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1753 call prop_type_delete('test')
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1754 endfunc
0416105e103b patch 8.2.1688: increment/decrement removes text property
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1755
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
1756 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
1757 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
1758 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
1759 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
1760 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
1761 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
1762
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 " 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
1764 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
1765 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
1766 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
1767 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
1768 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
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 "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
1771 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
1772 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
1773 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
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 "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
1778 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
1779 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
1780 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
1781 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
1782
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 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
1784 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
1785 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
1786
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
1787 " 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
1788 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
1789 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
1790 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
1791 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
1792 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
1793 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
1794 $
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 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
1796 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
1797 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
1798 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
1799
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_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
1801 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
1802 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
1803 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
1804 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
1805
29587
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1806 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
1807 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
1808 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
1809 try
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1810 popup_create([{
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1811 text: 'a',
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1812 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
1813 }], {})
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1814 catch /E964:/
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1815 caught = true
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1816 endtry
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1817 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
1818
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1819 popup_clear()
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1820 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
1821 enddef
d70f588baaa1 patch 9.0.0134: no test for text property with column zero
Bram Moolenaar <Bram@vim.org>
parents: 29585
diff changeset
1822
24703
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1823 " 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
1824 " 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
1825 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
1826 new
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1827 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
1828 + [repeat('!', 35)]
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1829 + [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
1830 lines->setline(1)
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1831 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
1832 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
1833 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
1834 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
1835 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
1836 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
1837
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1838 bwipe!
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1839 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
1840 enddef
4bc0bda6857d patch 8.2.2890: text property duplicated when data block splits
Bram Moolenaar <Bram@vim.org>
parents: 24252
diff changeset
1841
25050
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1842 " 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
1843 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
1844 new
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1845 var a = 10
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1846 var b = 20
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1847 repeat([''], a)->append('$')
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1848 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
1849 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
1850 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
1851 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
1852 endfor
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1853 endfor
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1854
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1855 # 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
1856 :5del
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1857 :1del
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1858 :$del
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1859
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1860 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
1861 bwipe!
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1862 enddef
7ef7a211f6bf patch 8.2.3062: internal error when adding several text properties
Bram Moolenaar <Bram@vim.org>
parents: 24703
diff changeset
1863
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
1864 " 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
1865 " 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
1866 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
1867 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
1868 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
1869 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
1870 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
1871 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
1872 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
1873 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
1874
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 # 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
1876 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
1877 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
1878 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
1879 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
1880 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
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 # 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
1883 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
1884 :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
1885 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
1886 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
1887 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
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 # 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
1890 # 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
1891 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
1892 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
1893 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
1894 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
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 # 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
1897 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
1898 :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
1899 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
1900 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
1901 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
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 # 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
1904 # 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
1905 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
1906 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
1907 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
1908 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
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 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
1911 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
1912 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
1913 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
1914
26338
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1915 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
1916 CheckRunVimInTerminal
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1917
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1918 let lines =<< trim END
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1919 set breakindent linebreak breakat+=]
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1920 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
1921 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
1922 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
1923 func AddMatch()
4b9b237d1211 patch 9.0.0357: 'linebreak' interferes with text property highlight
Bram Moolenaar <Bram@vim.org>
parents: 30015
diff changeset
1924 syntax on
4b9b237d1211 patch 9.0.0357: 'linebreak' interferes with text property highlight
Bram Moolenaar <Bram@vim.org>
parents: 30015
diff changeset
1925 syntax match xTest /.*/
4b9b237d1211 patch 9.0.0357: 'linebreak' interferes with text property highlight
Bram Moolenaar <Bram@vim.org>
parents: 30015
diff changeset
1926 hi link xTest Comment
4b9b237d1211 patch 9.0.0357: 'linebreak' interferes with text property highlight
Bram Moolenaar <Bram@vim.org>
parents: 30015
diff changeset
1927 set signcolumn=yes
4b9b237d1211 patch 9.0.0357: 'linebreak' interferes with text property highlight
Bram Moolenaar <Bram@vim.org>
parents: 30015
diff changeset
1928 endfunc
26338
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1929 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
1930 call writefile(lines, 'XscriptPropLinebreak', 'D')
26338
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1931 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
1932 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
1933
4b9b237d1211 patch 9.0.0357: 'linebreak' interferes with text property highlight
Bram Moolenaar <Bram@vim.org>
parents: 30015
diff changeset
1934 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
1935 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
1936
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1937 call StopVimInTerminal(buf)
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1938 endfunc
4cf208415483 patch 8.2.3700: text property highlighting continues over breakindent
Bram Moolenaar <Bram@vim.org>
parents: 26242
diff changeset
1939
29686
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1940 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
1941 CheckRunVimInTerminal
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1942
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1943 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
1944 vim9script
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1945 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
1946 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
1947 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
1948 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
1949 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
1950 call writefile(lines, 'XscriptPropWithLinebreak', 'D')
29686
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 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
1952 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
1953 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
1954 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
1955
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1956 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
1957 endfunc
4153e4815b36 patch 9.0.0183: extra space after virtual text when 'linebreak' is set
Bram Moolenaar <Bram@vim.org>
parents: 29682
diff changeset
1958
29688
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1959 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
1960 CheckRunVimInTerminal
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1961
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1962 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
1963 vim9script
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1964 set linebreak
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1965 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
1966 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
1967 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
1968 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
1969 call writefile(lines, 'XscriptPropWithWrap', 'D')
29688
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1970 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
1971 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
1972
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1973 call StopVimInTerminal(buf)
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1974 endfunc
1455814702ad patch 9.0.0184: virtual text prop highlight continues after truncation
Bram Moolenaar <Bram@vim.org>
parents: 29686
diff changeset
1975
26350
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
1976 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
1977 CheckRunVimInTerminal
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
1978
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
1979 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
1980 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
1981 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
1982 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
1983 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
1984 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
1985 call writefile(lines, 'XscriptPropAfterTab', 'D')
26350
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
1986 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
1987 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
1988
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
1989 call StopVimInTerminal(buf)
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
1990 endfunc
13cce5c82c9a patch 8.2.3706: text property highlighting is used on Tab
Bram Moolenaar <Bram@vim.org>
parents: 26338
diff changeset
1991
29676
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
1992 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
1993 CheckRunVimInTerminal
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
1994
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
1995 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
1996 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
1997 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
1998 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
1999 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
2000 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
2001 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
2002 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
2003 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
2004 normal gg0
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2005 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
2006 call writefile(lines, 'XscriptPropBeforeTab', 'D')
29676
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2007 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
2008 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
2009 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
2010 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
2011 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
2012 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
2013 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
2014 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
2015 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
2016 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
2017 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
2018 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
2019 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
2020 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
2021 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
2022 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
2023 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
2024 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
2025 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
2026 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
2027
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2028 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
2029 endfunc
b4fea827c20a patch 9.0.0178: cursor position wrong with virtual text before Tab
Bram Moolenaar <Bram@vim.org>
parents: 29666
diff changeset
2030
26384
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2031 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
2032 CheckRunVimInTerminal
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2033
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2034 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
2035 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
2036 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
2037 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
2038 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
2039 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
2040 call writefile(lines, 'XscriptPropAfterLinebreak', 'D')
26384
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2041 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
2042 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
2043
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2044 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
2045 endfunc
e624b4ddbdf0 patch 8.2.3723: when using 'linebreak' a text property starts too early
Bram Moolenaar <Bram@vim.org>
parents: 26350
diff changeset
2046
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
2047 " 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
2048 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
2049 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
2050 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
2051 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
2052 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
2053 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
2054 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
2055
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2056 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
2057 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
2058
b427a26b0210 patch 8.2.3233: prop_list() and prop_find() do not indicate the buffer
Bram Moolenaar <Bram@vim.org>
parents: 25198
diff changeset
2059 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
2060 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
2061 {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
2062 {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
2063 ], 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
2064
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 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
2066 {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
2067 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
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 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
2070 {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
2071 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
2072 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
2073 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
2074 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
2075 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
2076 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
2077
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
2078 " 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
2079 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
2080 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
2081 new
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 26384
diff changeset
2082 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
2083 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
2084 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
2085 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
2086 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
2087 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
2088 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
2089 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
2090 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
2091 \ {'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
2092 \ '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
2093 \ {'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
2094 \ '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
2095 #" 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
2096 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
2097 \ {'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
2098 \ '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
2099 \ {'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
2100 \ '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
2101 \ {'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
2102 \ '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
2103 \ {'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
2104 \ '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
2105 \ 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
2106 #" 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
2107 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
2108 \ {'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
2109 \ '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
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': 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
2113 \ '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
2114 \ 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
2115 #" 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
2116 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
2117 \ {'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
2118 \ '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
2119 \ {'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
2120 \ '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
2121 \ 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
2122 #" 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
2123 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
2124 \ {'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
2125 \ '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
2126 \ {'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
2127 \ '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
2128 \ 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
2129 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
2130 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
2131 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
2132 #" 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
2133 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
2134 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
2135 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
2136 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
2137 \ '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
2138 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
2139 \ '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
2140 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
2141 \ '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
2142 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
2143 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
2144 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
2145 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
2146 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
2147 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
2148 \ '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
2149 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
2150 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
2151 \ '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
2152 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
2153 \ '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
2154 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
2155 \ '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
2156 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
2157 \ '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
2158
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
2159 #" 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
2160 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
2161 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
2162 \ {'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
2163 \ '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
2164 \ {'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
2165 \ '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
2166 \ {'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
2167 \ '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
2168 \ {'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
2169 \ '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
2170 \ 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
2171 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
2172
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 #" 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
2174 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
2175 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
2176
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 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
2178 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
2179 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
2180 #" 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
2181 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
2182 \ {'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
2183 \ '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
2184 \ {'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
2185 \ '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
2186 \ 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
2187 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
2188 \ {'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
2189 \ '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
2190 \ {'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
2191 \ '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
2192 \ 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
2193 #" 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
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, {'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
2200 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
2201 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
2202 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
2203
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 #" 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
2205 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
2206 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
2207 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
2208 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
2209 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
2210 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
2211 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
2212 \ {'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
2213 \ '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
2214 \ {'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
2215 \ '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
2216 \ 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
2217 \ '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
2218 #" 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
2219 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
2220 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
2221
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 26384
diff changeset
2222 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
2223 :%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
2224 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 26384
diff changeset
2225 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
2226 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
2227
28526
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2228 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
2229 new
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2230
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2231 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
2232 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
2233 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
2234 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
2235 endfor
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2236
29788
d08aa1bfe319 patch 9.0.0233: removing multiple text properties takes many calls
Bram Moolenaar <Bram@vim.org>
parents: 29748
diff changeset
2237 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
2238 let expected = [
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2239 \ #{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
2240 \ #{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
2241 \ ]
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2242
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2243 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
2244 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
2245 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
2246 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
2247
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2248 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
2249 bwipe!
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2250 endfunc
171f9def0398 patch 8.2.4787: prop_find() does not find the right property
Bram Moolenaar <Bram@vim.org>
parents: 27626
diff changeset
2251
28848
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2252 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
2253 new
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2254 set spell
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2255 call AddPropTypes()
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2256
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2257 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
2258 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
2259 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
2260 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
2261 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
2262 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
2263
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2264 " 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
2265 " 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
2266 let expected = [
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2267 \ {'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
2268 \ '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
2269 \ {'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
2270 \ '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
2271 \ ]
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2272 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
2273
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2274 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
2275 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
2276
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2277 " 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
2278 spellrepall
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2279
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2280 let expected = [
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2281 \ {'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
2282 \ '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
2283 \ {'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
2284 \ '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
2285 \ {'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
2286 \ '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
2287 \ ]
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('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
2289 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
2290
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2291 call DeletePropTypes()
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2292 set spell&
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2293 bwipe!
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2294 endfunc
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2295
28854
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2296 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
2297 new
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2298 call AddPropTypes()
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2299
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2300 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
2301 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
2302 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
2303
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2304 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
2305 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
2306 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
2307 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
2308
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2309 let expected = [
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2310 \ {'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
2311 \ '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
2312 \ {'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
2313 \ '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
2314 \ ]
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2315 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
2316
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2317 call DeletePropTypes()
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2318 bwipe!
647d7f439622 patch 8.2.4950: text properties position wrong after shifting text
Bram Moolenaar <Bram@vim.org>
parents: 28848
diff changeset
2319 endfunc
28848
ba81f4ed59e2 patch 8.2.4947: text properties not adjusted when accepting spell suggestion
Bram Moolenaar <Bram@vim.org>
parents: 28841
diff changeset
2320
28863
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2321 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
2322 new
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2323 call AddPropTypes()
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2324
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2325 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
2326 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
2327
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2328 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
2329 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
2330
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2331 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
2332 foobar
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2333 quxqux
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2334 quxqux
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2335 barbaz
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2336 END
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2337 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
2338 let expected = [
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2339 \ {'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
2340 \ '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
2341 \ {'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
2342 \ '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
2343 \ {'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
2344 \ '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
2345 \ {'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
2346 \ '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
2347 \ ]
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2348 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
2349
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2350 call DeletePropTypes()
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2351 bwipe!
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2352 endfunc
92736a673e3c patch 8.2.4954: inserting line breaks text property spanning two lines
Bram Moolenaar <Bram@vim.org>
parents: 28854
diff changeset
2353
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
2354 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
2355 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
2356 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
2357
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2358 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
2359 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
2360 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
2361 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
2362
6a4edacbd178 patch 8.2.4957: text properties in a wrong position after a block change
Bram Moolenaar <Bram@vim.org>
parents: 28865
diff changeset
2363 " 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
2364 " 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
2365 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
2366
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 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
2368 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
2369 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
2370 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
2371 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
2372 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
2373 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
2374 \ {'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
2375 \ '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
2376 \ {'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
2377 \ '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
2378 \ {'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
2379 \ '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
2380 \ ]
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 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
2382
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 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
2384 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
2385 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
2386
28984
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2387 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
2388 new
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2389 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
2390
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2391 " 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
2392 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
2393
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2394 " 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
2395 " 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
2396 " 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
2397 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
2398 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
2399 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
2400 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
2401 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
2402 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
2403 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
2404 endif
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2405 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
2406 endfor
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2407
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2408 " 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
2409 " 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
2410 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
2411 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
2412
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 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
2415 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
2416 endfor
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2417
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2418 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
2419 bwipe!
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2420 endfunc
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2421
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2422 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
2423 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
2424 endfunc
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 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
2427 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
2428 endfunc
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2429
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2430 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
2431 new
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2432 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
2433
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2434 " 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
2435 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
2436
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2437 " 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
2438 " 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
2439 " 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
2440 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
2441 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
2442 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
2443 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
2444 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
2445 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
2446 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
2447 endif
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2448 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
2449 endfor
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2450
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2451 " 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
2452 " 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
2453 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
2454 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
2455
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 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
2458 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
2459 \ '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
2460 endfor
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2461
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2462 " 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
2463 " unchanged.
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2464 :1
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2465 normal aHello
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2466 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
2467 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
2468 endfor
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2469
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2470 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
2471 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
2472 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
2473 \ '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
2474 endfor
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2475
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2476 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
2477 bwipe!
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2478 endfunc
b3828315a0d9 patch 8.2.5014: byte offsets are wrong when using text properties
Bram Moolenaar <Bram@vim.org>
parents: 28931
diff changeset
2479
29451
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2480 func Test_prop_inserts_text()
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2481 CheckRunVimInTerminal
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2482
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2483 " Just a basic check for now
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2484 let lines =<< trim END
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2485 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
2486 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
2487 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
2488 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
2489 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
2490 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
2491 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
2492 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
2493
32aee589fc9a patch 9.0.0132: multi-byte characters in virtual text not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 29581
diff changeset
2494 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
2495 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
2496 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
2497
29655
53e434838a85 patch 9.0.0168: cursor positioned wrong with two virtual text properties
Bram Moolenaar <Bram@vim.org>
parents: 29645
diff changeset
2498 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
2499 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
2500 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
2501 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
2502
53e434838a85 patch 9.0.0168: cursor positioned wrong with two virtual text properties
Bram Moolenaar <Bram@vim.org>
parents: 29645
diff changeset
2503 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
2504 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
2505
042f357b455d patch 9.0.0186: virtual text without highlighting does not show
Bram Moolenaar <Bram@vim.org>
parents: 29690
diff changeset
2506 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
2507 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
2508 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
2509 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
2510 call writefile(lines, 'XscriptPropsWithText', 'D')
29655
53e434838a85 patch 9.0.0168: cursor positioned wrong with two virtual text properties
Bram Moolenaar <Bram@vim.org>
parents: 29645
diff changeset
2511 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
2512 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
2513
ec5f48ab361b patch 9.0.0116: virtual text not displayed if 'signcolumn' is "yes"
Bram Moolenaar <Bram@vim.org>
parents: 29451
diff changeset
2514 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
2515 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
2516
29605
0340a59e04ca patch 9.0.0143: cursor positioned after virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29597
diff changeset
2517 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
2518 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
2519
29655
53e434838a85 patch 9.0.0168: cursor positioned wrong with two virtual text properties
Bram Moolenaar <Bram@vim.org>
parents: 29645
diff changeset
2520 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
2521 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
2522 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
2523 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
2524
53e434838a85 patch 9.0.0168: cursor positioned wrong with two virtual text properties
Bram Moolenaar <Bram@vim.org>
parents: 29645
diff changeset
2525 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
2526 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
2527
29451
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2528 call StopVimInTerminal(buf)
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2529 endfunc
057c26b5c33a patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents: 28984
diff changeset
2530
29706
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2531 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
2532 CheckRunVimInTerminal
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2533
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2534 " 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
2535 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
2536 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
2537 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
2538 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
2539 set hlsearch
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2540 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
2541 func DoAfter()
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2542 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
2543 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
2544 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
2545 let @/ = ''
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2546 endfunc
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2547 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
2548 call writefile(lines, 'XscriptPropsWithHighlight', 'D')
29706
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2549 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
2550 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
2551 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
2552 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
2553 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
2554 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
2555
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2556 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
2557 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
2558 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
2559 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
2560 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
2561 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
2562
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2563 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
2564 endfunc
a680dc1b089d patch 9.0.0193: search and match highlgith interfere with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29696
diff changeset
2565
30306
43d942ff32ce patch 9.0.0489: using "end_lnum" with virtual text causes problems
Bram Moolenaar <Bram@vim.org>
parents: 30304
diff changeset
2566 func Test_prop_add_with_text_fails()
43d942ff32ce patch 9.0.0489: using "end_lnum" with virtual text causes problems
Bram Moolenaar <Bram@vim.org>
parents: 30304
diff changeset
2567 call prop_type_add('failing', #{highlight: 'ErrorMsg'})
43d942ff32ce patch 9.0.0489: using "end_lnum" with virtual text causes problems
Bram Moolenaar <Bram@vim.org>
parents: 30304
diff changeset
2568 call assert_fails("call prop_add(1, 0, #{type: 'failing', text: 'X', end_lnum: 1})", 'E1305:')
43d942ff32ce patch 9.0.0489: using "end_lnum" with virtual text causes problems
Bram Moolenaar <Bram@vim.org>
parents: 30304
diff changeset
2569 call assert_fails("call prop_add(1, 0, #{type: 'failing', text: 'X', end_col: 1})", 'E1305:')
43d942ff32ce patch 9.0.0489: using "end_lnum" with virtual text causes problems
Bram Moolenaar <Bram@vim.org>
parents: 30304
diff changeset
2570 call assert_fails("call prop_add(1, 0, #{type: 'failing', text: 'X', length: 1})", 'E1305:')
43d942ff32ce patch 9.0.0489: using "end_lnum" with virtual text causes problems
Bram Moolenaar <Bram@vim.org>
parents: 30304
diff changeset
2571
43d942ff32ce patch 9.0.0489: using "end_lnum" with virtual text causes problems
Bram Moolenaar <Bram@vim.org>
parents: 30304
diff changeset
2572 call prop_type_delete('failing')
43d942ff32ce patch 9.0.0489: using "end_lnum" with virtual text causes problems
Bram Moolenaar <Bram@vim.org>
parents: 30304
diff changeset
2573 endfunc
43d942ff32ce patch 9.0.0489: using "end_lnum" with virtual text causes problems
Bram Moolenaar <Bram@vim.org>
parents: 30304
diff changeset
2574
29718
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2575 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
2576 CheckRunVimInTerminal
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2577
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2578 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
2579 call setline(1, ["some text some text some text some text", 'line two'])
30306
43d942ff32ce patch 9.0.0489: using "end_lnum" with virtual text causes problems
Bram Moolenaar <Bram@vim.org>
parents: 30304
diff changeset
2580 call prop_type_add('MyErrorText', #{highlight: 'ErrorMsg'})
43d942ff32ce patch 9.0.0489: using "end_lnum" with virtual text causes problems
Bram Moolenaar <Bram@vim.org>
parents: 30304
diff changeset
2581 call prop_type_add('MyPadding', #{highlight: 'DiffChange'})
29918
e6e0f1c39edb patch 9.0.0297: cursor position wrong after right aligned virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29826
diff changeset
2582 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
2583 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
2584 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
2585 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
2586 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
2587 call writefile(lines, 'XscriptPropsRightAlign', 'D')
29718
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2588 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
2589 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
2590
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2591 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
2592 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
2593
29918
e6e0f1c39edb patch 9.0.0297: cursor position wrong after right aligned virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29826
diff changeset
2594 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
2595 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
2596
29718
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 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
2598 endfunc
538204fce2a4 patch 9.0.0199: cursor position wrong with two right-aligned virtual texts
Bram Moolenaar <Bram@vim.org>
parents: 29708
diff changeset
2599
29560
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2600 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
2601 CheckRunVimInTerminal
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2602
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2603 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
2604 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
2605 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
2606 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
2607 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
2608 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
2609 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
2610 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
2611 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
2612 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
2613 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
2614
8f71840ecf07 patch 9.0.0125: cursor positioned wrong with virtual text after the line
Bram Moolenaar <Bram@vim.org>
parents: 29560
diff changeset
2615 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
2616 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
2617 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
2618
32aee589fc9a patch 9.0.0132: multi-byte characters in virtual text not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 29581
diff changeset
2619 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
2620 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
2621 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
2622 call writefile(lines, 'XscriptPropsWithTextAfter', 'D')
29613
1a0aea1e23f4 patch 9.0.0147: cursor positioned wrong after two "below" text properties
Bram Moolenaar <Bram@vim.org>
parents: 29609
diff changeset
2623 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
2624 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
2625
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2626 call StopVimInTerminal(buf)
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
2627
c1c599a367d4 patch 9.0.0188: strange effects when using "text_align" with non-zero column
Bram Moolenaar <Bram@vim.org>
parents: 29692
diff changeset
2628 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
2629 endfunc
14b139cbec49 patch 9.0.0121: cannot put virtual text after or below a line
Bram Moolenaar <Bram@vim.org>
parents: 29552
diff changeset
2630
29633
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2631 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
2632 CheckRunVimInTerminal
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2633
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2634 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
2635 vim9script
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2636 edit foobar
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2637 set showbreak=+++
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2638 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
2639 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
2640 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
2641 type: 'test',
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2642 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
2643 text_align: 'after'
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2644 })
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2645 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
2646 type: 'test',
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2647 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
2648 text_align: 'below'
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2649 })
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2650 normal G$
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2651 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
2652 call writefile(lines, 'XscriptPropsAfterTrunc', 'D')
29633
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2653 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
2654 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
2655
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2656 call StopVimInTerminal(buf)
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2657 endfunc
e80174903fdf patch 9.0.0157: 'showbreak' displayed below truncated "after" text prop
Bram Moolenaar <Bram@vim.org>
parents: 29629
diff changeset
2658
29585
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2659 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
2660 CheckRunVimInTerminal
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2661
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2662 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
2663 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
2664 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
2665 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
2666 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
2667 normal ggJ
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2668 normal GkJ
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2669
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2670 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
2671 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
2672 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
2673 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
2674 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
2675 normal 3G6J
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2676 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
2677 call writefile(lines, 'XscriptPropsWithTextAfterJoined', 'D')
29585
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2678 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
2679 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
2680
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2681 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
2682 endfunc
e357bc89bb95 patch 9.0.0133: virtual text after line moves to joined line
Bram Moolenaar <Bram@vim.org>
parents: 29583
diff changeset
2683
29597
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2684 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
2685 CheckRunVimInTerminal
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2686
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2687 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
2688 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
2689 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
2690 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
2691
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2692 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
2693 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
2694
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2695 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
2696 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
2697
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(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
2699 normal 4Gfh
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2700 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
2701 call writefile(lines, 'XscriptPropsWithTextAfterTrunc', 'D')
29597
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2702 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
2703 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
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 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
2706 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
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 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
2709 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
2710 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
2711
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2712 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
2713 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
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, ":18wincmd |\<CR>")
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2716 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
2717 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
2718
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2719 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
2720 endfunc
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2721
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
2722 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
2723 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
2724
fc0f93590fd4 patch 9.0.0179: cursor pos wrong with wrapping virtual text in empty line
Bram Moolenaar <Bram@vim.org>
parents: 29676
diff changeset
2725 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
2726 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
2727 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
2728 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
2729 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
2730 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
2731 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
2732 call writefile(lines, 'XscriptPropsWithTextEmptyLine', 'D')
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 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
2734 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
2735 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
2736 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
2737 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
2738 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
2739 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
2740 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
2741 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
2742 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
2743
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 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
2745 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
2746
29597
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2747 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
2748 CheckRunVimInTerminal
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2749
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2750 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
2751 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
2752 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
2753 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
2754
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2755 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
2756 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
2757
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2758 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
2759 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
2760
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2761 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
2762 normal 4Gfh
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2763 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
2764 call writefile(lines, 'XscriptPropsWithTextAfterWraps', 'D')
29597
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2765 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
2766 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
2767
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2768 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
2769 endfunc
f2d7f20d83c3 patch 9.0.0139: truncating virtual text after a line not implemented
Bram Moolenaar <Bram@vim.org>
parents: 29587
diff changeset
2770
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
2771 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
2772 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
2773
f1ed6f520d09 patch 9.0.0151: a "below" aligned text property does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 29615
diff changeset
2774 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
2775 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
2776 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
2777 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
2778 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
2779 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
2780 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
2781 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
2782 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
2783 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
2784 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
2785 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
2786
bf965640744d patch 9.0.0200: cursor wrong if 'nowrap' and two right aligned text props
Bram Moolenaar <Bram@vim.org>
parents: 29718
diff changeset
2787 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
2788 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
2789 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
2790 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
2791 call writefile(lines, 'XscriptPropsAfterNowrap', 'D')
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
2792 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
2793 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
2794
29722
f88671dbe88b patch 9.0.0201: CursorLine highlight overrules virtual text highlight
Bram Moolenaar <Bram@vim.org>
parents: 29720
diff changeset
2795 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
2796 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
2797
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 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
2799 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
2800
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
2801 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
2802 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
2803
29635
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2804 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
2805 CheckRunVimInTerminal
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2806
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2807 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
2808 vim9script
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2809 edit foobar
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2810 set nowrap
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2811 set showbreak=+++\
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2812 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
2813 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
2814 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
2815 type: 'test',
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2816 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
2817 text_align: 'after'
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2818 })
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2819 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
2820 type: 'test',
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2821 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
2822 text_align: 'below'
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2823 })
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2824 normal G$
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2825 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
2826 call writefile(lines, 'XscriptPropsBelowNowrap', 'D')
29635
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2827 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
2828 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
2829
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2830 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
2831 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
2832
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2833 call StopVimInTerminal(buf)
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2834 endfunc
592818fd3110 patch 9.0.0158: with 'nowrap' "below" property not displayed correctly
Bram Moolenaar <Bram@vim.org>
parents: 29633
diff changeset
2835
30205
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2836 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
2837 CheckRunVimInTerminal
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2838
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2839 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
2840 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
2841 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
2842 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
2843 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
2844 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
2845 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
2846 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
2847
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2848 normal gglllj
30233
8d660a45299f patch 9.0.0452: Visual highlighting extends into virtual text prop
Bram Moolenaar <Bram@vim.org>
parents: 30231
diff changeset
2849 func AddPropBelow()
8d660a45299f patch 9.0.0452: Visual highlighting extends into virtual text prop
Bram Moolenaar <Bram@vim.org>
parents: 30231
diff changeset
2850 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
2851 endfunc
30205
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2852 END
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2853 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
2854 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
2855 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
2856
30293
914b3c64ab92 patch 9.0.0482: "g0" moves to wrong location with virtual text "above"
Bram Moolenaar <Bram@vim.org>
parents: 30273
diff changeset
2857 call term_sendkeys(buf, "ggg$")
914b3c64ab92 patch 9.0.0482: "g0" moves to wrong location with virtual text "above"
Bram Moolenaar <Bram@vim.org>
parents: 30273
diff changeset
2858 call VerifyScreenDump(buf, 'Test_prop_with_text_above_1a', {})
914b3c64ab92 patch 9.0.0482: "g0" moves to wrong location with virtual text "above"
Bram Moolenaar <Bram@vim.org>
parents: 30273
diff changeset
2859 call term_sendkeys(buf, "g0")
914b3c64ab92 patch 9.0.0482: "g0" moves to wrong location with virtual text "above"
Bram Moolenaar <Bram@vim.org>
parents: 30273
diff changeset
2860 call VerifyScreenDump(buf, 'Test_prop_with_text_above_1b', {})
914b3c64ab92 patch 9.0.0482: "g0" moves to wrong location with virtual text "above"
Bram Moolenaar <Bram@vim.org>
parents: 30273
diff changeset
2861
30304
f1fe59179180 patch 9.0.0488: cursor wrong with virtual text "above" and 'showbreak'
Bram Moolenaar <Bram@vim.org>
parents: 30293
diff changeset
2862 call term_sendkeys(buf, ":set showbreak=>>\<CR>")
f1fe59179180 patch 9.0.0488: cursor wrong with virtual text "above" and 'showbreak'
Bram Moolenaar <Bram@vim.org>
parents: 30293
diff changeset
2863 call term_sendkeys(buf, "ggll")
f1fe59179180 patch 9.0.0488: cursor wrong with virtual text "above" and 'showbreak'
Bram Moolenaar <Bram@vim.org>
parents: 30293
diff changeset
2864 call VerifyScreenDump(buf, 'Test_prop_with_text_above_1c', {})
f1fe59179180 patch 9.0.0488: cursor wrong with virtual text "above" and 'showbreak'
Bram Moolenaar <Bram@vim.org>
parents: 30293
diff changeset
2865 call term_sendkeys(buf, ":set showbreak=\<CR>")
f1fe59179180 patch 9.0.0488: cursor wrong with virtual text "above" and 'showbreak'
Bram Moolenaar <Bram@vim.org>
parents: 30293
diff changeset
2866
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
2867 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
2868 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
2869 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
2870 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
2871
30213
4fedacdad3b4 patch 9.0.0442: virtual text "above" doesn't handel line numbers
Bram Moolenaar <Bram@vim.org>
parents: 30207
diff changeset
2872 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
2873 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
2874
30231
0d084880276a patch 9.0.0451: virtual text "above" does not work with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 30213
diff changeset
2875 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
2876 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
2877
30233
8d660a45299f patch 9.0.0452: Visual highlighting extends into virtual text prop
Bram Moolenaar <Bram@vim.org>
parents: 30231
diff changeset
2878 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
2879 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
2880 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
2881 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
2882 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
2883
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
2884 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
2885 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
2886
30205
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2887 call StopVimInTerminal(buf)
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2888 endfunc
ed6f3d2593df patch 9.0.0438: cannot put virtual text above a line
Bram Moolenaar <Bram@vim.org>
parents: 30039
diff changeset
2889
30257
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2890 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
2891 new
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2892 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
2893 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
2894 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
2895 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
2896 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
2897
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2898 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
2899 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
2900 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
2901
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2902 bwipe!
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2903 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
2904 endfunc
45788c16b3a5 patch 9.0.0464: with virtual text "above" indenting doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 30245
diff changeset
2905
30261
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2906 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
2907 CheckRunVimInTerminal
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2908
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2909 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
2910 vim9script
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2911 setline(1, ['one one one', 'two two two', 'three three three'])
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
2912 prop_type_add('test', {highlight: 'Search'})
30261
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2913 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
2914 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
2915 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
2916 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
2917 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
2918 })
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2919 END
6b658ef69e93 patch 9.0.0466: virtual text wrong after adding line break after line
Bram Moolenaar <Bram@vim.org>
parents: 30257
diff changeset
2920 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
2921 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
2922 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
2923 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
2924
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
2925 call term_sendkeys(buf, "\<Esc>:set number\<CR>")
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
2926 call VerifyScreenDump(buf, 'Test_prop_below_split_line_2', {})
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
2927
30365
748b8dcfba57 patch 9.0.0518: virtual text highlight starts too early with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 30359
diff changeset
2928 call term_sendkeys(buf, ":set nowrap\<CR>")
748b8dcfba57 patch 9.0.0518: virtual text highlight starts too early with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 30359
diff changeset
2929 call VerifyScreenDump(buf, 'Test_prop_below_split_line_3', {})
748b8dcfba57 patch 9.0.0518: virtual text highlight starts too early with 'nowrap'
Bram Moolenaar <Bram@vim.org>
parents: 30359
diff changeset
2930
30261
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
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
2980 call writefile(lines, 'XscriptPropsCursorMovec', 'D')
29708
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 endfunc
d97b2ce26258 patch 9.0.0194: cursor displayed in wrong position after removing text prop
Bram Moolenaar <Bram@vim.org>
parents: 29706
diff changeset
2994
29627
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
2995 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
2996 CheckRunVimInTerminal
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
2997
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
2998 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
2999 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
3000 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
3001 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
3002 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
3003
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3004 func AddMore()
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3005 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
3006 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
3007 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
3008 endfunc
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3009 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
3010 call writefile(lines, 'XscriptPropsAfterSplitJoin', 'D')
29627
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3011 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
3012 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
3013
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3014 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
3015 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
3016
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3017 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
3018 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
3019
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3020 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
3021 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
3022
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3023 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
3024 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
3025
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3026 call StopVimInTerminal(buf)
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3027 endfunc
dd96f3d8ed85 patch 9.0.0154: text properties wrong after splitting a line
Bram Moolenaar <Bram@vim.org>
parents: 29625
diff changeset
3028
29552
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3029 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
3030 new
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3031 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
3032 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
3033 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
3034 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
3035 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
3036 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
3037
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3038 " 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
3039 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
3040 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
3041 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
3042 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
3043
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 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
3045 bwipe!
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3046 endfunc
89a97f70e8eb patch 9.0.0117: text of removed textprop with text is not freed
Bram Moolenaar <Bram@vim.org>
parents: 29550
diff changeset
3047
29579
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3048 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
3049 new foobar
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3050 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
3051 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
3052 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
3053 type: 'test',
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3054 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
3055 })
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3056 normal! f4axyz
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3057 normal! f5iXYZ
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3058 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
3059
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3060 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
3061 bwipe!
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3062 enddef
f7a64755dbe9 patch 9.0.0130: cursor position wrong when inserting around virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29568
diff changeset
3063
29730
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3064 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
3065 CheckRunVimInTerminal
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3066
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3067 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
3068 vim9script
29748
7e2321707fea patch 9.0.0214: splitting a line may duplicate virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29740
diff changeset
3069 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
3070
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3071 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
3072 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
3073 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
3074 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
3075 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
3076
7e2321707fea patch 9.0.0214: splitting a line may duplicate virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29740
diff changeset
3077 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
3078 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
3079 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
3080 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
3081 call writefile(lines, 'XscriptPropsStartIncl', 'D')
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 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
3083 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
3084
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 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
3086 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
3087 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
3088 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
3089
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 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
3091 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
3092 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
3093 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
3094
29748
7e2321707fea patch 9.0.0214: splitting a line may duplicate virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29740
diff changeset
3095 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
3096 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
3097 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
3098 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
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_8', {})
7e2321707fea patch 9.0.0214: splitting a line may duplicate virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29740
diff changeset
3101
29730
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3102 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
3103 endfunc
0eeab24d3faf patch 9.0.0205: cursor in wrong position when inserting after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29722
diff changeset
3104
29740
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3105 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
3106 CheckRunVimInTerminal
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3107
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3108 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
3109 vim9script
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3110 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
3111 '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
3112 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
3113 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
3114 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
3115 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
3116 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
3117 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
3118 })
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3119 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
3120 call writefile(lines, 'XscriptPropsListMode', 'D')
29740
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3121 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
3122 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
3123 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
3124
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, ":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
3126 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
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, "ggd32l")
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_3', {})
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 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
3132 endfunc
b167c91b5f6b patch 9.0.0210: 'list' mode does not work properly with virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29736
diff changeset
3133
29816
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3134 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
3135 CheckRunVimInTerminal
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3136
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3137 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
3138 vim9script
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3139 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
3140 'second line',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3141 '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
3142 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
3143 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
3144 type: 'theprop',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3145 text: 'after',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3146 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
3147 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
3148 })
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3149 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
3150 type: 'theprop',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3151 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
3152 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
3153 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
3154 })
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3155 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
3156 type: 'theprop',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3157 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
3158 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
3159 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
3160 })
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3161 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
3162 type: 'theprop',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3163 text: 'rightmost',
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3164 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
3165 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
3166 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
3167 })
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3168 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
3169 call writefile(lines, 'XscriptPropsPadded', 'D')
29816
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3170 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
3171 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
3172
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3173 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
3174 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
3175 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
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, "ggix\<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 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
3179
30273
5f112a0b4da1 patch 9.0.0472: virtual text "below" doesn't show in list mode
Bram Moolenaar <Bram@vim.org>
parents: 30261
diff changeset
3180 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
3181 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
3182
29816
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3183 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
3184 endfunc
bbe62ea78aac patch 9.0.0247: cannot add padding to virtual text without highlight
Bram Moolenaar <Bram@vim.org>
parents: 29788
diff changeset
3185
29826
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3186 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
3187 CheckRunVimInTerminal
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3188
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3189 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
3190 vim9script
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3191 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
3192 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
3193 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
3194 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
3195 type: 'param',
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3196 text: 'id:',
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3197 })
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3198 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
3199 type: 'padd',
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3200 text: '-',
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3201 })
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3202 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
3203 type: 'param',
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3204 text: 'id:',
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3205 })
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3206 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
3207 type: 'padd',
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3208 text: '-',
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3209 })
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3210 END
30359
6391b3ca26b7 patch 9.0.0515: virtual text highlight starts too early when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30306
diff changeset
3211 call writefile(lines, 'XscriptPropsChange', 'D')
29826
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3212 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
3213 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
3214
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3215 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
3216 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
3217
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3218 call StopVimInTerminal(buf)
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3219 endfunc
bfd08e50e2c0 patch 9.0.0252: cursor in wrong place after virtual text
Bram Moolenaar <Bram@vim.org>
parents: 29816
diff changeset
3220
20178
2fb397573541 patch 8.2.0644: insufficient testing for invalid function arguments
Bram Moolenaar <Bram@vim.org>
parents: 19642
diff changeset
3221 " vim: shiftwidth=2 sts=2 expandtab