compilation-mode – ¿Cómo puedo volver a centrar grep o compilar la ventana en el siguiente error?

Pregunta:

En el next-error en la ventana de compilación o grep, puedo usar algo como

(setq next-error-recenter 35)

para asegurarse de que la ventana que muestra la coincidencia se desplaza para mostrar la coincidencia completa, como se describe con más detalle en esta pregunta de stackoverflow .

¿Cómo hago lo mismo en la ventana de compilación o grep? A menudo tengo una salida de grep o una salida de compilación que está fuera de la parte inferior de la ventana, y en los días en que paso todo mi tiempo revisando la salida de grep o compilando errores, alternar entre ventanas agrega una sobrecarga significativa.

Respuesta:

Utilizo dicha solución para el guardado exacto de la posición del point en el búfer de compilation/grep :

(defun eab/compile-goto-error ()
  (interactive)
  (let ((istc? truncate-lines))
    (toggle-truncate-lines t)
    (let ((buf (current-buffer))
          (line (- (count-lines (window-start) (point))
                   (if (eq (point) (point-at-bol)) 0 1)))
          (point (point)))
      (compile-goto-error)
      (run-with-timer 0.01 nil `(lambda ()
                                 (let ((cb (current-buffer)))
                                       (pop-to-buffer ,buf)
                                       (recenter ,line)
                                       (goto-char ,point)
                                       (toggle-truncate-lines ,istc?)
                                       (pop-to-buffer cb)))))))

Si desea un centrado simple del point en el búfer de compilation/grep , use:

(defun eab/next-error ()
  (interactive)
  (let ((buf (current-buffer)))
    (next-error)
    (run-with-timer 0.01 nil `(lambda ()
                             (let ((cb (current-buffer)))
                               (pop-to-buffer ,buf)
                               (recenter)
                               (pop-to-buffer cb))))))

Puede usar next-error lugar de compile-goto-error en el primer ejemplo.

Upd. Emacs 25.1 es necesario para un período de tiempo distinto de cero.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım