2010-12-09 3 views
7

Je ne suis pas sûr du spécificateur de format %t dans la liste des correctifs de Vim. Comment cela affecte-t-il le comportement/l'affichage du tampon quickfix?Quel est le type d'erreur dans errorformat pour la liste Quickfix de Vim?

J'ai essayé de le trouver avec le fichier de test suivant:

$ cat test.out 
foo    Error   1 foo.h   foobar 
bar    Error   2 foo.h   foobar 
foobar   Warning  3 foo.h   foobar 
barfoo   Warning  4 foo.h   foobar 

Et le errorformat premier suivant:

set errorformat+=%.%#%*\\s%.%#%*\\s%l\ %f%*\\s%m 

Avec cette errorformat en place que je peux utiliser :cgetfile test.out et sauter à la ligne numéros dans foo.h, mais avec les numéros suivants:

set errorformat+=%.%#%*\\s%t%.%#%*\\s%l\ %f%*\\s%m 

Tout ce qui a changé est que maintenant je vois des espaces après les numéros de ligne dans le tampon quickfix, par exemple. Je vois (deux espaces après le 1)

foo.h|1 | foobar 

au lieu de

foo.h|1| foobar 

J'ai donc deux questions:

  1. Quel est le problème avec mon errorformat?
  2. Que dois-je voir si le type d'erreur peut être extrait?

Répondre

5

Ce n'est pas vraiment une réponse à votre question, mais une autre solution que je m'utilise. Personnellement, je trouve le système errorformat trop compliqué, et à la place, j'utilise un format d'erreur commun, très simple, alimenté par la sortie d'une fonction réelle, que je redirige vers la sortie de ma commande make. J'utilise ceci: "% f \% l \% c \% m". J'écris ces fonctions d'analyse d'erreur dans python, mais n'importe lequel des langages de script supportés devrait faire, ou même vimL. La logique de ceci étant qu'une telle fonction est beaucoup plus facile à déboguer, utilisable en dehors de vim, et (au moins pour moi) plus rapide à écrire que l'élaboration d'une chaîne errorformat.

+0

Cela semble raisonnable. Je suis tombé sur le type d'erreur quand je jouais avec ctags -x --c-types = f pour obtenir une liste de toutes les fonctions dans le tampon quickfix pour faciliter la visualisation et de sauter à eux dans le fichier que je suis en train de visiter. Bien sûr, la prochaine chose que j'essayais était d'obtenir toutes les choses/balises intéressantes listées dans quickfix et un petit identifiant pour distinguer macros, fonctions, variables, etc. et le type d'erreur ressemblait à un bon essai ... –

1

J'ai trouvé l'exemple suivant dans le fichier quickfix.txt où % t est utilisé.

Examples
The format of the file from the Amiga Aztec compiler is:
filename>linenumber:columnnumber:errortype:errornumber:errormessage

filename name of the file in which the error was detected 
linenumber line number where the error was detected 
columnnumber column number where the error was detected 
errortype type of the error, normally a single 'E' or 'W' 
errornumber number of the error (for lookup in the manual) 
errormessage description of the error  

This can be matched with this errorformat entry:
%f>%l:%c:%t:%n:%m

Il semble que certains compilateur stockent le type d'erreur dans un seul caractère E ou W, vraisemblablement pour erreur et d'avertissement. Gardez à l'esprit qu'il s'agit d'un caractère unique, il ne correspondra donc pas à "Avertissement" ou "Erreur".
%t error type (finds a single character)

+0

savoir, donc un type d'erreur est une seule lettre, mais que fait quickfix avec cette seule lettre? Devrait-il l'afficher d'une manière ou d'une autre? –

+0

Je viens d'avoir un aperçu de la source Vim dans ./src/quickfix.c où les formats d'erreur sont traités. Je ne vois pas exactement le point d'erreur. (Apparemment c'est toujours '1' quand vous utilisez le: helpgrep mais au-delà ...) –

+0

Vous pouvez jeter un coup d'oeil ici: http://code.google.com/p/vim/source/browse/src/quickfix. c Le type d'erreur est stocké dans la liste d'erreurs mais ne semble pas être d'une grande utilité ... –

7

I'm unsure about the %t format specifier in Vim's quickfix list, how does it affect the behavior/display of the quickfix buffer?

Il indique le tampon de quickfix ce type d'erreur est un match (erreur, avertissement ou d'information). Le tampon Quickfix affichera ensuite cette information après le numéro de ligne et le mettretra en surbrillance dans une couleur différente.Par exemple, voici un avertissement et une erreur:

hosts.cfg|3473 error| Could not add object property 
hosts.cfg|3790 warning| Duplicate definition found for host 'mailgateway' 

Dans la fenêtre quickfix le mot « avertissement » est en jaune et le mot « erreur » est blanc sur fond rouge. Dans mon format d'erreur j'utilise% t où E ou W serait dans Erreur ou Avertissement. Par exemple:

%trror: %m in file '%f' on line %l 
Questions connexes