2011-07-13 15 views
7

Quiero redireccionar la salida de cscope a la ventana Vim quickfix. La parte de pegamento es bastante fácil, pero actualmente estoy atascado en el formato de error. Aquí está un ejemplo de la salida cscope (cscope -L -1 bar):Cómo poner la salida del cscope en la ventana Vim quickfix?

Format: "filename scope linenumber sourceline" 
Example: "abc.cpp foo 25 bar()" 

Esto significa dentro de foo(), en la línea 25 en abc.cpp hay una llamada a la barra().

efm = %f\ %*[^\ ]\ %l\ %m funciona pero se pierde la información de alcance. Por ejemplo:

Input: "abc.cpp foo 25 bar()" becomes 
Output: "abc.cpp |25| bar()" 

Lo que yo quiero es para incluir el alcance en la ventana quickfix, así:

Input: "abc.cpp foo 25 bar()" becomes 
Output: "abc.cpp |25| bar() inside foo()" 

¿Es posible hacer esto con errorformat solamente, o tengo que escribir un guión para manipular la salida antes de alimentar a Vim?

+0

Esto puede ser útil, así que acabo de poner aquí: Se puede conectar la salida de un programa a Vim quickfix con ': cex'. Por ejemplo: ': sistema cex (" cscope -L -1 ". Expand (" ")) '. Personalmente, uso esto con cppcheck y vera ++ para el análisis estático del código C++. –

Respuesta

8

En lugar de perder el tiempo con errorformat, apenas se fija cscopequickfix y utilizar los comandos :cscope normales. p.ej. (De ayuda vim)

:set cscopequickfix=s-,c-,d-,i-,t-,e- 

Editar

También es posible usar un filtro como el siguiente para cambiar el orden de los campos

sed -e 's/^\([^ ]\+\) \([^ ]\+\) \([^ ]\+\) \(.*\)$/\1 \3 \4 inside \2/' 

configurarlo para filtrar su mensaje, a continuación, utilizar el efm

errorformat=%f\ %l\ %m 
+0

Gracias, no sabía sobre cscopequickfix antes. Esto parece funcionar bien por cierto, por lo que vota por ti. Sin embargo, esto todavía no responde mi pregunta sobre la coincidencia de salida con errorformat. Puede ayudar a conectar la salida de otros programas donde no hay integrados. –

+0

@ThanhDK: He agregado una pequeña secuencia de comandos de filtro para hacer lo que desea, que es lo que la ayuda de vim sugiere que haga si los mensajes no se ajustan a la cadena de formato – Hasturkun

+1

para usar cscopequifix. Necesita tener inhabilitado el módulo de corrección rápida. Ahorro de tiempo de otros agregándolo a su respuesta por favor. – MaikoID

Cuestiones relacionadas