diff --git a/ftplugin/markdown.vim b/ftplugin/markdown.vim index 60505cd3..fc3fa4d9 100644 --- a/ftplugin/markdown.vim +++ b/ftplugin/markdown.vim @@ -1,6 +1,6 @@ "TODO print messages when on visual mode. I only see VISUAL, not the messages. -" Function interface phylosophy: +" Function interface philosophy: " " - functions take arbitrary line numbers as parameters. " Current cursor line is only a suitable default parameter. @@ -56,7 +56,7 @@ let s:levelRegexpDict = { \ 6: '\v^######[^#]@=' \ } -" Maches any header level of any type. +" Matches any header level of any type. " " This could be deduced from `s:levelRegexpDict`, but it is more " efficient to have a single regexp for this. diff --git a/syntax/markdown.vim b/syntax/markdown.vim index 37494832..fc9f34a6 100644 --- a/syntax/markdown.vim +++ b/syntax/markdown.vim @@ -116,6 +116,7 @@ syn region mkdNonListItemBlock start="\(\%^\(\s*\([-*+]\|\d\+\.\)\s\+\)\@!\|\n\( syn match mkdRule /^\s*\*\s\{0,1}\*\s\{0,1}\*\(\*\|\s\)*$/ syn match mkdRule /^\s*-\s\{0,1}-\s\{0,1}-\(-\|\s\)*$/ syn match mkdRule /^\s*_\s\{0,1}_\s\{0,1}_\(_\|\s\)*$/ +syn keyword mkdTodo TODO FIXME XXX TBD contained containedin=htmlComment,htmlCommentPart " YAML frontmatter if get(g:, 'vim_markdown_frontmatter', 0) @@ -180,6 +181,7 @@ HtmlHiLink mkdLinkDef mkdID HtmlHiLink mkdLinkDefTarget mkdURL HtmlHiLink mkdLinkTitle htmlString HtmlHiLink mkdDelimiter Delimiter +HtmlHiLink mkdTodo Todo let b:current_syntax = 'mkd' diff --git a/test/syntax.vader b/test/syntax.vader index b111de0d..4619617e 100644 --- a/test/syntax.vader +++ b/test/syntax.vader @@ -1303,6 +1303,43 @@ Execute (HTML tag in text): AssertEqual SyntaxOf(''), 'htmlTag' AssertEqual SyntaxOf(''), 'htmlEndTag' +Given markdown; + + +Execute (todo inside HTML comment): + AssertEqual SyntaxOf('TODO'), 'mkdTodo' + AssertEqual SyntaxOf('FIXME'), 'mkdTodo' + AssertEqual SyntaxOf('XXX'), 'mkdTodo' + AssertEqual SyntaxOf('TBD'), 'mkdTodo' + AssertNotEqual SyntaxOf('hello'), 'mkdTodo' + +Given markdown; + + +Execute (fake todo inside HTML comment): + AssertNotEqual SyntaxOf('TODO'), 'mkdTodo' + AssertNotEqual SyntaxOf('FIXME'), 'mkdTodo' + AssertNotEqual SyntaxOf('XXX'), 'mkdTodo' + AssertNotEqual SyntaxOf('TBD'), 'mkdTodo' + +Given markdown; +TODO FIXME XXX TBD + +Execute (todo outside HTML comment): + AssertNotEqual SyntaxOf('TODO'), 'mkdTodo' + AssertNotEqual SyntaxOf('FIXME'), 'mkdTodo' + AssertNotEqual SyntaxOf('XXX'), 'mkdTodo' + AssertNotEqual SyntaxOf('TBD'), 'mkdTodo' + +Given markdown; +> TODO FIXME XXX TBD + +Execute (todo inside non-HTML comment): + AssertNotEqual SyntaxOf('TODO'), 'mkdTodo' + AssertNotEqual SyntaxOf('FIXME'), 'mkdTodo' + AssertNotEqual SyntaxOf('XXX'), 'mkdTodo' + AssertNotEqual SyntaxOf('TBD'), 'mkdTodo' + Given markdown; # _h1_