Formatting and small refactorings

This commit is contained in:
EinfachToll
2018-02-15 18:38:39 +01:00
parent f48dce6f1d
commit 5419fad3f7
4 changed files with 208 additions and 130 deletions

View File

@ -49,7 +49,9 @@ function! s:create_temporary_wiki()
endfunction
" this is called when Vim opens a new buffer with a known wiki extension
" This function is called when Vim opens a new buffer with a known wiki
" extension. Both when the buffer has never been opened in this session and
" when it has.
function! s:setup_new_wiki_buffer() "{{{
let wiki_nr = vimwiki#vars#get_bufferlocal('wiki_nr')
if wiki_nr == -1 " it's not in a known wiki directory
@ -82,52 +84,16 @@ function! s:setup_buffer_enter() "{{{
return
endif
" 'autowriteall' is a global Vim option, so in order to change it only for
" Vimwiki buffers, we need to set it here (when the cursor enters the buffer)
" and reset it when the cursor leaves the buffer
let s:vimwiki_autowriteall_saved = &autowriteall
let &autowriteall = vimwiki#vars#get_global('autowriteall')
if &filetype == ''
setfiletype vimwiki
endif
" The settings foldmethod, foldexpr and foldtext are local to window. Thus in
" a new tab with the same buffer folding is reset to vim defaults. So we
" insist vimwiki folding here.
let foldmethod = vimwiki#vars#get_global('folding')
if foldmethod ==? 'expr'
setlocal foldmethod=expr
setlocal foldexpr=VimwikiFoldLevel(v:lnum)
setlocal foldtext=VimwikiFoldText()
elseif foldmethod ==? 'list' || foldmethod ==? 'lists'
setlocal foldmethod=expr
setlocal foldexpr=VimwikiFoldListLevel(v:lnum)
setlocal foldtext=VimwikiFoldText()
elseif foldmethod ==? 'syntax'
setlocal foldmethod=syntax
setlocal foldtext=VimwikiFoldText()
else
setlocal foldmethod=manual
normal! zE
endif
call s:set_global_options()
" And conceal level too.
if vimwiki#vars#get_global('conceallevel') && exists("+conceallevel")
let &conceallevel = vimwiki#vars#get_global('conceallevel')
endif
" lcd as well
if vimwiki#vars#get_global('auto_chdir')
exe 'lcd' vimwiki#vars#get_wikilocal('path')
endif
" Set up menu
if vimwiki#vars#get_global('menu') !=# ''
exe 'nmenu enable '.vimwiki#vars#get_global('menu').'.Table'
endif
call s:set_windowlocal_options()
endfunction "}}}
function! s:setup_cleared_syntax() "{{{ highlight groups that get cleared
" on colorscheme change because they are not linked to Vim-predefined groups
hi def VimwikiBold term=bold cterm=bold gui=bold
@ -136,7 +102,10 @@ function! s:setup_cleared_syntax() "{{{ highlight groups that get cleared
hi def VimwikiUnderline gui=underline
if vimwiki#vars#get_global('hl_headers') == 1
for i in range(1,6)
execute 'hi def VimwikiHeader'.i.' guibg=bg guifg='.vimwiki#vars#get_global('hcolor_guifg_'.&bg)[i-1].' gui=bold ctermfg='.vimwiki#vars#get_global('hcolor_ctermfg_'.&bg)[i-1].' term=bold cterm=bold'
execute 'hi def VimwikiHeader'.i.' guibg=bg guifg='
\ . vimwiki#vars#get_global('hcolor_guifg_'.&bg)[i-1]
\ .' gui=bold ctermfg='.vimwiki#vars#get_global('hcolor_ctermfg_'.&bg)[i-1]
\ .' term=bold cterm=bold'
endfor
endif
endfunction "}}}
@ -156,6 +125,50 @@ function! s:vimwiki_get_known_extensions() " {{{
return keys(extensions)
endfunction " }}}
" Set settings which are global for Vim, but should only be executed for
" Vimwiki buffers. So they must be set when the cursor enters a Vimwiki buffer
" and reset when the cursor leaves the buffer.
function! s:set_global_options()
let s:vimwiki_autowriteall_saved = &autowriteall
let &autowriteall = vimwiki#vars#get_global('autowriteall')
if vimwiki#vars#get_global('menu') !=# ''
exe 'nmenu enable '.vimwiki#vars#get_global('menu').'.Table'
endif
endfunction
" Set settings which are local to a window. In a new tab they would be reset to
" Vim defaults. So we enforce our settings here when the cursor enters a
" Vimwiki buffer.
function! s:set_windowlocal_options()
let foldmethod = vimwiki#vars#get_global('folding')
if foldmethod ==? 'expr'
setlocal foldmethod=expr
setlocal foldexpr=VimwikiFoldLevel(v:lnum)
setlocal foldtext=VimwikiFoldText()
elseif foldmethod ==? 'list' || foldmethod ==? 'lists'
setlocal foldmethod=expr
setlocal foldexpr=VimwikiFoldListLevel(v:lnum)
setlocal foldtext=VimwikiFoldText()
elseif foldmethod ==? 'syntax'
setlocal foldmethod=syntax
setlocal foldtext=VimwikiFoldText()
else
setlocal foldmethod=manual
normal! zE
endif
if vimwiki#vars#get_global('conceallevel') && exists("+conceallevel")
let &conceallevel = vimwiki#vars#get_global('conceallevel')
endif
if vimwiki#vars#get_global('auto_chdir')
exe 'lcd' vimwiki#vars#get_wikilocal('path')
endif
endfunction
" }}}
@ -201,8 +214,8 @@ endif
augroup vimwiki
autocmd!
for s:ext in s:known_extensions
exe 'autocmd BufEnter *'.s:ext.' call s:setup_buffer_enter()'
exe 'autocmd BufNewFile,BufRead *'.s:ext.' call s:setup_new_wiki_buffer()'
exe 'autocmd BufEnter *'.s:ext.' call s:setup_buffer_enter()'
exe 'autocmd BufLeave *'.s:ext.' call s:setup_buffer_leave()'
exe 'autocmd ColorScheme *'.s:ext.' call s:setup_cleared_syntax()'
" Format tables when exit from insert mode. Do not use textwidth to