]> git.rmz.io Git - dotfiles.git/commitdiff
vim: custom inline foldtext for C++
authorSamir Benmendil <me@rmz.io>
Tue, 12 Mar 2024 12:30:14 +0000 (12:30 +0000)
committerSamir Benmendil <me@rmz.io>
Tue, 12 Mar 2024 12:33:57 +0000 (12:33 +0000)
This leaves the indentation of the code as it was. Easier to parse
folded lines.

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:\