| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- " vim: set fdm=marker et ts=4 sw=4 sts=4:
- "
- " functions to handle sections not handled by headers.vim
- "
- function! markdown#sections#CurrentEndSection(...) abort
- if a:0 > 0
- return markdown#sections#NextEndSection(1, a:1)
- else
- return markdown#sections#NextEndSection(1)
- endif
- endfunction
- function! markdown#sections#NextEndSection(stop_at_current, ...) abort
- let origin_pos = getpos('.')
- if a:0 > 0
- let search_from = [0, a:1, 1, 0]
- else
- let search_from = getpos('.')
- endif
- call cursor(search_from[1], 2)
- let next_sect_start = markdown#headers#NextHeader(search_from[1])
- if synIDattr(synID(line('.')+1, 1, 0), 'name') !~#
- \'pandoc\(SetexHeader\|AtxStart\)'
- let lnum = next_sect_start - 1
- else
- if a:stop_at_current == 1
- let lnum = search_from[1]
- else
- let lnum = markdown#headers#NextHeader(next_sect_start) - 1
- endif
- endif
- call cursor(origin_pos[1], origin_pos[2])
- return lnum
- endfunction
- function! markdown#sections#PrevEndSection(...) abort
- let origin_pos = getpos('.')
- if a:0 > 0
- let search_from = [0, a:1, 1, 0]
- else
- let search_from = getpos('.')
- endif
- call cursor(search_from[1], 2)
- if search_from[1] != markdown#headers#CurrentHeader(search_from[1])
- let lnum = markdown#headers#PrevHeader(search_from[1]) - 1
- else
- let lnum = search_from[1] - 1
- endif
- call cursor(origin_pos[1], origin_pos[2])
- return lnum
- endfunction
- function! markdown#sections#SectionRange(mode, ...) abort
- let c_header = markdown#headers#CurrentHeader()
- if c_header == 0
- let start = 1
- else
- if a:mode ==# 'inclusive'
- let start = c_header
- elseif a:mode ==# 'exclusive'
- let start = c_header + 1
- endif
- endif
- let n_sibling_header = markdown#headers#NextSiblingHeader()
- if n_sibling_header == 0
- let n_header = markdown#headers#NextHeader()
- if n_header == 0 || n_header == line('.')
- let end = line('$')
- else
- let end = n_header - 1
- endif
- else
- let end = n_sibling_header - 1
- endif
- return [start, end]
- endfunction
|