next-error
Scrollt der Kompilierungsfehlerpuffer nicht , sodass der aktuelle Fehler als erste Zeile des Fensters angezeigt wird?
Wenn nicht, setzt es den Cursor nicht zumindest auf die aktuelle Fehlerzeile? Wenn dies der Fall ist und der Cursor für Sie nicht sichtbar genug ist, können Sie hl-line-mode
die aktuelle Zeile mit markieren. Oder verwenden Sie die Bibliothek crosshairs
, um die aktuelle Zeile und die aktuelle Spalte hervorzuheben.
Update nach deinem Kommentar
Ich dachte, Sie rufen next-error
im Puffer auf *compilation*
. Wenn Sie das tun, wird die Zeile wie oben beschrieben nach oben gescrollt.
Aber wenn Sie den Aufruf next-error
außerhalb Puffer , *compilation*
dann müssen Sie verwenden , next-error-hook
um, in Puffer*compilation*
, markieren Sie die aktuelle Zeile oder Fransen oder was auch immer, in welcher Weise auch immer Sie mögen.
Hier ist ein schnelles und schmutziges Beispiel:
(defun foo ()
"..."
(with-current-buffer next-error-last-buffer
(hl-line-mode 1)))
(add-hook 'next-error-hook 'foo)
(Natürlich müssen Sie hl-line-mode
sich in diesem Puffer wirklich nur einmal einschalten . Es ist übertrieben, es wie oben gezeigt zu tun, aber es tut nicht weh. Sie könnten denken, Sie könnten nur foo
zu grep-mode-hook
oder hinzufügen compilation-mode-hook
. Aber wenn diese Hooks aufgerufen werden, gibt es nein next-error-last-buffer
.)
Hinweis:
Es gibt zwei Benutzeroptionen, die steuern, wie der Treffer im Quellpuffer (nicht im Kompilierungspuffer) angezeigt wird : next-error-highlight
und next-error-highlight-no-select
. Sie bieten die gleichen Möglichkeiten, werden jedoch von verschiedenen Befehlen verwendet. Die Möglichkeiten umfassen die Verwendung eines Randpfeils oder das Hervorheben der Übereinstimmung für eine bestimmte Zeit.
Es gibt jedoch keine solche Option, die die Anzeige des aktuellen Treffers im Puffer steuert *compilation*
. Daher bietet Emacs zwei Optionen (wobei eine wahrscheinlich ausreichen würde) für den Quellpuffer, jedoch keine Option für den Kompilierungspuffer.
Sie können eine Erweiterungsanforderung einreichen, um eine ähnliche Option für den Kompilierungspuffer (einschließlich grep) zu erhalten : M-x report-emacs-bug
. Die Verwendung eines Hakens mit eigener Funktion zur Durchführung der Hervorhebung ist in Ordnung, sollte jedoch nicht erforderlich sein.
Und wenn Sie nur die Streifenanzeige ändern möchten, können Sie dies tun (was auch immer verwenden fringe Bitmap Sie wollen, statt filled-rectangle
- siehe (elisp) Fringe Bitmaps für eine Liste der vordefinierten sind):
(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)
Update Nr. 2:
Ich habe gerade festgestellt, dass Sie beim Ausschalten des linken Randes das Verhalten sehen, das ich am Anfang beschrieben habe: Das Fenster wird gescrollt, um den aktuellen Fehler oben zu platzieren. Das ist also eine andere Möglichkeit. (Es ist das Verhalten, das ich in meinem Setup sehe, da ich keine Ränder zeige.)
Es gibt einen Fehler in diesem Verhalten, den ich gerade gemeldet habe ( # 20829 ). Was zählt (derzeit bis der Fehler behoben ist), ist, ob der linke Rand im ausgewählten Fenster angezeigt wird, wenn Sie dies tun C-x `
( next-error
). Es reicht (derzeit) nicht aus, dass das Fenster mit dem Kompilierungspuffer nicht den linken Rand anzeigt.