43 lines
1.1 KiB
VimL
43 lines
1.1 KiB
VimL
setlocal spell
|
|
setlocal textwidth=0
|
|
setlocal syntax=rmd
|
|
setlocal breakat-=@
|
|
|
|
set makeprg=Rscript\ -e\ 'publishR::render(\\"%\\")'
|
|
|
|
" nnoremap <localleader>oh :! xdg-open %:r.html<cr>
|
|
nnoremap <localleader>oh :! xdg-open %:r.html<cr>
|
|
nnoremap <localleader>op :! xdg-open %:r.pdf<cr>
|
|
nnoremap <localleader>ow :! xdg-open %:r.docx<cr>
|
|
|
|
nnoremap <leader>t :TOC<cr>
|
|
|
|
xnoremap <silent> ic :<c-u>call InnerChunk()<cr>
|
|
onoremap <silent> ic :<c-u>call InnerChunk()<cr>
|
|
xnoremap <silent> ac :<c-u>call OuterChunk()<cr>
|
|
onoremap <silent> ac :<c-u>call OuterChunk()<cr>
|
|
|
|
function OuterChunk()
|
|
let chunk = FindChunk()
|
|
execute "normal! " . chunk.start . "GV" . chunk.end . "G"
|
|
endfunction
|
|
|
|
function InnerChunk()
|
|
let chunk = FindChunk()
|
|
execute "normal! " . chunk.start . "GjV" . chunk.end . "Gk"
|
|
endfunction
|
|
|
|
function FindChunk()
|
|
let view = winsaveview()
|
|
normal! j
|
|
?\v^ *```(\{.*\})=$
|
|
let startFence = line(".")
|
|
/\v^ *``` *
|
|
let endFence = line(".")
|
|
if startFence <= view.lnum && endFence >= view.lnum
|
|
return {"start": startFence, "end": endFence}
|
|
else
|
|
echoerr "Not inside a chunk"
|
|
endif
|
|
call winrestview(view)
|
|
endfunction
|