"=============================================================================
" FILE: variables.vim
" AUTHOR: Shougo Matsushita <Shougo.Matsu@gmail.com>
" License: MIT license {{{
" Permission is hereby granted, free of charge, to any person obtaining
" a copy of this software and associated documentation files (the
" "Software"), to deal in the Software without restriction, including
" without limitation the rights to use, copy, modify, merge, publish,
" distribute, sublicense, and/or sell copies of the Software, and to
" permit persons to whom the Software is furnished to do so, subject to
" the following conditions:
"
" The above copyright notice and this permission notice shall be included
" in all copies or substantial portions of the Software.
"
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
" IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
" CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
" TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
" SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
" }}}
"=============================================================================
let s:save_cpo = &cpo
set cpo&vim
if !exists('s:use_current_unite')
let s:use_current_unite = 1
endif
function! unite#variables#current_unite() abort "{{{
if !exists('s:current_unite')
let s:current_unite = {}
endif
return s:current_unite
endfunction"}}}
function! unite#variables#set_current_unite(unite) abort "{{{
let s:current_unite = a:unite
endfunction"}}}
function! unite#variables#use_current_unite() abort "{{{
return s:use_current_unite
endfunction"}}}
function! unite#variables#enable_current_unite() abort "{{{
let s:use_current_unite = 1
endfunction"}}}
function! unite#variables#disable_current_unite() abort "{{{
let s:use_current_unite = 0
endfunction"}}}
function! unite#variables#static() abort "{{{
if !exists('s:static')
let s:static = {}
let s:static.sources = {}
let s:static.kinds = {}
let s:static.filters = {}
endif
return s:static
endfunction"}}}
function! unite#variables#dynamic() abort "{{{
if !exists('s:dynamic')
let s:dynamic = {}
let s:dynamic.sources = {}
let s:dynamic.kinds = {}
let s:dynamic.filters = {}
endif
return s:dynamic
endfunction"}}}
function! unite#variables#loaded_defaults() abort "{{{
if !exists('s:loaded_defaults')
let s:loaded_defaults = {}
endif
return s:loaded_defaults
endfunction"}}}
function! unite#variables#options() abort "{{{
if !exists('s:options')
let s:options = map(filter(items(unite#variables#default_context()),
\ "v:val[0] !~ '^unite__'"),
\ "'-' . tr(v:val[0], '_', '-') .
\ (type(v:val[1]) == type(0) && (v:val[1] == 0 || v:val[1] == 1) ?
\ '' : '=')")
" Generic no options.
let s:options += map(filter(copy(s:options),
\ "v:val[-1:] != '='"), "'-no' . v:val")
endif
return s:options
endfunction"}}}
function! unite#variables#kinds(...) abort "{{{
if a:0 == 0
call unite#init#_default_scripts('kinds', [])
else
call unite#init#_default_scripts('kinds', [a:1])
endif
let kinds = unite#init#_kinds()
return (a:0 == 0) ? kinds : get(kinds, a:1, {})
endfunction"}}}
function! unite#variables#sources(...) abort "{{{
let unite = unite#get_current_unite()
if !has_key(unite, 'sources')
return {}
endif
if a:0 == 0
return unite.sources
endif
return unite#util#get_name(unite.sources, a:1, {})
endfunction"}}}
function! unite#variables#all_sources(...) abort "{{{
if a:0 == 0
return unite#init#_sources()
endif
let unite = unite#get_current_unite()
let all_sources = unite#init#_sources([], a:1)
let source = get(all_sources, a:1, {})
return empty(source) ?
\ get(filter(copy(get(unite, 'sources', [])),
\ 'v:val.name ==# a:1'), 0, {}) : source
endfunction"}}}
function! unite#variables#filters(...) abort "{{{
if a:0 == 0
call unite#init#_default_scripts('filters', [])
else
call unite#init#_default_scripts('filters', [a:1])
endif
let filters = unite#init#_filters()
if a:0 == 0
return filters
endif
return get(filters, a:1, {})
endfunction"}}}
function! unite#variables#loaded_sources(...) abort "{{{
" Initialize load.
let unite = unite#get_current_unite()
return a:0 == 0 ? unite.sources :
\ get(filter(copy(unite.sources), 'v:val.name ==# a:1'), 0, {})
endfunction"}}}
function! unite#variables#default_context() abort "{{{
if !exists('s:default_context')
call s:initialize_default()
endif
return s:default_context
endfunction"}}}
function! s:initialize_default() abort "{{{
let s:default_context = {
\ 'input' : '',
\ 'path' : '',
\ 'prompt' : '',
\ 'start_insert' : 0,
\ 'complete' : 0,
\ 'script' : 0,
\ 'col' : -1,
\ 'quit' : 1,
\ 'file_quit' : 0,
\ 'buffer_name' : 'default',
\ 'profile_name' : '',
\ 'default_action' : 'default',
\ 'winwidth' : 90,
\ 'winheight' : 20,
\ 'immediately' : 0,
\ 'force_immediately' : 0,
\ 'empty' : 1,
\ 'auto_preview' : 0,
\ 'auto_highlight' : 0,
\ 'horizontal' : 0,
\ 'vertical' : 0,
\ 'direction' : 'topleft',
\ 'split' : 1,
\ 'temporary' : 0,
\ 'verbose' : 0,
\ 'auto_resize' : 0,
\ 'resize' : 1,
\ 'toggle' : 0,
\ 'quick_match' : 0,
\ 'create' : 0,
\ 'cursor_line_highlight' : 'CursorLine',
\ 'abbr_highlight' : 'Normal',
\ 'cursor_line' : 1,
\ 'update_time' : 200,
\ 'hide_source_names' : 0,
\ 'max_multi_lines' : 5,
\ 'here' : 0,
\ 'silent' : 0,
\ 'keep_focus' : 0,
\ 'auto_quit' : 0,
\ 'focus' : 1,
\ 'multi_line' : 0,
\ 'resume' : 0,
\ 'wrap' : 0,
\ 'select' : -1,
\ 'log' : 0,
\ 'truncate' : 1,
\ 'truncate_width' : 50,
\ 'tab' : 0,
\ 'sync' : 0,
\ 'unique' : 0,
\ 'execute_command' : '',
\ 'prompt_direction' : '',
\ 'prompt_visible' : 0,
\ 'prompt_focus' : 0,
\ 'short_source_names' : 0,
\ 'candidate_icon' : ' ',
\ 'marked_icon' : '*',
\ 'hide_icon' : 1,
\ 'cursor_line_time' : '0.10',
\ 'is_redraw' : 0,
\ 'wipe' : 0,
\ 'ignorecase' : &ignorecase,
\ 'smartcase' : &smartcase,
\ 'restore' : 1,
\ 'vertical_preview' : 0,
\ 'force_redraw' : 0,
\ 'previewheight' : &previewheight,
\ 'buffer' : 1,
\ 'match_input' : 1,
\ 'bufnr' : bufnr('%'),
\ 'firstline' : -1,
\ 'lastline' : -1,
\ 'unite__old_buffer_info' : [],
\ 'unite__direct_switch' : 0,
\ 'unite__is_interactive' : 1,
\ 'unite__is_complete' : 0,
\ 'unite__is_vimfiler' : 0,
\ 'unite__old_winwidth' : 0,
\ 'unite__old_winheight' : 0,
\ 'unite__disable_hooks' : 0,
\ 'unite__disable_max_candidates' : 0,
\ 'unite__not_buffer' : 0,
\ 'unite__is_resize' : 0,
\ 'unite__is_restart' : 0,
\ 'unite__is_manual' : 0,
\ }
" For compatibility(deprecated variables)
for [context, var] in filter([
\ ['start_insert', 'g:unite_enable_start_insert'],
\ ['prompt', 'g:unite_prompt'],
\ ['winwidth', 'g:unite_winwidth'],
\ ['winheight', 'g:unite_winheight'],
\ ['vertical', 'g:unite_enable_split_vertically'],
\ ['direction', 'g:unite_split_rule'],
\ ['cursor_line_highlight',
\ 'g:unite_cursor_line_highlight'],
\ ['abbr_highlight', 'g:unite_abbr_highlight'],
\ ['update_time', 'g:unite_update_time'],
\ ['short_source_names', 'g:unite_enable_short_source_names'],
\ ['candidate_icon', 'g:unite_candidate_icon'],
\ ['marked_icon', 'g:unite_marked_icon'],
\ ['cursor_line_time', 'g:unite_cursor_line_time'],
\ ['vertical_preview', 'g:unite_kind_file_vertical_preview'],
\ ], "exists(v:val[1])")
let s:default_context[context] = {var}
endfor
endfunction"}}}
let &cpo = s:save_cpo
unlet s:save_cpo
" vim: foldmethod=marker