]> git.rmz.io Git - dotfiles.git/blobdiff - vim/ftplugin/cpp.vim
vim: custom inline foldtext for C++
[dotfiles.git] / vim / ftplugin / cpp.vim
index ea6837f7200683f9ed688fbd1ddd67419c1000bb..19850a76437ae47af0589d0fc9c2fd09ae76b148 100644 (file)
@@ -88,3 +88,18 @@ function! InitialFoldLevel()
     endif
 endf
 call InitialFoldLevel()
+
+function! MyCppFoldText()
+  let l:line = getline(v:foldstart)
+  " expand tabs in line, foldtext does not do it on its own
+  let l:line = substitute(l:line, "\t", repeat(" ", shiftwidth()), "g")
+  let l:width = min([&textwidth, winwidth(0)])
+  let l:lineinfo = printf("%d", v:foldend - v:foldstart)
+  let l:ellipsis = "…"
+  return printf("%.*s%s%*d",
+        \ l:width - strdisplaywidth(l:ellipsis..l:lineinfo), l:line,
+        \ l:ellipsis,
+        \ l:width - strdisplaywidth(l:line..l:ellipsis),     l:lineinfo)
+endfunction
+setlocal foldtext=MyCppFoldText()
+setlocal fillchars+=fold:\