aboutsummaryrefslogtreecommitdiff
path: root/runtime/indent
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2018-10-30 01:01:29 +0100
committerGitHub <noreply@github.com>2018-10-30 01:01:29 +0100
commit500345aea2ef88b45e0905043ed435ad4676bcef (patch)
treec7def1cc1de8c7c869560eb9770ee6067ae1323d /runtime/indent
parentf5406dfe7772dca82e31f27c042c5718198f0ec8 (diff)
parent18ce6c90636abae594905eecf2e225124ae8ab17 (diff)
downloadrneovim-500345aea2ef88b45e0905043ed435ad4676bcef.tar.gz
rneovim-500345aea2ef88b45e0905043ed435ad4676bcef.tar.bz2
rneovim-500345aea2ef88b45e0905043ed435ad4676bcef.zip
Merge #9172 from justinmk/vim-d473c8c10126
Diffstat (limited to 'runtime/indent')
-rw-r--r--runtime/indent/dosbatch.vim59
-rw-r--r--runtime/indent/dtd.vim6
-rw-r--r--runtime/indent/html.vim8
-rw-r--r--runtime/indent/prolog.vim13
-rw-r--r--runtime/indent/python.vim14
-rw-r--r--runtime/indent/r.vim37
-rw-r--r--runtime/indent/rmd.vim25
-rw-r--r--runtime/indent/rnoweb.vim2
-rw-r--r--runtime/indent/teraterm.vim4
9 files changed, 134 insertions, 34 deletions
diff --git a/runtime/indent/dosbatch.vim b/runtime/indent/dosbatch.vim
new file mode 100644
index 0000000000..aea2a184d4
--- /dev/null
+++ b/runtime/indent/dosbatch.vim
@@ -0,0 +1,59 @@
+" Vim indent file
+" Language: MSDOS batch file (with NT command extensions)
+" Maintainer: Ken Takata
+" URL: https://github.com/k-takata/vim-dosbatch-indent
+" Last Change: 2017 May 10
+" Filenames: *.bat
+" License: VIM License
+
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+setlocal nosmartindent
+setlocal noautoindent
+setlocal indentexpr=GetDosBatchIndent(v:lnum)
+setlocal indentkeys=!^F,o,O
+setlocal indentkeys+=0=)
+
+if exists("*GetDosBatchIndent")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+function! GetDosBatchIndent(lnum)
+ let l:prevlnum = prevnonblank(a:lnum-1)
+ if l:prevlnum == 0
+ " top of file
+ return 0
+ endif
+
+ " grab the previous and current line, stripping comments.
+ let l:prevl = substitute(getline(l:prevlnum), '\c^\s*\%(@\s*\)\?rem\>.*$', '', '')
+ let l:thisl = getline(a:lnum)
+ let l:previ = indent(l:prevlnum)
+
+ let l:ind = l:previ
+
+ if l:prevl =~? '^\s*@\=if\>.*(\s*$' ||
+ \ l:prevl =~? '\<do\>\s*(\s*$' ||
+ \ l:prevl =~? '\<else\>\s*\%(if\>.*\)\?(\s*$' ||
+ \ l:prevl =~? '^.*\(&&\|||\)\s*(\s*$'
+ " previous line opened a block
+ let l:ind += shiftwidth()
+ endif
+ if l:thisl =~ '^\s*)'
+ " this line closed a block
+ let l:ind -= shiftwidth()
+ endif
+
+ return l:ind
+endfunction
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8 sw=2 sts=2
diff --git a/runtime/indent/dtd.vim b/runtime/indent/dtd.vim
index 5633362367..963ac408ef 100644
--- a/runtime/indent/dtd.vim
+++ b/runtime/indent/dtd.vim
@@ -3,9 +3,6 @@
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2011-07-08
-let s:cpo_save = &cpo
-set cpo&vim
-
setlocal indentexpr=GetDTDIndent()
setlocal indentkeys=!^F,o,O,>
setlocal nosmartindent
@@ -14,6 +11,9 @@ if exists("*GetDTDIndent")
finish
endif
+let s:cpo_save = &cpo
+set cpo&vim
+
" TODO: Needs to be adjusted to stop at [, <, and ].
let s:token_pattern = '^[^[:space:]]\+'
diff --git a/runtime/indent/html.vim b/runtime/indent/html.vim
index ba043e968a..6c866594c5 100644
--- a/runtime/indent/html.vim
+++ b/runtime/indent/html.vim
@@ -663,7 +663,7 @@ func! s:CSSIndent()
else
let cur_hasfield = curtext =~ '^\s*[a-zA-Z0-9-]\+:'
let prev_unfinished = s:CssUnfinished(prev_text)
- if !cur_hasfield && (prev_hasfield || prev_unfinished)
+ if prev_unfinished
" Continuation line has extra indent if the previous line was not a
" continuation line.
let extra = shiftwidth()
@@ -716,9 +716,13 @@ func! s:CSSIndent()
endfunc "}}}
" Inside <style>: Whether a line is unfinished.
+" tag:
+" tag: blah
+" tag: blah &&
+" tag: blah ||
func! s:CssUnfinished(text)
"{{{
- return a:text =~ '\s\(||\|&&\|:\)\s*$'
+ return a:text =~ '\(||\|&&\|:\|\k\)\s*$'
endfunc "}}}
" Search back for the first unfinished line above "lnum".
diff --git a/runtime/indent/prolog.vim b/runtime/indent/prolog.vim
index 26a3bc3cd9..ecd0894166 100644
--- a/runtime/indent/prolog.vim
+++ b/runtime/indent/prolog.vim
@@ -2,6 +2,7 @@
" Maintainer : Gergely Kontra <kgergely@mcl.hu>
" Revised on : 2002.02.18. 23:34:05
" Language : Prolog
+" Last change by: Takuya Fujiwara, 2018 Sep 23
" TODO:
" checking with respect to syntax highlighting
@@ -37,10 +38,18 @@ function! GetPrologIndent()
let ind = indent(pnum)
" Previous line was comment -> use previous line's indent
if pline =~ '^\s*%'
- retu ind
+ return ind
+ endif
+ " Previous line was the start of block comment -> +1 after '/*' comment
+ if pline =~ '^\s*/\*'
+ return ind + 1
+ endif
+ " Previous line was the end of block comment -> -1 after '*/' comment
+ if pline =~ '^\s*\*/'
+ return ind - 1
endif
" Check for clause head on previous line
- if pline =~ ':-\s*\(%.*\)\?$'
+ if pline =~ '\%(:-\|-->\)\s*\(%.*\)\?$'
let ind = ind + shiftwidth()
" Check for end of clause on previous line
elseif pline =~ '\.\s*\(%.*\)\?$'
diff --git a/runtime/indent/python.vim b/runtime/indent/python.vim
index 4ce3c234a5..7ab3cb9f50 100644
--- a/runtime/indent/python.vim
+++ b/runtime/indent/python.vim
@@ -53,6 +53,11 @@ function GetPythonIndent(lnum)
return 0
endif
+ " searchpair() can be slow sometimes, limit the time to 100 msec or what is
+ " put in g:pyindent_searchpair_timeout
+ let searchpair_stopline = 0
+ let searchpair_timeout = get(g:, 'pyindent_searchpair_timeout', 150)
+
" If the previous line is inside parenthesis, use the indent of the starting
" line.
" Trick: use the non-existing "dummy" variable to break out of the loop when
@@ -61,7 +66,8 @@ function GetPythonIndent(lnum)
let parlnum = searchpair('(\|{\|\[', '', ')\|}\|\]', 'nbW',
\ "line('.') < " . (plnum - s:maxoff) . " ? dummy :"
\ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
- \ . " =~ '\\(Comment\\|Todo\\|String\\)$'")
+ \ . " =~ '\\(Comment\\|Todo\\|String\\)$'",
+ \ searchpair_stopline, searchpair_timeout)
if parlnum > 0
let plindent = indent(parlnum)
let plnumstart = parlnum
@@ -80,14 +86,16 @@ function GetPythonIndent(lnum)
let p = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW',
\ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :"
\ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
- \ . " =~ '\\(Comment\\|Todo\\|String\\)$'")
+ \ . " =~ '\\(Comment\\|Todo\\|String\\)$'",
+ \ searchpair_stopline, searchpair_timeout)
if p > 0
if p == plnum
" When the start is inside parenthesis, only indent one 'shiftwidth'.
let pp = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW',
\ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :"
\ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
- \ . " =~ '\\(Comment\\|Todo\\|String\\)$'")
+ \ . " =~ '\\(Comment\\|Todo\\|String\\)$'",
+ \ searchpair_stopline, searchpair_timeout)
if pp > 0
return indent(plnum) + (exists("g:pyindent_nested_paren") ? eval(g:pyindent_nested_paren) : shiftwidth())
endif
diff --git a/runtime/indent/r.vim b/runtime/indent/r.vim
index 373b0e65df..ca85a2e62d 100644
--- a/runtime/indent/r.vim
+++ b/runtime/indent/r.vim
@@ -2,7 +2,7 @@
" Language: R
" Author: Jakson Alves de Aquino <jalvesaq@gmail.com>
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
-" Last Change: Thu Feb 18, 2016 06:32AM
+" Last Change: Sun Aug 19, 2018 09:13PM
" Only load this indent file when no other was loaded.
@@ -19,22 +19,16 @@ if exists("*GetRIndent")
finish
endif
+let s:cpo_save = &cpo
+set cpo&vim
+
" Options to make the indentation more similar to Emacs/ESS:
-if !exists("g:r_indent_align_args")
- let g:r_indent_align_args = 1
-endif
-if !exists("g:r_indent_ess_comments")
- let g:r_indent_ess_comments = 0
-endif
-if !exists("g:r_indent_comment_column")
- let g:r_indent_comment_column = 40
-endif
-if ! exists("g:r_indent_ess_compatible")
- let g:r_indent_ess_compatible = 0
-endif
-if ! exists("g:r_indent_op_pattern")
- let g:r_indent_op_pattern = '\(&\||\|+\|-\|\*\|/\|=\|\~\|%\|->\)\s*$'
-endif
+let g:r_indent_align_args = get(g:, 'r_indent_align_args', 1)
+let g:r_indent_ess_comments = get(g:, 'r_indent_ess_comments', 0)
+let g:r_indent_comment_column = get(g:, 'r_indent_comment_column', 40)
+let g:r_indent_ess_compatible = get(g:, 'r_indent_ess_compatible', 0)
+let g:r_indent_op_pattern = get(g:, 'r_indent_op_pattern',
+ \ '\(&\||\|+\|-\|\*\|/\|=\|\~\|%\|->\)\s*$')
function s:RDelete_quotes(line)
let i = 0
@@ -231,7 +225,7 @@ function GetRIndent()
let cline = SanitizeRLine(cline)
- if cline =~ '^\s*}' || cline =~ '^\s*}\s*)$'
+ if cline =~ '^\s*}'
let indline = s:Get_matching_brace(clnum, '{', '}', 1)
if indline > 0 && indline != clnum
let iline = SanitizeRLine(getline(indline))
@@ -244,6 +238,11 @@ function GetRIndent()
endif
endif
+ if cline =~ '^\s*)$'
+ let indline = s:Get_matching_brace(clnum, '(', ')', 1)
+ return indent(indline)
+ endif
+
" Find the first non blank line above the current line
let lnum = s:Get_prev_line(clnum)
" Hit the start of the file, use zero indent.
@@ -515,7 +514,9 @@ function GetRIndent()
endwhile
return ind
-
endfunction
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
" vim: sw=2
diff --git a/runtime/indent/rmd.vim b/runtime/indent/rmd.vim
index 88904405e8..182b07cbaa 100644
--- a/runtime/indent/rmd.vim
+++ b/runtime/indent/rmd.vim
@@ -2,7 +2,7 @@
" Language: Rmd
" Author: Jakson Alves de Aquino <jalvesaq@gmail.com>
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
-" Last Change: Tue Apr 07, 2015 04:38PM
+" Last Change: Sun Aug 19, 2018 09:14PM
" Only load this indent file when no other was loaded.
@@ -20,7 +20,10 @@ if exists("*GetRmdIndent")
finish
endif
-function GetMdIndent()
+let s:cpo_save = &cpo
+set cpo&vim
+
+function s:GetMdIndent()
let pline = getline(v:lnum - 1)
let cline = getline(v:lnum)
if prevnonblank(v:lnum - 1) < v:lnum - 1 || cline =~ '^\s*[-\+\*]\s' || cline =~ '^\s*\d\+\.\s\+'
@@ -33,15 +36,31 @@ function GetMdIndent()
return indent(prevnonblank(v:lnum - 1))
endfunction
+function s:GetYamlIndent()
+ let pline = getline(v:lnum - 1)
+ if pline =~ ':\s*$'
+ return indent(v:lnum) + &sw
+ elseif pline =~ '^\s*- '
+ return indent(v:lnum) + 2
+ endif
+ return indent(prevnonblank(v:lnum - 1))
+endfunction
+
function GetRmdIndent()
if getline(".") =~ '^[ \t]*```{r .*}$' || getline(".") =~ '^[ \t]*```$'
return 0
endif
if search('^[ \t]*```{r', "bncW") > search('^[ \t]*```$', "bncW")
return s:RIndent()
+ elseif v:lnum > 1 && search('^---$', "bnW") == 1 &&
+ \ (search('^---$', "nW") > v:lnum || search('^...$', "nW") > v:lnum)
+ return s:GetYamlIndent()
else
- return GetMdIndent()
+ return s:GetMdIndent()
endif
endfunction
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
" vim: sw=2
diff --git a/runtime/indent/rnoweb.vim b/runtime/indent/rnoweb.vim
index 8c11e85cb3..73966868b8 100644
--- a/runtime/indent/rnoweb.vim
+++ b/runtime/indent/rnoweb.vim
@@ -21,7 +21,7 @@ else
let s:TeXIndent = function(substitute(&indentexpr, "()", "", ""))
endif
-unlet b:did_indent
+unlet! b:did_indent
runtime indent/r.vim
let s:RIndent = function(substitute(&indentexpr, "()", "", ""))
let b:did_indent = 1
diff --git a/runtime/indent/teraterm.vim b/runtime/indent/teraterm.vim
index 370283c77f..35d7354290 100644
--- a/runtime/indent/teraterm.vim
+++ b/runtime/indent/teraterm.vim
@@ -1,9 +1,9 @@
" Vim indent file
" Language: Tera Term Language (TTL)
-" Based on Tera Term Version 4.92
+" Based on Tera Term Version 4.100
" Maintainer: Ken Takata
" URL: https://github.com/k-takata/vim-teraterm
-" Last Change: 2017 Jun 13
+" Last Change: 2018-08-31
" Filenames: *.ttl
" License: VIM License