]>
git.madduck.net Git - etc/vim.git/blobdiff - .vim/bundle/vim-markdown/after/ftplugin/markdown.vim
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@ git. madduck. net .
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
function! s:is_mkdCode(lnum)
let name = synIDattr(synID(a:lnum, 1, 0), 'name')
function! s:is_mkdCode(lnum)
let name = synIDattr(synID(a:lnum, 1, 0), 'name')
- return (name =~ '^mkd\%(Code$\|Snippet\)' || name != '' && name !~ '^\%(mkd\|html\)')
+ return (name =~# '^mkd\%(Code$\|Snippet\)' || name !=# '' && name !~? '^\%(mkd\|html\)')
-if get(g:, "vim_markdown_folding_style_pythonic" , 0)
+if get(g:, 'vim_markdown_folding_style_pythonic' , 0)
function! Foldexpr_markdown(lnum)
function! Foldexpr_markdown(lnum)
+ if (a:lnum == 1)
+ let b:fence_str = ''
+ endif
+
let l1 = getline(a:lnum)
"~~~~~ keep track of fenced code blocks ~~~~~
"If we hit a code block fence
let l1 = getline(a:lnum)
"~~~~~ keep track of fenced code blocks ~~~~~
"If we hit a code block fence
- if l1 =~ '````*' || l1 =~ '\~\~\~\~* '
+ if l1 =~# '\v^[[:space:]>]*\v(`{3,}|\~{3,})\s*(\w+)?\s*$ '
" toggle the variable that says if we're in a code block
if b:fenced_block == 0
let b:fenced_block = 1
" toggle the variable that says if we're in a code block
if b:fenced_block == 0
let b:fenced_block = 1
- elseif b:fenced_block == 1
+ let b:fence_str = matchstr(l1, '\v(`{3,}|\~{3,})')
+ elseif b:fenced_block == 1 && matchstr(l1, '\v(`{3,}|\~{3,})') ==# b:fence_str
endif
" else, if we're caring about front matter
endif
" else, if we're caring about front matter
- elseif g:vim_markdown_frontmatter == 1
+ elseif get(g:, 'vim_markdown_frontmatter', 0) == 1
" if we're in front matter and not on line 1
if b:front_matter == 1 && a:lnum > 2
let l0 = getline(a:lnum-1)
" if the previous line fenced front matter
" if we're in front matter and not on line 1
if b:front_matter == 1 && a:lnum > 2
let l0 = getline(a:lnum-1)
" if the previous line fenced front matter
" we must not be in front matter
let b:front_matter = 0
endif
" else, if we're on line one
elseif a:lnum == 1
" if we hit a front matter fence
" we must not be in front matter
let b:front_matter = 0
endif
" else, if we're on line one
elseif a:lnum == 1
" if we hit a front matter fence
" we're in the front matter
let b:front_matter = 1
endif
" we're in the front matter
let b:front_matter = 1
endif
endif
" if we're in a code block or front matter
endif
" if we're in a code block or front matter
- if b:fenced_block == 1 || b:front_matter == 1
- if a:lnum == 1
+ if b:fenced_block ==# 1 || b:front_matter ==# 1
+ if a:lnum ==# 1
" fold any 'preamble'
return '>1'
else
" fold any 'preamble'
return '>1'
else
let l2 = getline(a:lnum+1)
" if the next line starts with two or more '='
" and is not code
let l2 = getline(a:lnum+1)
" if the next line starts with two or more '='
" and is not code
- if l2 =~ '^==\+\s*' && !s:is_mkdCode(a:lnum+1)
+ if l2 =~# '^==\+\s*' && !s:is_mkdCode(a:lnum+1)
" next line is underlined (level 1)
return '>0'
" else, if the nex line starts with two or more '-'
" next line is underlined (level 1)
return '>0'
" else, if the nex line starts with two or more '-'
+ " but is not comment closer (-->)
- elseif l2 =~ '^--\+\s* ' && !s:is_mkdCode(a:lnum+1)
+ elseif l2 =~# '^--\+\s*$ ' && !s:is_mkdCode(a:lnum+1)
" next line is underlined (level 2)
return '>1'
endif
"if we're on a non-code line starting with a pound sign
" next line is underlined (level 2)
return '>1'
endif
"if we're on a non-code line starting with a pound sign
- if l1 =~ '^#' && !s:is_mkdCode(a:lnum)
+ if l1 =~# '^#' && !s:is_mkdCode(a:lnum)
" set the fold level to the number of hashes -1
" return '>'.(matchend(l1, '^#\+') - 1)
" set the fold level to the number of hashes
" set the fold level to the number of hashes -1
" return '>'.(matchend(l1, '^#\+') - 1)
" set the fold level to the number of hashes
function! Foldtext_markdown()
let line = getline(v:foldstart)
let has_numbers = &number || &relativenumber
function! Foldtext_markdown()
let line = getline(v:foldstart)
let has_numbers = &number || &relativenumber
- let nucolwidth = &fdc + has_numbers * &numberwidth
+ let nucolwidth = &foldcolumn + has_numbers * &numberwidth
let windowwidth = winwidth(0) - nucolwidth - 6
let foldedlinecount = v:foldend - v:foldstart
let line = strpart(line, 0, windowwidth - 2 -len(foldedlinecount))
let line = substitute(line, '\%("""\|''''''\)', '', '')
let fillcharcount = windowwidth - len(line) - len(foldedlinecount) + 1
let windowwidth = winwidth(0) - nucolwidth - 6
let foldedlinecount = v:foldend - v:foldstart
let line = strpart(line, 0, windowwidth - 2 -len(foldedlinecount))
let line = substitute(line, '\%("""\|''''''\)', '', '')
let fillcharcount = windowwidth - len(line) - len(foldedlinecount) + 1
- return line . ' ' . repeat("-" , fillcharcount) . ' ' . foldedlinecount
+ return line . ' ' . repeat('-' , fillcharcount) . ' ' . foldedlinecount
endfunction
else " vim_markdown_folding_style_pythonic == 0
function! Foldexpr_markdown(lnum)
if (a:lnum == 1)
let l0 = ''
endfunction
else " vim_markdown_folding_style_pythonic == 0
function! Foldexpr_markdown(lnum)
if (a:lnum == 1)
let l0 = ''
else
let l0 = getline(a:lnum-1)
endif
" keep track of fenced code blocks
else
let l0 = getline(a:lnum-1)
endif
" keep track of fenced code blocks
- if l0 =~ '````*' || l0 =~ '\~\~\~\~* '
+ if l0 =~# '\v^[[:space:]>]*\v(`{3,}|\~{3,})\s*(\w+)?\s*$ '
if b:fenced_block == 0
let b:fenced_block = 1
if b:fenced_block == 0
let b:fenced_block = 1
- elseif b:fenced_block == 1
+ let b:fence_str = matchstr(l0, '\v(`{3,}|\~{3,})')
+ elseif b:fenced_block == 1 && matchstr(l0, '\v(`{3,}|\~{3,})') ==# b:fence_str
- elseif g:vim_markdown_frontmatter == 1
+ elseif get(g:, 'vim_markdown_frontmatter', 0) == 1
let b:front_matter = 0
endif
elseif a:lnum == 2
let b:front_matter = 0
endif
elseif a:lnum == 2
let b:front_matter = 1
endif
endif
let b:front_matter = 1
endif
endif
endif
let l2 = getline(a:lnum+1)
endif
let l2 = getline(a:lnum+1)
- if l2 =~ '^==\+\s*' && !s:is_mkdCode(a:lnum+1)
+ if l2 =~# '^==\+\s*' && !s:is_mkdCode(a:lnum+1)
" next line is underlined (level 1)
return '>1'
" next line is underlined (level 1)
return '>1'
- elseif l2 =~ '^--\+\s* ' && !s:is_mkdCode(a:lnum+1)
+ elseif l2 =~# '^--\+\s*$ ' && !s:is_mkdCode(a:lnum+1)
" next line is underlined (level 2)
if s:vim_markdown_folding_level >= 2
return '>1'
" next line is underlined (level 2)
if s:vim_markdown_folding_level >= 2
return '>1'
endif
let l1 = getline(a:lnum)
endif
let l1 = getline(a:lnum)
- if l1 =~ '^#' && !s:is_mkdCode(a:lnum)
+ if l1 =~# '^#' && !s:is_mkdCode(a:lnum)
" fold level according to option
if s:vim_markdown_folding_level == 1 || matchend(l1, '^#\+') > s:vim_markdown_folding_level
if a:lnum == line('$')
" fold level according to option
if s:vim_markdown_folding_level == 1 || matchend(l1, '^#\+') > s:vim_markdown_folding_level
if a:lnum == line('$')
- if l0 =~ '^#' && !s:is_mkdCode(a:lnum-1)
+ if l0 =~# '^#' && !s:is_mkdCode(a:lnum-1)
" previous line starts with hashes
return '>'.matchend(l0, '^#\+')
else
" previous line starts with hashes
return '>'.matchend(l0, '^#\+')
else
let b:fenced_block = 0
let b:front_matter = 0
let b:fenced_block = 0
let b:front_matter = 0
-let s:vim_markdown_folding_level = get(g:, "vim_markdown_folding_level" , 1)
+let s:vim_markdown_folding_level = get(g:, 'vim_markdown_folding_level' , 1)
function! s:MarkdownSetupFolding()
function! s:MarkdownSetupFolding()
- if !get(g:, "vim_markdown_folding_disabled" , 0)
- if get(g:, "vim_markdown_folding_style_pythonic" , 0)
- if get(g:, "vim_markdown_override_foldtext" , 1)
+ if !get(g:, 'vim_markdown_folding_disabled' , 0)
+ if get(g:, 'vim_markdown_folding_style_pythonic' , 0)
+ if get(g:, 'vim_markdown_override_foldtext' , 1)
setlocal foldtext=Foldtext_markdown()
endif
endif
setlocal foldtext=Foldtext_markdown()
endif
endif
endfunction
function! s:MarkdownSetupFoldLevel()
endfunction
function! s:MarkdownSetupFoldLevel()
- if get(g:, "vim_markdown_folding_style_pythonic" , 0)
+ if get(g:, 'vim_markdown_folding_style_pythonic' , 0)
- execute "setlocal foldlevel=" .s:vim_markdown_folding_level
+ execute 'setlocal foldlevel=' .s:vim_markdown_folding_level