Skip to content

Commit 7051859

Browse files
feat: set quote highlights for 6 levels of nesting
## Details This is a follow up to highlighting block quote markers based on their nesting level. While support was added for it, it was up to the user to actually take advantage of the feature by setting highlights. Aside from callouts which would use their highlight out of the box. This change does not have any visual impact but does allow colorscheme authors to set custom highlights for block quotes based on their level. Rather than using the `RenderMarkdownQuote` highlight for all levels we now set 6 highlights `RenderMarkdownQuote1`..`RenderMarkdownQuote6` for the default value. All of these link to the original highlight `RenderMarkdownQuote` if no custom value is set. That way there is no change for colorschemes that did set a value for `RenderMarkdownQuote`, but if colorschemes want to they can now configure each of the levels to the desired value. It is recommended to set all 6 to some value if you set any of them, but you can repeat say values for 1 through 3 for 4 through 6. Users can also set the highlights using: ```lua vim.api.nvim_set_hl(0, 'RenderMarkdownQuote1', { fg = .. }) vim.api.nvim_set_hl(0, 'RenderMarkdownQuote2', { fg = .. }) vim.api.nvim_set_hl(0, 'RenderMarkdownQuote3', { fg = .. }) vim.api.nvim_set_hl(0, 'RenderMarkdownQuote4', { fg = .. }) vim.api.nvim_set_hl(0, 'RenderMarkdownQuote5', { fg = .. }) vim.api.nvim_set_hl(0, 'RenderMarkdownQuote6', { fg = .. }) ``` Without needing to actually configure custom highlights in the plugin configuration. This is slightly more robust since it will be unaffected if the plugin configuration changes in the future.
1 parent da3e146 commit 7051859

File tree

7 files changed

+113
-38
lines changed

7 files changed

+113
-38
lines changed

README.md

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,15 @@ require('render-markdown').setup({
601601
-- configuration then set them in win_options for this plugin.
602602
repeat_linebreak = false,
603603
-- Highlight for the quote icon.
604-
highlight = 'RenderMarkdownQuote',
604+
-- If a list is provided output is evaluated by `cycle(value, level)`.
605+
highlight = {
606+
'RenderMarkdownQuote1',
607+
'RenderMarkdownQuote2',
608+
'RenderMarkdownQuote3',
609+
'RenderMarkdownQuote4',
610+
'RenderMarkdownQuote5',
611+
'RenderMarkdownQuote6',
612+
},
605613
},
606614
pipe_table = {
607615
-- Turn on / off pipe table rendering.
@@ -1233,7 +1241,15 @@ require('render-markdown').setup({
12331241
-- configuration then set them in win_options for this plugin.
12341242
repeat_linebreak = false,
12351243
-- Highlight for the quote icon.
1236-
highlight = 'RenderMarkdownQuote',
1244+
-- If a list is provided output is evaluated by `cycle(value, level)`.
1245+
highlight = {
1246+
'RenderMarkdownQuote1',
1247+
'RenderMarkdownQuote2',
1248+
'RenderMarkdownQuote3',
1249+
'RenderMarkdownQuote4',
1250+
'RenderMarkdownQuote5',
1251+
'RenderMarkdownQuote6',
1252+
},
12371253
},
12381254
})
12391255
```
@@ -1500,9 +1516,15 @@ The table below shows all the highlight groups with their default link
15001516
| RenderMarkdownCodeBorder | RenderMarkdownCode | Code border background |
15011517
| RenderMarkdownCodeFallback | Normal | Fallback for code language |
15021518
| RenderMarkdownCodeInline | RenderMarkdownCode | Inline code background |
1519+
| RenderMarkdownQuote | @markup.quote | Default for block quote |
1520+
| RenderMarkdownQuote1 | RenderMarkdownQuote | Level 1 block quote marker |
1521+
| RenderMarkdownQuote2 | RenderMarkdownQuote | Level 2 block quote marker |
1522+
| RenderMarkdownQuote3 | RenderMarkdownQuote | Level 3 block quote marker |
1523+
| RenderMarkdownQuote4 | RenderMarkdownQuote | Level 4 block quote marker |
1524+
| RenderMarkdownQuote5 | RenderMarkdownQuote | Level 5 block quote marker |
1525+
| RenderMarkdownQuote6 | RenderMarkdownQuote | Level 6 block quote marker |
15031526
| RenderMarkdownInlineHighlight | RenderMarkdownCodeInline | Inline highlights contents |
15041527
| RenderMarkdownBullet | Normal | List item bullet points |
1505-
| RenderMarkdownQuote | @markup.quote | Block quote marker |
15061528
| RenderMarkdownDash | LineNr | Thematic break line |
15071529
| RenderMarkdownSign | SignColumn | Sign column background |
15081530
| RenderMarkdownMath | @markup.math | Latex lines |

doc/render-markdown.txt

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -666,7 +666,15 @@ Default Configuration ~
666666
-- configuration then set them in win_options for this plugin.
667667
repeat_linebreak = false,
668668
-- Highlight for the quote icon.
669-
highlight = 'RenderMarkdownQuote',
669+
-- If a list is provided output is evaluated by `cycle(value, level)`.
670+
highlight = {
671+
'RenderMarkdownQuote1',
672+
'RenderMarkdownQuote2',
673+
'RenderMarkdownQuote3',
674+
'RenderMarkdownQuote4',
675+
'RenderMarkdownQuote5',
676+
'RenderMarkdownQuote6',
677+
},
670678
},
671679
pipe_table = {
672680
-- Turn on / off pipe table rendering.
@@ -1284,7 +1292,15 @@ Block Quote Configuration ~
12841292
-- configuration then set them in win_options for this plugin.
12851293
repeat_linebreak = false,
12861294
-- Highlight for the quote icon.
1287-
highlight = 'RenderMarkdownQuote',
1295+
-- If a list is provided output is evaluated by `cycle(value, level)`.
1296+
highlight = {
1297+
'RenderMarkdownQuote1',
1298+
'RenderMarkdownQuote2',
1299+
'RenderMarkdownQuote3',
1300+
'RenderMarkdownQuote4',
1301+
'RenderMarkdownQuote5',
1302+
'RenderMarkdownQuote6',
1303+
},
12881304
},
12891305
})
12901306
<
@@ -1562,14 +1578,33 @@ The table below shows all the highlight groups with their default link
15621578
RenderMarkdownCodeInline RenderMarkdownCode Inline code
15631579
background
15641580

1581+
RenderMarkdownQuote @markup.quote Default for block
1582+
quote
1583+
1584+
RenderMarkdownQuote1 RenderMarkdownQuote Level 1 block quote
1585+
marker
1586+
1587+
RenderMarkdownQuote2 RenderMarkdownQuote Level 2 block quote
1588+
marker
1589+
1590+
RenderMarkdownQuote3 RenderMarkdownQuote Level 3 block quote
1591+
marker
1592+
1593+
RenderMarkdownQuote4 RenderMarkdownQuote Level 4 block quote
1594+
marker
1595+
1596+
RenderMarkdownQuote5 RenderMarkdownQuote Level 5 block quote
1597+
marker
1598+
1599+
RenderMarkdownQuote6 RenderMarkdownQuote Level 6 block quote
1600+
marker
1601+
15651602
RenderMarkdownInlineHighlight RenderMarkdownCodeInline Inline highlights
15661603
contents
15671604

15681605
RenderMarkdownBullet Normal List item bullet
15691606
points
15701607

1571-
RenderMarkdownQuote @markup.quote Block quote marker
1572-
15731608
RenderMarkdownDash LineNr Thematic break line
15741609

15751610
RenderMarkdownSign SignColumn Sign column

lua/render-markdown/colors.lua

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,17 @@ M.colors = {
3434
CodeBorder = 'RenderMarkdownCode',
3535
CodeFallback = 'Normal',
3636
CodeInline = 'RenderMarkdownCode',
37+
-- Block quotes
38+
Quote = '@markup.quote',
39+
Quote1 = 'RenderMarkdownQuote',
40+
Quote2 = 'RenderMarkdownQuote',
41+
Quote3 = 'RenderMarkdownQuote',
42+
Quote4 = 'RenderMarkdownQuote',
43+
Quote5 = 'RenderMarkdownQuote',
44+
Quote6 = 'RenderMarkdownQuote',
3745
-- General
3846
InlineHighlight = 'RenderMarkdownCodeInline',
3947
Bullet = 'Normal',
40-
Quote = '@markup.quote',
4148
Dash = 'LineNr',
4249
Sign = 'SignColumn',
4350
Math = '@markup.math',

lua/render-markdown/health.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ local state = require('render-markdown.state')
55
local M = {}
66

77
---@private
8-
M.version = '8.3.12'
8+
M.version = '8.3.13'
99

1010
function M.check()
1111
M.start('version')

lua/render-markdown/init.lua

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,15 @@ M.default = {
467467
-- configuration then set them in win_options for this plugin.
468468
repeat_linebreak = false,
469469
-- Highlight for the quote icon.
470-
highlight = 'RenderMarkdownQuote',
470+
-- If a list is provided output is evaluated by `cycle(value, level)`.
471+
highlight = {
472+
'RenderMarkdownQuote1',
473+
'RenderMarkdownQuote2',
474+
'RenderMarkdownQuote3',
475+
'RenderMarkdownQuote4',
476+
'RenderMarkdownQuote5',
477+
'RenderMarkdownQuote6',
478+
},
471479
},
472480
pipe_table = {
473481
-- Turn on / off pipe table rendering.

tests/box_dash_quote_spec.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ describe('box_dash_quote.md', function()
4040
virt_text_pos = 'overlay',
4141
})
4242

43-
marks:add(row:inc(2), row:get(), 2, 3, util.quote('RmQuote'))
44-
marks:add(row:inc(), row:get(), 2, 3, util.quote('RmQuote'))
43+
marks:add(row:inc(2), row:get(), 2, 3, util.quote('RmQuote1'))
44+
marks:add(row:inc(), row:get(), 2, 3, util.quote('RmQuote1'))
4545

4646
util.assert_view(marks, {
4747
'󰫎 󰲡 Checkbox / Dash / Quote',

tests/quote_spec.lua

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -20,43 +20,46 @@ describe('quote', function()
2020

2121
local marks, row = util.marks(), util.row()
2222

23-
local hint = 'RmHint'
24-
local base = 'RmQuote'
25-
local err = 'RmError'
23+
local levels = {
24+
'RmHint',
25+
'RmQuote2',
26+
'RmError',
27+
'RmQuote3',
28+
}
2629

27-
marks:add(row:get(), row:get(), 0, 1, util.quote(hint))
30+
marks:add(row:get(), row:get(), 0, 1, util.quote(levels[1]))
2831
marks:add(row:get(), row:get(), 2, 14, {
29-
virt_text = { { '󰅾 Important', hint } },
32+
virt_text = { { '󰅾 Important', levels[1] } },
3033
virt_text_pos = 'overlay',
3134
})
32-
marks:add(row:inc(), row:get(), 0, 1, util.quote(hint))
33-
marks:add(row:inc(), row:get(), 0, 1, util.quote(hint))
34-
marks:add(row:inc(), row:get(), 0, 1, util.quote(hint))
35+
marks:add(row:inc(), row:get(), 0, 1, util.quote(levels[1]))
36+
marks:add(row:inc(), row:get(), 0, 1, util.quote(levels[1]))
37+
marks:add(row:inc(), row:get(), 0, 1, util.quote(levels[1]))
3538

36-
marks:add(row:inc(), row:get(), 0, 1, util.quote(hint))
37-
marks:add(row:get(), row:get(), 2, 3, util.quote(base))
38-
marks:add(row:inc(), row:get(), 0, 1, util.quote(hint))
39-
marks:add(row:get(), row:get(), 2, 3, util.quote(base))
39+
marks:add(row:inc(), row:get(), 0, 1, util.quote(levels[1]))
40+
marks:add(row:get(), row:get(), 2, 3, util.quote(levels[2]))
41+
marks:add(row:inc(), row:get(), 0, 1, util.quote(levels[1]))
42+
marks:add(row:get(), row:get(), 2, 3, util.quote(levels[2]))
4043

41-
marks:add(row:inc(), row:get(), 0, 1, util.quote(hint))
42-
marks:add(row:get(), row:get(), 2, 3, util.quote(base))
43-
marks:add(row:get(), row:get(), 4, 5, util.quote(err))
44+
marks:add(row:inc(), row:get(), 0, 1, util.quote(levels[1]))
45+
marks:add(row:get(), row:get(), 2, 3, util.quote(levels[2]))
46+
marks:add(row:get(), row:get(), 4, 5, util.quote(levels[3]))
4447
marks:add(row:get(), row:get(), 6, 16, {
45-
virt_text = { { '󰳦 Caution', err } },
48+
virt_text = { { '󰳦 Caution', levels[3] } },
4649
virt_text_pos = 'overlay',
4750
})
48-
marks:add(row:inc(), row:get(), 0, 1, util.quote(hint))
49-
marks:add(row:get(), row:get(), 2, 3, util.quote(base))
50-
marks:add(row:get(), row:get(), 4, 5, util.quote(err))
51-
marks:add(row:inc(), row:get(), 0, 1, util.quote(hint))
52-
marks:add(row:get(), row:get(), 2, 3, util.quote(base))
53-
marks:add(row:get(), row:get(), 4, 5, util.quote(err))
51+
marks:add(row:inc(), row:get(), 0, 1, util.quote(levels[1]))
52+
marks:add(row:get(), row:get(), 2, 3, util.quote(levels[2]))
53+
marks:add(row:get(), row:get(), 4, 5, util.quote(levels[3]))
54+
marks:add(row:inc(), row:get(), 0, 1, util.quote(levels[1]))
55+
marks:add(row:get(), row:get(), 2, 3, util.quote(levels[2]))
56+
marks:add(row:get(), row:get(), 4, 5, util.quote(levels[3]))
5457

55-
marks:add(row:inc(), row:get(), 0, 1, util.quote(hint))
58+
marks:add(row:inc(), row:get(), 0, 1, util.quote(levels[1]))
5659

57-
marks:add(row:inc(), row:get(), 0, 1, util.quote(hint))
58-
marks:add(row:get(), row:get(), 2, 3, util.quote(base))
59-
marks:add(row:get(), row:get(), 4, 5, util.quote(base))
60+
marks:add(row:inc(), row:get(), 0, 1, util.quote(levels[1]))
61+
marks:add(row:get(), row:get(), 2, 3, util.quote(levels[2]))
62+
marks:add(row:get(), row:get(), 4, 5, util.quote(levels[4]))
6063

6164
util.assert_view(marks, {
6265
'▋ 󰅾 Important',

0 commit comments

Comments
 (0)