blob: 355b88f04a25f320e6bdb29d34045a0a0017807f [file] [log] [blame]
Bram Moolenaardb6ea062014-07-10 22:01:47 +02001" Vim filetype plugin file
Bram Moolenaare4a3bcf2016-08-26 19:52:37 +02002" Language: R Markdown file
Bram Moolenaardb6ea062014-07-10 22:01:47 +02003" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com>
Bram Moolenaar77cdfd12016-03-12 12:57:59 +01004" Homepage: https://github.com/jalvesaq/R-Vim-runtime
Bram Moolenaardd60c362023-02-27 15:49:53 +00005" Last Change: Sun Apr 24, 2022 09:12AM
Bram Moolenaare4a3bcf2016-08-26 19:52:37 +02006" Original work by Alex Zvoleff (adjusted from R help for rmd by Michel Kuhlmann)
Bram Moolenaardb6ea062014-07-10 22:01:47 +02007
8" Only do this when not yet done for this buffer
9if exists("b:did_ftplugin")
10 finish
11endif
12
Bram Moolenaarfc65cab2018-08-28 22:58:02 +020013if exists('g:rmd_include_html') && g:rmd_include_html
14 runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
Bram Moolenaare4a3bcf2016-08-26 19:52:37 +020015endif
16
Bram Moolenaarfc65cab2018-08-28 22:58:02 +020017setlocal comments=fb:*,fb:-,fb:+,n:>
18setlocal commentstring=#\ %s
Bram Moolenaardb6ea062014-07-10 22:01:47 +020019setlocal formatoptions+=tcqln
20setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^\\s*[-*+]\\s\\+
21setlocal iskeyword=@,48-57,_,.
22
23let s:cpo_save = &cpo
24set cpo&vim
25
Bram Moolenaarfc65cab2018-08-28 22:58:02 +020026function! FormatRmd()
27 if search("^[ \t]*```[ ]*{r", "bncW") > search("^[ \t]*```$", "bncW")
28 setlocal comments=:#',:###,:##,:#
29 else
30 setlocal comments=fb:*,fb:-,fb:+,n:>
31 endif
32 return 1
33endfunction
34
Bram Moolenaardd60c362023-02-27 15:49:53 +000035function! SetRmdCommentStr()
36 if (search("^[ \t]*```[ ]*{r", "bncW") > search("^[ \t]*```$", "bncW")) || ((search('^---$', 'Wn') || search('^\.\.\.$', 'Wn')) && search('^---$', 'bnW'))
37 set commentstring=#\ %s
38 else
39 set commentstring=<!--\ %s\ -->
40 endif
41endfunction
42
43" If you do not want both 'comments' and 'commentstring' dynamically defined,
44" put in your vimrc: let g:rmd_dynamic_comments = 0
Bram Moolenaarfc65cab2018-08-28 22:58:02 +020045if !exists("g:rmd_dynamic_comments") || (exists("g:rmd_dynamic_comments") && g:rmd_dynamic_comments == 1)
46 setlocal formatexpr=FormatRmd()
Bram Moolenaardd60c362023-02-27 15:49:53 +000047 augroup RmdCStr
48 autocmd!
49 autocmd CursorMoved <buffer> call SetRmdCommentStr()
50 augroup END
Bram Moolenaarfc65cab2018-08-28 22:58:02 +020051endif
52
Bram Moolenaardb6ea062014-07-10 22:01:47 +020053" Enables pandoc if it is installed
54unlet! b:did_ftplugin
55runtime ftplugin/pandoc.vim
56
57" Don't load another plugin for this buffer
58let b:did_ftplugin = 1
59
Bram Moolenaar11e3c5b2021-04-21 18:09:37 +020060if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
Bram Moolenaardd60c362023-02-27 15:49:53 +000061 let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst *.qmd)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst;*.qmd\n" .
Bram Moolenaardb6ea062014-07-10 22:01:47 +020062 \ "All Files (*.*)\t*.*\n"
63endif
64
65if exists('b:undo_ftplugin')
66 let b:undo_ftplugin .= " | setl cms< com< fo< flp< isk< | unlet! b:browsefilter"
67else
68 let b:undo_ftplugin = "setl cms< com< fo< flp< isk< | unlet! b:browsefilter"
69endif
70
71let &cpo = s:cpo_save
72unlet s:cpo_save
73
74" vim: sw=2