From 45c3e3581b74060dae453ac097e5a4d629603393 Mon Sep 17 00:00:00 2001 From: Max Christian Pohle Date: Sun, 14 Oct 2018 21:33:03 +0200 Subject: Improved code folding and tidied up The new foldexpr hides everything if its highlight group has 'comment' to it. The foldtext has also been improved and now shows textwidth characters. By now also 0 is allowed, but then it is as if foldtext would be empty. I will probably remove this. --- after/syntax/c.vim | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'after') diff --git a/after/syntax/c.vim b/after/syntax/c.vim index 49e96f0..72136f6 100644 --- a/after/syntax/c.vim +++ b/after/syntax/c.vim @@ -1,11 +1,13 @@ -setlocal number setlocal foldenable setlocal foldmethod=expr -setlocal foldcolumn=0 +" setlocal foldcolumn=0 " setlocal foldexpr=get(synstack(v:lnum,1),0)==hlID('cComment') -setlocal foldexpr=index([0,hlID('cComment'),hlID('Comment')],get(synstack(v:lnum,1),0)) - +" setlocal foldexpr=len(filter(synstack(v:lnum,indent(v:lnum)+1),'index([hlID(\"cComment\"),hlID(\"cCommentStart\")],v:val)!=-1'))>0 +" setlocal foldtext=printf('%*s%.'.eval(&textwidth-indent(v:foldstart)).'S',indent(v:foldstart),'',substitute(substitute(substitute(join(getline(v:foldstart,v:foldend)),'\\s\\s\\+\\\|\[\*\/\]','\ ','g'),'\^\\s\\+','','g'),\ '\\s\\s\\+',\ '\ ',\ 'g')) +" setlocal foldexpr=index(get(synstack(v:lnum,1),0),hlID('cComment'))>0 +" setlocal foldexpr=index(synstack(v:lnum,indent(v:lnum)+1),hlID('cComment'))>0 +" setlocal signcolumn=no " syntax match cType "struct\s+[A-Za-z0-9_]+\>" " syn clear cStructure " highlight! link defines Special @@ -23,7 +25,6 @@ syn region cBlock start=/{/ end=/}/ transparent " syn region myCComment start="/\*" end="\*/" fold keepend transparent - " let b:current_syntax = "c" " let g:polyglot_disabled = ['c/c++'] " unlet s:ft -- cgit v1.2.3