foldcolumn
最深foldlevel.。 我尝试了:
autocmd FileType html :set foldmethod=syntax
autocmd FileType html :let &foldcolumn=&foldlevel
但显示错误:
在处理“ HTML”的FileType Autocomands时检测到Error: e521:需要的数字=:foldcolumn =&foldlevel
方法是:1st:仅设在.vimrc中:
autocmd FileType html :set foldmethod=syntax
执行下一个地图打开缓冲区:
nnoremap <leader>cf :let &foldcolumn=&foldlevel<cr>:set foldcolumn?<cr>
或增加1次
nnoremap <leader>cf :let &foldcolumn = &foldcolumn + 1<cr>:set foldcolumn?<cr>
,如果它是自动的,那可能很棒。如何解决错误?预先感谢
工作室
" Find the deepest fold level in the buffer
function! GetDeepestFoldLevel()
" foldlevel is foldcolumn of current line
let max_level = 0
for lnum in range(1, line('$'))
let level = foldlevel(lnum)
if level > max_level
let max_level = level
endif
endfor
return max_level
endfunction
" Check if foldcolumn should be updated
function! ShouldUpdateFoldColumn()
return !exists('b:foldcolumn_set') || !b:foldcolumn_set
endfunction
" Update foldcolumn
function! UpdateFoldColumnForce()
let &foldcolumn = GetDeepestFoldLevel() + 1
endfunction
function! UpdateFoldColumn()
if ShouldUpdateFoldColumn()
call UpdateFoldColumnForce()
endif
endfunction
" Check if foldcolumn is set by modeline and mark it as set
function! CheckFoldColumnSet()
" Set buffer variable to 1 if foldcolumn is explicitly set (not default value 0).
" Counterparts:
" - if modeline has 'foldcolumn=0' then it is ignored.
" - foldcolumn set of autocmd set to a none zero value like next, makes next always false.
" autocmd FileType javascript :set foldcolumn=2
if &foldcolumn != 0
let b:foldcolumn_set = 1
endif
endfunction
" Auto-update foldcolumn AFTER modeline processing (using BufWinEnter)
autocmd BufWinEnter * call CheckFoldColumnSet() | call UpdateFoldColumn()
" ColumFold to Maximun foldlevel
nnoremap <leader>cfM :call UpdateFoldColumnForce()<CR>
" Check:
" :echo 'foldcolumn=' &foldcolumn '; foldlevel_current_line_or_deepest_been=' &foldlevel
" Check. Show '-1' if foldcolumn is not explicitly set:
" :echo get(b:, 'foldcolumn_set', -1)