Skip to content

Instantly share code, notes, and snippets.

@momo-lab
Created January 11, 2019 11:04
Show Gist options
  • Save momo-lab/dd25957a02f3d496022b67d06b5f55e2 to your computer and use it in GitHub Desktop.
Save momo-lab/dd25957a02f3d496022b67d06b5f55e2 to your computer and use it in GitHub Desktop.
foldcolumnの値を自動で決定したい。
function! s:AutoFoldColumn() abort
let l:foldcolumn = auto_origami#Foldcolumn()
if l:foldcolumn > 0
let l:maxfoldcolumn = s:GetMaxFoldColumn()
if l:foldcolumn < l:maxfoldcolumn
let l:foldcolumn = l:maxfoldcolumn
endif
endif
let &l:foldcolumn = l:foldcolumn
endfunction
function! s:GetMaxFoldColumn() abort
let l:save_scrolloff = &l:scrolloff
let &l:scrolloff = 0
let l:save = winsaveview()
normal Lkj
let l:last_line = line('.')
let l:max_level = 0
normal H
while line('.') < l:last_line
let l:level = foldlevel(line('.'))
if l:level > l:max_level
let l:max_level = l:level
endif
normal j
endwhile
call winrestview(l:save)
let &l:scrolloff = l:save_scrolloff
if l:max_level == 0
return 0
else
return l:max_level + 1
endif
endfunction
command! AutoFoldColumn call s:AutoFoldColumn()
augroup autofoldcolumn
au!
au CursorHold,BufWinEnter,WinEnter * AutoFoldColumn
augroup END
nmap zA zA:AutoFoldColumn<CR>
@momo-lab
Copy link
Author

auto_origamiをforkして機能追加する方向にしてみよう。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment