@@ -17,7 +17,7 @@ async_tests.describe('init', function()
17
17
local marks = vim .api .nvim_buf_get_extmarks (0 , ui .namespace , 0 , - 1 , { details = true })
18
18
for _ , mark in ipairs (marks ) do
19
19
local _ , row , col , details = unpack (mark )
20
- table.insert ( actual , {
20
+ local mark_info = {
21
21
row = { row , details .end_row },
22
22
col = { col , details .end_col },
23
23
hl_eol = details .hl_eol ,
@@ -26,58 +26,68 @@ async_tests.describe('init', function()
26
26
virt_text_pos = details .virt_text_pos ,
27
27
virt_lines = details .virt_lines ,
28
28
virt_lines_above = details .virt_lines_above ,
29
- })
29
+ }
30
+ table.insert (actual , mark_info )
30
31
end
31
32
32
- local expected = {
33
- -- Headings 1 through 6 (minus 2)
33
+ local expected = {}
34
+
35
+ -- Headings 1 through 6 (minus 2)
36
+ vim .list_extend (expected , {
34
37
{
35
38
row = { 0 , 1 },
36
39
col = { 0 , 0 },
37
40
hl_eol = true ,
38
41
hl_group = ' DiffAdd' ,
39
- virt_text = { { ' ' , ' markdownH1 ' } , { ' ' , ' DiffAdd' } },
42
+ virt_text = { { ' ' , { ' markdownH1 ' , ' DiffAdd' } } },
40
43
virt_text_pos = ' overlay' ,
41
44
},
42
45
{
43
46
row = { 2 , 3 },
44
47
col = { 0 , 0 },
45
48
hl_eol = true ,
46
49
hl_group = ' DiffDelete' ,
47
- virt_text = { { ' ' , ' markdownH3 ' } , { ' ' , ' DiffDelete' } },
50
+ virt_text = { { ' ' , { ' markdownH3 ' , ' DiffDelete' } } },
48
51
virt_text_pos = ' overlay' ,
49
52
},
50
53
{
51
54
row = { 4 , 5 },
52
55
col = { 0 , 0 },
53
56
hl_eol = true ,
54
57
hl_group = ' DiffDelete' ,
55
- virt_text = { { ' ' , ' markdownH4 ' }, { ' ' , ' DiffDelete' } },
58
+ virt_text = { { ' ' , { ' markdownH4 ' , ' DiffDelete' } } },
56
59
virt_text_pos = ' overlay' ,
57
60
},
58
61
{
59
62
row = { 6 , 7 },
60
63
col = { 0 , 0 },
61
64
hl_eol = true ,
62
65
hl_group = ' DiffDelete' ,
63
- virt_text = { { ' ' , ' markdownH5 ' }, { ' ' , ' DiffDelete' } },
66
+ virt_text = { { ' ' , { ' markdownH5 ' , ' DiffDelete' } } },
64
67
virt_text_pos = ' overlay' ,
65
68
},
66
69
{
67
70
row = { 8 , 9 },
68
71
col = { 0 , 0 },
69
72
hl_eol = true ,
70
73
hl_group = ' DiffDelete' ,
71
- virt_text = { { ' ' , ' markdownH6 ' }, { ' ' , ' DiffDelete' } },
74
+ virt_text = { { ' ' , { ' markdownH6 ' , ' DiffDelete' } } },
72
75
virt_text_pos = ' overlay' ,
73
76
},
74
- -- Code block
77
+ })
78
+
79
+ -- Code block
80
+ vim .list_extend (expected , {
75
81
{
76
82
row = { 10 , 21 },
77
83
col = { 0 , 0 },
78
84
hl_eol = true ,
79
85
hl_group = ' ColorColumn' ,
80
86
},
87
+ })
88
+
89
+ -- Unordered list
90
+ vim .list_extend (expected , {
81
91
-- List Item 1, bullet point
82
92
{
83
93
row = { 22 , 22 },
@@ -141,42 +151,52 @@ async_tests.describe('init', function()
141
151
virt_text = { { ' ●' , ' Normal' } },
142
152
virt_text_pos = ' overlay' ,
143
153
},
144
- -- Unchecked checkbox, bullet point, not created intentionally, remove if fixed
154
+ })
155
+
156
+ -- Checkboxes
157
+ vim .list_extend (expected , {
158
+ -- Unchecked, bullet point, not created intentionally, remove if fixed
145
159
{
146
160
row = { 35 , 35 },
147
161
col = { 0 , 2 },
148
162
virt_text = { { ' ●' , ' Normal' } },
149
163
virt_text_pos = ' overlay' ,
150
164
},
151
- -- Unchecked checkbox , checkbox
165
+ -- Unchecked, checkbox
152
166
{
153
167
row = { 35 , 35 },
154
168
col = { 2 , 5 },
155
169
virt_text = { { ' ' , ' @markup.list.unchecked' } },
156
170
virt_text_pos = ' overlay' ,
157
171
},
158
- -- Checked checkbox , bullet point, not created intentionally, remove if fixed
172
+ -- Checked, bullet point, not created intentionally, remove if fixed
159
173
{
160
174
row = { 36 , 36 },
161
175
col = { 0 , 2 },
162
176
virt_text = { { ' ●' , ' Normal' } },
163
177
virt_text_pos = ' overlay' ,
164
178
},
165
- -- Checked checkbox , checkbox
179
+ -- Checked, checkbox
166
180
{
167
181
row = { 36 , 36 },
168
182
col = { 2 , 5 },
169
183
virt_text = { { ' ' , ' @markup.heading' } },
170
184
virt_text_pos = ' overlay' ,
171
185
},
172
- -- Line break, TODO: fragile need to determine width
186
+ })
187
+
188
+ -- Line break, TODO: fragile need to determine width
189
+ vim .list_extend (expected , {
173
190
{
174
191
row = { 38 },
175
192
col = { 0 },
176
193
virt_text = { { string.rep (' —' , 80 ), ' LineNr' } },
177
194
virt_text_pos = ' overlay' ,
178
195
},
179
- -- Quote lines
196
+ })
197
+
198
+ -- Quote lines
199
+ vim .list_extend (expected , {
180
200
{
181
201
row = { 40 , 40 },
182
202
col = { 0 , 4 },
@@ -189,61 +209,77 @@ async_tests.describe('init', function()
189
209
virt_text = { { ' ┃ ' , ' @markup.quote' } },
190
210
virt_text_pos = ' overlay' ,
191
211
},
192
- -- Table heading
193
- {
194
- row = { 43 , 43 },
195
- col = { 0 , 31 },
196
- virt_text = { { ' │ Heading 1 │ Heading 2 │' , ' @markup.heading' } },
197
- virt_text_pos = ' overlay' ,
198
- },
199
- -- Table above
212
+ })
213
+
214
+ local markdown_table = {
215
+ ' ┌──────────────┬──────────────┐' ,
216
+ ' │ Heading 1 │ Heading 2 │' ,
217
+ ' ├──────────────┼──────────────┤' ,
218
+ ' │ Row 1 Item 1 │ Row 1 Item 2 │' ,
219
+ ' │ Row 2 Item 1 │ Row 2 Item 2 │' ,
220
+ ' │ Row 3 Item 1 │ Row 3 Item 2 │' ,
221
+ ' └──────────────┴──────────────┘' ,
222
+ }
223
+ vim .list_extend (expected , {
224
+ -- Above
200
225
{
201
226
row = { 43 },
202
227
col = { 0 },
203
- virt_lines = { { { ' ┌──────────────┬──────────────┐ ' , ' @markup.heading' } } },
228
+ virt_lines = { { { markdown_table [ 1 ] , ' @markup.heading' } } },
204
229
virt_lines_above = true ,
205
230
},
206
- -- Table below heading
231
+ -- Heading
232
+ {
233
+ row = { 43 , 43 },
234
+ col = { 0 , 31 },
235
+ virt_text = { { markdown_table [2 ], ' @markup.heading' } },
236
+ virt_text_pos = ' overlay' ,
237
+ },
238
+ -- Below heading
207
239
{
208
240
row = { 44 , 44 },
209
241
col = { 0 , 31 },
210
- virt_text = { { ' ├──────────────┼──────────────┤ ' , ' @markup.heading' } },
242
+ virt_text = { { markdown_table [ 3 ] , ' @markup.heading' } },
211
243
virt_text_pos = ' overlay' ,
212
244
},
213
- -- Table rows
245
+ -- Rows
214
246
{
215
247
row = { 45 , 45 },
216
248
col = { 0 , 31 },
217
- virt_text = { { ' │ Row 1 Item 1 │ Row 1 Item 2 │ ' , ' Normal' } },
249
+ virt_text = { { markdown_table [ 4 ] , ' Normal' } },
218
250
virt_text_pos = ' overlay' ,
219
251
},
220
252
{
221
253
row = { 46 , 46 },
222
254
col = { 0 , 31 },
223
- virt_text = { { ' │ Row 2 Item 1 │ Row 2 Item 2 │ ' , ' Normal' } },
255
+ virt_text = { { markdown_table [ 5 ] , ' Normal' } },
224
256
virt_text_pos = ' overlay' ,
225
257
},
226
258
{
227
259
row = { 47 , 47 },
228
260
col = { 0 , 31 },
229
- virt_text = { { ' │ Row 3 Item 1 │ Row 3 Item 2 │ ' , ' Normal' } },
261
+ virt_text = { { markdown_table [ 6 ] , ' Normal' } },
230
262
virt_text_pos = ' overlay' ,
231
263
},
232
- -- Table below
264
+ -- Below
233
265
{
234
266
row = { 48 },
235
267
col = { 0 },
236
- virt_lines = { { { ' └──────────────┴──────────────┘ ' , ' Normal' } } },
268
+ virt_lines = { { { markdown_table [ 7 ] , ' Normal' } } },
237
269
virt_lines_above = true ,
238
270
},
239
- -- LaTeX inline, TODO: mock interaction with latex2text
271
+ })
272
+
273
+ -- LaTeX, TODO: mock interaction with latex2text
274
+ vim .list_extend (expected , {
275
+ -- Inline
240
276
{
241
277
row = { 49 , 49 },
242
278
col = { 0 , 21 },
243
279
virt_lines = { { { ' √(3x-1)+(1+x)^2' , ' @markup.math' } } },
244
280
virt_lines_above = true ,
245
281
},
246
- -- LaTeX block, TODO: mock interaction with latex2text
282
+ -- Block
247
283
{
248
284
row = { 51 , 54 },
249
285
col = { 0 , 2 },
@@ -253,8 +289,11 @@ async_tests.describe('init', function()
253
289
},
254
290
virt_lines_above = true ,
255
291
},
256
- }
292
+ })
257
293
258
- eq (expected , actual )
294
+ eq (# expected , # actual )
295
+ for i , expected_mark_info in ipairs (expected ) do
296
+ eq (expected_mark_info , actual [i ], string.format (' Marks at index %d mismatch' , i ))
297
+ end
259
298
end )
260
299
end )
0 commit comments