diff options
Diffstat (limited to 'ftplugin')
| -rw-r--r-- | ftplugin/csv.vim | 7 | ||||
| -rw-r--r-- | ftplugin/latex-box/folding.vim | 25 | ||||
| -rw-r--r-- | ftplugin/rust.vim | 55 | 
3 files changed, 79 insertions, 8 deletions
| diff --git a/ftplugin/csv.vim b/ftplugin/csv.vim index 82ef430e..d824c154 100644 --- a/ftplugin/csv.vim +++ b/ftplugin/csv.vim @@ -2381,11 +2381,12 @@ fu! <sid>SubstituteInColumn(command, line1, line2) range "{{{3  endfu  fu! <sid>ColumnMode() "{{{3 -    if mode() =~# 'R' +    let mode = mode() +    if mode =~# 'R'          " (virtual) Replace mode          let new_line = (line('.') == line('$') || -        \ (synIDattr(synIDtrans(synID(line("."), col("."), 1)), "name") !~# "comment")) -        return "\<ESC>". (new_line ? "o" : "JE".mode()) +        \ (synIDattr(synIDtrans(synID(line("."), col("."), 1)), "name") =~? "comment")) +        return "\<ESC>g`[". (new_line ? "o" : "J".mode)      else          return "\<CR>"      endif diff --git a/ftplugin/latex-box/folding.vim b/ftplugin/latex-box/folding.vim index 55a975f8..badfc137 100644 --- a/ftplugin/latex-box/folding.vim +++ b/ftplugin/latex-box/folding.vim @@ -31,6 +31,9 @@ endif  if !exists('g:LatexBox_fold_envs')      let g:LatexBox_fold_envs=1  endif +if !exists('g:LatexBox_fold_envs_force') +    let g:LatexBox_fold_envs_force = [] +endif  if !exists('g:LatexBox_fold_parts')      let g:LatexBox_fold_parts=[                  \ "appendix", @@ -159,11 +162,27 @@ function! LatexBox_FoldLevel(lnum)      endif      " Fold environments -    if g:LatexBox_fold_envs == 1 -        if line =~# s:envbeginpattern +    if line =~# s:envbeginpattern +        if g:LatexBox_fold_envs == 1              return "a1" -        elseif line =~# s:envendpattern +        else +            let env = matchstr(line,'\\begin\*\?{\zs\w*\*\?\ze}') +            if index(g:LatexBox_fold_envs_force, env) >= 0 +                return "a1" +            else +                return "=" +            endif +        endif +    elseif line =~# s:envendpattern +        if g:LatexBox_fold_envs == 1              return "s1" +        else +            let env = matchstr(line,'\\end\*\?{\zs\w*\*\?\ze}') +            if index(g:LatexBox_fold_envs_force, env) >= 0 +                return "s1" +            else +                return "=" +            endif          endif      endif diff --git a/ftplugin/rust.vim b/ftplugin/rust.vim index 281a63ef..b70cda9b 100644 --- a/ftplugin/rust.vim +++ b/ftplugin/rust.vim @@ -1,7 +1,7 @@  " Vim syntax file  " Language:     Rust  " Maintainer:   Chris Morgan <me@chrismorgan.info> -" Last Change:  2013 Jul 10 +" Last Change:  2014 Feb 27  if exists("b:did_ftplugin")  	finish @@ -42,4 +42,55 @@ if exists("g:loaded_delimitMate")  	let b:delimitMate_excluded_regions = delimitMate#Get("excluded_regions") . ',rustLifetimeCandidate,rustGenericLifetimeCandidate'  endif -let b:undo_ftplugin = "setlocal formatoptions< comments< commentstring< includeexpr< suffixesadd< | if exists('b:rust_original_delimitMate_excluded_regions') | let b:delimitMate_excluded_regions = b:rust_original_delimitMate_excluded_regions | unlet b:rust_original_delimitMate_excluded_regions | elseif exists('b:delimitMate_excluded_regions') | unlet b:delimitMate_excluded_regions | endif" +" Bind motion commands to support hanging indents +nnoremap <silent> <buffer> [[ :call <SID>Rust_Jump('n', 'Back')<CR> +nnoremap <silent> <buffer> ]] :call <SID>Rust_Jump('n', 'Forward')<CR> +xnoremap <silent> <buffer> [[ :call <SID>Rust_Jump('v', 'Back')<CR> +xnoremap <silent> <buffer> ]] :call <SID>Rust_Jump('v', 'Forward')<CR> +onoremap <silent> <buffer> [[ :call <SID>Rust_Jump('o', 'Back')<CR> +onoremap <silent> <buffer> ]] :call <SID>Rust_Jump('o', 'Forward')<CR> + +let b:undo_ftplugin = " +		\setlocal formatoptions< comments< commentstring< includeexpr< suffixesadd< +		\|if exists('b:rust_original_delimitMate_excluded_regions') +		  \|let b:delimitMate_excluded_regions = b:rust_original_delimitMate_excluded_regions +		  \|unlet b:rust_original_delimitMate_excluded_regions +		\|elseif exists('b:delimitMate_excluded_regions') +		  \|unlet b:delimitMate_excluded_regions +		\|endif +		\|nunmap <buffer> [[ +		\|nunmap <buffer> ]] +		\|xunmap <buffer> [[ +		\|xunmap <buffer> ]] +		\|ounmap <buffer> [[ +		\|ounmap <buffer> ]] +		\" + +if exists('*<SID>Rust_Jump') | finish | endif + +function! <SID>Rust_Jump(mode, function) range +	let cnt = v:count1 +	normal! m' +	if a:mode ==# 'v' +		norm! gv +	endif +	let foldenable = &foldenable +	set nofoldenable +	while cnt > 0 +		execute "call <SID>Rust_Jump_" . a:function . "()" +		let cnt = cnt - 1 +	endwhile +	let &foldenable = foldenable +endfunction + +function! <SID>Rust_Jump_Back() +	call search('{', 'b') +	keepjumps normal! w99[{ +endfunction + +function! <SID>Rust_Jump_Forward() +	normal! j0 +	call search('{', 'b') +	keepjumps normal! w99[{% +	call search('{') +endfunction | 
