开发者

Vim: Custom Folding function done, custom highlighting required

开发者 https://www.devze.com 2022-12-22 20:10 出处:网络
I have defined a function in vim to properly indent folds.Ie so they look like this: Unfolded this is text

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号