blob: 74b920f19acdaa8c91729030529fe43c8a525a5d [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
Christian Brabandtf9ca1392024-02-19 20:37:11 +01005" Last Change: 2023 May 29 06:31AM
Doug Kearns93197fd2024-01-14 20:59:02 +01006" 2024 Jan 14 by Vim Project (browsefilter)
Bram Moolenaare4a3bcf2016-08-26 19:52:37 +02007" Original work by Alex Zvoleff (adjusted from R help for rmd by Michel Kuhlmann)
Bram Moolenaardb6ea062014-07-10 22:01:47 +02008
9" Only do this when not yet done for this buffer
10if exists("b:did_ftplugin")
11 finish
12endif
13
Bram Moolenaarfc65cab2018-08-28 22:58:02 +020014if exists('g:rmd_include_html') && g:rmd_include_html
15 runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
Bram Moolenaare4a3bcf2016-08-26 19:52:37 +020016endif
17
Bram Moolenaarfc65cab2018-08-28 22:58:02 +020018setlocal comments=fb:*,fb:-,fb:+,n:>
19setlocal commentstring=#\ %s
Bram Moolenaardb6ea062014-07-10 22:01:47 +020020setlocal formatoptions+=tcqln
21setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^\\s*[-*+]\\s\\+
22setlocal iskeyword=@,48-57,_,.
23
24let s:cpo_save = &cpo
25set cpo&vim
26
Bram Moolenaar71badf92023-04-22 22:40:14 +010027function FormatRmd()
Bram Moolenaarfc65cab2018-08-28 22:58:02 +020028 if search("^[ \t]*```[ ]*{r", "bncW") > search("^[ \t]*```$", "bncW")
29 setlocal comments=:#',:###,:##,:#
30 else
31 setlocal comments=fb:*,fb:-,fb:+,n:>
32 endif
33 return 1
34endfunction
35
Jakson Alves de Aquino34745942023-09-27 13:56:02 -030036let s:last_line = 0
Bram Moolenaar71badf92023-04-22 22:40:14 +010037function SetRmdCommentStr()
Jakson Alves de Aquino34745942023-09-27 13:56:02 -030038 if line('.') == s:last_line
39 return
40 endif
41 let s:last_line = line('.')
42
43 if (search("^[ \t]*```[ ]*{r", "bncW") > search("^[ \t]*```$", "bncW")) || ((search('^---$', 'Wn') || search('^\.\.\.$', 'Wn')) && search('^---$', 'bnW'))
44 set commentstring=#\ %s
45 else
46 set commentstring=<!--\ %s\ -->
47 endif
Bram Moolenaardd60c362023-02-27 15:49:53 +000048endfunction
49
50" If you do not want both 'comments' and 'commentstring' dynamically defined,
51" put in your vimrc: let g:rmd_dynamic_comments = 0
Bram Moolenaarfc65cab2018-08-28 22:58:02 +020052if !exists("g:rmd_dynamic_comments") || (exists("g:rmd_dynamic_comments") && g:rmd_dynamic_comments == 1)
53 setlocal formatexpr=FormatRmd()
Bram Moolenaardd60c362023-02-27 15:49:53 +000054 augroup RmdCStr
55 autocmd!
56 autocmd CursorMoved <buffer> call SetRmdCommentStr()
57 augroup END
Bram Moolenaarfc65cab2018-08-28 22:58:02 +020058endif
59
Bram Moolenaardb6ea062014-07-10 22:01:47 +020060" Enables pandoc if it is installed
61unlet! b:did_ftplugin
62runtime ftplugin/pandoc.vim
63
64" Don't load another plugin for this buffer
65let b:did_ftplugin = 1
66
Bram Moolenaar11e3c5b2021-04-21 18:09:37 +020067if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
Doug Kearns93197fd2024-01-14 20:59:02 +010068 let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst *.qmd)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst;*.qmd\n"
69 if has("win32")
70 let b:browsefilter .= "All Files (*.*)\t*\n"
71 else
72 let b:browsefilter .= "All Files (*)\t*\n"
73 endif
Bram Moolenaardb6ea062014-07-10 22:01:47 +020074endif
75
76if exists('b:undo_ftplugin')
77 let b:undo_ftplugin .= " | setl cms< com< fo< flp< isk< | unlet! b:browsefilter"
78else
79 let b:undo_ftplugin = "setl cms< com< fo< flp< isk< | unlet! b:browsefilter"
80endif
81
82let &cpo = s:cpo_save
83unlet s:cpo_save
84
85" vim: sw=2