Use setter/getter everywhere (well, almost everywhere).

This commit is contained in:
Israel Chauca Fuentes
2013-06-21 23:49:48 -04:00
parent 90d07a68be
commit 579e3520a4
2 changed files with 66 additions and 40 deletions

View File

@@ -10,8 +10,31 @@
"let delimitMate_loaded = 1 "let delimitMate_loaded = 1
if !exists('s:options')
let options = {}
endif
function! s:s(name, value, ...) "{{{
let scope = (a:0 ? a:1 : 'b') . ':'
let prefix = (!a:0 || a:0 && a:1 == 's' ? '_l_' : '') . 'delimitMate_'
exec 'let ' . scope . prefix . a:name . ' = a:value'
endfunction "}}}
function! s:g(name, ...) "{{{ function! s:g(name, ...) "{{{
return eval('b:_l_delimitMate_' . a:name) let scope = (a:0 ? a:1 : 'b') . ':'
let prefix = (!a:0 || a:0 && a:1 == 's' ? '_l_' : '') . 'delimitMate_'
return eval(scope . prefix . a:name)
endfunction "}}}
function! s:exists(name, ...) "{{{
return exists((a:0 ? a:1 : 's') . ':' . a:name)
endfunction "}}}
function! delimitMate#Set(...) "{{{
return call('s:s', a:000)
endfunction "}}}
function! delimitMate#Get(...) "{{{
return call('s:g', a:000)
endfunction "}}} endfunction "}}}
function! delimitMate#ShouldJump(...) "{{{ function! delimitMate#ShouldJump(...) "{{{
@@ -205,7 +228,7 @@ function! delimitMate#IsForbidden(char) "{{{
endfunction "}}} endfunction "}}}
function! delimitMate#FlushBuffer() " {{{ function! delimitMate#FlushBuffer() " {{{
let b:_l_delimitMate_buffer = [] call s:s('buffer', [])
return '' return ''
endfunction " }}} endfunction " }}}
@@ -515,7 +538,7 @@ function! delimitMate#Finish(move_back) " {{{
let buffer = join(s:g('buffer'), '') let buffer = join(s:g('buffer'), '')
let len2 = len(buffer) let len2 = len(buffer)
" Reset buffer: " Reset buffer:
let b:_l_delimitMate_buffer = [] call s:s('buffer', [])
let line = getline('.') let line = getline('.')
let col = col('.') -2 let col = col('.') -2
if col < 0 if col < 0

View File

@@ -34,20 +34,15 @@ let delimitMate_version = "2.6"
function! s:option_init(name, default) "{{{ function! s:option_init(name, default) "{{{
let b = exists("b:delimitMate_" . a:name) let b = exists("b:delimitMate_" . a:name)
let g = exists("g:delimitMate_" . a:name) let g = exists("g:delimitMate_" . a:name)
let prefix = "_l_delimitMate_" " Find value to use.
if !b && !g if !b && !g
let sufix = a:default let value = a:default
elseif !b && g elseif b
exec "let sufix = g:delimitMate_" . a:name exec "let value = b:delimitMate_" . a:name
else else
exec "let sufix = b:delimitMate_" . a:name exec "let value = g:delimitMate_" . a:name
endif endif
if exists("b:" . prefix . a:name) call s:s(a:name, value)
exec "unlockvar! b:" . prefix . a:name
endif
exec "let b:" . prefix . a:name . " = " . string(sufix)
exec "lockvar! b:" . prefix . a:name
endfunction "}}} endfunction "}}}
function! s:init() "{{{ function! s:init() "{{{
@@ -58,21 +53,21 @@ function! s:init() "{{{
" matchpairs " matchpairs
call s:option_init("matchpairs", string(&matchpairs)[1:-2]) call s:option_init("matchpairs", string(&matchpairs)[1:-2])
call s:option_init("matchpairs_list", map(split(b:_l_delimitMate_matchpairs, ','), 'split(v:val, '':'')')) call s:option_init("matchpairs_list", map(split(s:g('matchpairs'), ','), 'split(v:val, '':'')'))
call s:option_init("left_delims", map(copy(b:_l_delimitMate_matchpairs_list), 'v:val[0]')) call s:option_init("left_delims", map(copy(s:g('matchpairs_list')), 'v:val[0]'))
call s:option_init("right_delims", map(copy(b:_l_delimitMate_matchpairs_list), 'v:val[1]')) call s:option_init("right_delims", map(copy(s:g('matchpairs_list')), 'v:val[1]'))
" quotes " quotes
call s:option_init("quotes", "\" ' `") call s:option_init("quotes", "\" ' `")
call s:option_init("quotes_list", split(b:_l_delimitMate_quotes, '\zs')) call s:option_init("quotes_list", split(s:g('quotes'), '\zs'))
" nesting_quotes " nesting_quotes
call s:option_init("nesting_quotes", []) call s:option_init("nesting_quotes", [])
" excluded_regions " excluded_regions
call s:option_init("excluded_regions", "Comment") call s:option_init("excluded_regions", "Comment")
call s:option_init("excluded_regions_list", split(b:_l_delimitMate_excluded_regions, ',\s*')) call s:option_init("excluded_regions_list", split(s:g('excluded_regions'), ',\s*'))
let enabled = len(b:_l_delimitMate_excluded_regions_list) > 0 let enabled = len(s:g('excluded_regions_list')) > 0
call s:option_init("excluded_regions_enabled", enabled) call s:option_init("excluded_regions_enabled", enabled)
" excluded filetypes " excluded filetypes
@@ -124,7 +119,7 @@ function! s:init() "{{{
" apostrophes " apostrophes
call s:option_init("apostrophes", "") call s:option_init("apostrophes", "")
call s:option_init("apostrophes_list", split(b:_l_delimitMate_apostrophes, ":\s*")) call s:option_init("apostrophes_list", split(s:g('apostrophes'), ":\s*"))
" tab2exit " tab2exit
call s:option_init("tab2exit", 1) call s:option_init("tab2exit", 1)
@@ -135,7 +130,7 @@ function! s:init() "{{{
" eol marker " eol marker
call s:option_init("eol_marker", "") call s:option_init("eol_marker", "")
let b:_l_delimitMate_buffer = [] call s:s('buffer', [])
endfunction "}}} Init() endfunction "}}} Init()
@@ -143,6 +138,14 @@ endfunction "}}} Init()
" Functions: {{{ " Functions: {{{
function! s:g(...) " {{{
return call('delimitMate#Get', a:000)
endfunction " }}}
function! s:s(...) " {{{
return call('delimitMate#Set', a:000)
endfunction " }}}
function! s:Map() "{{{ function! s:Map() "{{{
" Set mappings: " Set mappings:
try try
@@ -152,7 +155,7 @@ function! s:Map() "{{{
let save_cpo = &cpo let save_cpo = &cpo
set keymap= set keymap=
set cpo&vim set cpo&vim
if b:_l_delimitMate_autoclose if s:g('autoclose')
call s:AutoClose() call s:AutoClose()
else else
call s:NoAutoClose() call s:NoAutoClose()
@@ -171,10 +174,10 @@ endfunction "}}} Map()
function! s:Unmap() " {{{ function! s:Unmap() " {{{
let imaps = let imaps =
\ b:_l_delimitMate_right_delims + \ s:g('right_delims') +
\ b:_l_delimitMate_left_delims + \ s:g('left_delims') +
\ b:_l_delimitMate_quotes_list + \ s:g('quotes_list') +
\ b:_l_delimitMate_apostrophes_list + \ s:g('apostrophes_list') +
\ ['<BS>', '<S-BS>', '<Del>', '<CR>', '<Space>', '<S-Tab>', '<Esc>'] + \ ['<BS>', '<S-BS>', '<Del>', '<CR>', '<Space>', '<S-Tab>', '<Esc>'] +
\ ['<Up>', '<Down>', '<Left>', '<Right>', '<LeftMouse>', '<RightMouse>'] + \ ['<Up>', '<Down>', '<Left>', '<Right>', '<LeftMouse>', '<RightMouse>'] +
\ ['<C-Left>', '<C-Right>'] + \ ['<C-Left>', '<C-Right>'] +
@@ -201,7 +204,7 @@ function! s:TestMappingsDo() "{{{
if !exists("g:delimitMate_testing") if !exists("g:delimitMate_testing")
call delimitMate#TestMappings() call delimitMate#TestMappings()
else else
let temp_varsDM = [b:_l_delimitMate_expand_space, b:_l_delimitMate_expand_cr, b:_l_delimitMate_autoclose] let temp_varsDM = [s:g('expand_space'), s:g('expand_cr'), s:g('autoclose')]
for i in [0,1] for i in [0,1]
let b:delimitMate_expand_space = i let b:delimitMate_expand_space = i
let b:delimitMate_expand_cr = i let b:delimitMate_expand_cr = i
@@ -283,7 +286,7 @@ function! s:FlushBuffer() " {{{
endfunction " }}} endfunction " }}}
function! s:empty_buffer() function! s:empty_buffer()
return empty(b:_l_delimitMate_buffer) return empty(s:g('buffer'))
endfunction endfunction
"}}} "}}}
@@ -291,7 +294,7 @@ endfunction
" Mappers: {{{ " Mappers: {{{
function! s:NoAutoClose() "{{{ function! s:NoAutoClose() "{{{
" inoremap <buffer> ) <C-R>=delimitMate#SkipDelim('\)')<CR> " inoremap <buffer> ) <C-R>=delimitMate#SkipDelim('\)')<CR>
for delim in b:_l_delimitMate_right_delims + b:_l_delimitMate_quotes_list for delim in s:g('right_delims') + s:g('quotes_list')
if delim == '|' if delim == '|'
let delim = '<Bar>' let delim = '<Bar>'
endif endif
@@ -304,23 +307,23 @@ function! s:AutoClose() "{{{
" Add matching pair and jump to the midle: " Add matching pair and jump to the midle:
" inoremap <silent> <buffer> ( ()<Left> " inoremap <silent> <buffer> ( ()<Left>
let i = 0 let i = 0
while i < len(b:_l_delimitMate_matchpairs_list) while i < len(s:g('matchpairs_list'))
let ld = b:_l_delimitMate_left_delims[i] == '|' ? '<bar>' : b:_l_delimitMate_left_delims[i] let ld = s:g('left_delims')[i] == '|' ? '<bar>' : s:g('left_delims')[i]
let rd = b:_l_delimitMate_right_delims[i] == '|' ? '<bar>' : b:_l_delimitMate_right_delims[i] let rd = s:g('right_delims')[i] == '|' ? '<bar>' : s:g('right_delims')[i]
exec 'inoremap <silent> <Plug>delimitMate' . ld . ' ' . ld . '<C-R>=delimitMate#ParenDelim("' . escape(rd, '|') . '")<CR>' exec 'inoremap <silent> <Plug>delimitMate' . ld . ' ' . ld . '<C-R>=delimitMate#ParenDelim("' . escape(rd, '|') . '")<CR>'
exec 'silent! imap <unique> <buffer> '.ld.' <Plug>delimitMate'.ld exec 'silent! imap <unique> <buffer> '.ld.' <Plug>delimitMate'.ld
let i += 1 let i += 1
endwhile endwhile
" Exit from inside the matching pair: " Exit from inside the matching pair:
for delim in b:_l_delimitMate_right_delims for delim in s:g('right_delims')
exec 'inoremap <silent> <Plug>delimitMate' . delim . ' <C-R>=delimitMate#JumpOut("\' . delim . '")<CR>' exec 'inoremap <silent> <Plug>delimitMate' . delim . ' <C-R>=delimitMate#JumpOut("\' . delim . '")<CR>'
exec 'silent! imap <unique> <buffer> ' . delim . ' <Plug>delimitMate'. delim exec 'silent! imap <unique> <buffer> ' . delim . ' <Plug>delimitMate'. delim
endfor endfor
" Add matching quote and jump to the midle, or exit if inside a pair of matching quotes: " Add matching quote and jump to the midle, or exit if inside a pair of matching quotes:
" inoremap <silent> <buffer> " <C-R>=delimitMate#QuoteDelim("\"")<CR> " inoremap <silent> <buffer> " <C-R>=delimitMate#QuoteDelim("\"")<CR>
for delim in b:_l_delimitMate_quotes_list for delim in s:g('quotes_list')
if delim == '|' if delim == '|'
let delim = '<Bar>' let delim = '<Bar>'
endif endif
@@ -330,7 +333,7 @@ function! s:AutoClose() "{{{
" Try to fix the use of apostrophes (kept for backward compatibility): " Try to fix the use of apostrophes (kept for backward compatibility):
" inoremap <silent> <buffer> n't n't " inoremap <silent> <buffer> n't n't
for map in b:_l_delimitMate_apostrophes_list for map in s:g('apostrophes_list')
exec "inoremap <silent> " . map . " " . map exec "inoremap <silent> " . map . " " . map
exec 'silent! imap <unique> <buffer> ' . map . ' <Plug>delimitMate' . map exec 'silent! imap <unique> <buffer> ' . map . ' <Plug>delimitMate' . map
endfor endfor
@@ -349,17 +352,17 @@ function! s:ExtraMappings() "{{{
endif endif
" Expand return if inside an empty pair: " Expand return if inside an empty pair:
inoremap <silent> <Plug>delimitMateCR <C-R>=delimitMate#ExpandReturn()<CR> inoremap <silent> <Plug>delimitMateCR <C-R>=delimitMate#ExpandReturn()<CR>
if b:_l_delimitMate_expand_cr != 0 && !hasmapto('<Plug>delimitMateCR', 'i') && maparg('<CR>', 'i') == '' if s:g('expand_cr') != 0 && !hasmapto('<Plug>delimitMateCR', 'i') && maparg('<CR>', 'i') == ''
silent! imap <unique> <buffer> <CR> <Plug>delimitMateCR silent! imap <unique> <buffer> <CR> <Plug>delimitMateCR
endif endif
" Expand space if inside an empty pair: " Expand space if inside an empty pair:
inoremap <silent> <Plug>delimitMateSpace <C-R>=delimitMate#ExpandSpace()<CR> inoremap <silent> <Plug>delimitMateSpace <C-R>=delimitMate#ExpandSpace()<CR>
if b:_l_delimitMate_expand_space != 0 && !hasmapto('<Plug>delimitMateSpace', 'i') && maparg('<Space>', 'i') == '' if s:g('expand_space') != 0 && !hasmapto('<Plug>delimitMateSpace', 'i') && maparg('<Space>', 'i') == ''
silent! imap <unique> <buffer> <Space> <Plug>delimitMateSpace silent! imap <unique> <buffer> <Space> <Plug>delimitMateSpace
endif endif
" Jump over any delimiter: " Jump over any delimiter:
inoremap <silent> <Plug>delimitMateS-Tab <C-R>=delimitMate#JumpAny("\<S-Tab>")<CR> inoremap <silent> <Plug>delimitMateS-Tab <C-R>=delimitMate#JumpAny("\<S-Tab>")<CR>
if b:_l_delimitMate_tab2exit && !hasmapto('<Plug>delimitMateS-Tab', 'i') && maparg('<S-Tab>', 'i') == '' if s:g('tab2exit') && !hasmapto('<Plug>delimitMateS-Tab', 'i') && maparg('<S-Tab>', 'i') == ''
silent! imap <unique> <buffer> <S-Tab> <Plug>delimitMateS-Tab silent! imap <unique> <buffer> <S-Tab> <Plug>delimitMateS-Tab
endif endif
" Change char buffer on Del: " Change char buffer on Del:
@@ -404,7 +407,7 @@ function! s:ExtraMappings() "{{{
endfor endfor
" Jump over next delimiters " Jump over next delimiters
inoremap <buffer> <Plug>delimitMateJumpMany <C-R>=len(b:_l_delimitMate_buffer) ? delimitMate#Finish(0) : delimitMate#JumpMany()<CR> inoremap <buffer> <Plug>delimitMateJumpMany <C-R>=len(delimitMate#Get('buffer')) ? delimitMate#Finish(0) : delimitMate#JumpMany()<CR>
if !hasmapto('<Plug>delimitMateJumpMany', 'i') && maparg("<C-G>g", 'i') == '' if !hasmapto('<Plug>delimitMateJumpMany', 'i') && maparg("<C-G>g", 'i') == ''
imap <silent> <buffer> <C-G>g <Plug>delimitMateJumpMany imap <silent> <buffer> <C-G>g <Plug>delimitMateJumpMany
endif endif