Vim: Custom Folding function done, custom highlighting required
- by sixtyfootersdude
I have defined a function in vim to properly indent folds. Ie so they look like this:
Unfolded
this is text
also text
indented text
indented text
not indented text
folded with default function
this is text
also text
+-- 2 lines: indented text ----------------------------
not indented text
folded with my new function
this is text
also text
++- 2 lines: indented text ----------------------------
not indented text
The only problem is the the highlighting is still like this:
folded with my new function (highlighting shown with tag)
this is text
also text
<hi> ++- 2 lines: indented text ----------------------------</hi>
not indented text
I would like the highlighting to start at the ++ and not at the beginning of the line. I have looked in the vim manual but could not find anything like that. One so-so solution I found was to make the background black.
highlight Folded ctermbg=black ctermfg=white cterm=bold
But this make folds less visible.
I have tried several variations of:
syn keyword Folded lines
syn region Folded ...
But I don't think that this is the way that folds are selected. Can anyone offer a suggestion?
By the way this is my function to indent the folds:
set foldmethod=indent
function! MyFoldText()
let lines = 1 + v:foldend - v:foldstart
let ind = indent(v:foldstart)
let spaces = ''
let i = 0
while i < ind
let i = i+1
let spaces = spaces . ' '
endwhile
let linestxt = 'lines'
if lines == 1
linestxt = 'line'
endif
return spaces . '+' . v:folddashes . ' '. lines . ' ' . linestxt . ': ' . getline(v:foldstaendfunction
endfunction
au BufWinEnter,BufRead,BufNewFile * set foldtext=MyFoldText()
By the way thanks to njd for helping me get this function setup.