setlocal errorformat+=%*[^[]\[%tRROR\]%m\ \[%f:%l\]
 setlocal errorformat+=%*[^[]\[%tARNING\]%m\ \[%f:%l\]
 
-packadd termdebug
+packadd! termdebug
 let g:termdebug_wide = 1
 function! s:Debug(...)
     tabedit %
     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:\