diff --git a/markdown.tmLanguage.base.yaml b/markdown.tmLanguage.base.yaml index 1e1c909..619fd50 100644 --- a/markdown.tmLanguage.base.yaml +++ b/markdown.tmLanguage.base.yaml @@ -221,6 +221,7 @@ repository: - {include: '#link-ref'} - {include: '#link-ref-literal'} - {include: '#link-ref-shortcut'} + - {include: '#link-html'} ampersand: comment: "Markdown will convert this for us. We match it so that the HTML grammar will not mark it up as invalid." match: '&(?!([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+);)' @@ -291,6 +292,7 @@ repository: - {include: '#link-ref-literal'} - {include: '#link-ref'} - {include: '#link-ref-shortcut'} + - {include: '#link-html'} bracket: comment: "Markdown will convert this for us. We match it so that the HTML grammar will not mark it up as invalid." match: '<(?![a-zA-Z/?\$!])' @@ -406,6 +408,7 @@ repository: - {include: '#link-ref-literal'} - {include: '#link-ref'} - {include: '#link-ref-shortcut'} + - {include: '#link-html'} link-email: captures: '1': {name: punctuation.definition.link.markdown} @@ -480,6 +483,13 @@ repository: '3': {name: punctuation.definition.string.end.markdown} match: (\[)(\S+?)(\]) name: meta.link.reference.markdown + link-html: + captures: + '1': {name: punctuation.definition.link.markdown} + '2': {name: markup.underline.link.markdown} + '3': {name: punctuation.definition.link.markdown} + match: (?<=\[.*\]\()(\<)(.*?)(\>) + name: meta.link.inline.markdown raw: captures: '1': {name: punctuation.definition.raw.markdown} diff --git a/syntaxes/markdown.tmLanguage b/syntaxes/markdown.tmLanguage index c40ec43..1da590b 100644 --- a/syntaxes/markdown.tmLanguage +++ b/syntaxes/markdown.tmLanguage @@ -3764,6 +3764,10 @@ include #link-ref-shortcut + + include + #link-html + ampersand @@ -3902,6 +3906,10 @@ include #link-ref-shortcut + + include + #link-html + bracket @@ -4193,6 +4201,10 @@ include #link-ref-shortcut + + include + #link-html + link-email @@ -4453,6 +4465,31 @@ name meta.link.reference.markdown + link-html + + captures + + 1 + + name + punctuation.definition.link.markdown + + 2 + + name + markup.underline.link.markdown + + 3 + + name + punctuation.definition.link.markdown + + + match + (?<=\[.*\]\()(\<)(.*?)(\>) + name + meta.link.inline.markdown + raw captures diff --git a/test/colorize-fixtures/issue-80.md b/test/colorize-fixtures/issue-80.md new file mode 100644 index 0000000..35caf41 --- /dev/null +++ b/test/colorize-fixtures/issue-80.md @@ -0,0 +1,5 @@ +[text](link) + +[text]() + +[title]() \ No newline at end of file diff --git a/test/colorize-results/issue-80_md.json b/test/colorize-results/issue-80_md.json new file mode 100644 index 0000000..352e941 --- /dev/null +++ b/test/colorize-results/issue-80_md.json @@ -0,0 +1,233 @@ +[ + { + "c": "[", + "t": "text.html.markdown meta.paragraph.markdown meta.link.inline.markdown punctuation.definition.string.begin.markdown", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "text", + "t": "text.html.markdown meta.paragraph.markdown meta.link.inline.markdown string.other.link.title.markdown", + "r": { + "dark_plus": "string: #CE9178", + "light_plus": "string: #A31515", + "dark_vs": "string: #CE9178", + "light_vs": "string: #A31515", + "hc_black": "string: #CE9178" + } + }, + { + "c": "]", + "t": "text.html.markdown meta.paragraph.markdown meta.link.inline.markdown punctuation.definition.string.end.markdown", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "(", + "t": "text.html.markdown meta.paragraph.markdown meta.link.inline.markdown punctuation.definition.metadata.markdown", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "link", + "t": "text.html.markdown meta.paragraph.markdown meta.link.inline.markdown markup.underline.link.markdown", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": ")", + "t": "text.html.markdown meta.paragraph.markdown meta.link.inline.markdown punctuation.definition.metadata.markdown", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "[", + "t": "text.html.markdown meta.paragraph.markdown meta.link.inline.markdown punctuation.definition.string.begin.markdown", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "text", + "t": "text.html.markdown meta.paragraph.markdown meta.link.inline.markdown string.other.link.title.markdown", + "r": { + "dark_plus": "string: #CE9178", + "light_plus": "string: #A31515", + "dark_vs": "string: #CE9178", + "light_vs": "string: #A31515", + "hc_black": "string: #CE9178" + } + }, + { + "c": "]", + "t": "text.html.markdown meta.paragraph.markdown meta.link.inline.markdown punctuation.definition.string.end.markdown", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "(", + "t": "text.html.markdown meta.paragraph.markdown meta.link.inline.markdown punctuation.definition.metadata.markdown", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "<", + "t": "text.html.markdown meta.paragraph.markdown meta.link.inline.markdown punctuation.definition.link.markdown", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "link>", + "t": "text.html.markdown meta.paragraph.markdown meta.link.inline.markdown markup.underline.link.markdown", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": ")", + "t": "text.html.markdown meta.paragraph.markdown meta.link.inline.markdown punctuation.definition.metadata.markdown", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "[", + "t": "text.html.markdown meta.paragraph.markdown meta.link.reference.markdown punctuation.definition.string.begin.markdown", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "title", + "t": "text.html.markdown meta.paragraph.markdown meta.link.reference.markdown string.other.link.title.markdown", + "r": { + "dark_plus": "string: #CE9178", + "light_plus": "string: #A31515", + "dark_vs": "string: #CE9178", + "light_vs": "string: #A31515", + "hc_black": "string: #CE9178" + } + }, + { + "c": "]", + "t": "text.html.markdown meta.paragraph.markdown meta.link.reference.markdown punctuation.definition.string.end.markdown", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "(", + "t": "text.html.markdown meta.paragraph.markdown", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "<", + "t": "text.html.markdown meta.paragraph.markdown meta.link.inline.markdown punctuation.definition.link.markdown", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "path with spaces", + "t": "text.html.markdown meta.paragraph.markdown meta.link.inline.markdown markup.underline.link.markdown", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": ">", + "t": "text.html.markdown meta.paragraph.markdown meta.link.inline.markdown punctuation.definition.link.markdown", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": ")", + "t": "text.html.markdown meta.paragraph.markdown", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + } +] \ No newline at end of file