summaryrefslogtreecommitdiffstats
path: root/ftplugin
diff options
context:
space:
mode:
Diffstat (limited to 'ftplugin')
-rw-r--r--ftplugin/csv.vim7
-rw-r--r--ftplugin/latex-box/folding.vim25
-rw-r--r--ftplugin/rust.vim55
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