SidOfc/mkdx

[Feature request] Highlight code inside code block

Mayrixon opened this issue · 1 comments

Hello, I'm wondering if it is the design philosophy that it doesn't provide code highlighting inside code blocks. If it's not, is that possible to provide code highlighting?

As I know, both plugin tpope/vim-markdown and plugin plasticboy/vim-markdown provide code highlighting. Besides, Typora, a famous markdown editor, also provides code highlighting.

If you are concerning about the disruption of highlighting codes, here is a solution I'm using. I added the following snippet into my vim configuration, which is from tpope/vim-markdown.

let g:markdown_fenced_languages = ['python', 'rust']

if !exists('g:markdown_fenced_languages')
  let g:markdown_fenced_languages = []
endif
let s:done_include = {}
for s:type in map(copy(g:markdown_fenced_languages),'matchstr(v:val,"[^=]*$")')
  if has_key(s:done_include, matchstr(s:type,'[^.]*'))
    continue
  endif
  if s:type =~ '\.'
    let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*')
  endif
  exe 'syn include @markdownHighlight'.substitute(s:type,'\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim'
  unlet! b:current_syntax
  let s:done_include[matchstr(s:type,'[^.]*')] = 1
endfor
unlet! s:type
unlet! s:done_include

Hi @Mayrixon, it is because mkdx does not need to implement this. You can enable this by setting let g:markdown_fenced_languages in your .vimrc already. Mkdx does not replace the default markdown files (vim-markdown) but rather, adds more functionality on top of what it already offers.

To enable python and rust highlighting you only need:

let g:markdown_fenced_languages = ['python', 'rust']

You can get rid of the rest of the code since vim-markdown already handles it internally. I'll close this issue for now, let me know if you encounter any issues.

EDIT

Keep in mind that on large files this can slow down vim quite a bit, this is not something I can fix or improve through mkdx.