Skip to content

Commit a635953

Browse files
committed
Feat: conceal backslash if it is a valid escape code leader
This should close preservim#510
1 parent 8e5d86f commit a635953

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

syntax/markdown.vim

+11-7
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,12 @@ syn region mkdLinkTitle matchgroup=mkdDelimiter start=+'+ end=+'+ contained
8686
syn region mkdLinkTitle matchgroup=mkdDelimiter start=+(+ end=+)+ contained
8787

8888
"HTML headings
89-
syn region htmlH1 matchgroup=mkdHeading start="^\s*#" end="$" contains=mkdLink,mkdInlineURL,@Spell
90-
syn region htmlH2 matchgroup=mkdHeading start="^\s*##" end="$" contains=mkdLink,mkdInlineURL,@Spell
91-
syn region htmlH3 matchgroup=mkdHeading start="^\s*###" end="$" contains=mkdLink,mkdInlineURL,@Spell
92-
syn region htmlH4 matchgroup=mkdHeading start="^\s*####" end="$" contains=mkdLink,mkdInlineURL,@Spell
93-
syn region htmlH5 matchgroup=mkdHeading start="^\s*#####" end="$" contains=mkdLink,mkdInlineURL,@Spell
94-
syn region htmlH6 matchgroup=mkdHeading start="^\s*######" end="$" contains=mkdLink,mkdInlineURL,@Spell
89+
syn region htmlH1 matchgroup=mkdHeading start="^\s*#" end="$" contains=mkdEscape,mkdLink,mkdInlineURL,@Spell
90+
syn region htmlH2 matchgroup=mkdHeading start="^\s*##" end="$" contains=mkdEscape,mkdLink,mkdInlineURL,@Spell
91+
syn region htmlH3 matchgroup=mkdHeading start="^\s*###" end="$" contains=mkdEscape,mkdLink,mkdInlineURL,@Spell
92+
syn region htmlH4 matchgroup=mkdHeading start="^\s*####" end="$" contains=mkdEscape,mkdLink,mkdInlineURL,@Spell
93+
syn region htmlH5 matchgroup=mkdHeading start="^\s*#####" end="$" contains=mkdEscape,mkdLink,mkdInlineURL,@Spell
94+
syn region htmlH6 matchgroup=mkdHeading start="^\s*######" end="$" contains=mkdEscape,mkdLink,mkdInlineURL,@Spell
9595
syn match htmlH1 /^.\+\n=\+$/ contains=mkdLink,mkdInlineURL,@Spell
9696
syn match htmlH2 /^.\+\n-\+$/ contains=mkdLink,mkdInlineURL,@Spell
9797

@@ -116,6 +116,9 @@ syn match mkdRule /^\s*\*\s\{0,1}\*\s\{0,1}\*\(\*\|\s\)*$/
116116
syn match mkdRule /^\s*-\s\{0,1}-\s\{0,1}-\(-\|\s\)*$/
117117
syn match mkdRule /^\s*_\s\{0,1}_\s\{0,1}_\(_\|\s\)*$/
118118

119+
syntax region mkdEscape matchgroup=mkdEscape start=/\\\ze[\\\x60*{}\[\]()#+\-,.!_>~|"$%&'\/:;<=?@^]/ end=/.\zs/ keepend contains=mkdEscapeCh contained oneline concealends
120+
syntax match mkdEscapeCh /./ contained
121+
119122
" YAML frontmatter
120123
if get(g:, 'vim_markdown_frontmatter', 0)
121124
syn include @yamlTop syntax/yaml.vim
@@ -155,7 +158,7 @@ if get(g:, 'vim_markdown_strikethrough', 0)
155158
HtmlHiLink mkdStrike htmlStrike
156159
endif
157160

158-
syn cluster mkdNonListItem contains=@htmlTop,htmlItalic,htmlBold,htmlBoldItalic,mkdFootnotes,mkdInlineURL,mkdLink,mkdLinkDef,mkdLineBreak,mkdBlockquote,mkdCode,mkdRule,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6,mkdMath,mkdStrike
161+
syn cluster mkdNonListItem contains=@htmlTop,htmlItalic,htmlBold,htmlBoldItalic,mkdFootnotes,mkdInlineURL,mkdLink,mkdLinkDef,mkdLineBreak,mkdBlockquote,mkdCode,mkdRule,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6,mkdMath,mkdStrike,mkdEscape
159162

160163
"highlighting for Markdown groups
161164
HtmlHiLink mkdString String
@@ -177,6 +180,7 @@ HtmlHiLink mkdLinkDef mkdID
177180
HtmlHiLink mkdLinkDefTarget mkdURL
178181
HtmlHiLink mkdLinkTitle htmlString
179182
HtmlHiLink mkdDelimiter Delimiter
183+
HtmlHiLink mkdEscape Special
180184

181185
let b:current_syntax = "mkd"
182186

test/escapes.md

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Escapes:
2+
3+
text: \\ \` \* \{ \} \[ \] \( \) \# \+ \- \. \! \_ \< \> \~ \| \" \$ \% \& \' \/ \: \; \= \? \@ \^
4+
5+
## Header: \\ \` \* \{ \} \[ \] \( \) \# \+ \- \. \! \_ \< \> \~ \| \" \$ \% \& \' \/ \: \; \= \? \@ \^
6+
7+
Non Escapes: \a \b \c \f \n \r \t \v \x \o

0 commit comments

Comments
 (0)