diff options
author | Silvio Rhatto <rhatto@riseup.net> | 2022-02-19 11:13:42 -0300 |
---|---|---|
committer | Silvio Rhatto <rhatto@riseup.net> | 2022-02-19 11:13:42 -0300 |
commit | a73bc730485677289adf80812596c7e4b5a099f5 (patch) | |
tree | a651787a0c1be8884ff32162ca71623ef7d689af | |
parent | b62e7a80f5604209b577b05d6c6326041861fe87 (diff) | |
download | vim-a73bc730485677289adf80812596c7e4b5a099f5.tar.gz vim-a73bc730485677289adf80812596c7e4b5a099f5.tar.bz2 |
Feat: switch markdown syntax file
-rw-r--r-- | README.md | 11 | ||||
-rw-r--r-- | vim.dot.link/syntax/markdown.vim | 184 | ||||
-rw-r--r-- | vim.dot.link/syntax/mkd.vim | 86 |
3 files changed, 193 insertions, 88 deletions
@@ -1,5 +1,12 @@ -Rhatto's VIM dotfiles -===================== +# Rhatto's VIM dotfiles + +## About This is the repository for rhatto's VIM configuration. More information at https://git.fluxo.info/metadot + +## Radar + +Some interesting modules to consider: + +* [GitHub - preservim/vim-markdown: Markdown Vim Mode](https://github.com/preservim/vim-markdown) diff --git a/vim.dot.link/syntax/markdown.vim b/vim.dot.link/syntax/markdown.vim new file mode 100644 index 0000000..96bfbc9 --- /dev/null +++ b/vim.dot.link/syntax/markdown.vim @@ -0,0 +1,184 @@ +" Vim syntax file +" Language: Markdown +" Maintainer: Ben Williams <benw@plasticboy.com> +" URL: http://plasticboy.com/markdown-vim-mode/ +" Remark: Uses HTML syntax file +" TODO: Handle stuff contained within stuff (e.g. headings within blockquotes) + + +" Read the HTML syntax to start with +if v:version < 600 + so <sfile>:p:h/html.vim +else + runtime! syntax/html.vim + + if exists('b:current_syntax') + unlet b:current_syntax + endif +endif + +if v:version < 600 + syntax clear +elseif exists('b:current_syntax') + finish +endif + +" don't use standard HiLink, it will not work with included syntax files +if v:version < 508 + command! -nargs=+ HtmlHiLink hi link <args> +else + command! -nargs=+ HtmlHiLink hi def link <args> +endif + +syn spell toplevel +syn case ignore +syn sync linebreaks=1 + +let s:conceal = '' +let s:concealends = '' +let s:concealcode = '' +if has('conceal') && get(g:, 'vim_markdown_conceal', 1) + let s:conceal = ' conceal' + let s:concealends = ' concealends' +endif +if has('conceal') && get(g:, 'vim_markdown_conceal_code_blocks', 1) + let s:concealcode = ' concealends' +endif + +" additions to HTML groups +if get(g:, 'vim_markdown_emphasis_multiline', 1) + let s:oneline = '' +else + let s:oneline = ' oneline' +endif +syn region mkdItalic matchgroup=mkdItalic start="\%(\*\|_\)" end="\%(\*\|_\)" +syn region mkdBold matchgroup=mkdBold start="\%(\*\*\|__\)" end="\%(\*\*\|__\)" +syn region mkdBoldItalic matchgroup=mkdBoldItalic start="\%(\*\*\*\|___\)" end="\%(\*\*\*\|___\)" +execute 'syn region htmlItalic matchgroup=mkdItalic start="\%(^\|\s\)\zs\*\ze[^\\\*\t ]\%(\%([^*]\|\\\*\|\n\)*[^\\\*\t ]\)\?\*\_W" end="[^\\\*\t ]\zs\*\ze\_W" keepend contains=@Spell' . s:oneline . s:concealends +execute 'syn region htmlItalic matchgroup=mkdItalic start="\%(^\|\s\)\zs_\ze[^\\_\t ]" end="[^\\_\t ]\zs_\ze\_W" keepend contains=@Spell' . s:oneline . s:concealends +execute 'syn region htmlBold matchgroup=mkdBold start="\%(^\|\s\)\zs\*\*\ze\S" end="\S\zs\*\*" keepend contains=@Spell' . s:oneline . s:concealends +execute 'syn region htmlBold matchgroup=mkdBold start="\%(^\|\s\)\zs__\ze\S" end="\S\zs__" keepend contains=@Spell' . s:oneline . s:concealends +execute 'syn region htmlBoldItalic matchgroup=mkdBoldItalic start="\%(^\|\s\)\zs\*\*\*\ze\S" end="\S\zs\*\*\*" keepend contains=@Spell' . s:oneline . s:concealends +execute 'syn region htmlBoldItalic matchgroup=mkdBoldItalic start="\%(^\|\s\)\zs___\ze\S" end="\S\zs___" keepend contains=@Spell' . s:oneline . s:concealends + +" [link](URL) | [link][id] | [link][] | ![image](URL) +syn region mkdFootnotes matchgroup=mkdDelimiter start="\[^" end="\]" +execute 'syn region mkdID matchgroup=mkdDelimiter start="\[" end="\]" contained oneline' . s:conceal +execute 'syn region mkdURL matchgroup=mkdDelimiter start="(" end=")" contained oneline' . s:conceal +execute 'syn region mkdLink matchgroup=mkdDelimiter start="\\\@<!!\?\[\ze[^]\n]*\n\?[^]\n]*\][[(]" end="\]" contains=@mkdNonListItem,@Spell nextgroup=mkdURL,mkdID skipwhite' . s:concealends + +" Autolink without angle brackets. +" mkd inline links: protocol optional user:pass@ sub/domain .com, .co.uk, etc optional port path/querystring/hash fragment +" ------------ _____________________ ----------------------------- _________________________ ----------------- __ +syn match mkdInlineURL /https\?:\/\/\(\w\+\(:\w\+\)\?@\)\?\([A-Za-z0-9][-_0-9A-Za-z]*\.\)\{1,}\(\w\{2,}\.\?\)\{1,}\(:[0-9]\{1,5}\)\?[^] \t]*/ + +" Autolink with parenthesis. +syn region mkdInlineURL matchgroup=mkdDelimiter start="(\(https\?:\/\/\(\w\+\(:\w\+\)\?@\)\?\([A-Za-z0-9][-_0-9A-Za-z]*\.\)\{1,}\(\w\{2,}\.\?\)\{1,}\(:[0-9]\{1,5}\)\?[^] \t]*)\)\@=" end=")" + +" Autolink with angle brackets. +syn region mkdInlineURL matchgroup=mkdDelimiter start="\\\@<!<\ze[a-z][a-z0-9,.-]\{1,22}:\/\/[^> ]*>" end=">" + +" Link definitions: [id]: URL (Optional Title) +syn region mkdLinkDef matchgroup=mkdDelimiter start="^ \{,3}\zs\[\^\@!" end="]:" oneline nextgroup=mkdLinkDefTarget skipwhite +syn region mkdLinkDefTarget start="<\?\zs\S" excludenl end="\ze[>[:space:]\n]" contained nextgroup=mkdLinkTitle,mkdLinkDef skipwhite skipnl oneline +syn region mkdLinkTitle matchgroup=mkdDelimiter start=+"+ end=+"+ contained +syn region mkdLinkTitle matchgroup=mkdDelimiter start=+'+ end=+'+ contained +syn region mkdLinkTitle matchgroup=mkdDelimiter start=+(+ end=+)+ contained + +"HTML headings +syn region htmlH1 matchgroup=mkdHeading start="^\s*#" end="$" contains=mkdLink,mkdInlineURL,@Spell +syn region htmlH2 matchgroup=mkdHeading start="^\s*##" end="$" contains=mkdLink,mkdInlineURL,@Spell +syn region htmlH3 matchgroup=mkdHeading start="^\s*###" end="$" contains=mkdLink,mkdInlineURL,@Spell +syn region htmlH4 matchgroup=mkdHeading start="^\s*####" end="$" contains=mkdLink,mkdInlineURL,@Spell +syn region htmlH5 matchgroup=mkdHeading start="^\s*#####" end="$" contains=mkdLink,mkdInlineURL,@Spell +syn region htmlH6 matchgroup=mkdHeading start="^\s*######" end="$" contains=mkdLink,mkdInlineURL,@Spell +syn match htmlH1 /^.\+\n=\+$/ contains=mkdLink,mkdInlineURL,@Spell +syn match htmlH2 /^.\+\n-\+$/ contains=mkdLink,mkdInlineURL,@Spell + +"define Markdown groups +syn match mkdLineBreak / \+$/ +syn region mkdBlockquote start=/^\s*>/ end=/$/ contains=mkdLink,mkdInlineURL,mkdLineBreak,@Spell +execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!`/ end=/`/' . s:concealcode +execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!``/ skip=/[^`]`[^`]/ end=/``/' . s:concealcode +execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/^\s*\z(`\{3,}\)[^`]*$/ end=/^\s*\z1`*\s*$/' . s:concealcode +execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!\~\~/ end=/\(\([^\\]\|^\)\\\)\@<!\~\~/' . s:concealcode +execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/^\s*\z(\~\{3,}\)\s*[0-9A-Za-z_+-]*\s*$/ end=/^\s*\z1\~*\s*$/' . s:concealcode +execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start="<pre\(\|\_s[^>]*\)\\\@<!>" end="</pre>"' . s:concealcode +execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start="<code\(\|\_s[^>]*\)\\\@<!>" end="</code>"' . s:concealcode +syn region mkdFootnote start="\[^" end="\]" +syn match mkdCode /^\s*\n\(\(\s\{8,}[^ ]\|\t\t\+[^\t]\).*\n\)\+/ +syn match mkdCode /\%^\(\(\s\{4,}[^ ]\|\t\+[^\t]\).*\n\)\+/ +syn match mkdCode /^\s*\n\(\(\s\{4,}[^ ]\|\t\+[^\t]\).*\n\)\+/ contained +syn match mkdListItem /^\s*\%([-*+]\|\d\+\.\)\ze\s\+/ contained +syn region mkdListItemLine start="^\s*\%([-*+]\|\d\+\.\)\s\+" end="$" oneline contains=@mkdNonListItem,mkdListItem,@Spell +syn region mkdNonListItemBlock start="\(\%^\(\s*\([-*+]\|\d\+\.\)\s\+\)\@!\|\n\(\_^\_$\|\s\{4,}[^ ]\|\t+[^\t]\)\@!\)" end="^\(\s*\([-*+]\|\d\+\.\)\s\+\)\@=" contains=@mkdNonListItem,@Spell +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\)*$/ + +" YAML frontmatter +if get(g:, 'vim_markdown_frontmatter', 0) + syn include @yamlTop syntax/yaml.vim + syn region Comment matchgroup=mkdDelimiter start="\%^---$" end="^\(---\|\.\.\.\)$" contains=@yamlTop keepend + unlet! b:current_syntax +endif + +if get(g:, 'vim_markdown_toml_frontmatter', 0) + try + syn include @tomlTop syntax/toml.vim + syn region Comment matchgroup=mkdDelimiter start="\%^+++$" end="^+++$" transparent contains=@tomlTop keepend + unlet! b:current_syntax + catch /E484/ + syn region Comment matchgroup=mkdDelimiter start="\%^+++$" end="^+++$" + endtry +endif + +if get(g:, 'vim_markdown_json_frontmatter', 0) + try + syn include @jsonTop syntax/json.vim + syn region Comment matchgroup=mkdDelimiter start="\%^{$" end="^}$" contains=@jsonTop keepend + unlet! b:current_syntax + catch /E484/ + syn region Comment matchgroup=mkdDelimiter start="\%^{$" end="^}$" + endtry +endif + +if get(g:, 'vim_markdown_math', 0) + syn include @tex syntax/tex.vim + syn region mkdMath start="\\\@<!\$" end="\$" skip="\\\$" contains=@tex keepend + syn region mkdMath start="\\\@<!\$\$" end="\$\$" skip="\\\$" contains=@tex keepend +endif + +" Strike through +if get(g:, 'vim_markdown_strikethrough', 0) + execute 'syn region mkdStrike matchgroup=htmlStrike start="\%(\~\~\)" end="\%(\~\~\)"' . s:concealends + HtmlHiLink mkdStrike htmlStrike +endif + +syn cluster mkdNonListItem contains=@htmlTop,htmlItalic,htmlBold,htmlBoldItalic,mkdFootnotes,mkdInlineURL,mkdLink,mkdLinkDef,mkdLineBreak,mkdBlockquote,mkdCode,mkdRule,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6,mkdMath,mkdStrike + +"highlighting for Markdown groups +HtmlHiLink mkdString String +HtmlHiLink mkdCode String +HtmlHiLink mkdCodeDelimiter String +HtmlHiLink mkdCodeStart String +HtmlHiLink mkdCodeEnd String +HtmlHiLink mkdFootnote Comment +HtmlHiLink mkdBlockquote Comment +HtmlHiLink mkdListItem Identifier +HtmlHiLink mkdRule Identifier +HtmlHiLink mkdLineBreak Visual +HtmlHiLink mkdFootnotes htmlLink +HtmlHiLink mkdLink htmlLink +HtmlHiLink mkdURL htmlString +HtmlHiLink mkdInlineURL htmlLink +HtmlHiLink mkdID Identifier +HtmlHiLink mkdLinkDef mkdID +HtmlHiLink mkdLinkDefTarget mkdURL +HtmlHiLink mkdLinkTitle htmlString +HtmlHiLink mkdDelimiter Delimiter + +let b:current_syntax = 'mkd' + +delcommand HtmlHiLink +" vim: ts=8 diff --git a/vim.dot.link/syntax/mkd.vim b/vim.dot.link/syntax/mkd.vim deleted file mode 100644 index 6c23415..0000000 --- a/vim.dot.link/syntax/mkd.vim +++ /dev/null @@ -1,86 +0,0 @@ -" Vim syntax file -" Language: Markdown -" Maintainer: Ben Williams <benw@plasticboy.com> -" URL: http://plasticboy.com/markdown-vim-mode/ -" Version: 8 -" Last Change: 2008 April 29 -" Remark: Uses HTML syntax file -" Remark: I don't do anything with angle brackets (<>) because that would too easily -" easily conflict with HTML syntax -" TODO: Do something appropriate with image syntax -" TODO: Handle stuff contained within stuff (e.g. headings within blockquotes) - - -" Read the HTML syntax to start with -if version < 600 - so <sfile>:p:h/html.vim -else - runtime! syntax/html.vim - unlet b:current_syntax -endif - -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" don't use standard HiLink, it will not work with included syntax files -if version < 508 - command! -nargs=+ HtmlHiLink hi link <args> -else - command! -nargs=+ HtmlHiLink hi def link <args> -endif - -syn spell toplevel -syn case ignore -syn sync linebreaks=1 - -"additions to HTML groups -syn region htmlBold start=/\(^\|\s\)\*\@<!\*\*\*\@!/ end=/\*\@<!\*\*\*\@!\($\|\s\)/ contains=@Spell,htmlItalic -syn region htmlItalic start=/\(^\|\s\)\*\@<!\*\*\@!/ end=/\*\@<!\*\*\@!\($\|\s\)/ contains=htmlBold,@Spell -syn region htmlBold start=/\(^\|\s\)_\@<!___\@!/ end=/_\@<!___\@!\($\|\s\)/ contains=htmlItalic,@Spell -syn region htmlItalic start=/\(^\|\s\)_\@<!__\@!/ end=/_\@<!__\@!\($\|\s\)/ contains=htmlBold,@Spell -syn region htmlString start="]("ms=s+2 end=")"me=e-1 -syn region htmlLink start="\["ms=s+1 end="\]"me=e-1 contains=@Spell -syn region htmlString start="\(\[.*]: *\)\@<=.*" end="$" - -"define Markdown groups -syn match mkdLineContinue ".$" contained -syn match mkdRule /^\s*\*\s\{0,1}\*\s\{0,1}\*$/ -syn match mkdRule /^\s*-\s\{0,1}-\s\{0,1}-$/ -syn match mkdRule /^\s*_\s\{0,1}_\s\{0,1}_$/ -syn match mkdRule /^\s*-\{3,}$/ -syn match mkdRule /^\s*\*\{3,5}$/ -syn match mkdListItem "^\s*[-*+]\s\+" -syn match mkdListItem "^\s*\d\+\.\s\+" -syn match mkdCode /^\s*\n\(\(\s\{4,}\|[\t]\+\)[^*-+ ].*\n\)\+/ -syn region mkdCode start=/`/ end=/`/ -syn region mkdCode start=/\s*``[^`]*/ end=/[^`]*``\s*/ -syn region mkdBlockquote start=/^\s*>/ end=/$/ contains=mkdLineContinue,@Spell -syn region mkdCode start="<pre[^>]*>" end="</pre>" -syn region mkdCode start="<code[^>]*>" end="</code>" - -"HTML headings -syn region htmlH1 start="^\s*#" end="\($\|#\+\)" contains=@Spell -syn region htmlH2 start="^\s*##" end="\($\|#\+\)" contains=@Spell -syn region htmlH3 start="^\s*###" end="\($\|#\+\)" contains=@Spell -syn region htmlH4 start="^\s*####" end="\($\|#\+\)" contains=@Spell -syn region htmlH5 start="^\s*#####" end="\($\|#\+\)" contains=@Spell -syn region htmlH6 start="^\s*######" end="\($\|#\+\)" contains=@Spell -syn match htmlH1 /^.\+\n=\+$/ contains=@Spell -syn match htmlH2 /^.\+\n-\+$/ contains=@Spell - -"highlighting for Markdown groups -HtmlHiLink mkdString String -HtmlHiLink mkdCode String -HtmlHiLink mkdBlockquote Comment -HtmlHiLink mkdLineContinue Comment -HtmlHiLink mkdListItem Identifier -HtmlHiLink mkdRule Identifier - - -let b:current_syntax = "mkd" - -delcommand HtmlHiLink -" vim: ts=8 |