mirror of
https://github.com/neovim/neovim.git
synced 2024-12-19 18:55:14 -07:00
vim-patch:9042bd8b09ba
runtime(r): Update R runtime files and docs (vim/vim#13757)
* Update R runtime files
- Fix indentation issue with ggplot().
- Setlocal autoindent in indent/r.vim.
- New syntax option: rmd_include_latex.
- Clear syn iskeyword to recognize _ as keyword.
- Document some options.
- remove the test has("patch-7.4.1142")
- Update changed date of doc files
9042bd8b09
Co-authored-by: Jakson Alves de Aquino <jalvesaq@gmail.com>
This commit is contained in:
parent
6c35fb421e
commit
8492a84bfd
@ -735,6 +735,14 @@ To enable this behavior, set the following variable in your vimrc: >
|
||||
let g:rst_style = 1
|
||||
|
||||
|
||||
RNOWEB *ft-rnoweb-plugin*
|
||||
|
||||
The 'formatexpr' option is set dynamically with different values for R code
|
||||
and for LaTeX code. If you prefer that 'formatexpr' is not set, add to your
|
||||
|vimrc|: >
|
||||
let rnw_dynamic_comments = 0
|
||||
|
||||
|
||||
RPM SPEC *ft-spec-plugin*
|
||||
|
||||
Since the text for this plugin is rather long it has been put in a separate
|
||||
|
@ -1031,8 +1031,8 @@ r_indent_comment_column, as in the example below:
|
||||
let r_indent_comment_column = 30
|
||||
<
|
||||
Any code after a line that ends with "<-" is indented. Emacs/ESS does not
|
||||
indent the code if it is a top level function. If you prefer that the
|
||||
Vim-R-plugin behaves like Emacs/ESS in this regard, put in your |vimrc|:
|
||||
indent the code if it is a top-level function. If you prefer a behavior like
|
||||
Emacs/ESS one in this regard, put in your |vimrc|:
|
||||
>
|
||||
let r_indent_ess_compatible = 1
|
||||
<
|
||||
|
@ -2801,10 +2801,20 @@ To highlight R code in knitr chunk headers: >
|
||||
let rmd_syn_hl_chunk = 1
|
||||
|
||||
By default, chunks of R code will be highlighted following the rules of R
|
||||
language. If you want proper syntax highlighting of chunks of other languages,
|
||||
you should add them to either `markdown_fenced_languages` or
|
||||
`rmd_fenced_languages`. For example to properly highlight both R and Python,
|
||||
you may add this to your |vimrc|: >
|
||||
language. Moreover, whenever the buffer is saved, Vim scans the buffer and
|
||||
highlights other languages if they are present in new chunks. LaTeX code also
|
||||
is automatically recognized and highlighted when the buffer is saved. This
|
||||
behavior can be controlled with the variables `rmd_dynamic_fenced_languages`,
|
||||
and `rmd_include_latex` whose valid values are: >
|
||||
let rmd_dynamic_fenced_languages = 0 " No autodetection of languages
|
||||
let rmd_dynamic_fenced_languages = 1 " Autodetection of languages
|
||||
let rmd_include_latex = 0 " Don't highlight LaTeX code
|
||||
let rmd_include_latex = 1 " Autodetect LaTeX code
|
||||
let rmd_include_latex = 2 " Always include LaTeX highlighting
|
||||
|
||||
If the value of `rmd_dynamic_fenced_languages` is 0, you still can set the
|
||||
list of languages whose chunks of code should be properly highlighted, as in
|
||||
the example: >
|
||||
let rmd_fenced_languages = ['r', 'python']
|
||||
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
" Language: R
|
||||
" Author: Jakson Alves de Aquino <jalvesaq@gmail.com>
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Mon Feb 27, 2023 07:16PM
|
||||
" Last Change: Sun Oct 08, 2023 10:45AM
|
||||
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
@ -13,6 +13,7 @@ let b:did_indent = 1
|
||||
|
||||
setlocal indentkeys=0{,0},:,!^F,o,O,e
|
||||
setlocal indentexpr=GetRIndent()
|
||||
setlocal autoindent
|
||||
|
||||
let b:undo_indent = "setl inde< indk<"
|
||||
|
||||
@ -47,8 +48,7 @@ function s:RDelete_quotes(line)
|
||||
if a:line[i] == '"'
|
||||
let i += 1
|
||||
endif
|
||||
else
|
||||
if a:line[i] == "'"
|
||||
elseif a:line[i] == "'"
|
||||
let i += 1
|
||||
let line1 = line1 . 's'
|
||||
while !(a:line[i] == "'" && ((i > 1 && a:line[i-1] == '\' && a:line[i-2] == '\') || a:line[i-1] != '\')) && i < llen
|
||||
@ -57,8 +57,7 @@ function s:RDelete_quotes(line)
|
||||
if a:line[i] == "'"
|
||||
let i += 1
|
||||
endif
|
||||
else
|
||||
if a:line[i] == "`"
|
||||
elseif a:line[i] == "`"
|
||||
let i += 1
|
||||
let line1 = line1 . 's'
|
||||
while a:line[i] != "`" && i < llen
|
||||
@ -68,8 +67,6 @@ function s:RDelete_quotes(line)
|
||||
let i += 1
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
if i == llen
|
||||
break
|
||||
endif
|
||||
@ -97,11 +94,9 @@ function s:RDelete_parens(line)
|
||||
let i += 1
|
||||
if a:line[i] == ')'
|
||||
let nop -= 1
|
||||
else
|
||||
if a:line[i] == '('
|
||||
elseif a:line[i] == '('
|
||||
let nop += 1
|
||||
endif
|
||||
endif
|
||||
endwhile
|
||||
let line1 = line1 . a:line[i]
|
||||
endif
|
||||
@ -174,11 +169,9 @@ function s:Get_last_paren_idx(line, o, c, pb)
|
||||
if blc == 0
|
||||
let theidx = idx
|
||||
endif
|
||||
else
|
||||
if line[idx] == a:c
|
||||
elseif line[idx] == a:c
|
||||
let blc += 1
|
||||
endif
|
||||
endif
|
||||
let idx += 1
|
||||
endwhile
|
||||
return theidx + 1
|
||||
@ -316,6 +309,11 @@ function GetRIndent()
|
||||
endif
|
||||
|
||||
if pb < 0 && line =~ '.*[,&|\-\*+<>]$'
|
||||
if line =~ '.*[\-\*+>]$'
|
||||
let is_op = v:true
|
||||
else
|
||||
let is_op = v:false
|
||||
endif
|
||||
let lnum = s:Get_prev_line(lnum)
|
||||
while pb < 1 && lnum > 0
|
||||
let line = SanitizeRLine(getline(lnum))
|
||||
@ -324,9 +322,10 @@ function GetRIndent()
|
||||
while ind > 0
|
||||
if line[ind] == ')'
|
||||
let pb -= 1
|
||||
else
|
||||
if line[ind] == '('
|
||||
elseif line[ind] == '('
|
||||
let pb += 1
|
||||
if is_op && pb == 0
|
||||
return indent(lnum)
|
||||
endif
|
||||
endif
|
||||
if pb == 1
|
||||
@ -367,11 +366,9 @@ function GetRIndent()
|
||||
else
|
||||
return indent(lnum) + shiftwidth()
|
||||
endif
|
||||
else
|
||||
if substitute(oline, '#.*', '', '') =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0
|
||||
elseif substitute(oline, '#.*', '', '') =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0
|
||||
return indent(lnum) - shiftwidth()
|
||||
endif
|
||||
endif
|
||||
elseif substitute(line, '#.*', '', '') =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0
|
||||
return indent(lnum) + shiftwidth()
|
||||
endif
|
||||
@ -404,14 +401,12 @@ function GetRIndent()
|
||||
if cline =~ '^\s*else'
|
||||
if line =~ '<-\s*if\s*()'
|
||||
return indent(lnum) + shiftwidth()
|
||||
else
|
||||
if line =~ '\<if\s*()'
|
||||
elseif line =~ '\<if\s*()'
|
||||
return indent(lnum)
|
||||
else
|
||||
return indent(lnum) - shiftwidth()
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
let bb = s:Get_paren_balance(line, '[', ']')
|
||||
if bb < 0 && line =~ '.*]'
|
||||
|
@ -5,7 +5,7 @@
|
||||
" Tom Payne <tom@tompayne.org>
|
||||
" Contributor: Johannes Ranke <jranke@uni-bremen.de>
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Thu Nov 17, 2022 10:13PM
|
||||
" Last Change: Sun Dec 24, 2023 08:05AM
|
||||
" Filenames: *.R *.r *.Rhistory *.Rt
|
||||
"
|
||||
" NOTE: The highlighting of R functions might be defined in
|
||||
@ -26,11 +26,7 @@ if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
if has("patch-7.4.1142")
|
||||
syn iskeyword @,48-57,_,.
|
||||
else
|
||||
setlocal iskeyword=@,48-57,_,.
|
||||
endif
|
||||
syn iskeyword @,48-57,_,.
|
||||
|
||||
" The variables g:r_hl_roxygen and g:r_syn_minlines were renamed on April 8, 2017.
|
||||
if exists("g:r_hl_roxygen")
|
||||
|
@ -1,7 +1,7 @@
|
||||
" Language: Markdown with chunks of R, Python and other languages
|
||||
" Maintainer: Jakson Aquino <jalvesaq@gmail.com>
|
||||
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
|
||||
" Last Change: Wed May 17, 2023 06:34AM
|
||||
" Last Change: Sun Dec 24, 2023 07:21AM
|
||||
"
|
||||
" For highlighting pandoc extensions to markdown like citations and TeX and
|
||||
" many other advanced features like folding of markdown sections, it is
|
||||
@ -16,6 +16,13 @@ endif
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
let g:rmd_include_latex = get(g:, 'rmd_include_latex', 1)
|
||||
if g:rmd_include_latex == 0 || g:rmd_include_latex == 1
|
||||
let b:rmd_has_LaTeX = v:false
|
||||
elseif g:rmd_include_latex == 2
|
||||
let b:rmd_has_LaTeX = v:true
|
||||
endif
|
||||
|
||||
" Highlight the header of the chunks as R code
|
||||
let g:rmd_syn_hl_chunk = get(g:, 'rmd_syn_hl_chunk', 0)
|
||||
|
||||
@ -136,7 +143,7 @@ syn match knitrBodyVar '| \zs\S\{-}\ze:' contained containedin=knitrBodyOptions
|
||||
let g:rmd_fenced_languages = get(g:, 'rmd_fenced_languages', ['r'])
|
||||
|
||||
let s:no_syntax_vim = []
|
||||
function IncludeLanguage(lng)
|
||||
function s:IncludeLanguage(lng)
|
||||
if a:lng =~ '='
|
||||
let ftpy = substitute(a:lng, '.*=', '', '')
|
||||
let lnm = substitute(a:lng, '=.*', '', '')
|
||||
@ -171,11 +178,23 @@ function IncludeLanguage(lng)
|
||||
endfunction
|
||||
|
||||
for s:type in g:rmd_fenced_languages
|
||||
call IncludeLanguage(s:type)
|
||||
call s:IncludeLanguage(s:type)
|
||||
endfor
|
||||
unlet! s:type
|
||||
|
||||
function CheckRmdFencedLanguages()
|
||||
let s:LaTeX_included = v:false
|
||||
function s:IncludeLaTeX()
|
||||
let s:LaTeX_included = v:true
|
||||
unlet! b:current_syntax
|
||||
syn include @RmdLaTeX syntax/tex.vim
|
||||
" From vim-pandoc-syntax
|
||||
syn region rmdLaTeXInlineMath start=/\v\\@<!\$\S@=/ end=/\v\\@<!\$\d@!/ keepend contains=@RmdLaTeX
|
||||
syn match rmdLaTeXCmd /\\[[:alpha:]]\+\(\({.\{-}}\)\=\(\[.\{-}\]\)\=\)*/ contains=@RmdLaTeX
|
||||
syn region rmdLaTeX start='\$\$' end='\$\$' keepend contains=@RmdLaTeX
|
||||
syn region rmdLaTeX start=/\\begin{\z(.\{-}\)}/ end=/\\end{\z1}/ keepend contains=@RmdLaTeX
|
||||
endfunction
|
||||
|
||||
function s:CheckRmdFencedLanguages()
|
||||
let alines = getline(1, '$')
|
||||
call filter(alines, "v:val =~ '^```{'")
|
||||
call map(alines, "substitute(v:val, '^```{', '', '')")
|
||||
@ -193,16 +212,31 @@ function CheckRmdFencedLanguages()
|
||||
endfor
|
||||
if has_lng == 0
|
||||
let g:rmd_fenced_languages += [tpy]
|
||||
call IncludeLanguage(tpy)
|
||||
call s:IncludeLanguage(tpy)
|
||||
endif
|
||||
endfor
|
||||
|
||||
if hlexists('pandocLaTeXCommand')
|
||||
return
|
||||
endif
|
||||
if g:rmd_include_latex
|
||||
if !b:rmd_has_LaTeX && (search('\$\$', 'wn') > 0 ||
|
||||
\ search('\\begin{', 'wn') > 0) ||
|
||||
\ search('\\[[:alpha:]]\+', 'wn') ||
|
||||
\ search('\$[^\$]\+\$', 'wn')
|
||||
let b:rmd_has_LaTeX = v:true
|
||||
endif
|
||||
if b:rmd_has_LaTeX && !s:LaTeX_included
|
||||
call s:IncludeLaTeX()
|
||||
endif
|
||||
endif
|
||||
endfunction
|
||||
|
||||
if g:rmd_dynamic_fenced_languages
|
||||
call CheckRmdFencedLanguages()
|
||||
call s:CheckRmdFencedLanguages()
|
||||
augroup RmdSyntax
|
||||
autocmd!
|
||||
autocmd BufWritePost <buffer> call CheckRmdFencedLanguages()
|
||||
autocmd BufWritePost <buffer> call s:CheckRmdFencedLanguages()
|
||||
augroup END
|
||||
endif
|
||||
|
||||
@ -225,6 +259,8 @@ unlet s:save_pandoc_lngs
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
syntax iskeyword clear
|
||||
|
||||
let b:current_syntax = "rmd"
|
||||
|
||||
" vim: ts=8 sw=2
|
||||
|
Loading…
Reference in New Issue
Block a user