Got this:
let Func = function(folding_function) "folding_function is name of function
setlocal foldexpr=call(Func(v:lnum))
This is so user can set a custom function for folding in their config file. I can't get it to work, though.
Also tried:
call(Func, v:lnum)
and
call(Func, 'v:lnum')
Code in context
" 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()
if !&diff " if Vim is currently in diff mode, don't interfere with its folding
let foldmethod = vimwiki#vars#get_global('folding')
if foldmethod =~? '^expr.*'
setlocal foldmethod=expr
let custom = vimwiki#vars#get_global('custom_fold_func')
if custom
let Func = function('VimwikiFoldLevelCustom')
setlocal foldexpr=Func(v:lnum)
" setlocal foldexpr=VimwikiFoldLevelCustom(v:lnum)
else
setlocal foldexpr=VimwikiFoldLevel(v:lnum)
endif
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()
elseif foldmethod =~? '^custom.*'
" do nothing
else
setlocal foldmethod=manual
normal! zE
endif
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
Func(v:lnum)– dedowsdi Apr 29 '19 at 00:20call? – StevieD Apr 29 '19 at 00:23setlocal foldexpr=VimwikiFoldLevelCustom(v:lnum)without the function reference it works fine. – StevieD Apr 29 '19 at 00:35Funcjust gets ignored. No idea what's going on. – StevieD Apr 29 '19 at 02:34let g:Func = function('VimwikiFoldLevelCustom')– dedowsdi Apr 29 '19 at 02:42