Minor changes.

This commit is contained in:
Israel Chauca Fuentes
2009-08-13 02:49:42 -05:00
parent 8591787169
commit 07ac7d1a7e

View File

@@ -1,4 +1,4 @@
" DELIMITERS MADE LESS ANNOYING " delimitMate
" Introduction:{{{1 " Introduction:{{{1
" "
" Main novelty here (if it is one): this does NOT try to be helpful by " Main novelty here (if it is one): this does NOT try to be helpful by
@@ -23,7 +23,7 @@
" Init:{{{1 " Init:{{{1
if exists("loaded_delimitMate") if exists("loaded_delimitMate")
" finish "finish
endif endif
if v:version < 700 if v:version < 700
echoerr "delimitMate: this plugin requires vim >= 7!" echoerr "delimitMate: this plugin requires vim >= 7!"
@@ -32,30 +32,39 @@ endif
let loaded_delimitMate = 1 let loaded_delimitMate = 1
" Set user preferences:{{{2 " Set user preferences:{{{2
" Should auto-complete delimiters?
if !exists("g:delimitMate_autocomplete") if !exists("g:delimitMate_autocomplete")
let s:autocomplete = 1 let s:autocomplete = 1
else else
let s:autocomplete = g:delimitMate_autocomplete let s:autocomplete = g:delimitMate_autocomplete
endif endif
" Override matchpairs?
if !exists("g:delimitMate_paired_delims") if !exists("g:delimitMate_paired_delims")
let s:paired_delims_temp = &matchpairs let s:paired_delims_temp = &matchpairs
else else
if g:delimitMate_paired_delims =~ '^\(.:\)\+\(,.:.\)*$'
finish
endif
let s:paired_delims_temp = g:delimitMate_paired_delims let s:paired_delims_temp = g:delimitMate_paired_delims
endif endif
" Define your own quoting delimiters?
if !exists("g:delimitMate_quote_delims") if !exists("g:delimitMate_quote_delims")
let s:quote_delims = split("\" ' `") let s:quote_delims = split("\" ' `")
else else
let s:quote_delims = g:delimitMate_quote_delims let s:quote_delims = g:delimitMate_quote_delims
endif endif
" Leader for visual mode:
if !exists("g:delimitMate_leader") if !exists("g:delimitMate_leader")
let s:leader = "q" let s:leader = "q"
else else
let s:leader = g:delimitMate_leader let s:leader = g:delimitMate_leader
endif endif
" Should space be expanded?
if exists("g:delimitMate_expand_all") if exists("g:delimitMate_expand_all")
let s:expand_space = g:delimitMate_expand_all let s:expand_space = g:delimitMate_expand_all
elseif exists("g:delimitMate_expand_space") elseif exists("g:delimitMate_expand_space")
@@ -64,6 +73,7 @@ else
let s:expand_space = 1 let s:expand_space = 1
endif endif
" Should return be expanded?
if exists("g:delimitMate_expand_all") if exists("g:delimitMate_expand_all")
let s:expand_return = g:delimitMate_expand_all let s:expand_return = g:delimitMate_expand_all
elseif exists("g:delimitMate_expand_return") elseif exists("g:delimitMate_expand_return")
@@ -77,7 +87,8 @@ let s:left_delims = split(s:paired_delims_temp, ':.,\=')
let s:right_delims = split(s:paired_delims_temp, ',\=.:') let s:right_delims = split(s:paired_delims_temp, ',\=.:')
" Functions:{{{1 " Functions:{{{1
function! IsEmptyPair(str)
function! s:IsEmptyPair(str)
for pair in s:paired_delims for pair in s:paired_delims
if a:str == join( split( pair, ':' ),'' ) if a:str == join( split( pair, ':' ),'' )
return 1 return 1
@@ -91,12 +102,12 @@ function! IsEmptyPair(str)
return 0 return 0
endfunc endfunc
function! WithinEmptyPair() function! s:WithinEmptyPair()
let cur = strpart( getline('.'), col('.')-2, 2 ) let cur = strpart( getline('.'), col('.')-2, 2 )
return IsEmptyPair( cur ) return IsEmptyPair( cur )
endfunc endfunc
function! SkipDelim(char) function! s:SkipDelim(char)
let cur = strpart( getline('.'), col('.')-2, 3 ) let cur = strpart( getline('.'), col('.')-2, 3 )
if cur[0] == "\\" if cur[0] == "\\"
return a:char return a:char
@@ -111,7 +122,7 @@ function! SkipDelim(char)
endif endif
endfunc endfunc
function! QuoteDelim(char) function! s:QuoteDelim(char)
let line = getline('.') let line = getline('.')
let col = col('.') let col = col('.')
if line[col - 2] == "\\" if line[col - 2] == "\\"
@@ -126,7 +137,7 @@ function! QuoteDelim(char)
endif endif
endf endf
function! ClosePair(char) function! s:ClosePair(char)
if getline('.')[col('.') - 1] == a:char if getline('.')[col('.') - 1] == a:char
return "\<Right>" return "\<Right>"
else else
@@ -134,7 +145,7 @@ function! ClosePair(char)
endif endif
endf endf
function! ResetMappings() function! s:ResetMappings()
for delim in s:right_delims + s:left_delims + s:quote_delims for delim in s:right_delims + s:left_delims + s:quote_delims
silent! exec 'iunmap ' . delim silent! exec 'iunmap ' . delim
silent! exec 'vunmap ' . s:leader . delim silent! exec 'vunmap ' . s:leader . delim
@@ -143,13 +154,13 @@ endfunction
" Mappings:{{{1 " Mappings:{{{1
call ResetMappings() call s:ResetMappings()
if s:autocomplete == 0 if s:autocomplete == 0
" Don't auto-complete:{{{2 " Don't auto-complete:{{{2
let test_string = "Don't"
"inoremap <expr> ) SkipDelim('\)') "inoremap <expr> ) <SID>SkipDelim('\)')
for delim in s:right_delims + s:quote_delims for delim in s:right_delims + s:quote_delims
exec 'imap <expr> ' . delim . ' SkipDelim("\' . delim . '")' exec 'imap <expr> ' . delim . ' <SID>SkipDelim("\' . delim . '")'
endfor endfor
" Wrap the selection with delimiters: " Wrap the selection with delimiters:
@@ -180,39 +191,47 @@ if s:autocomplete == 0
else else
" Do auto-complete:{{{2 " Do auto-complete:{{{2
"imap ( ()<Left> " Add matching pair and jump to the midle:
" imap ( ()<Left>
let s:i = 0 let s:i = 0
while s:i < len(s:paired_delims) while s:i < len(s:paired_delims)
exec 'imap ' . s:left_delims[s:i] . ' ' . s:left_delims[s:i] . s:right_delims[s:i] . '<Left>' exec 'imap ' . s:left_delims[s:i] . ' ' . s:left_delims[s:i] . s:right_delims[s:i] . '<Left>'
let s:i = s:i + 1 let s:i = s:i + 1
endwhile endwhile
"imap " <c-r>=QuoteDelim("\"")<CR> " Add matching quote and jump to the midle, or exit if inside a pair of
" matching quotes:
" imap " <c-r>=<SID>QuoteDelim("\"")<CR>
let s:i = 0 let s:i = 0
for delim in s:quote_delims for delim in s:quote_delims
exec 'imap ' . delim . ' <c-r>=QuoteDelim("\' . delim . '")<CR>' exec 'imap ' . delim . ' <c-r>=<SID>QuoteDelim("\' . delim . '")<CR>'
endfor endfor
"imap ) <c-r>=ClosePair(')')<CR> " Exit from inside the matching pair:
" imap ) <c-r>=<SID>ClosePair(')')<CR>
for delim in s:right_delims for delim in s:right_delims
exec 'imap ' . delim . ' <c-r>=ClosePair("\' . delim . '")<CR>' exec 'imap ' . delim . ' <c-r>=<SID>ClosePair("\' . delim . '")<CR>'
endfor endfor
" Wrap the selection with delimiters: " Wrap the selection with matching pairs:
let s:i = 0 let s:i = 0
while s:i < len(s:paired_delims) while s:i < len(s:paired_delims)
"vmap <expr> q( visualmode() == "<C-V>" ? "I(\<Esc>" : "s()\<C-R>\"\<Esc>" " But only insert opening delimiter if blocking visual is active:
" vmap <expr> q( visualmode() == "<C-V>" ? "I(\<Esc>" : "s()\<C-R>\"\<Esc>"
exec 'vmap <expr> ' . s:leader . s:left_delims[s:i] . ' visualmode() == "<C-V>" ? "I' . s:left_delims[s:i] . '\<Esc>" : "s' . s:left_delims[s:i] . s:right_delims[s:i] . '\<C-R>\"\<Esc>"' exec 'vmap <expr> ' . s:leader . s:left_delims[s:i] . ' visualmode() == "<C-V>" ? "I' . s:left_delims[s:i] . '\<Esc>" : "s' . s:left_delims[s:i] . s:right_delims[s:i] . '\<C-R>\"\<Esc>"'
"vmap <expr> q) visualmode() == "<C-V>" ? "A)\<Esc>" : "s"\<C-R>\""\<Esc>" " But only insert closing delimiter if blocking visual is active:
"vmap <expr> q) visualmode() == "<C-V>" ? "A)\<Esc>" : "s"\<C-R>\""\<Esc>"
exec 'vmap <expr> ' . s:leader . s:right_delims[s:i] . ' visualmode() == "<C-V>" ? "A' . s:left_delims[s:i] . '\<Esc>" : "s' . s:left_delims[s:i] . s:right_delims[s:i] . '\<C-R>\"\<Esc>"' exec 'vmap <expr> ' . s:leader . s:right_delims[s:i] . ' visualmode() == "<C-V>" ? "A' . s:left_delims[s:i] . '\<Esc>" : "s' . s:left_delims[s:i] . s:right_delims[s:i] . '\<C-R>\"\<Esc>"'
let s:i = s:i + 1 let s:i = s:i + 1
endwhile endwhile
" Wrap the selection with matching quotes, but only insert the opening
" quote if blocking visual is active:
for quote in s:quote_delims for quote in s:quote_delims
if quote == '"' if quote == '"'
" Ugly fix for double quotes: " Ugly fix for double quotes:
"vmap <expr> q" visualmode() == "<C-V>" ? 'I\"<Left><BS><Right><Esc>' : "s\"\<C-R>\"\<Esc>" " vmap <expr> q" visualmode() == "<C-V>" ? 'I\"<Left><BS><Right><Esc>' : "s\"\<C-R>\"\<Esc>"
exec 'vmap <expr> ' . s:leader . '" visualmode() == "<C-V>" ? ' . exec 'vmap <expr> ' . s:leader . '" visualmode() == "<C-V>" ? ' .
\ "'I\\\"<Left><BS><Right><Esc>' : " . \ "'I\\\"<Left><BS><Right><Esc>' : " .
\ '"s\"\<C-R>\"\<Esc>"' \ '"s\"\<C-R>\"\<Esc>"'
@@ -230,17 +249,17 @@ endif
" Expansions and Deletion:{{{2 " Expansions and Deletion:{{{2
" If pair is empty, delete both delimiters: " If pair is empty, delete both delimiters:
imap <expr> <BS> WithinEmptyPair() ? "\<Right>\<BS>\<BS>" : "\<BS>" imap <expr> <BS> <SID>WithinEmptyPair() ? "\<Right>\<BS>\<BS>" : "\<BS>"
" If pair is empty, expand the pair to three lines and place the cursor " If pair is empty, expand the pair to three lines and place the cursor
" in the middle: " in the middle:
if s:expand_return if s:expand_return
imap <expr> <CR> WithinEmptyPair() ? "\<CR>\<CR>\<Up>" : "\<CR>" imap <expr> <CR> <SID>WithinEmptyPair() ? "\<CR>\<CR>\<Up>" : "\<CR>"
endif endif
" If pair is emtpy, add a space to each side of the cursor: " If pair is emtpy, add a space to each side of the cursor:
if s:expand_space if s:expand_space
imap <expr> <Space> WithinEmptyPair() ? "\<Space>\<Space>\<Left>" : "\<Space>" imap <expr> <Space> <SID>WithinEmptyPair() ? "\<Space>\<Space>\<Left>" : "\<Space>"
endif endif
"}}}1 "}}}1