Parece que isso é impossível. Veja:
Eu defini uma função no vim para recuar corretamente as dobras. Ou seja, eles se parecem com isso:
this is text
also text
indented text
indented text
not indented text
this is text
also text
+-- 2 lines: indented text ----------------------------
not indented text
this is text
also text
++- 2 lines: indented text ----------------------------
not indented text
O único problema é que o destaque ainda é assim:
this is text
also text
<hi> ++- 2 lines: indented text ----------------------------</hi>
not indented text
Gostaria que o destaque fosse iniciado no ++ e não no início da linha. Eu olhei no manual do vim mas não consegui encontrar nada parecido. Uma solução que eu encontrei foi tornar o fundo preto.
highlight Folded ctermbg=black ctermfg=white cterm=bold
Mas isso torna as dobras menos visíveis.
Eu tentei várias variações de:
syn keyword Folded lines
syn region Folded ...
Mas não acho que seja assim que as dobras são selecionadas. Alguém pode oferecer uma sugestão?
A propósito, esta é minha função para recuar as dobras:
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()
A propósito, graças a njd por me ajudar a obter essa configuração de função.
Parece que isso é impossível. Veja: