From a8a1666ff0ddcf798a5b4729dc88b4e41f3aef71 Mon Sep 17 00:00:00 2001 From: "Kenneth Benzie (Benie)" Date: Mon, 26 Dec 2016 12:28:19 +0000 Subject: [PATCH] Improve markdown GitHub checkbox highlights --- after/ftplugin/markdown.vim | 1 + after/syntax/markdown.vim | 29 ++++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/after/ftplugin/markdown.vim b/after/ftplugin/markdown.vim index eca3dac..2c2de47 100644 --- a/after/ftplugin/markdown.vim +++ b/after/ftplugin/markdown.vim @@ -5,6 +5,7 @@ endif setlocal foldmethod=expr setlocal foldexpr=MarkdownFold(v:lnum) +setlocal conceallevel=2 function! MarkdownFold(lnum) let l:line = getline(a:lnum) diff --git a/after/syntax/markdown.vim b/after/syntax/markdown.vim index 0934962..822b8b5 100644 --- a/after/syntax/markdown.vim +++ b/after/syntax/markdown.vim @@ -10,11 +10,38 @@ hi link markdownUrl Include syn match markdownCheckboxTick '\[\zsx\ze\]' contained syn match markdownCheckboxDelimiter '\[[ x]\]' contained contains=markdownCheckboxTick syn match markdownCheckbox '\s*\* \[[ x]\] ' contains=markdownCheckboxDelimiter,markdownListMarker -syn region markdownCheckboxDone start='\s*\* \ze\[x\] ' keepend end='\ze\(\n^\s*\*\|\n^\s*\n\)' contains=markdownCheckbox +syn region markdownCheckboxDone start='\s*\* \ze\[x\] ' keepend end='\ze\(\n^\s*\*\|\n^\s*\n\)' contains=markdownCheckbox,@markdownCheckboxDoneInline + +if has('conceal') && get(g:, 'markdown_syntax_conceal', 1) == 1 + let s:concealends = ' concealends' +endif +exe 'syn region markdownCheckboxItalic matchgroup=markdownCheckboxItalicDelimiter start="\S\@<=\*\|\*\S\@=" end="\S\@<=\*\|\*\S\@=" keepend contains=markdownLineStart,@Spell contained' . s:concealends +exe 'syn region markdownCheckboxItalic matchgroup=markdownCheckboxItalicDelimiter start="\S\@<=_\|_\S\@=" end="\S\@<=_\|_\S\@=" keepend contains=markdownLineStart,@Spell contained' . s:concealends +exe 'syn region markdownCheckboxBold matchgroup=markdownCheckboxBoldDelimiter start="\S\@<=\*\*\|\*\*\S\@=" end="\S\@<=\*\*\|\*\*\S\@=" keepend contains=markdownLineStart,markdownItalic,@Spell contained' . s:concealends +exe 'syn region markdownCheckboxBold matchgroup=markdownCheckboxBoldDelimiter start="\S\@<=__\|__\S\@=" end="\S\@<=__\|__\S\@=" keepend contains=markdownLineStart,markdownItalic,@Spell contained' . s:concealends +exe 'syn region markdownCheckboxBoldItalic matchgroup=markdownCheckboxBoldItalicDelimiter start="\S\@<=\*\*\*\|\*\*\*\S\@=" end="\S\@<=\*\*\*\|\*\*\*\S\@=" keepend contains=markdownLineStart,@Spell contained' . s:concealends +exe 'syn region markdownCheckboxBoldItalic matchgroup=markdownCheckboxBoldItalicDelimiter start="\S\@<=___\|___\S\@=" end="\S\@<=___\|___\S\@=" keepend contains=markdownLineStart,@Spell contained' . s:concealends + +syn region markdownCheckboxCode matchgroup=markdownCheckboxCodeDelimiter start="`" end="`" keepend contains=markdownLineStart contained +syn region markdownCheckboxCode matchgroup=markdownCheckboxCodeDelimiter start="`` \=" end=" \=``" keepend contains=markdownLineStart contained + +syn cluster markdownInline contains=markdownLineBreak,markdownLinkText,markdownItalic,markdownBold,markdownCode,markdownEscape,@htmlTop,markdownError +syn cluster markdownCheckboxDoneInline contains=markdownLineBreak,markdownLinkText,markdownCheckboxItalic,markdownCheckboxBold,markdownCheckboxBoldItalic,markdownCheckboxCode,markdownEscape,@htmlTop,markdownError hi link markdownCheckboxTick markdownListMarker hi link markdownCheckboxDelimiter PreProc hi link markdownCheckboxDone Comment +call CloneHighlightGroupWithAttributes('markdownCheckboxDone', + \ 'markdownCheckboxItalic', 'italic') +hi link markdownCheckboxItalicDelimiter markdownCheckboxItalic +call CloneHighlightGroupWithAttributes('markdownCheckboxDone', + \ 'markdownCheckboxBold', 'bold') +hi link markdownCheckboxBoldDelimiter markdownCheckboxBold +call CloneHighlightGroupWithAttributes('markdownCheckboxDone', + \ 'markdownCheckboxBoldItalic', 'bold,italic') +hi link markdownCheckboxBoldItalicDelimiter markdownCheckboxBoldItalic +hi link markdownCheckboxCode SpecialComment +hi link markdownCheckboxCodeDelimiter PreProc " Add match for TODO syn match markdownTodo 'TODO'