Extend sandwich for cloze notes
							parent
							
								
									c4d2fa498c
								
							
						
					
					
						commit
						e0a71363b4
					
				| 
						 | 
				
			
			@ -0,0 +1,50 @@
 | 
			
		|||
function GetClozeNumber()
 | 
			
		||||
 | 
			
		||||
  " let REGEX_CLOZE_NOTE_START = 'START\nCloze\n'
 | 
			
		||||
  " " Backwards search for Cloze note start from cursor position
 | 
			
		||||
  " let cloze_note_start = searchpos(REGEX_CLOZE_NOTE_START, 'bnW', line("gg"))
 | 
			
		||||
  " if max(cloze_note_start) != 0
 | 
			
		||||
  " " Part of a cloze note
 | 
			
		||||
  "   ...
 | 
			
		||||
  " else
 | 
			
		||||
  "   " Not part of a cloze note
 | 
			
		||||
  "   return 1
 | 
			
		||||
  " endif
 | 
			
		||||
 | 
			
		||||
  let REGEX_CLOZE_START = '{{c\d\+::'
 | 
			
		||||
 | 
			
		||||
  let saved_cursor = getcurpos()[1:-1]
 | 
			
		||||
 | 
			
		||||
  call cursor(saved_cursor)
 | 
			
		||||
  " 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
 | 
			
		||||
      \   }
 | 
			
		||||
      \ ]
 | 
			
		||||
		Loading…
	
		Reference in New Issue