¿No se next-error
desplaza el búfer de errores de compilación, de modo que el error actual aparece como la primera línea de la ventana?
Si no, ¿al menos no coloca el cursor en la línea de error actual? Si lo hace, y si el cursor no es lo suficientemente visible para usted, considere usar hl-line-mode
para resaltar la línea actual. O considere usar la biblioteca crosshairs
para resaltar la línea actual y la columna actual.
Actualiza después de tu comentario
Pensé que estabas invocando next-error
en buffer *compilation*
. Si haces eso, entonces la línea se desplaza hacia arriba, como describí.
Pero si está invocando el next-error
búfer externo, *compilation*
entonces debe usar next-error-hook
para, en el búfer*compilation*
, resaltar la línea actual o franja o lo que sea, de la manera que desee.
Aquí hay un ejemplo rápido y sucio:
(defun foo ()
"..."
(with-current-buffer next-error-last-buffer
(hl-line-mode 1)))
(add-hook 'next-error-hook 'foo)
(Por supuesto, sólo se necesita para encender hl-line-mode
una vez en ese búfer. Hacerlo como se muestra arriba es una exageración, pero no hace daño. Se podría pensar que usted podría añadir foo
a grep-mode-hook
o compilation-mode-hook
. Pero cuando se invocan los ganchos hay no next-error-last-buffer
)
Nota:
Hay dos opciones de usuario que controlan las formas de indicar el golpe en el búfer de origen (no en el búfer de compilación): next-error-highlight
y next-error-highlight-no-select
. Ofrecen las mismas posibilidades, pero son utilizados por diferentes comandos. Las posibilidades incluyen el uso de una flecha de flecos o resaltar el partido por un tiempo determinado.
Pero no existe tal opción que controle la indicación del golpe actual en el búfer *compilation*
. Entonces, Emacs ofrece dos opciones (donde una probablemente sería suficiente) para el búfer de origen, pero ninguna opción para el búfer de compilación.
Se podría considerar la presentación de una solicitud de mejora, para obtener una opción similar para la compilación (incluyendo grep) Tampón: M-x report-emacs-bug
. Está bien usar un gancho con su propia función para realizar el resaltado, pero no debería ser necesario.
Y si solo desea cambiar el indicador de margen, puede hacer esto (use el mapa de bits de margen que desee, en lugar de filled-rectangle
- vea (elisp) Mapas de bits de margen para obtener una lista de los predefinidos):
(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)
Actualización n. ° 2:
Acabo de descubrir que si apagas mostrar la franja izquierda, verás el comportamiento que describí al principio: la ventana se desplaza para colocar el error actual en la parte superior. Entonces esa es otra posibilidad. (Es el comportamiento que veo en mi configuración, ya que no muestro flecos).
Hay un error en este comportamiento, que acabo de informar ( # 20829 ). Lo que cuenta (actualmente, hasta que se solucione el error) es si la franja izquierda se muestra en la ventana seleccionada cuando lo hace C-x `
( next-error
). (Actualmente) no es suficiente que la ventana que muestra el búfer de compilación no muestre el margen izquierdo.