gundo.vim/tests/bundled/lh-vim-lib/autoload/lh/option.vim
Steve Losh 6e679d6d4f Add a unit test. This here is a grey triangle moment, folks.
--HG--
extra : rebase_source : 17ea9665bc826a9365264122781e1a7f99948b34
2010-11-10 19:52:08 -05:00

108 lines
3.5 KiB
VimL

"=============================================================================
" $Id: option.vim 246 2010-09-19 22:40:58Z luc.hermitte $
" File: autoload/lh/option.vim {{{1
" Author: Luc Hermitte <EMAIL:hermitte {at} free {dot} fr>
" <URL:http://code.google.com/p/lh-vim/>
" Version: 2.2.1
" Created: 24th Jul 2004
" Last Update: $Date: 2010-09-19 18:40:58 -0400 (Sun, 19 Sep 2010) $ (07th Oct 2006)
"------------------------------------------------------------------------
" Description:
" Defines the global function lh#option#get().
" Aimed at (ft)plugin writers.
"
"------------------------------------------------------------------------
" Installation:
" Drop this file into {rtp}/autoload/lh/
" Requires Vim 7+
" History:
" v2.0.5
" (*) lh#option#get_non_empty() manages Lists and Dictionaries
" (*) lh#option#get() doesn't test emptyness anymore
" v2.0.0
" Code moved from {rtp}/macros/
" }}}1
"=============================================================================
"=============================================================================
let s:cpo_save=&cpo
set cpo&vim
"------------------------------------------------------------------------
" ## Functions {{{1
" # Debug {{{2
function! lh#option#verbose(level)
let s:verbose = a:level
endfunction
function! s:Verbose(expr)
if exists('s:verbose') && s:verbose
echomsg a:expr
endif
endfunction
function! lh#option#debug(expr)
return eval(a:expr)
endfunction
" # Public {{{2
" Function: lh#option#get(name, default [, scope]) {{{3
" @return b:{name} if it exists, or g:{name} if it exists, or {default}
" otherwise
" The order of the variables checked can be specified through the optional
" argument {scope}
function! lh#option#get(name,default,...)
let scope = (a:0 == 1) ? a:1 : 'bg'
let name = a:name
let i = 0
while i != strlen(scope)
if exists(scope[i].':'.name)
" \ && (0 != strlen({scope[i]}:{name}))
return {scope[i]}:{name}
endif
let i += 1
endwhile
return a:default
endfunction
function! lh#option#Get(name,default,...)
let scope = (a:0 == 1) ? a:1 : 'bg'
return lh#option#get(a:name, a:default, scope)
endfunction
function! s:IsEmpty(variable)
if type(a:variable) == type('string') | return 0 == strlen(a:variable)
elseif type(a:variable) == type(42) | return 0 == a:variable
elseif type(a:variable) == type([]) | return 0 == len(a:variable)
elseif type(a:variable) == type({}) | return 0 == len(a:variable)
else | return false
endif
endfunction
" Function: lh#option#get_non_empty(name, default [, scope]) {{{3
" @return of b:{name}, g:{name}, or {default} the first which exists and is not empty
" The order of the variables checked can be specified through the optional
" argument {scope}
function! lh#option#get_non_empty(name,default,...)
let scope = (a:0 == 1) ? a:1 : 'bg'
let name = a:name
let i = 0
while i != strlen(scope)
if exists(scope[i].':'.name) && !s:IsEmpty({scope[i]}:{name})
return {scope[i]}:{name}
endif
let i += 1
endwhile
return a:default
endfunction
function! lh#option#GetNonEmpty(name,default,...)
let scope = (a:0 == 1) ? a:1 : 'bg'
return lh#option#get_non_empty(a:name, a:default, scope)
endfunction
" Functions }}}1
"------------------------------------------------------------------------
let &cpo=s:cpo_save
"=============================================================================
" vim600: set fdm=marker: