blob: a407c236dd9801ef414142e938fb0fbffd896b1b [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
Jakson Alves de Aquino34745942023-09-27 13:56:02 -03005" Last Change: Mon May 29, 2023 06:31AM
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 Moolenaar71badf92023-04-22 22:40:14 +010026function FormatRmd()
Bram Moolenaarfc65cab2018-08-28 22:58:02 +020027 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
Jakson Alves de Aquino34745942023-09-27 13:56:02 -030035let s:last_line = 0
Bram Moolenaar71badf92023-04-22 22:40:14 +010036function SetRmdCommentStr()
Jakson Alves de Aquino34745942023-09-27 13:56:02 -030037 if line('.') == s:last_line
38 return
39 endif
40 let s:last_line = line('.')
41
42 if (search("^[ \t]*```[ ]*{r", "bncW") > search("^[ \t]*```$", "bncW")) || ((search('^---$', 'Wn') || search('^\.\.\.$', 'Wn')) && search('^---$', 'bnW'))
43 set commentstring=#\ %s
44 else
45 set commentstring=<!--\ %s\ -->
46 endif
Bram Moolenaardd60c362023-02-27 15:49:53 +000047endfunction
48
49" If you do not want both 'comments' and 'commentstring' dynamically defined,
50" put in your vimrc: let g:rmd_dynamic_comments = 0
Bram Moolenaarfc65cab2018-08-28 22:58:02 +020051if !exists("g:rmd_dynamic_comments") || (exists("g:rmd_dynamic_comments") && g:rmd_dynamic_comments == 1)
52 setlocal formatexpr=FormatRmd()
Bram Moolenaardd60c362023-02-27 15:49:53 +000053 augroup RmdCStr
54 autocmd!
55 autocmd CursorMoved <buffer> call SetRmdCommentStr()
56 augroup END
Bram Moolenaarfc65cab2018-08-28 22:58:02 +020057endif
58
Bram Moolenaardb6ea062014-07-10 22:01:47 +020059" Enables pandoc if it is installed
60unlet! b:did_ftplugin
61runtime ftplugin/pandoc.vim
62
63" Don't load another plugin for this buffer
64let b:did_ftplugin = 1
65
Bram Moolenaar11e3c5b2021-04-21 18:09:37 +020066if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
Bram Moolenaardd60c362023-02-27 15:49:53 +000067 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 +020068 \ "All Files (*.*)\t*.*\n"
69endif
70
71if exists('b:undo_ftplugin')
72 let b:undo_ftplugin .= " | setl cms< com< fo< flp< isk< | unlet! b:browsefilter"
73else
74 let b:undo_ftplugin = "setl cms< com< fo< flp< isk< | unlet! b:browsefilter"
75endif
76
77let &cpo = s:cpo_save
78unlet s:cpo_save
79
80" vim: sw=2