Ne fait pas next-error
défiler le tampon des erreurs de compilation, de sorte que l'erreur actuelle s'affiche comme la première ligne de la fenêtre?
Sinon, ne place-t-il pas au moins le curseur sur la ligne d'erreur actuelle? Si c'est le cas, et si le curseur n'est pas suffisamment visible pour vous, pensez à utiliser hl-line-mode
pour mettre en surbrillance la ligne actuelle. Ou envisagez d'utiliser la bibliothèque crosshairs
pour mettre en surbrillance la ligne et la colonne actuelles.
Mettre à jour après votre commentaire
Je pensais que tu invoquais next-error
dans le tampon *compilation*
. Si vous faites cela, la ligne défile vers le haut, comme je l'ai décrit.
Mais si vous invoquez un next-error
tampon extérieur, *compilation*
vous devez utiliser next-error-hook
pour, dans le tampon*compilation*
, mettre en surbrillance la ligne ou la frange actuelle ou autre, comme vous le souhaitez.
Voici un exemple rapide et sale:
(defun foo ()
"..."
(with-current-buffer next-error-last-buffer
(hl-line-mode 1)))
(add-hook 'next-error-hook 'foo)
(Bien sûr, vous n'avez vraiment besoin d'activer hl-line-mode
qu'une seule fois dans ce tampon. Le faire comme indiqué ci-dessus est exagéré, mais cela ne fait pas de mal. Vous pourriez penser que vous pouvez simplement ajouter foo
à grep-mode-hook
ou compilation-mode-hook
. Mais lorsque ces crochets sont invoqués, il y a non next-error-last-buffer
.)
Remarque:
Il existe deux options utilisateur qui contrôlent les façons d'indiquer le hit dans le tampon source (et non dans le tampon de compilation): next-error-highlight
et next-error-highlight-no-select
. Ils offrent les mêmes possibilités, mais ils sont utilisés par différentes commandes. Les possibilités incluent l'utilisation d'une flèche à franges ou la mise en évidence du match pendant un certain temps.
Mais il n'y a pas une telle option contrôlant l'indication du hit actuel dans le tampon *compilation*
. Emacs propose donc deux options (où une serait probablement suffisante) pour le tampon source mais aucune option pour le tampon de compilation.
Vous pourriez envisager de déposer une demande d'amélioration, pour obtenir une option similaire pour la compilation (y compris grep) tampon: M-x report-emacs-bug
. L'utilisation d'un crochet avec votre propre fonction pour effectuer la mise en évidence est OK, mais cela ne devrait pas être nécessaire.
Et si vous voulez simplement changer l'indicateur de frange, vous pouvez le faire (utilisez le bitmap de frange que vous voulez, au lieu de filled-rectangle
- voir (elisp) Fringe Bitmaps pour une liste des prédéfinis):
(defun bar ()
(with-current-buffer next-error-last-buffer
(unless (eq 'filled-rectangle (cdr (assq 'overlay-arrow fringe-indicator-alist)))
(setq fringe-indicator-alist
(cons '(overlay-arrow . filled-rectangle) fringe-indicator-alist)))))
(add-hook 'next-error-hook 'bar)
Mise à jour # 2:
Je viens de découvrir que si vous désactivez l'affichage de la frange gauche, vous verrez le comportement que j'ai décrit au début: la fenêtre défile pour mettre l'erreur actuelle en haut. Voilà donc une autre possibilité. (C'est le comportement que je vois dans ma configuration, car je ne montre pas de franges.)
Il y a un bug dans ce comportement, que je viens de signaler ( # 20829 ). Ce qui compte (actuellement, jusqu'à ce que le bug soit corrigé) est de savoir si la frange gauche apparaît dans la fenêtre sélectionnée lorsque vous le faites C-x `
( next-error
). Il ne suffit (actuellement) pas que la fenêtre affichant le tampon de compilation ne montre pas la frange gauche.