summaryrefslogtreecommitdiffstats
path: root/runtime/ftplugin/vim.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/ftplugin/vim.vim')
-rw-r--r--runtime/ftplugin/vim.vim26
1 files changed, 24 insertions, 2 deletions
diff --git a/runtime/ftplugin/vim.vim b/runtime/ftplugin/vim.vim
index 61dc79db7a..03a77894c7 100644
--- a/runtime/ftplugin/vim.vim
+++ b/runtime/ftplugin/vim.vim
@@ -14,8 +14,28 @@ let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo-=C
-let b:undo_ftplugin = "setl fo< isk< com< tw< commentstring<"
- \ . "| unlet! b:match_ignorecase b:match_words b:match_skip"
+if !exists('*VimFtpluginUndo')
+ func VimFtpluginUndo()
+ setl fo< isk< com< tw< commentstring<
+ if exists(b:did_add_maps)
+ silent! nunmap <buffer> [['
+ silent! vunmap <buffer> [['
+ silent! nunmap <buffer> ]]'
+ silent! vunmap <buffer> ]]'
+ silent! nunmap <buffer> []'
+ silent! vunmap <buffer> []'
+ silent! nunmap <buffer> ]['
+ silent! vunmap <buffer> ]['
+ silent! nunmap <buffer> ]"'
+ silent! vunmap <buffer> ]"'
+ silent! nunmap <buffer> ["'
+ silent! vunmap <buffer> ["'
+ endif
+ unlet! b:match_ignorecase b:match_words b:match_skip b:did_add_maps
+ endfunc
+endif
+
+let b:undo_ftplugin = "call VimFtpluginUndo()"
" Set 'formatoptions' to break comment lines but not other lines,
" and insert the comment leader when hitting <CR> or using "o".
@@ -40,6 +60,8 @@ endif
setlocal commentstring=\"%s
if !exists("no_plugin_maps") && !exists("no_vim_maps")
+ let b:did_add_maps = 1
+
" Move around functions.
nnoremap <silent><buffer> [[ m':call search('^\s*fu\%[nction]\>', "bW")<CR>
vnoremap <silent><buffer> [[ m':<C-U>exe "normal! gv"<Bar>call search('^\s*fu\%[nction]\>', "bW")<CR>