mirror of
https://github.com/Raimondi/delimitMate.git
synced 2025-12-06 20:54:31 +08:00
Compare commits
40 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
860c45ab2a | ||
|
|
8686edfc63 | ||
|
|
5e7a7c4738 | ||
|
|
928cc1146a | ||
|
|
d420afdacd | ||
|
|
f6015300a0 | ||
|
|
e183064744 | ||
|
|
40849c94ef | ||
|
|
4c1424f9bd | ||
|
|
0783f97fc0 | ||
|
|
e551885c24 | ||
|
|
4891a04258 | ||
|
|
ad77a9a75e | ||
|
|
5bf35a6b31 | ||
|
|
49044099dd | ||
|
|
7c423067a8 | ||
|
|
d08fa765b9 | ||
|
|
f47bcd8e3f | ||
|
|
873e79ec37 | ||
|
|
589b2ae85a | ||
|
|
f9f2b5f177 | ||
|
|
4157dc8a88 | ||
|
|
d0fc1456b7 | ||
|
|
86f70a7d9c | ||
|
|
f7b53f045d | ||
|
|
f3d140e363 | ||
|
|
93a1770f37 | ||
|
|
859a732509 | ||
|
|
eb778be64b | ||
|
|
2b2ae65182 | ||
|
|
e1b52d3676 | ||
|
|
ff4745b191 | ||
|
|
2ba694830d | ||
|
|
12c5c96ca2 | ||
|
|
a97af1fb97 | ||
|
|
5bf6a1e30c | ||
|
|
f8883cb700 | ||
|
|
f72ffe3c12 | ||
|
|
d2e896fbe1 | ||
|
|
a0b1799270 |
58
README
58
README
@@ -1,4 +1,4 @@
|
||||
*delimitMate.txt* Trying to keep those beasts at bay! v2.5 *delimitMate*
|
||||
*delimitMate.txt* Trying to keep those beasts at bay! v2.5.1 *delimitMate*
|
||||
|
||||
|
||||
|
||||
@@ -27,11 +27,10 @@
|
||||
3.1 Automatic closing & exiting________|delimitMateAutoClose|
|
||||
3.2 Expansion of space and CR__________|delimitMateExpansion|
|
||||
3.3 Backspace__________________________|delimitMateBackspace|
|
||||
3.4 Visual wrapping____________________|delimitMateVisualWrapping|
|
||||
3.5 Smart Quotes_______________________|delimitMateSmartQuotes|
|
||||
3.6 Balancing matching pairs___________|delimitMateBalance|
|
||||
3.7 FileType based configuration_______|delimitMateFileType|
|
||||
3.8 Syntax awareness___________________|delimitMateSyntax|
|
||||
3.4 Smart Quotes_______________________|delimitMateSmartQuotes|
|
||||
3.5 Balancing matching pairs___________|delimitMateBalance|
|
||||
3.6 FileType based configuration_______|delimitMateFileType|
|
||||
3.7 Syntax awareness___________________|delimitMateSyntax|
|
||||
4. Commands________________________________|delimitMateCommands|
|
||||
5. Mappings________________________________|delimitMateMappings|
|
||||
6. Functions_______________________________|delimitMateFunctions|
|
||||
@@ -88,8 +87,6 @@ specific file types, see |delimitMateOptionDetails| for examples.
|
||||
|'delimitMate_nesting_quotes'| Tells delimitMate which quotes should be
|
||||
allowed to be nested.
|
||||
|
||||
|'delimitMate_visual_leader'| Sets the leader to be used in visual mode.
|
||||
|
||||
|'delimitMate_expand_cr'| Turns on/off the expansion of <CR>.
|
||||
|
||||
|'delimitMate_expand_space'| Turns on/off the expansion of <Space>.
|
||||
@@ -178,18 +175,6 @@ e.g.: >
|
||||
let delimitMate_nesting_quotes = ['"','`']
|
||||
au FileType python let b:delimitMate_nesting_quotes = ['"']
|
||||
<
|
||||
------------------------------------------------------------------------------
|
||||
*'delimitMate_visual_leader'*
|
||||
*'b:delimitMate_visual_leader'*
|
||||
Values: Any character. ~
|
||||
Default: q ~
|
||||
|
||||
The value of this option will be used to wrap the selection in visual mode
|
||||
when followed by a delimiter. Read |delimitMateVisualWrap| for details.
|
||||
e.g: >
|
||||
let delimitMate_visual_leader = "f"
|
||||
au FileType html let b:delimitMate_visual_leader = "f"
|
||||
<
|
||||
------------------------------------------------------------------------------
|
||||
*'delimitMate_expand_cr'*
|
||||
*'b:delimitMate_expand_cr'*
|
||||
@@ -373,24 +358,7 @@ e.g. typing at the "|": >
|
||||
<
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
3.4 WRAPPING OF VISUAL SELECTION *delimitMateVisualWrapping*
|
||||
|
||||
When visual mode is active this script allows for the selection to be enclosed
|
||||
with delimiters. But, since brackets have special meaning in visual mode, a
|
||||
leader (the value of 'mapleader' by default) should precede the delimiter.
|
||||
NOTE that this feature brakes the repeat command and doesn't currently work
|
||||
well on blockwise visual mode when the selection has lines one character
|
||||
smaller than the rest, any suggestions to fix this will be very welcome.
|
||||
|
||||
e.g. (selection represented between square brackets): >
|
||||
|
||||
Selected text | After \"
|
||||
=============================================
|
||||
An [absurd] example! | An "absurd" example!
|
||||
<
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
3.5 SMART QUOTES *delimitMateSmartQuotes*
|
||||
3.4 SMART QUOTES *delimitMateSmartQuotes*
|
||||
|
||||
Only one quote will be inserted following a quote, a "\" or, following or
|
||||
preceding an alphanumeric character. This should cover closing quotes after a
|
||||
@@ -408,7 +376,7 @@ e.g. typing at the "|": >
|
||||
'm | I| | I'm|
|
||||
<
|
||||
------------------------------------------------------------------------------
|
||||
3.6 BALANCING MATCHING PAIRS *delimitMateBalance*
|
||||
3.5 BALANCING MATCHING PAIRS *delimitMateBalance*
|
||||
|
||||
When inserting an opening paren and |'delimitMate_balance_matchpairs'| is
|
||||
enabled, delimitMate will try to balance the closing pairs in the current
|
||||
@@ -423,7 +391,7 @@ e.g. typing at the "|": >
|
||||
( | (|) | ((|))
|
||||
<
|
||||
------------------------------------------------------------------------------
|
||||
3.7 FILE TYPE BASED CONFIGURATION *delimitMateFileType*
|
||||
3.6 FILE TYPE BASED CONFIGURATION *delimitMateFileType*
|
||||
|
||||
delimitMate options can be set globally for all buffers using global
|
||||
("regular") variables in your |vimrc| file. But |:autocmd| can be used to set
|
||||
@@ -443,7 +411,7 @@ NOTE that you should use buffer variables (|b:var|) only to set options with
|
||||
|:autocmd|, for global options use regular variables (|g:var|) in your vimrc.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
3.8 SYNTAX AWARENESS *delimitMateSyntax*
|
||||
3.7 SYNTAX AWARENESS *delimitMateSyntax*
|
||||
|
||||
The features of this plug-in might not be always helpful, comments and strings
|
||||
usualy don't need auto-completion. delimitMate monitors which region is being
|
||||
@@ -668,8 +636,12 @@ This script was inspired by the auto-completion of delimiters on TextMate.
|
||||
|
||||
Version Date Release notes ~
|
||||
|---------|------------|-----------------------------------------------------|
|
||||
2.5 2010-09-22 * Current release:
|
||||
- Better handling of mappings.
|
||||
2.5.1 2010-09-30 * Current release:
|
||||
- Remove visual wrapping. Surround.vim offers a much
|
||||
better implementation.
|
||||
- Minor mods to DelimitMateTest.
|
||||
|---------|------------|-----------------------------------------------------|
|
||||
2.5 2010-09-22 * - Better handling of mappings.
|
||||
- Add report for mappings in |:DelimitMateTest|.
|
||||
- Allow the use of "|" and multi-byte characters in
|
||||
|'delimitMate_quotes'| and |'delimitMate_matchpairs'|.
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
" ============================================================================
|
||||
" File: autoload/delimitMate.vim
|
||||
" Version: 2.5
|
||||
" Modified: 2010-09-22
|
||||
" Version: 2.6
|
||||
" Modified: 2011-01-14
|
||||
" Description: This plugin provides auto-completion for quotes, parens, etc.
|
||||
" Maintainer: Israel Chauca F. <israelchauca@gmail.com>
|
||||
" Manual: Read ":help delimitMate".
|
||||
" ============================================================================
|
||||
|
||||
" Utilities {{{
|
||||
|
||||
@@ -46,47 +46,6 @@ function! delimitMate#ShouldJump() "{{{
|
||||
return 0
|
||||
endfunction "}}}
|
||||
|
||||
function! delimitMate#Visual(del) " {{{
|
||||
if len(getline('.')) == 0
|
||||
" This for proper wrap of empty lines.
|
||||
let @" = "\n"
|
||||
endif
|
||||
|
||||
" Let's find which kind of delimiter we got:
|
||||
let index = index(b:_l_delimitMate_left_delims, a:del)
|
||||
if index >= 0
|
||||
let ld = a:del
|
||||
let rd = b:_l_delimitMate_right_delims[index]
|
||||
endif
|
||||
|
||||
let index = index(b:_l_delimitMate_right_delims, a:del)
|
||||
if index >= 0
|
||||
let ld = b:_l_delimitMate_left_delims[index]
|
||||
let rd = a:del
|
||||
endif
|
||||
|
||||
if index(b:_l_delimitMate_quotes_list, a:del) >= 0
|
||||
let ld = a:del
|
||||
let rd = ld
|
||||
endif
|
||||
|
||||
let mode = mode()
|
||||
if mode == "\<C-V>"
|
||||
" Block-wise visual
|
||||
return "I" . ld . "\<Esc>gv\<Right>A" . rd . "\<Esc>"
|
||||
elseif mode ==# "V"
|
||||
let dchar = "\<BS>"
|
||||
else
|
||||
let dchar = ""
|
||||
endif
|
||||
|
||||
" Store unnamed register values for later use in delimitMate#RestoreRegister().
|
||||
let b:save_reg = getreg('"')
|
||||
let b:save_reg_mode = getregtype('"')
|
||||
|
||||
return "s" . ld . "\<C-R>\"" . dchar . rd . "\<Esc>:call delimitMate#RestoreRegister()\<CR>"
|
||||
endfunction " }}}
|
||||
|
||||
function! delimitMate#IsEmptyPair(str) "{{{
|
||||
for pair in b:_l_delimitMate_matchpairs_list
|
||||
if a:str == join( split( pair, ':' ),'' )
|
||||
@@ -168,12 +127,6 @@ function! delimitMate#WriteAfter(str) "{{{
|
||||
return ''
|
||||
endfunction " }}}
|
||||
|
||||
function! delimitMate#RestoreRegister() " {{{
|
||||
" Restore unnamed register values stored in delimitMate#Visual().
|
||||
call setreg('"', b:save_reg, b:save_reg_mode)
|
||||
echo ""
|
||||
endfunction " }}}
|
||||
|
||||
function! delimitMate#GetSyntaxRegion(line, col) "{{{
|
||||
return synIDattr(synIDtrans(synID(a:line, a:col, 1)), 'name')
|
||||
endfunction " }}}
|
||||
@@ -262,6 +215,13 @@ function! delimitMate#BalancedParens(char) "{{{
|
||||
return opening - closing
|
||||
endfunction "}}}
|
||||
|
||||
function! delimitMate#RmBuffer(num) " {{{
|
||||
if len(b:_l_delimitMate_buffer) > 0
|
||||
call remove(b:_l_delimitMate_buffer, 0, (a:num-1))
|
||||
endif
|
||||
return ""
|
||||
endfunction " }}}
|
||||
|
||||
" }}}
|
||||
|
||||
" Doers {{{
|
||||
@@ -299,13 +259,21 @@ function! delimitMate#ParenDelim(char) " {{{
|
||||
if delimitMate#IsForbidden(a:char)
|
||||
return ''
|
||||
endif
|
||||
" Try to balance matchpairs
|
||||
if b:_l_delimitMate_balance_matchpairs &&
|
||||
\ delimitMate#BalancedParens(a:char) <= 0
|
||||
return ''
|
||||
endif
|
||||
let line = getline('.')
|
||||
let col = col('.')-2
|
||||
if (col) < 0
|
||||
let left = b:_l_delimitMate_left_delims[index(b:_l_delimitMate_right_delims,a:char)]
|
||||
let smart_matchpairs = substitute(b:_l_delimitMate_smart_matchpairs, '\\!', left, 'g')
|
||||
let smart_matchpairs = substitute(smart_matchpairs, '\\#', a:char, 'g')
|
||||
"echom left.':'.smart_matchpairs . ':' . matchstr(line[col+1], smart_matchpairs)
|
||||
if b:_l_delimitMate_smart_matchpairs != '' &&
|
||||
\ line[col+1:] =~ smart_matchpairs
|
||||
return ''
|
||||
elseif (col) < 0
|
||||
call setline('.',a:char.line)
|
||||
call insert(b:_l_delimitMate_buffer, a:char)
|
||||
else
|
||||
@@ -329,10 +297,10 @@ function! delimitMate#QuoteDelim(char) "{{{
|
||||
\ index(b:_l_delimitMate_nesting_quotes, a:char) < 0
|
||||
" Get out of the string.
|
||||
return a:char . delimitMate#Del()
|
||||
elseif (line[col] =~ '[[:alnum:]]' && a:char == "'") ||
|
||||
elseif (line[col] =~ '\w' && a:char == "'") ||
|
||||
\ (b:_l_delimitMate_smart_quotes &&
|
||||
\ (line[col] =~ '[[:alnum:]]' ||
|
||||
\ line[col + 1] =~ '[[:alnum:]]'))
|
||||
\ (line[col] =~ '\w' ||
|
||||
\ line[col + 1] =~ '\w'))
|
||||
" Seems like an apostrophe or a smart quote case, insert a single quote.
|
||||
return a:char
|
||||
elseif (line[col] == a:char && line[col + 1 ] != a:char) && b:_l_delimitMate_smart_quotes
|
||||
@@ -385,11 +353,31 @@ function! delimitMate#JumpAny(key) " {{{
|
||||
endif
|
||||
endfunction " delimitMate#JumpAny() }}}
|
||||
|
||||
function! delimitMate#MapMsg(msg) "{{{
|
||||
redraw
|
||||
echomsg a:msg
|
||||
return ""
|
||||
endfunction "}}}
|
||||
function! delimitMate#JumpMany() " {{{
|
||||
let line = getline('.')[col('.') - 1 : ]
|
||||
let len = len(line)
|
||||
let rights = ""
|
||||
let found = 0
|
||||
let i = 0
|
||||
while i < len
|
||||
let char = line[i]
|
||||
if index(b:_l_delimitMate_quotes_list, char) >= 0 ||
|
||||
\ index(b:_l_delimitMate_right_delims, char) >= 0
|
||||
let rights .= "\<Right>"
|
||||
let found = 1
|
||||
elseif found == 0
|
||||
let rights .= "\<Right>"
|
||||
else
|
||||
break
|
||||
endif
|
||||
let i += 1
|
||||
endwhile
|
||||
if found == 1
|
||||
return rights
|
||||
else
|
||||
return ''
|
||||
endif
|
||||
endfunction " delimitMate#JumpMany() }}}
|
||||
|
||||
function! delimitMate#ExpandReturn() "{{{
|
||||
if delimitMate#IsForbidden("")
|
||||
@@ -448,7 +436,7 @@ function! delimitMate#Del() " {{{
|
||||
endif
|
||||
endfunction " }}}
|
||||
|
||||
function! delimitMate#Finish() " {{{
|
||||
function! delimitMate#Finish(move_back) " {{{
|
||||
let len = len(b:_l_delimitMate_buffer)
|
||||
if len > 0
|
||||
let buffer = join(b:_l_delimitMate_buffer, '')
|
||||
@@ -464,8 +452,8 @@ function! delimitMate#Finish() " {{{
|
||||
call setline('.', line[:col] . line[col+len2+1:])
|
||||
endif
|
||||
let i = 1
|
||||
let lefts = "\<Left>"
|
||||
while i < len
|
||||
let lefts = ""
|
||||
while i <= len && a:move_back
|
||||
let lefts = lefts . "\<Left>"
|
||||
let i += 1
|
||||
endwhile
|
||||
@@ -474,71 +462,16 @@ function! delimitMate#Finish() " {{{
|
||||
return ''
|
||||
endfunction " }}}
|
||||
|
||||
function! delimitMate#RmBuffer(num) " {{{
|
||||
if len(b:_l_delimitMate_buffer) > 0
|
||||
call remove(b:_l_delimitMate_buffer, 0, (a:num-1))
|
||||
endif
|
||||
return ""
|
||||
endfunction " }}}
|
||||
|
||||
" }}}
|
||||
|
||||
" Tools: {{{
|
||||
function! delimitMate#TestMappings() "{{{
|
||||
let options = sort(keys(delimitMate#OptionsList()))
|
||||
let optoutput = ['delimitMate Report', '', 'Options:']
|
||||
let optoutput = ['delimitMate Report', '==================', '', '* Options: ( ) default, (g) global, (b) buffer','']
|
||||
for option in options
|
||||
exec 'call add(optoutput, ''delimitMate_''.option.'' = ''.string(b:_l_delimitMate_'.option.'))'
|
||||
exec 'call add(optoutput, ''('.(exists('b:delimitMate_'.option) ? 'b' : exists('g:delimitMate_'.option) ? 'g' : ' ').') delimitMate_''.option.'' = ''.string(b:_l_delimitMate_'.option.'))'
|
||||
endfor
|
||||
call append(line('$'), optoutput + ['','Showcase:', ''])
|
||||
if b:_l_delimitMate_autoclose
|
||||
" {{{
|
||||
for i in range(len(b:_l_delimitMate_left_delims))
|
||||
exec "normal GGoOpen: " . b:_l_delimitMate_left_delims[i]. "|"
|
||||
exec "normal oDelete: " . b:_l_delimitMate_left_delims[i] . "\<BS>|"
|
||||
exec "normal oExit: " . b:_l_delimitMate_left_delims[i] . b:_l_delimitMate_right_delims[i] . "|"
|
||||
exec "normal oSpace: " . b:_l_delimitMate_left_delims[i] . " |"
|
||||
exec "normal oDelete space: " . b:_l_delimitMate_left_delims[i] . " \<BS>|"
|
||||
exec "normal GGoVisual-L: v\<Esc>v" . b:_l_delimitMate_visual_leader . b:_l_delimitMate_left_delims[i]
|
||||
exec "normal oVisual-R: v\<Esc>v" . b:_l_delimitMate_visual_leader . b:_l_delimitMate_right_delims[i]
|
||||
exec "normal oCar return: " . b:_l_delimitMate_left_delims[i] . "\<CR>|"
|
||||
exec "normal GGoDelete car return: " . b:_l_delimitMate_left_delims[i] . "\<CR>\<BS>|\<Esc>GG\<Esc>o"
|
||||
endfor
|
||||
for i in range(len(b:_l_delimitMate_quotes_list))
|
||||
exec "normal GGAOpen: " . b:_l_delimitMate_quotes_list[i] . "|"
|
||||
exec "normal oDelete: " . b:_l_delimitMate_left_delims[i] . b:_l_delimitMate_right_delims[i] . "\<BS>|"
|
||||
exec "normal oExit: " . b:_l_delimitMate_quotes_list[i] . b:_l_delimitMate_quotes_list[i] . "|"
|
||||
exec "normal oSpace: " . b:_l_delimitMate_quotes_list[i] . " |"
|
||||
exec "normal oDelete space: " . b:_l_delimitMate_quotes_list[i] . " \<BS>|"
|
||||
exec "normal GGoVisual: v\<Esc>v" . b:_l_delimitMate_visual_leader . b:_l_delimitMate_quotes_list[i]
|
||||
exec "normal oCar return: " . b:_l_delimitMate_quotes_list[i] . "\<CR>|"
|
||||
exec "normal GGoDelete car return: " . b:_l_delimitMate_quotes_list[i] . "\<CR>\<BS>|\<Esc>GG\<Esc>o"
|
||||
endfor
|
||||
"}}}
|
||||
else
|
||||
"{{{
|
||||
for i in range(len(b:_l_delimitMate_left_delims))
|
||||
exec "normal GGoOpen & close: " . b:_l_delimitMate_left_delims[i] . b:_l_delimitMate_right_delims[i] . "|"
|
||||
exec "normal oDelete: " . b:_l_delimitMate_left_delims[i] . b:_l_delimitMate_right_delims[i] . "\<BS>|"
|
||||
exec "normal oExit: " . b:_l_delimitMate_left_delims[i] . b:_l_delimitMate_right_delims[i] . b:_l_delimitMate_right_delims[i] . "|"
|
||||
exec "normal oSpace: " . b:_l_delimitMate_left_delims[i] . b:_l_delimitMate_right_delims[i] . " |"
|
||||
exec "normal oDelete space: " . b:_l_delimitMate_left_delims[i] . b:_l_delimitMate_right_delims[i] . " \<BS>|"
|
||||
exec "normal GGoVisual-L: v\<Esc>v" . b:_l_delimitMate_visual_leader . b:_l_delimitMate_left_delims[i]
|
||||
exec "normal oVisual-R: v\<Esc>v" . b:_l_delimitMate_visual_leader . b:_l_delimitMate_right_delims[i]
|
||||
exec "normal oCar return: " . b:_l_delimitMate_left_delims[i] . b:_l_delimitMate_right_delims[i] . "\<CR>|"
|
||||
exec "normal GGoDelete car return: " . b:_l_delimitMate_left_delims[i] . b:_l_delimitMate_right_delims[i] . "\<CR>\<BS>|\<Esc>GG\<Esc>o"
|
||||
endfor
|
||||
for i in range(len(b:_l_delimitMate_quotes_list))
|
||||
exec "normal GGoOpen & close: " . b:_l_delimitMate_quotes_list[i] . b:_l_delimitMate_quotes_list[i] . "|"
|
||||
exec "normal oDelete: " . b:_l_delimitMate_quotes_list[i] . b:_l_delimitMate_quotes_list[i] . "\<BS>|"
|
||||
exec "normal oExit: " . b:_l_delimitMate_quotes_list[i] . b:_l_delimitMate_quotes_list[i] . b:_l_delimitMate_quotes_list[i] . "|"
|
||||
exec "normal oSpace: " . b:_l_delimitMate_quotes_list[i] . b:_l_delimitMate_quotes_list[i] . " |"
|
||||
exec "normal oDelete space: " . b:_l_delimitMate_quotes_list[i] . b:_l_delimitMate_quotes_list[i] . " \<BS>|"
|
||||
exec "normal GGoVisual: v\<Esc>v" . b:_l_delimitMate_visual_leader . b:_l_delimitMate_quotes_list[i]
|
||||
exec "normal oCar return: " . b:_l_delimitMate_quotes_list[i] . b:_l_delimitMate_quotes_list[i] . "\<CR>|"
|
||||
exec "normal GGoDelete car return: " . b:_l_delimitMate_quotes_list[i] . b:_l_delimitMate_quotes_list[i] . "\<CR>\<BS>|\<Esc>GG\<Esc>o"
|
||||
endfor
|
||||
endif "}}}
|
||||
call append(line('$'), optoutput + ['--------------------',''])
|
||||
|
||||
" Check if mappings were set. {{{
|
||||
let imaps = b:_l_delimitMate_right_delims
|
||||
@@ -548,7 +481,7 @@ function! delimitMate#TestMappings() "{{{
|
||||
\ b:_l_delimitMate_apostrophes_list +
|
||||
\ ['<BS>', '<S-BS>', '<Del>', '<S-Tab>', '<Esc>'] +
|
||||
\ ['<Up>', '<Down>', '<Left>', '<Right>', '<LeftMouse>', '<RightMouse>'] +
|
||||
\ ['<Home>', '<End>', '<PageUp>', '<PageDown>', '<S-Down>', '<S-Up>']
|
||||
\ ['<Home>', '<End>', '<PageUp>', '<PageDown>', '<S-Down>', '<S-Up>', '<C-G>g']
|
||||
let imaps = imaps + ( b:_l_delimitMate_expand_cr ? ['<CR>'] : [] )
|
||||
let imaps = imaps + ( b:_l_delimitMate_expand_space ? ['<Space>'] : [] )
|
||||
|
||||
@@ -568,38 +501,85 @@ function! delimitMate#TestMappings() "{{{
|
||||
let ibroken = ibroken + [map.": is not set:"] + split(output, '\n')
|
||||
endif
|
||||
endfor
|
||||
let ibroken = len(ibroken) > 0 ? ['IMAP'] + ibroken : []
|
||||
|
||||
let vbroken = []
|
||||
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"
|
||||
let output = ''
|
||||
if map == '|'
|
||||
let map = '<Bar>'
|
||||
endif
|
||||
redir => output | execute "verbose imap ".map | redir END
|
||||
let vbroken = vbroken + [vleader.map.": is not set:"] + split(output,'\n')
|
||||
endif
|
||||
endfor
|
||||
let vbroken = len(vbroken) > 0 ? ['VMAP'] + vbroken : []
|
||||
|
||||
unlet! output
|
||||
if ibroken == [] && vbroken == []
|
||||
let output = ['Mappings:', '', 'All mappings were set-up.', '--------------------', '', '']
|
||||
if ibroken == []
|
||||
let output = ['* Mappings:', '', 'All mappings were set-up.', '--------------------', '', '']
|
||||
else
|
||||
let output = ['Mappings:', ''] + ibroken + vbroken + ['--------------------', '', '']
|
||||
let output = ['* Mappings:', ''] + ibroken + ['--------------------', '']
|
||||
endif
|
||||
call append('$', output)
|
||||
call append('$', output+['* Showcase:', ''])
|
||||
" }}}
|
||||
if b:_l_delimitMate_autoclose
|
||||
" {{{
|
||||
for i in range(len(b:_l_delimitMate_left_delims))
|
||||
exec "normal Go0\<C-D>Open: " . b:_l_delimitMate_left_delims[i]. "|"
|
||||
exec "normal o0\<C-D>Delete: " . b:_l_delimitMate_left_delims[i] . "\<BS>|"
|
||||
exec "normal o0\<C-D>Exit: " . b:_l_delimitMate_left_delims[i] . b:_l_delimitMate_right_delims[i] . "|"
|
||||
if b:_l_delimitMate_expand_space == 1
|
||||
exec "normal o0\<C-D>Space: " . b:_l_delimitMate_left_delims[i] . " |"
|
||||
exec "normal o0\<C-D>Delete space: " . b:_l_delimitMate_left_delims[i] . " \<BS>|"
|
||||
endif
|
||||
if b:_l_delimitMate_expand_cr == 1
|
||||
exec "normal o0\<C-D>Car return: " . b:_l_delimitMate_left_delims[i] . "\<CR>|"
|
||||
exec "normal Go0\<C-D>Delete car return: " . b:_l_delimitMate_left_delims[i] . "\<CR>0\<C-D>\<BS>|"
|
||||
endif
|
||||
call append(line('$'), '')
|
||||
endfor
|
||||
for i in range(len(b:_l_delimitMate_quotes_list))
|
||||
exec "normal Go0\<C-D>Open: " . b:_l_delimitMate_quotes_list[i] . "|"
|
||||
exec "normal o0\<C-D>Delete: " . b:_l_delimitMate_quotes_list[i] . "\<BS>|"
|
||||
exec "normal o0\<C-D>Exit: " . b:_l_delimitMate_quotes_list[i] . b:_l_delimitMate_quotes_list[i] . "|"
|
||||
if b:_l_delimitMate_expand_space == 1
|
||||
exec "normal o0\<C-D>Space: " . b:_l_delimitMate_quotes_list[i] . " |"
|
||||
exec "normal o0\<C-D>Delete space: " . b:_l_delimitMate_quotes_list[i] . " \<BS>|"
|
||||
endif
|
||||
if b:_l_delimitMate_expand_cr == 1
|
||||
exec "normal o0\<C-D>Car return: " . b:_l_delimitMate_quotes_list[i] . "\<CR>|"
|
||||
exec "normal Go0\<C-D>Delete car return: " . b:_l_delimitMate_quotes_list[i] . "\<CR>\<BS>|"
|
||||
endif
|
||||
call append(line('$'), '')
|
||||
endfor
|
||||
"}}}
|
||||
else
|
||||
"{{{
|
||||
for i in range(len(b:_l_delimitMate_left_delims))
|
||||
exec "normal GoOpen & close: " . b:_l_delimitMate_left_delims[i] . b:_l_delimitMate_right_delims[i] . "|"
|
||||
exec "normal oDelete: " . b:_l_delimitMate_left_delims[i] . b:_l_delimitMate_right_delims[i] . "\<BS>|"
|
||||
exec "normal oExit: " . b:_l_delimitMate_left_delims[i] . b:_l_delimitMate_right_delims[i] . b:_l_delimitMate_right_delims[i] . "|"
|
||||
if b:_l_delimitMate_expand_space == 1
|
||||
exec "normal oSpace: " . b:_l_delimitMate_left_delims[i] . b:_l_delimitMate_right_delims[i] . " |"
|
||||
exec "normal oDelete space: " . b:_l_delimitMate_left_delims[i] . b:_l_delimitMate_right_delims[i] . " \<BS>|"
|
||||
endif
|
||||
if b:_l_delimitMate_expand_cr == 1
|
||||
exec "normal oCar return: " . b:_l_delimitMate_left_delims[i] . b:_l_delimitMate_right_delims[i] . "\<CR>|"
|
||||
exec "normal GoDelete car return: " . b:_l_delimitMate_left_delims[i] . b:_l_delimitMate_right_delims[i] . "\<CR>\<BS>|"
|
||||
endif
|
||||
call append(line('$'), '')
|
||||
endfor
|
||||
for i in range(len(b:_l_delimitMate_quotes_list))
|
||||
exec "normal GoOpen & close: " . b:_l_delimitMate_quotes_list[i] . b:_l_delimitMate_quotes_list[i] . "|"
|
||||
exec "normal oDelete: " . b:_l_delimitMate_quotes_list[i] . b:_l_delimitMate_quotes_list[i] . "\<BS>|"
|
||||
exec "normal oExit: " . b:_l_delimitMate_quotes_list[i] . b:_l_delimitMate_quotes_list[i] . b:_l_delimitMate_quotes_list[i] . "|"
|
||||
if b:_l_delimitMate_expand_space == 1
|
||||
exec "normal oSpace: " . b:_l_delimitMate_quotes_list[i] . b:_l_delimitMate_quotes_list[i] . " |"
|
||||
exec "normal oDelete space: " . b:_l_delimitMate_quotes_list[i] . b:_l_delimitMate_quotes_list[i] . " \<BS>|"
|
||||
endif
|
||||
if b:_l_delimitMate_expand_cr == 1
|
||||
exec "normal oCar return: " . b:_l_delimitMate_quotes_list[i] . b:_l_delimitMate_quotes_list[i] . "\<CR>|"
|
||||
exec "normal GoDelete car return: " . b:_l_delimitMate_quotes_list[i] . b:_l_delimitMate_quotes_list[i] . "\<CR>\<BS>|"
|
||||
endif
|
||||
call append(line('$'), '')
|
||||
endfor
|
||||
endif "}}}
|
||||
redir => setoptions | set | filetype | redir END
|
||||
call append(line('$'), split(setoptions,"\n")
|
||||
\ + ['--------------------'])
|
||||
setlocal nowrap
|
||||
endfunction "}}}
|
||||
|
||||
function! delimitMate#OptionsList() "{{{
|
||||
return {'autoclose' : 1,'matchpairs': &matchpairs, 'quotes' : '" '' `', 'nesting_quotes' : [], 'visual_leader' : ( exists('mapleader') ? mapleader : exists('b:maplocalleader') ? b:maplocalleader : '\' ), 'expand_cr' : 0, 'expand_space' : 0, 'smart_quotes' : 1, 'balance_matchpairs' : 0, 'excluded_regions' : 'Comment', 'excluded_ft' : '', 'apostrophes' : ''}
|
||||
return {'autoclose' : 1,'matchpairs': &matchpairs, 'quotes' : '" '' `', 'nesting_quotes' : [], 'expand_cr' : 0, 'expand_space' : 0, 'smart_quotes' : 1, 'smart_matchpairs' : '\w', 'balance_matchpairs' : 0, 'excluded_regions' : 'Comment', 'excluded_ft' : '', 'apostrophes' : ''}
|
||||
endfunction " delimitMate#OptionsList }}}
|
||||
"}}}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ function! delimitMateTests#Main()
|
||||
echoerr "delimitMateTests#Main(): If you really want to use me, you must set delimitMate_testing to any value."
|
||||
return
|
||||
elseif g:delimitMate_testing == "fork"
|
||||
!gvim -N -u NONE -U NONE -c "set backspace=eol,start" -c "set background=light" -c "syntax on" -c "let delimitMate_testing = 1" -c "so autoload/delimitMate.vim" -c "so autoload/delimitMateTests.vim" -c "so plugin/delimitMate.vim" -c "call delimitMateTests\#Main()"
|
||||
!gvim -N -u NONE -U NONE -c "set runtimepath+=~/.vim/bundle/pathogen" -c "call pathogen\#runtime_append_all_bundles('bundle','symlinks')" -c "set backspace=eol,start" -c "set background=light" -c "syntax on" -c "let delimitMate_testing = 1" -c "ru autoload/delimitMate.vim" -c "ru autoload/delimitMateTests.vim" -c "ru plugin/delimitMate.vim" -c "call delimitMateTests\#Main()"
|
||||
return ""
|
||||
endif
|
||||
nmap <F1> :qall!<CR>
|
||||
@@ -19,7 +19,6 @@ function! delimitMateTests#Main()
|
||||
let b:delimitMate_matchpairs = &matchpairs
|
||||
let b:delimitMate_quotes = "\" ' `"
|
||||
let b:delimitMate_excluded_regions = "Comment"
|
||||
silent! unlet b:delimitMate_visual_leader
|
||||
let b:delimitMate_expand_space = 0
|
||||
let b:delimitMate_expand_cr = 0
|
||||
let b:delimitMate_smart_quotes = 1
|
||||
@@ -164,36 +163,6 @@ function! delimitMateTests#Main()
|
||||
call Type("BS with CR expansion", "(\<CR>\<BS>", ['(|)'], ['expand_cr:1'])
|
||||
call RepeatLast("BS with CR expansion", ['(|)(|)'], 1)
|
||||
|
||||
" Visual wrapping
|
||||
call Type("Visual wrapping left paren", "1234\<Esc>v,(", ['123(4)'], ['visual_leader:","'])
|
||||
cal RepeatLast("Visual wrapping left paren", ['(1)23(4)'], 1)
|
||||
|
||||
" Visual line wrapping
|
||||
call Type("Visual line wrapping left paren", "1234\<Esc>V,(", ['(1234)'], ['visual_leader:","'])
|
||||
cal RepeatLast("Visual line wrapping left paren", ['((1234))'], 1)
|
||||
|
||||
" Visual wrapping
|
||||
call Type("Visual wrapping right paren", "1234\<Esc>v,)", ['123(4)'], ['visual_leader:","'])
|
||||
cal RepeatLast("Visual wrapping right paren", ['(1)23(4)'], 1)
|
||||
|
||||
" Visual line wrapping
|
||||
call Type("Visual line wrapping right paren", "1234\<Esc>V,)", ['(1234)'], ['visual_leader:","'])
|
||||
cal RepeatLast("Visual line wrapping right paren", ['((1234))'], 1)
|
||||
|
||||
" Visual wrapping
|
||||
call Type("Visual wrapping quote", "1234\<Esc>v,\"", ['123"4"'], ['visual_leader:","'])
|
||||
cal RepeatLast("Visual wrapping quote", ['"1"23"4"'], 1)
|
||||
|
||||
" Visual line wrapping
|
||||
call Type("Visual line wrapping quote", "1234\<Esc>V,\"", ['"1234"'], ['visual_leader:","'])
|
||||
cal RepeatLast("Visual line wrapping quote", ['""1234""'], 1)
|
||||
|
||||
" Visual line wrapping empty line
|
||||
call Type("Visual line wrapping paren empty line", "\<Esc>V,(", ['()'], ['visual_leader:","'])
|
||||
|
||||
" Visual line wrapping empty line
|
||||
call Type("Visual line wrapping quote empty line", "\<Esc>V,\"", ['""'], ['visual_leader:","'])
|
||||
|
||||
" Smart quotes
|
||||
call Type("Smart quote alphanumeric", "a\"4", ['a"4|'], [])
|
||||
call RepeatLast("Smart quote alphanumeric", ['a"4|a"4|'])
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*delimitMate.txt* Trying to keep those beasts at bay! v2.5 *delimitMate*
|
||||
*delimitMate.txt* Trying to keep those beasts at bay! v2.6 *delimitMate*
|
||||
|
||||
|
||||
|
||||
@@ -27,11 +27,10 @@
|
||||
3.1 Automatic closing & exiting________|delimitMateAutoClose|
|
||||
3.2 Expansion of space and CR__________|delimitMateExpansion|
|
||||
3.3 Backspace__________________________|delimitMateBackspace|
|
||||
3.4 Visual wrapping____________________|delimitMateVisualWrapping|
|
||||
3.5 Smart Quotes_______________________|delimitMateSmartQuotes|
|
||||
3.6 Balancing matching pairs___________|delimitMateBalance|
|
||||
3.7 FileType based configuration_______|delimitMateFileType|
|
||||
3.8 Syntax awareness___________________|delimitMateSyntax|
|
||||
3.4 Smart Quotes_______________________|delimitMateSmartQuotes|
|
||||
3.5 Balancing matching pairs___________|delimitMateBalance|
|
||||
3.6 FileType based configuration_______|delimitMateFileType|
|
||||
3.7 Syntax awareness___________________|delimitMateSyntax|
|
||||
4. Commands________________________________|delimitMateCommands|
|
||||
5. Mappings________________________________|delimitMateMappings|
|
||||
6. Functions_______________________________|delimitMateFunctions|
|
||||
@@ -88,14 +87,14 @@ specific file types, see |delimitMateOptionDetails| for examples.
|
||||
|'delimitMate_nesting_quotes'| Tells delimitMate which quotes should be
|
||||
allowed to be nested.
|
||||
|
||||
|'delimitMate_visual_leader'| Sets the leader to be used in visual mode.
|
||||
|
||||
|'delimitMate_expand_cr'| Turns on/off the expansion of <CR>.
|
||||
|
||||
|'delimitMate_expand_space'| Turns on/off the expansion of <Space>.
|
||||
|
||||
|'delimitMate_smart_quotes'| Turns on/off the "smart quotes" feature.
|
||||
|
||||
|'delimitMate_smart_matchpairs'| Turns on/off the "smart matchpairs" feature.
|
||||
|
||||
|'delimitMate_balance_matchpairs'|Turns on/off the "balance matching pairs"
|
||||
feature.
|
||||
|
||||
@@ -178,18 +177,6 @@ e.g.: >
|
||||
let delimitMate_nesting_quotes = ['"','`']
|
||||
au FileType python let b:delimitMate_nesting_quotes = ['"']
|
||||
<
|
||||
------------------------------------------------------------------------------
|
||||
*'delimitMate_visual_leader'*
|
||||
*'b:delimitMate_visual_leader'*
|
||||
Values: Any character. ~
|
||||
Default: q ~
|
||||
|
||||
The value of this option will be used to wrap the selection in visual mode
|
||||
when followed by a delimiter. Read |delimitMateVisualWrap| for details.
|
||||
e.g: >
|
||||
let delimitMate_visual_leader = "f"
|
||||
au FileType html let b:delimitMate_visual_leader = "f"
|
||||
<
|
||||
------------------------------------------------------------------------------
|
||||
*'delimitMate_expand_cr'*
|
||||
*'b:delimitMate_expand_cr'*
|
||||
@@ -197,7 +184,8 @@ Values: 1 or 0 ~
|
||||
Default: 0 ~
|
||||
|
||||
This option turns on/off the expansion of <CR>. Read |delimitMateExpansion|
|
||||
for details.
|
||||
for details. NOTE This feature requires that 'backspace' is either set to 2 or
|
||||
has "eol" and "start" as part of its value.
|
||||
e.g.: >
|
||||
let delimitMate_expand_cr = 1
|
||||
au FileType mail let b:delimitMate_expand_cr = 1
|
||||
@@ -207,7 +195,6 @@ e.g.: >
|
||||
*'b:delimitMate_expand_space'*
|
||||
Values: 1 or 0 ~
|
||||
Default: 0 ~
|
||||
|
||||
This option turns on/off the expansion of <Space>. Read |delimitMateExpansion|
|
||||
for details.
|
||||
e.g.: >
|
||||
@@ -224,7 +211,22 @@ This option turns on/off the smart quotes feature. Read
|
||||
|delimitMateSmartQuotes| for details.
|
||||
e.g.: >
|
||||
let delimitMate_smart_quotes = 0
|
||||
au FileType tcl let b:delimitMate_smart_quotes = 0
|
||||
au FileType tcl let b:delimitMate_smart_quotes = 1
|
||||
<
|
||||
------------------------------------------------------------------------------
|
||||
*'delimitMate_smart_matchpairs'*
|
||||
*'b:delimitMate_smart_matchpairs'*
|
||||
Values: Regexp ~
|
||||
Default: '^\%(\w\|\!\|£\|\$\|_\|["'']\s*\S\)' ~
|
||||
|
||||
This regex is matched against the text to the right of cursor, if it's not
|
||||
empty and there is a match delimitMate will not autoclose the pair. At the
|
||||
moment to match the text, an escaped bang (\!) in the regex will be replaced
|
||||
by the character being inserted, while an escaped number symbol (\#) will be
|
||||
replaced by the closing pair.
|
||||
e.g.: >
|
||||
let delimitMate_smart_matchpairs = ''
|
||||
au FileType tcl let b:delimitMate_smart_matchpairs = '^\%(\w\|\$\)'
|
||||
<
|
||||
------------------------------------------------------------------------------
|
||||
*'delimitMate_balance_matchpairs'*
|
||||
@@ -289,31 +291,42 @@ When the cursor is inside an empty pair or located next to the left of a
|
||||
closing delimiter, the cursor is placed outside the pair to the right of the
|
||||
closing delimiter.
|
||||
|
||||
When |'delimitMate_smart_matchpairs'| is not empty and it matches the text to
|
||||
the right of the cursor, delimitMate will not automatically insert the closing
|
||||
pair.
|
||||
|
||||
Unless |'delimitMate_matchpairs'| or |'delimitMate_quotes'| are set, this
|
||||
script uses the values in '&matchpairs' to identify the pairs, and ", ' and `
|
||||
for quotes respectively.
|
||||
|
||||
<S-Tab> will jump over a single closing delimiter or quote, <C-G>g will jump
|
||||
over contiguous delimiters and/or quotes.
|
||||
|
||||
The following table shows the behaviour, this applies to quotes too (the final
|
||||
position of the cursor is represented by a "|"):
|
||||
|
||||
With auto-close: >
|
||||
Type | You get
|
||||
====================
|
||||
=======================
|
||||
( | (|)
|
||||
–––––––––|––––––––––
|
||||
–––––––––––|–––––––––––
|
||||
() | ()|
|
||||
–––––––––|––––––––––
|
||||
–––––––––––|–––––––––––
|
||||
(<S-Tab> | ()|
|
||||
–––––––––––|–––––––––––
|
||||
{("<C-G>g | {("")}|
|
||||
<
|
||||
Without auto-close: >
|
||||
|
||||
Type | You get
|
||||
=====================
|
||||
=========================
|
||||
() | (|)
|
||||
–––––––––-|––––––––––
|
||||
–––––––––-----|––––––––––
|
||||
()) | ()|
|
||||
–––––––––-|––––––––––
|
||||
–––––––––-----|––––––––––
|
||||
()<S-Tab> | ()|
|
||||
––––––––––––––|–––––––––––
|
||||
{}()""<C-G>g | {("")}|
|
||||
<
|
||||
NOTE: Abbreviations will not be expanded by delimiters used on delimitMate,
|
||||
you should use <C-]> (read |i_CTRL-]|) to expand them on the go.
|
||||
@@ -373,27 +386,10 @@ e.g. typing at the "|": >
|
||||
<
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
3.4 WRAPPING OF VISUAL SELECTION *delimitMateVisualWrapping*
|
||||
|
||||
When visual mode is active this script allows for the selection to be enclosed
|
||||
with delimiters. But, since brackets have special meaning in visual mode, a
|
||||
leader (the value of 'mapleader' by default) should precede the delimiter.
|
||||
NOTE that this feature brakes the repeat command and doesn't currently work
|
||||
well on blockwise visual mode when the selection has lines one character
|
||||
smaller than the rest, any suggestions to fix this will be very welcome.
|
||||
|
||||
e.g. (selection represented between square brackets): >
|
||||
|
||||
Selected text | After \"
|
||||
=============================================
|
||||
An [absurd] example! | An "absurd" example!
|
||||
<
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
3.5 SMART QUOTES *delimitMateSmartQuotes*
|
||||
3.4 SMART QUOTES *delimitMateSmartQuotes*
|
||||
|
||||
Only one quote will be inserted following a quote, a "\" or, following or
|
||||
preceding an alphanumeric character. This should cover closing quotes after a
|
||||
preceding a keyword character. This should cover closing quotes after a
|
||||
string, opening quotes before a string, escaped quotes and apostrophes. Except
|
||||
for apostrophes, this feature can be disabled setting the option
|
||||
|'delimitMate_smart_quotes'| to 0.
|
||||
@@ -408,7 +404,23 @@ e.g. typing at the "|": >
|
||||
'm | I| | I'm|
|
||||
<
|
||||
------------------------------------------------------------------------------
|
||||
3.6 BALANCING MATCHING PAIRS *delimitMateBalance*
|
||||
3.4 SMART MATCHPAIRS *delimitMateSmartMatchpairs*
|
||||
|
||||
This is similar to "smart quotes", but applied to the characters in
|
||||
|'delimitMate_matchpairs'|. The difference is that delimitMate will not
|
||||
auto-close the pair when the regex matches the text on the right of the
|
||||
cursor. See |'delimitMate_smart_matchpairs'| for more details.
|
||||
|
||||
|
||||
e.g. typing at the "|": >
|
||||
|
||||
What | Before | After
|
||||
=======================================
|
||||
( | function| | function(|)
|
||||
( | |var | (|var
|
||||
<
|
||||
------------------------------------------------------------------------------
|
||||
3.5 BALANCING MATCHING PAIRS *delimitMateBalance*
|
||||
|
||||
When inserting an opening paren and |'delimitMate_balance_matchpairs'| is
|
||||
enabled, delimitMate will try to balance the closing pairs in the current
|
||||
@@ -418,12 +430,12 @@ e.g. typing at the "|": >
|
||||
|
||||
What | Before | After
|
||||
=======================================
|
||||
( | |) | (|)
|
||||
( | | | (|)
|
||||
( | (|) | ((|))
|
||||
( | |) | (|)
|
||||
(( | |) | ((|))
|
||||
<
|
||||
------------------------------------------------------------------------------
|
||||
3.7 FILE TYPE BASED CONFIGURATION *delimitMateFileType*
|
||||
3.6 FILE TYPE BASED CONFIGURATION *delimitMateFileType*
|
||||
|
||||
delimitMate options can be set globally for all buffers using global
|
||||
("regular") variables in your |vimrc| file. But |:autocmd| can be used to set
|
||||
@@ -443,7 +455,7 @@ NOTE that you should use buffer variables (|b:var|) only to set options with
|
||||
|:autocmd|, for global options use regular variables (|g:var|) in your vimrc.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
3.8 SYNTAX AWARENESS *delimitMateSyntax*
|
||||
3.7 SYNTAX AWARENESS *delimitMateSyntax*
|
||||
|
||||
The features of this plug-in might not be always helpful, comments and strings
|
||||
usualy don't need auto-completion. delimitMate monitors which region is being
|
||||
@@ -553,11 +565,12 @@ In order to make custom mappings easier and prevent overwritting existing
|
||||
ones, delimitMate uses the |<Plug>| + |hasmapto()| (|usr_41.txt|) construct
|
||||
for its mappings.
|
||||
|
||||
The following are the mappings alway set by delimitMate:
|
||||
These are the default mappings:
|
||||
|
||||
<BS> is mapped to <Plug>delimitMateBS
|
||||
<S-BS> is mapped to <Plug>delimitMateS-BS
|
||||
<S-Tab> is mapped to <Plug>delimitMateS-Tab
|
||||
<C-G>g is mapped to <Plug>delimitMateJumpMany
|
||||
<Del> is mapped to <Plug>delimitMateDel
|
||||
<Esc> is mapped to <Plug>delimitMateEsc
|
||||
<Left> is mapped to <Plug>delimitMateLeft
|
||||
@@ -594,7 +607,7 @@ menus:
|
||||
6. FUNCTIONS *delimitMateFunctions*
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
delimitMate#WithinEmptyPair() *delimitMate_WithinEmptyPair()*
|
||||
delimitMate#WithinEmptyPair() *delimitMate#WithinEmptyPair()*
|
||||
|
||||
Returns 1 if the cursor is inside an empty pair, 0 otherwise.
|
||||
e.g.: >
|
||||
@@ -638,26 +651,34 @@ be very pleased to read them.
|
||||
==============================================================================
|
||||
9. CREDITS *delimitMateCredits*
|
||||
|
||||
Some of the code that make this script is modified or just shamelessly copied
|
||||
from the following sources:
|
||||
Contributors: ~
|
||||
|
||||
- Ian McCracken
|
||||
- Kim Silkebækken ~
|
||||
Fixed mappings being echoed in the terminal.
|
||||
|
||||
- Eric Van Dewoestine ~
|
||||
Implemented smart matchpairs.
|
||||
|
||||
Some of the code that makes this script was modified or just shamelessly
|
||||
copied from the following sources:
|
||||
|
||||
- Ian McCracken ~
|
||||
Post titled: Vim, Part II: Matching Pairs:
|
||||
http://concisionandconcinnity.blogspot.com/
|
||||
|
||||
- Aristotle Pagaltzis
|
||||
- Aristotle Pagaltzis ~
|
||||
From the comments on the previous blog post and from:
|
||||
http://gist.github.com/144619
|
||||
|
||||
- Karl Guertin
|
||||
- Karl Guertin ~
|
||||
AutoClose:
|
||||
http://www.vim.org/scripts/script.php?script_id=1849
|
||||
|
||||
- Thiago Alves
|
||||
- Thiago Alves ~
|
||||
AutoClose:
|
||||
http://www.vim.org/scripts/script.php?script_id=2009
|
||||
|
||||
- Edoardo Vacchi
|
||||
- Edoardo Vacchi ~
|
||||
ClosePairs:
|
||||
http://www.vim.org/scripts/script.php?script_id=2373
|
||||
|
||||
@@ -668,8 +689,16 @@ This script was inspired by the auto-completion of delimiters on TextMate.
|
||||
|
||||
Version Date Release notes ~
|
||||
|---------|------------|-----------------------------------------------------|
|
||||
2.5 2010-09-22 * Current release:
|
||||
- Better handling of mappings.
|
||||
2.6 2011-01-14 * Current release:
|
||||
- Add smart_matchpairs feature.
|
||||
- Add mapping to jump over contiguous delimiters.
|
||||
- Fix behaviour of b:loaded_delimitMate.
|
||||
|---------|------------|-----------------------------------------------------|
|
||||
2.5.1 2010-09-30 * - Remove visual wrapping. Surround.vim offers a much
|
||||
better implementation.
|
||||
- Minor mods to DelimitMateTest.
|
||||
|---------|------------|-----------------------------------------------------|
|
||||
2.5 2010-09-22 * - Better handling of mappings.
|
||||
- Add report for mappings in |:DelimitMateTest|.
|
||||
- Allow the use of "|" and multi-byte characters in
|
||||
|'delimitMate_quotes'| and |'delimitMate_matchpairs'|.
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
" ============================================================================
|
||||
" File: plugin/delimitMate.vim
|
||||
" Version: 2.5
|
||||
" Modified: 2010-09-22
|
||||
" Version: 2.6
|
||||
" Modified: 2011-01-14
|
||||
" Description: This plugin provides auto-completion for quotes, parens, etc.
|
||||
" Maintainer: Israel Chauca F. <israelchauca@gmail.com>
|
||||
" Manual: Read ":help delimitMate".
|
||||
" ============================================================================
|
||||
|
||||
" Initialization: {{{
|
||||
|
||||
@@ -27,7 +27,7 @@ if v:version < 700
|
||||
endif
|
||||
|
||||
let s:loaded_delimitMate = 1
|
||||
let delimitMate_version = "2.5"
|
||||
let delimitMate_version = "2.6"
|
||||
|
||||
function! s:option_init(name, default) "{{{
|
||||
let b = exists("b:delimitMate_" . a:name)
|
||||
@@ -76,11 +76,6 @@ function! s:init() "{{{
|
||||
" excluded filetypes
|
||||
call s:option_init("excluded_ft", "")
|
||||
|
||||
" 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!"
|
||||
@@ -109,14 +104,16 @@ function! s:init() "{{{
|
||||
unlet g:delimitMate_expand_cr
|
||||
let g:delimitMate_expand_cr = 1
|
||||
endif
|
||||
if (&backspace !~ 'eol' || &backspace !~ 'start') &&
|
||||
if ((&backspace !~ 'eol' || &backspace !~ 'start') && &backspace != 2) &&
|
||||
\ ((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 <CR> expansion, you need to have 'eol' and 'start' in your backspace option. Read :help 'backspace'."
|
||||
let b:delimitMate_expand_cr = 0
|
||||
echom "delimitMate: There seems to be some incompatibility with your settings that may interfer with the expansion of <CR>. See :help 'delimitMate_expand_cr' for details."
|
||||
endif
|
||||
call s:option_init("expand_cr", 0)
|
||||
|
||||
" smart_matchpairs
|
||||
call s:option_init("smart_matchpairs", '^\%(\w\|\!\|£\|\$\|_\|["'']\s*\S\)')
|
||||
|
||||
" smart_quotes
|
||||
call s:option_init("smart_quotes", 1)
|
||||
|
||||
@@ -132,8 +129,6 @@ function! s:init() "{{{
|
||||
|
||||
let b:_l_delimitMate_buffer = []
|
||||
|
||||
let b:loaded_delimitMate = 1
|
||||
|
||||
endfunction "}}} Init()
|
||||
|
||||
"}}}
|
||||
@@ -154,7 +149,6 @@ function! s:Map() "{{{
|
||||
else
|
||||
call s:NoAutoClose()
|
||||
endif
|
||||
call s:VisualMaps()
|
||||
call s:ExtraMappings()
|
||||
finally
|
||||
let &cpo = save_cpo
|
||||
@@ -175,12 +169,7 @@ function! s:Unmap() " {{{
|
||||
\ b:_l_delimitMate_apostrophes_list +
|
||||
\ ['<BS>', '<S-BS>', '<Del>', '<CR>', '<Space>', '<S-Tab>', '<Esc>'] +
|
||||
\ ['<Up>', '<Down>', '<Left>', '<Right>', '<LeftMouse>', '<RightMouse>'] +
|
||||
\ ['<Home>', '<End>', '<PageUp>', '<PageDown>', '<S-Down>', '<S-Up>']
|
||||
|
||||
let vmaps =
|
||||
\ b:_l_delimitMate_right_delims +
|
||||
\ b:_l_delimitMate_left_delims +
|
||||
\ b:_l_delimitMate_quotes_list
|
||||
\ ['<Home>', '<End>', '<PageUp>', '<PageDown>', '<S-Down>', '<S-Up>', '<C-G>g']
|
||||
|
||||
for map in imaps
|
||||
if maparg(map, "i") =~? 'delimitMate'
|
||||
@@ -191,20 +180,6 @@ function! s:Unmap() " {{{
|
||||
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 map == '|'
|
||||
let map = '<Bar>'
|
||||
endif
|
||||
if maparg(vleader . map, "v") =~? "delimitMate"
|
||||
exec 'silent! vunmap <buffer> ' . vleader . map
|
||||
endif
|
||||
endfor
|
||||
|
||||
if !has('gui_running')
|
||||
silent! iunmap <C-[>OC
|
||||
endif
|
||||
@@ -227,7 +202,7 @@ function! s:TestMappingsDo() "{{{
|
||||
call s:Unmap()
|
||||
call s:Map()
|
||||
call delimitMate#TestMappings()
|
||||
normal o
|
||||
call append(line('$'),'')
|
||||
endfor
|
||||
endfor
|
||||
let b:delimitMate_expand_space = temp_varsDM[0]
|
||||
@@ -236,28 +211,32 @@ function! s:TestMappingsDo() "{{{
|
||||
unlet temp_varsDM
|
||||
endif
|
||||
normal gg
|
||||
g/\%^$/d
|
||||
endfunction "}}}
|
||||
|
||||
function! s:DelimitMateDo(...) "{{{
|
||||
" Initialize settings:
|
||||
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 s:Unmap()
|
||||
|
||||
" Finish here:
|
||||
return 1
|
||||
endif
|
||||
|
||||
" First, remove all magic, if needed:
|
||||
if exists("b:delimitMate_enabled") && b:delimitMate_enabled == 1
|
||||
call s:Unmap()
|
||||
endif
|
||||
|
||||
" Check if this file type is excluded:
|
||||
if exists("g:delimitMate_excluded_ft") &&
|
||||
\ index(split(g:delimitMate_excluded_ft, ','), &filetype, 0, 1) >= 0
|
||||
|
||||
" Finish here:
|
||||
return 1
|
||||
endif
|
||||
|
||||
" Check if user tried to disable using b:loaded_delimitMate
|
||||
if exists("b:loaded_delimitMate")
|
||||
return 1
|
||||
endif
|
||||
|
||||
" Initialize settings:
|
||||
call s:init()
|
||||
|
||||
" Now, add magic:
|
||||
call s:Map()
|
||||
|
||||
@@ -267,30 +246,30 @@ function! s:DelimitMateDo(...) "{{{
|
||||
endfunction "}}}
|
||||
|
||||
function! s:DelimitMateSwitch() "{{{
|
||||
call s:init()
|
||||
if exists("b:delimitMate_enabled") && b:delimitMate_enabled
|
||||
call s:Unmap()
|
||||
echo "delimitMate has been disabled."
|
||||
else
|
||||
call s:Unmap()
|
||||
call s:init()
|
||||
call s:Map()
|
||||
echo "delimitMate has been enabled."
|
||||
endif
|
||||
endfunction "}}}
|
||||
|
||||
function! s:Finish()
|
||||
function! s:Finish() " {{{
|
||||
if exists('g:delimitMate_loaded')
|
||||
return delimitMate#Finish()
|
||||
return delimitMate#Finish(1)
|
||||
endif
|
||||
return ''
|
||||
endfunction
|
||||
endfunction " }}}
|
||||
|
||||
function! s:FlushBuffer()
|
||||
function! s:FlushBuffer() " {{{
|
||||
if exists('g:delimitMate_loaded')
|
||||
return delimitMate#FlushBuffer()
|
||||
endif
|
||||
return ''
|
||||
endfunction
|
||||
endfunction " }}}
|
||||
|
||||
"}}}
|
||||
|
||||
@@ -342,29 +321,37 @@ function! s:AutoClose() "{{{
|
||||
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 "vnoremap <silent> <expr> <Plug>delimitMateVisual" . del . ' delimitMate#Visual("' . escape(del, '")|') . '")'
|
||||
exec 'silent! vmap <unique> <buffer> ' . vleader . del . ' <Plug>delimitMateVisual' . del
|
||||
endfor
|
||||
endfunction "}}}
|
||||
|
||||
function! s:ExtraMappings() "{{{
|
||||
" If pair is empty, delete both delimiters:
|
||||
inoremap <silent> <Plug>delimitMateBS <C-R>=delimitMate#BS()<CR>
|
||||
if !hasmapto('<Plug>delimitMateBS','i')
|
||||
silent! imap <unique> <buffer> <BS> <Plug>delimitMateBS
|
||||
endif
|
||||
" If pair is empty, delete closing delimiter:
|
||||
inoremap <silent> <expr> <Plug>delimitMateS-BS delimitMate#WithinEmptyPair() ? "\<C-R>=delimitMate#Del()\<CR>" : "\<S-BS>"
|
||||
if !hasmapto('<Plug>delimitMateS-BS','i')
|
||||
silent! imap <unique> <buffer> <S-BS> <Plug>delimitMateS-BS
|
||||
endif
|
||||
" Expand return if inside an empty pair:
|
||||
inoremap <silent> <Plug>delimitMateCR <C-R>=delimitMate#ExpandReturn()<CR>
|
||||
if b:_l_delimitMate_expand_cr != 0 && !hasmapto('<Plug>delimitMateCR', 'i')
|
||||
silent! imap <unique> <buffer> <CR> <Plug>delimitMateCR
|
||||
endif
|
||||
" Expand space if inside an empty pair:
|
||||
inoremap <silent> <Plug>delimitMateSpace <C-R>=delimitMate#ExpandSpace()<CR>
|
||||
" Jump out ot any empty pair:
|
||||
if b:_l_delimitMate_expand_space != 0 && !hasmapto('<Plug>delimitMateSpace', 'i')
|
||||
silent! imap <unique> <buffer> <Space> <Plug>delimitMateSpace
|
||||
endif
|
||||
" Jump over any delimiter:
|
||||
inoremap <silent> <Plug>delimitMateS-Tab <C-R>=delimitMate#JumpAny("\<S-Tab>")<CR>
|
||||
if b:_l_delimitMate_tab2exit && !hasmapto('<Plug>delimitMateS-Tab', 'i')
|
||||
silent! imap <unique> <buffer> <S-Tab> <Plug>delimitMateS-Tab
|
||||
endif
|
||||
" Change char buffer on Del:
|
||||
inoremap <silent> <Plug>delimitMateDel <C-R>=delimitMate#Del()<CR>
|
||||
if !hasmapto('<Plug>delimitMateDel', 'i')
|
||||
silent! imap <unique> <buffer> <Del> <Plug>delimitMateDel
|
||||
endif
|
||||
" Flush the char buffer on movement keystrokes or when leaving insert mode:
|
||||
for map in ['Esc', 'Left', 'Right', 'Home', 'End']
|
||||
exec 'inoremap <silent> <Plug>delimitMate'.map.' <C-R>=<SID>Finish()<CR><'.map.'>'
|
||||
@@ -381,31 +368,18 @@ function! s:ExtraMappings() "{{{
|
||||
endfor
|
||||
" Avoid ambiguous mappings:
|
||||
for map in ['LeftMouse', 'RightMouse']
|
||||
exec 'inoremap <silent> <Plug>delimitMateM'.map.' <C-R>=delimitMate#Finish()<CR><'.map.'>'
|
||||
exec 'inoremap <silent> <Plug>delimitMateM'.map.' <C-R>=delimitMate#Finish(1)<CR><'.map.'>'
|
||||
if !hasmapto('<Plug>delimitMate'.map, 'i')
|
||||
exec 'silent! imap <unique> <buffer> <'.map.'> <Plug>delimitMateM'.map
|
||||
endif
|
||||
endfor
|
||||
|
||||
" Map away!
|
||||
if !hasmapto('<Plug>delimitMateDel', 'i')
|
||||
silent! imap <unique> <buffer> <Del> <Plug>delimitMateDel
|
||||
endif
|
||||
if !hasmapto('<Plug>delimitMateBS','i')
|
||||
silent! imap <unique> <buffer> <BS> <Plug>delimitMateBS
|
||||
endif
|
||||
if !hasmapto('<Plug>delimitMateS-BS','i')
|
||||
silent! imap <unique> <buffer> <S-BS> <Plug>delimitMateS-BS
|
||||
endif
|
||||
if b:_l_delimitMate_expand_cr != 0 && !hasmapto('<Plug>delimitMateCR', 'i')
|
||||
silent! imap <unique> <buffer> <CR> <Plug>delimitMateCR
|
||||
endif
|
||||
if b:_l_delimitMate_expand_space != 0 && !hasmapto('<Plug>delimitMateSpace', 'i')
|
||||
silent! imap <unique> <buffer> <Space> <Plug>delimitMateSpace
|
||||
endif
|
||||
if b:_l_delimitMate_tab2exit && !hasmapto('<Plug>delimitMateS-Tab', 'i')
|
||||
silent! imap <unique> <buffer> <S-Tab> <Plug>delimitMateS-Tab
|
||||
" Jump over next delimiters
|
||||
inoremap <buffer> <Plug>delimitMateJumpMany <C-R>=len(b:_l_delimitMate_buffer) ? delimitMate#Finish(0) : delimitMate#JumpMany()<CR>
|
||||
if !hasmapto('<Plug>delimitMateJumpMany')
|
||||
imap <silent> <buffer> <C-G>g <Plug>delimitMateJumpMany
|
||||
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
|
||||
@@ -440,8 +414,9 @@ augroup delimitMate
|
||||
|
||||
" Run on new buffers.
|
||||
autocmd BufNewFile,BufRead,BufEnter *
|
||||
\ if !exists("b:loaded_delimitMate") |
|
||||
\ if !exists('b:delimitMate_was_here') |
|
||||
\ call <SID>DelimitMateDo() |
|
||||
\ let b:delimitMate_was_here = 1 |
|
||||
\ endif
|
||||
|
||||
" Flush the char buffer:
|
||||
|
||||
Reference in New Issue
Block a user