Vim: Custom Folding function done, custom highlighting required
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 (same as my background).
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 think that folds are selected differently and I cannot think of a way to override the default highlighting. 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.
Note: I have cross posted this on super user.
See this question
It seems that we cannot control the fold highlighting since it is not part of the file but formed and laid temporarily at folds.
精彩评论