Vim: Quando o código dobrável permite que as guias permaneçam

2

No vim eu gostaria de mudar o comportamento de dobra. Suponha que eu dobre este bloco:

=== fileName ===

        == summary ==

                I think that this defines the class to use for the authentication
                and the parameters to pass the class.

        == tags ==

                <bla bla>
                </bla bla>

Torna-se:

=== fileName ===

        == summary ==

+---  2 lines: I think that this defines the class to use for the authentication------------

        == tags ==

                <bla bla>
                </bla bla>

Eu acho que seria mais fácil de ler se fosse:

=== fileName ===

        == summary ==

                +---  2 lines: I think that this defines the class to use for the authentication------------

        == tags ==

                <bla bla>
                </bla bla>

(O resultado desejado tem uma aba extra)

FYI: Eu tenho isso no meu vimrc:

"use indents as the folding method
set foldmethod=indent

"make vim save and load the folding of the document each time it loads
au BufWinLeave * mkview
au BufWinEnter * silent loadview

Atualizar

Após recomendação de njd I tentei definir o texto dobrado para minha própria função. Eu tentei o que ele sugeriu e o que está abaixo. No entanto, nenhum deles teve qualquer efeito.

function! MyFoldText()
  return 'johnny'
endfunction

set foldtext=MyFoldText()

O que estou perdendo aqui?

Observação: Eu também tenho isto: set foldmethod=indent no meu .vimrc.

    
por sixtyfootersdude 23.02.2010 / 17:29

1 resposta

2

Então você quer que a mensagem da dobra fique alinhada com o recuo do texto dobrado?

Você precisa definir a opção ' foldtext ' como algo diferente da função padrão foldtext () .

Algo parecido com isto:

function! MyFoldText()
  let lines = 1 + v:foldend - v:foldstart
  let spaces = repeat(' ', indent(v:foldstart))

  let linestxt = 'lines'
  if lines == 1
    linestxt = 'line'
  endif

  let firstline = getline(v:foldstart)
  let line = firstline[ind : ind+80]

  return spaces . '+' . v:folddashes . ' ' . lines . ' ' . linestxt . ': ' . line . ' '
endfunction

Então

:set foldtext=MyFoldText()
    
por 24.02.2010 / 14:08

Tags