sexta-feira, 20 de março de 2009

Abrindo uma janela de preview com uma tag automaticamente.

Esse exemplo do help do vim faz uso do evento CursorHold. Coloque o código no .vimrc e recarregue.

Após um certo tempo sem mover o cursor o comando ':ptag' é executado na palavra sob o cursor. Se não existir tag nada ocorre.
Será aberta uma janela de preview com a primeira ocorrência da palavra. A ocorrência será colorizada.

:au! CursorHold *.[ch] nested call PreviewWord()
:func PreviewWord()
: if &previewwindow " don't do this in the preview window
: return
: endif
: let w = expand("") " get the word under cursor
: if w =~ '\a' " if the word contains a letter
:
: " Delete any existing highlight before showing another tag
: silent! wincmd P " jump to preview window
: if &previewwindow " if we really get there...
: match none " delete existing highlight
: wincmd p " back to old window
: endif
:
: " Try displaying a matching tag for the word under the cursor
: try
: exe "ptag " . w
: catch
: return
: endtry
:
: silent! wincmd P " jump to preview window
: if &previewwindow " if we really get there...
: if has("folding")
: silent! .foldopen " don't want a closed fold
: endif
: call search("$", "b") " to end of previous line
: let w = substitute(w, '\\', '\\\\', "")
: call search('\<\V' . w . '\>') " position cursor on match
: " Add a match highlight to the word at this position
: hi previewWord term=bold ctermbg=green guibg=green
: exe 'match previewWord "\%' . line(".") . 'l\%' . col(".") . 'c\k*"'
: wincmd p " back to old window
: endif
: endif
:endfun

0 comentários:

Postar um comentário