Vim: Custom Folding function done, custom highlighting required
Posted
by sixtyfootersdude
on Super User
See other posts from Super User
or by sixtyfootersdude
Published on 2010-03-10T16:26:41Z
Indexed on
2010/03/18
12:51 UTC
Read the original article
Hit count: 605
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.
© Super User or respective owner