dots/.vim/after/ftplugin/pandoc/sandwich.vim

36 lines
938 B
VimL
Raw Normal View History

2022-08-20 10:40:06 +02:00
function GetClozeNumber()
let REGEX_CLOZE_START = '{{c\d\+::'
" Find previous cloze match
let prev_match = searchpos(REGEX_CLOZE_START, 'bW', line("gg"))
" Only get number if cloze was matched (i.e. when cursor does not end up at
" start of file)
if max(prev_match) != 0
" Get word under cursor (ignoring curly braces and `::`),
" get the second character of the word and cast it to an int
" add one for the next cloze number
return str2nr(expand("<cword>")[1]) + 1
else
return 1
endif
endfunction
" Wrap the next cloze number
function GetClozeStart()
return "{{c" . GetClozeNumber() . "::"
endfunction
function GetClozeEnd()
return "}}"
endfunction
let g:sandwich#recipes += [
\ {
\ 'buns': ['GetClozeStart()', 'GetClozeEnd()'],
\ 'expr' : 1,
\ 'filetype': ['pandoc'],
\ 'input': ['c'],
\ 'nesting': 1
\ }
\ ]