From a678d7baabc82871f3129caaba4d80be2a0ed967 Mon Sep 17 00:00:00 2001 From: Israel Chauca Fuentes Date: Sat, 14 Aug 2010 13:48:52 -0500 Subject: [PATCH] Move mapping and init funcs to plugin/. --- autoload/delimitMate.vim | 280 ------------------------------------ plugin/delimitMate.vim | 303 +++++++++++++++++++++++++++++++++++++-- 2 files changed, 292 insertions(+), 291 deletions(-) diff --git a/autoload/delimitMate.vim b/autoload/delimitMate.vim index 5532e89..1a4bec7 100644 --- a/autoload/delimitMate.vim +++ b/autoload/delimitMate.vim @@ -8,137 +8,6 @@ " Utilities {{{ -function! delimitMate#option_init(name, default) "{{{ - let b = exists("b:delimitMate_" . a:name) - let g = exists("g:delimitMate_" . a:name) - let prefix = "_l_delimitMate_" - - if !b && !g - let sufix = a:default - elseif !b && g - exec "let sufix = g:delimitMate_" . a:name - else - exec "let sufix = b:delimitMate_" . a:name - endif - if exists("b:" . prefix . a:name) - exec "unlockvar! b:" . prefix . a:name - endif - exec "let b:" . prefix . a:name . " = " . string(sufix) - exec "lockvar! b:" . prefix . a:name -endfunction "}}} - -function! delimitMate#Init() "{{{ -" Initialize variables: - - " autoclose - call delimitMate#option_init("autoclose", 1) - - " matchpairs - call delimitMate#option_init("matchpairs", string(&matchpairs)[1:-2]) - call delimitMate#option_init("matchpairs_list", split(b:_l_delimitMate_matchpairs, ',')) - call delimitMate#option_init("left_delims", split(b:_l_delimitMate_matchpairs, ':.,\=')) - call delimitMate#option_init("right_delims", split(b:_l_delimitMate_matchpairs, ',\=.:')) - - " quotes - call delimitMate#option_init("quotes", "\" ' `") - call delimitMate#option_init("quotes_list", split(b:_l_delimitMate_quotes)) - - " nesting_quotes - call delimitMate#option_init("nesting_quotes", []) - - " excluded_regions - call delimitMate#option_init("excluded_regions", "Comment") - call delimitMate#option_init("excluded_regions_list", split(b:_l_delimitMate_excluded_regions, ',\s*')) - let enabled = len(b:_l_delimitMate_excluded_regions_list) > 0 - call delimitMate#option_init("excluded_regions_enabled", enabled) - - " visual_leader - let leader = exists('b:maplocalleader') ? b:maplocalleader : - \ exists('g:mapleader') ? g:mapleader : "\\" - call delimitMate#option_init("visual_leader", leader) - - " expand_space - if exists("b:delimitMate_expand_space") && type(b:delimitMate_expand_space) == type("") - echom "b:delimitMate_expand_space is '".b:delimitMate_expand_space."' but it must be either 1 or 0!" - echom "Read :help 'delimitMate_expand_space' for more details." - unlet b:delimitMate_expand_space - let b:delimitMate_expand_space = 1 - endif - if exists("g:delimitMate_expand_space") && type(g:delimitMate_expand_space) == type("") - echom "delimitMate_expand_space is '".g:delimitMate_expand_space."' but it must be either 1 or 0!" - echom "Read :help 'delimitMate_expand_space' for more details." - unlet g:delimitMate_expand_space - let g:delimitMate_expand_space = 1 - endif - call delimitMate#option_init("expand_space", 0) - - " expand_cr - if exists("b:delimitMate_expand_cr") && type(b:delimitMate_expand_cr) == type("") - echom "b:delimitMate_expand_cr is '".b:delimitMate_expand_cr."' but it must be either 1 or 0!" - echom "Read :help 'delimitMate_expand_cr' for more details." - unlet b:delimitMate_expand_cr - let b:delimitMate_expand_cr = 1 - endif - if exists("g:delimitMate_expand_cr") && type(g:delimitMate_expand_cr) == type("") - echom "delimitMate_expand_cr is '".g:delimitMate_expand_cr."' but it must be either 1 or 0!" - echom "Read :help 'delimitMate_expand_cr' for more details." - unlet g:delimitMate_expand_cr - let g:delimitMate_expand_cr = 1 - endif - if (&backspace !~ 'eol' || &backspace !~ 'start') && - \ ((exists('b:delimitMate_expand_cr') && b:delimitMate_expand_cr == 1) || - \ (exists('g:delimitMate_expand_cr') && g:delimitMate_expand_cr == 1)) - echom "delimitMate: In order to use the expansion, you need to have 'eol' and 'start' in your backspace option. Read :help 'backspace'." - let b:delimitMate_expand_cr = 0 - endif - call delimitMate#option_init("expand_cr", 0) - - " smart_quotes - call delimitMate#option_init("smart_quotes", 1) - - " apostrophes - call delimitMate#option_init("apostrophes", "") - call delimitMate#option_init("apostrophes_list", split(b:_l_delimitMate_apostrophes, ":\s*")) - - " tab2exit - call delimitMate#option_init("tab2exit", 1) - - " balance_matchpairs - call delimitMate#option_init("balance_matchpairs", 0) - - let b:_l_delimitMate_buffer = [] - - let b:loaded_delimitMate = 1 - -endfunction "}}} Init() - -function! delimitMate#Map() "{{{ - " Set mappings: - try - let save_cpo = &cpo - let save_keymap = &keymap - let save_iminsert = &iminsert - let save_imsearch = &imsearch - set keymap= - set cpo&vim - if b:_l_delimitMate_autoclose - call delimitMate#AutoClose() - else - call delimitMate#NoAutoClose() - endif - call delimitMate#VisualMaps() - call delimitMate#ExtraMappings() - finally - let &cpo = save_cpo - let &keymap = save_keymap - let &iminsert = save_iminsert - let &imsearch = save_imsearch - endtry - - let b:delimitMate_enabled = 1 - -endfunction "}}} Map() - function! delimitMate#ShouldJump() "{{{ " Returns 1 if the next character is a closing delimiter. let col = col('.') @@ -611,155 +480,6 @@ endfunction " }}} " }}} -" Mappers: {{{ -function! delimitMate#NoAutoClose() "{{{ - " inoremap ) =delimitMate#SkipDelim('\)') - for delim in b:_l_delimitMate_right_delims + b:_l_delimitMate_quotes_list - exec 'silent! inoremap ' . delim . ' =delimitMate#SkipDelim("' . escape(delim,'"\|') . '")' - endfor -endfunction "}}} - -function! delimitMate#AutoClose() "{{{ - " Add matching pair and jump to the midle: - " inoremap ( () - let i = 0 - while i < len(b:_l_delimitMate_matchpairs_list) - let ld = b:_l_delimitMate_left_delims[i] - let rd = b:_l_delimitMate_right_delims[i] - exec 'silent! inoremap ' . ld . ' ' . ld . '=delimitMate#ParenDelim("' . rd . '")' - let i += 1 - endwhile - - " Exit from inside the matching pair: - for delim in b:_l_delimitMate_right_delims - exec 'silent! inoremap ' . delim . ' =delimitMate#JumpOut("\' . delim . '")' - endfor - - " Add matching quote and jump to the midle, or exit if inside a pair of matching quotes: - " inoremap " =delimitMate#QuoteDelim("\"") - for delim in b:_l_delimitMate_quotes_list - exec 'silent! inoremap ' . delim . ' =delimitMate#QuoteDelim("\' . delim . '")' - endfor - - " Try to fix the use of apostrophes (kept for backward compatibility): - " inoremap n't n't - for map in b:_l_delimitMate_apostrophes_list - exec "silent! inoremap " . map . " " . map - endfor -endfunction "}}} - -function! delimitMate#VisualMaps() " {{{ - let VMapMsg = "delimitMate: delimitMate is disabled on blockwise visual mode." - let vleader = b:_l_delimitMate_visual_leader - " Wrap the selection with matching pairs, but do nothing if blockwise visual mode is active: - for del in b:_l_delimitMate_right_delims + b:_l_delimitMate_left_delims + b:_l_delimitMate_quotes_list - exec "silent! vnoremap " . vleader . del . ' delimitMate#Visual("' . escape(del, '")') . '")' - endfor -endfunction "}}} - -function! delimitMate#ExtraMappings() "{{{ - " If pair is empty, delete both delimiters: - inoremap delimitMateBS =delimitMate#BS() - " If pair is empty, delete closing delimiter: - inoremap delimitMateSBS delimitMate#WithinEmptyPair() ? "\=delimitMate#Del()\" : "\" - " Expand return if inside an empty pair: - inoremap delimitMateER =delimitMate#ExpandReturn() - " Expand space if inside an empty pair: - inoremap delimitMateES =delimitMate#ExpandSpace() - " Jump out ot any empty pair: - inoremap delimitMateSTab =delimitMate#JumpAny("\") - " Change char buffer on Del: - inoremap delimitMateDel =delimitMate#Del() - " Flush the char buffer on movement keystrokes or when leaving insert mode: - for map in ['Esc', 'Left', 'Right', 'Home', 'End'] - exec 'inoremap delimitMate'.map.' =delimitMate#Finish()<'.map.'>' - if !hasmapto('delimitMate'.map, 'i') - exec 'silent! imap <'.map.'> delimitMate'.map - endif - endfor - " Except when pop-up menu is active: - for map in ['Up', 'Down', 'PageUp', 'PageDown', 'S-Down', 'S-Up'] - exec 'inoremap delimitMate'.map.' pumvisible() ? "\<'.map.'>" : "=delimitMate#Finish()<'.map.'>"' - if !hasmapto('delimitMate'.map, 'i') - exec 'silent! imap <'.map.'> delimitMate'.map - endif - endfor - " Avoid ambiguous mappings: - for map in ['LeftMouse', 'RightMouse'] - exec 'inoremap delimitMateM'.map.' =delimitMate#Finish()<'.map.'>' - if !hasmapto('delimitMate'.map, 'i') - exec 'silent! imap <'.map.'> delimitMateM'.map - endif - endfor - - " Map away! - if !hasmapto('delimitMateDel', 'i') - silent! imap delimitMateDel - endif - if !hasmapto('delimitMateBS','i') - silent! imap delimitMateBS - endif - if !hasmapto('delimitMateSBS','i') - silent! imap delimitMateSBS - endif - if b:_l_delimitMate_expand_cr != 0 && !hasmapto('delimitMateER', 'i') - silent! imap delimitMateER - endif - if b:_l_delimitMate_expand_space != 0 && !hasmapto('delimitMateES', 'i') - silent! imap delimitMateES - endif - if b:_l_delimitMate_tab2exit && !hasmapto('delimitMateSTab', 'i') - silent! imap delimitMateSTab - endif - " The following simply creates an ambiguous mapping so vim fully processes - " the escape sequence for terminal keys, see 'ttimeout' for a rough - " explanation, this just forces it to work - if !has('gui_running') - imap OC - endif -endfunction "}}} - -function! delimitMate#UnMap() " {{{ - let imaps = - \ b:_l_delimitMate_right_delims + - \ b:_l_delimitMate_left_delims + - \ b:_l_delimitMate_quotes_list + - \ b:_l_delimitMate_apostrophes_list + - \ ['', '', '', '', '', '', ''] + - \ ['', '', '', '', '', ''] + - \ ['', '', '', '', '', ''] - - let vmaps = - \ b:_l_delimitMate_right_delims + - \ b:_l_delimitMate_left_delims + - \ b:_l_delimitMate_quotes_list - - for map in imaps - if maparg(map, "i") =~? 'delimitMate' - exec 'silent! iunmap ' . map - endif - endfor - - if !exists("b:_l_delimitMate_visual_leader") - let vleader = "" - else - let vleader = b:_l_delimitMate_visual_leader - endif - for map in vmaps - if maparg(vleader . map, "v") =~? "delimitMate" - exec 'silent! vunmap ' . vleader . map - endif - endfor - - if !has('gui_running') - silent! iunmap OC - endif - - let b:delimitMate_enabled = 0 -endfunction " }}} delimitMate#UnMap() - -"}}} - " Tools: {{{ function! delimitMate#TestMappings() "{{{ exec "normal GGi*b:_l_delimitMate_autoclose = " . b:_l_delimitMate_autoclose . "\o" diff --git a/plugin/delimitMate.vim b/plugin/delimitMate.vim index f772d90..0c26940 100644 --- a/plugin/delimitMate.vim +++ b/plugin/delimitMate.vim @@ -28,10 +28,181 @@ endif let s:loaded_delimitMate = 1 let delimitMate_version = "2.4.1" + +function! s:option_init(name, default) "{{{ + let b = exists("b:delimitMate_" . a:name) + let g = exists("g:delimitMate_" . a:name) + let prefix = "_l_delimitMate_" + + if !b && !g + let sufix = a:default + elseif !b && g + exec "let sufix = g:delimitMate_" . a:name + else + exec "let sufix = b:delimitMate_" . a:name + endif + if exists("b:" . prefix . a:name) + exec "unlockvar! b:" . prefix . a:name + endif + exec "let b:" . prefix . a:name . " = " . string(sufix) + exec "lockvar! b:" . prefix . a:name +endfunction "}}} + +function! s:init() "{{{ +" Initialize variables: + + " autoclose + call s:option_init("autoclose", 1) + + " matchpairs + call s:option_init("matchpairs", string(&matchpairs)[1:-2]) + call s:option_init("matchpairs_list", split(b:_l_delimitMate_matchpairs, ',')) + call s:option_init("left_delims", split(b:_l_delimitMate_matchpairs, ':.,\=')) + call s:option_init("right_delims", split(b:_l_delimitMate_matchpairs, ',\=.:')) + + " quotes + call s:option_init("quotes", "\" ' `") + call s:option_init("quotes_list", split(b:_l_delimitMate_quotes)) + + " nesting_quotes + call s:option_init("nesting_quotes", []) + + " excluded_regions + call s:option_init("excluded_regions", "Comment") + call s:option_init("excluded_regions_list", split(b:_l_delimitMate_excluded_regions, ',\s*')) + let enabled = len(b:_l_delimitMate_excluded_regions_list) > 0 + call s:option_init("excluded_regions_enabled", enabled) + + " visual_leader + let leader = exists('b:maplocalleader') ? b:maplocalleader : + \ exists('g:mapleader') ? g:mapleader : "\\" + call s:option_init("visual_leader", leader) + + " expand_space + if exists("b:delimitMate_expand_space") && type(b:delimitMate_expand_space) == type("") + echom "b:delimitMate_expand_space is '".b:delimitMate_expand_space."' but it must be either 1 or 0!" + echom "Read :help 'delimitMate_expand_space' for more details." + unlet b:delimitMate_expand_space + let b:delimitMate_expand_space = 1 + endif + if exists("g:delimitMate_expand_space") && type(g:delimitMate_expand_space) == type("") + echom "delimitMate_expand_space is '".g:delimitMate_expand_space."' but it must be either 1 or 0!" + echom "Read :help 'delimitMate_expand_space' for more details." + unlet g:delimitMate_expand_space + let g:delimitMate_expand_space = 1 + endif + call s:option_init("expand_space", 0) + + " expand_cr + if exists("b:delimitMate_expand_cr") && type(b:delimitMate_expand_cr) == type("") + echom "b:delimitMate_expand_cr is '".b:delimitMate_expand_cr."' but it must be either 1 or 0!" + echom "Read :help 'delimitMate_expand_cr' for more details." + unlet b:delimitMate_expand_cr + let b:delimitMate_expand_cr = 1 + endif + if exists("g:delimitMate_expand_cr") && type(g:delimitMate_expand_cr) == type("") + echom "delimitMate_expand_cr is '".g:delimitMate_expand_cr."' but it must be either 1 or 0!" + echom "Read :help 'delimitMate_expand_cr' for more details." + unlet g:delimitMate_expand_cr + let g:delimitMate_expand_cr = 1 + endif + if (&backspace !~ 'eol' || &backspace !~ 'start') && + \ ((exists('b:delimitMate_expand_cr') && b:delimitMate_expand_cr == 1) || + \ (exists('g:delimitMate_expand_cr') && g:delimitMate_expand_cr == 1)) + echom "delimitMate: In order to use the expansion, you need to have 'eol' and 'start' in your backspace option. Read :help 'backspace'." + let b:delimitMate_expand_cr = 0 + endif + call s:option_init("expand_cr", 0) + + " smart_quotes + call s:option_init("smart_quotes", 1) + + " apostrophes + call s:option_init("apostrophes", "") + call s:option_init("apostrophes_list", split(b:_l_delimitMate_apostrophes, ":\s*")) + + " tab2exit + call s:option_init("tab2exit", 1) + + " balance_matchpairs + call s:option_init("balance_matchpairs", 0) + + let b:_l_delimitMate_buffer = [] + + let b:loaded_delimitMate = 1 + +endfunction "}}} Init() + "}}} " Functions: {{{ +function! s:Map() "{{{ + " Set mappings: + try + let save_cpo = &cpo + let save_keymap = &keymap + let save_iminsert = &iminsert + let save_imsearch = &imsearch + set keymap= + set cpo&vim + if b:_l_delimitMate_autoclose + call s:AutoClose() + else + call s:NoAutoClose() + endif + call s:VisualMaps() + call s:ExtraMappings() + finally + let &cpo = save_cpo + let &keymap = save_keymap + let &iminsert = save_iminsert + let &imsearch = save_imsearch + endtry + + let b:delimitMate_enabled = 1 + +endfunction "}}} Map() + +function! s:Unmap() " {{{ + let imaps = + \ b:_l_delimitMate_right_delims + + \ b:_l_delimitMate_left_delims + + \ b:_l_delimitMate_quotes_list + + \ b:_l_delimitMate_apostrophes_list + + \ ['', '', '', '', '', '', ''] + + \ ['', '', '', '', '', ''] + + \ ['', '', '', '', '', ''] + + let vmaps = + \ b:_l_delimitMate_right_delims + + \ b:_l_delimitMate_left_delims + + \ b:_l_delimitMate_quotes_list + + for map in imaps + if maparg(map, "i") =~? 'delimitMate' + exec 'silent! iunmap ' . map + endif + endfor + + if !exists("b:_l_delimitMate_visual_leader") + let vleader = "" + else + let vleader = b:_l_delimitMate_visual_leader + endif + for map in vmaps + if maparg(vleader . map, "v") =~? "delimitMate" + exec 'silent! vunmap ' . vleader . map + endif + endfor + + if !has('gui_running') + silent! iunmap OC + endif + + let b:delimitMate_enabled = 0 +endfunction " }}} s:Unmap() + function! s:TestMappingsDo() "{{{ if !exists("g:delimitMate_testing") silent call delimitMate#TestMappings() @@ -42,9 +213,9 @@ function! s:TestMappingsDo() "{{{ let b:delimitMate_expand_cr = i for a in [0,1] let b:delimitMate_autoclose = a - call delimitMate#Init() - call delimitMate#UnMap() - call delimitMate#Map() + call s:init() + call s:Unmap() + call s:Map() call delimitMate#TestMappings() normal o endfor @@ -59,14 +230,14 @@ endfunction "}}} function! s:DelimitMateDo(...) "{{{ " Initialize settings: - call delimitMate#Init() + call s:init() " Check if this file type is excluded: if exists("g:delimitMate_excluded_ft") && \ index(split(g:delimitMate_excluded_ft, ','), &filetype, 0, 1) >= 0 " Remove any magic: - call delimitMate#UnMap() + call s:Unmap() " Finish here: return 1 @@ -74,11 +245,11 @@ function! s:DelimitMateDo(...) "{{{ " First, remove all magic, if needed: if exists("b:delimitMate_enabled") && b:delimitMate_enabled == 1 - call delimitMate#UnMap() + call s:Unmap() endif " Now, add magic: - call delimitMate#Map() + call s:Map() if a:0 > 0 echo "delimitMate has been reset." @@ -86,19 +257,129 @@ function! s:DelimitMateDo(...) "{{{ endfunction "}}} function! s:DelimitMateSwitch() "{{{ - call delimitMate#Init() + call s:init() if exists("b:delimitMate_enabled") && b:delimitMate_enabled - call delimitMate#UnMap() + call s:Unmap() echo "delimitMate has been disabled." else - call delimitMate#UnMap() - call delimitMate#Map() + call s:Unmap() + call s:Map() echo "delimitMate has been enabled." endif endfunction "}}} "}}} +" Mappers: {{{ +function! s:NoAutoClose() "{{{ + " inoremap ) =delimitMate#SkipDelim('\)') + for delim in b:_l_delimitMate_right_delims + b:_l_delimitMate_quotes_list + exec 'silent! inoremap ' . delim . ' =delimitMate#SkipDelim("' . escape(delim,'"\|') . '")' + endfor +endfunction "}}} + +function! s:AutoClose() "{{{ + " Add matching pair and jump to the midle: + " inoremap ( () + let i = 0 + while i < len(b:_l_delimitMate_matchpairs_list) + let ld = b:_l_delimitMate_left_delims[i] + let rd = b:_l_delimitMate_right_delims[i] + exec 'silent! inoremap ' . ld . ' ' . ld . '=delimitMate#ParenDelim("' . rd . '")' + let i += 1 + endwhile + + " Exit from inside the matching pair: + for delim in b:_l_delimitMate_right_delims + exec 'silent! inoremap ' . delim . ' =delimitMate#JumpOut("\' . delim . '")' + endfor + + " Add matching quote and jump to the midle, or exit if inside a pair of matching quotes: + " inoremap " =delimitMate#QuoteDelim("\"") + for delim in b:_l_delimitMate_quotes_list + exec 'silent! inoremap ' . delim . ' =delimitMate#QuoteDelim("\' . delim . '")' + endfor + + " Try to fix the use of apostrophes (kept for backward compatibility): + " inoremap n't n't + for map in b:_l_delimitMate_apostrophes_list + exec "silent! inoremap " . map . " " . map + endfor +endfunction "}}} + +function! s:VisualMaps() " {{{ + let VMapMsg = "delimitMate: delimitMate is disabled on blockwise visual mode." + let vleader = b:_l_delimitMate_visual_leader + " Wrap the selection with matching pairs, but do nothing if blockwise visual mode is active: + for del in b:_l_delimitMate_right_delims + b:_l_delimitMate_left_delims + b:_l_delimitMate_quotes_list + exec "silent! vnoremap " . vleader . del . ' delimitMate#Visual("' . escape(del, '")') . '")' + endfor +endfunction "}}} + +function! s:ExtraMappings() "{{{ + " If pair is empty, delete both delimiters: + inoremap delimitMateBS =delimitMate#BS() + " If pair is empty, delete closing delimiter: + inoremap delimitMateSBS delimitMate#WithinEmptyPair() ? "\=delimitMate#Del()\" : "\" + " Expand return if inside an empty pair: + inoremap delimitMateER =delimitMate#ExpandReturn() + " Expand space if inside an empty pair: + inoremap delimitMateES =delimitMate#ExpandSpace() + " Jump out ot any empty pair: + inoremap delimitMateSTab =delimitMate#JumpAny("\") + " Change char buffer on Del: + inoremap delimitMateDel =delimitMate#Del() + " Flush the char buffer on movement keystrokes or when leaving insert mode: + for map in ['Esc', 'Left', 'Right', 'Home', 'End'] + exec 'inoremap delimitMate'.map.' =delimitMate#Finish()<'.map.'>' + if !hasmapto('delimitMate'.map, 'i') + exec 'silent! imap <'.map.'> delimitMate'.map + endif + endfor + " Except when pop-up menu is active: + for map in ['Up', 'Down', 'PageUp', 'PageDown', 'S-Down', 'S-Up'] + exec 'inoremap delimitMate'.map.' pumvisible() ? "\<'.map.'>" : "=delimitMate#Finish()<'.map.'>"' + if !hasmapto('delimitMate'.map, 'i') + exec 'silent! imap <'.map.'> delimitMate'.map + endif + endfor + " Avoid ambiguous mappings: + for map in ['LeftMouse', 'RightMouse'] + exec 'inoremap delimitMateM'.map.' =delimitMate#Finish()<'.map.'>' + if !hasmapto('delimitMate'.map, 'i') + exec 'silent! imap <'.map.'> delimitMateM'.map + endif + endfor + + " Map away! + if !hasmapto('delimitMateDel', 'i') + silent! imap delimitMateDel + endif + if !hasmapto('delimitMateBS','i') + silent! imap delimitMateBS + endif + if !hasmapto('delimitMateSBS','i') + silent! imap delimitMateSBS + endif + if b:_l_delimitMate_expand_cr != 0 && !hasmapto('delimitMateER', 'i') + silent! imap delimitMateER + endif + if b:_l_delimitMate_expand_space != 0 && !hasmapto('delimitMateES', 'i') + silent! imap delimitMateES + endif + if b:_l_delimitMate_tab2exit && !hasmapto('delimitMateSTab', 'i') + silent! imap delimitMateSTab + endif + " The following simply creates an ambiguous mapping so vim fully processes + " the escape sequence for terminal keys, see 'ttimeout' for a rough + " explanation, this just forces it to work + if !has('gui_running') + imap OC + endif +endfunction "}}} + +"}}} + " Commands: {{{ call s:DelimitMateDo()