2010-12-31 12 views
8

Estoy usando Vim con TagList en desarrollo. TagList parece ser muy agradable, pero un problema es que lleva mucho tiempo actualizar, así que si, por ejemplo, me refiero a la función A de la función B en el mismo archivo, tarda unos 5 segundos en obtener TagList. actualizado. ¿Hay alguna forma de acortar este intervalo, como medio segundo, por ejemplo?Vim: TagList Plugin Actualización lenta

+0

5 segundos es demasiado largo. También lo estoy usando y funciona bien para mí. incluso medio segundo es demasiado para eso. Creo que el problema está en algún otro lugar y no con TagList. También uso ctags y cscope para la navegación de código y también son muy buenos. puedes probarlos también. –

+0

@Rafid K. Abdullah: leyó esta pregunta: http://stackoverflow.com/questions/2169645/vims-autocomplete-is-excruciatingly-slow – eckes

+0

@eckes, sí, acabo de hacerlo, pero no es lo que soy preguntando realmente ¿Has usado TagList antes? – Rafid

Respuesta

1

Usted puede vincular una clave a la función: TlistRefresh

map <silent> <F1> :TlistRefresh<CR> 
+0

Hmmm ... es un buen trabajo, así que como no hay otra respuesta, marcaré esto como la respuesta aceptada. Pero espera, en mi caso, supongo que hay un temporizador de 5 segundos que llama a TlistRefresh, ¿sí? Entonces, puede ser una buena idea verificar eso y cambiarlo. Te dejaré saber si tengo éxito. – Rafid

+0

Sí, estaba buscando algo en el guión que indicara un evento de temporizador o algo así, sin embargo, nada me sorprendió. Lo único que podía imaginar era que se producía un evento BufEnter cada 5 segundos. Hay opciones de depuración para habilitar: TlistDebug y luego: TlistMessages te muestra el resultado. Buena suerte y publique una mejor solución. – ThePosey

3

tengo el mismo problema que la suya e inspirado por la respuesta de ThePosey.

puede encontrar el comando "autocmd" en la línea de 1678 en el que se ve taglist.vim

autocmd BufEnter * call s:Tlist_Refresh() 

que espera un evento BufEnter para actualizar la ventana de la etiqueta.

yo sólo lo modificó para

autocmd BufEnter,CursorMovedI * call s:Tlist_Refresh() 

y se alternará Tlist_Refresh mientras que el cursor se mueve en el modo de inserción. Eliminé el evento CursorMoved porque dificulta demasiados comandos.

Creo que esto debería cumplir el requisito para la mayoría de los casos. El efecto secundario es que algunos comandos que requieren mover el cursor se vuelven inválidos.

Editar:

Una forma más fácil sería poner esta línea en el archivo .vimrc:

autocmd CursorMovedI * silent! TlistHighlightTag 

Y por cierto, no hay comando TlistRefresh, utilice TlistHighlightTag lugar.

+0

Modifiqué su solución un poco porque CursorMovedI es solo para el modo de inserción, pero también quería el modo normal: 'autocmd BufEnter, CursorMoved, CursorMovedI * silent! TlistHighlightTag' –

1

tipo de una vieja pregunta, pero para taglist 4.6 (al menos) el período de actualización se controla por el updatetime (autocmd CursorHold .. línea de 1735)

para la interactividad, la respuesta de Tom Yu es probablemente la mejor solución.

3

Puede intentar establecer el tiempo de actualización en 1000ms. Hice esto con un archivo grande y todo está funcionando muy bien, la actualización ocurre cada segundo;

set ut=1000 

ver si ayuda

+0

Esto logra lo que la solución de TomYu realiza mediante sondeos, pero tiene la misma desventaja que cualquier solución impulsada por "sondeo vs. interrupción" (es decir, la interrupción será más rápida y no causará operaciones innecesarias.) Tuve que establecer 'ut = 250 'para obtener la respuesta de IU que quería. Si realmente quisiera que no se notara, lo pondría en' ut = 100' porque los eventos que son <250 ms generalmente no son perceptibles por los humanos)). –