3 votes

Vouloir une variante de compile-goto-error qui remplace le tampon de compilation dans la fenêtre courante

J'ai une fonction elisp personnelle qui effectue un grep multi-répertoire. Elle utilise compilation-start qui crée un tampon en mode compilation avec les résultats, dans lequel je peux appuyer sur RET (lié à compile-goto-error ) pour passer à l'endroit correspondant.

Cependant, compile-goto-error visite toujours l'emplacement dans une autre fenêtre, en laissant le tampon de compilation ouvert. La moitié du temps, je ne cherche qu'un emplacement particulier, donc j'aimerais lier une autre clé (disons C-RET ) pour visiter également l'emplacement correspondant dans un tampon, mais en restant dans la fenêtre actuelle, en remplaçant le tampon de compilation par le tampon de l'emplacement.

J'ai retracé l'exécution correspondante à partir de compile-goto-error à next-error-internal à next-error-function à compilation-next-error-function à compilation-find-file mais je n'arrive pas à trouver un endroit agréable pour y accrocher mon comportement différent. Existe-t-il un moyen simple (ou, à défaut, compliqué) de créer un fichier compile-goto-error qui passe au nouveau tampon en lieu et place de la fenêtre qui contenait le tampon de compilation ?

3voto

gcv Points 458

Je suggère de conseiller simplement l compile-goto-error pour faire ce qu'il faut, plutôt que de créer une fonction et un raccourci clavier personnalisés. Ce qui suit fait ce qu'il faut pour moi (en suivant la suggestion de Stefan) :

(defadvice compile-goto-error (around my-compile-goto-error activate)
  (let ((display-buffer-overriding-action '(display-buffer-reuse-window (inhibit-same-window . nil))))
    ad-do-it))

1voto

Stefan Points 13308

Je pense que vous devriez être en mesure d'obtenir ce que vous voulez par let-binding display-buffer-overriding-action , quelque chose comme :

(defun my-next-error ()
  (interactive)
  (let ((display-buffer-overriding-action '(display-buffer-same-window)))
    (next-error)))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X