window – perspectiva hecha en casa de emacs: fuente + eshell + compilación

Pregunta:

Quiero esa funcionalidad de emacs (gnu 25), presiono la tecla en cualquier búfer con código fuente, y en lugar de un búfer tengo 3 búferes en la pantalla:

source code buffer
------------------
*eshell* | *compilation*

*eshell* debe crearse si no existe, y si no hay *compilation* búfer alrededor, debe mostrarse *scratch* , pero debe reemplazarse con *compilation* después de la primera compilación.

Leí sobre sesiones, pero tengo entendido que no es lo que quiero. Quiero que esta ventana se divida para cualquier búfer de código fuente, no para específicos, que guardo en la sesión y restauro de la sesión.

¿Cómo puedo lograr cualquier extensión / paquete conocido con dicha funcionalidad?

Respuesta:

Aquí hay una función viable mínima básica , que espero que haga lo que quieres.

(defun wjh3pane-create-3pane-layout ()
  "Create 3-pane layout of windows in the current frame.

Layout is as follows:

    |--------------------------------------|
    |          source code buffer          |
    |          source code buffer          |
    |          source code buffer          |
    |--------------------------------------|
    |     *eshell*     |   *compilation*   |
    |--------------------------------------|

The height of the bottom windows can be changed by customizing
the `compilation-window-height' variable.  The function does
nothing if selected buffer is not visiting a file.
"
  (interactive)
  (when (buffer-file-name)
    (delete-other-windows)
    (save-selected-window
      (split-window-vertically (- (or compilation-window-height 10)))
      (select-window (next-window) t)
      (switch-to-buffer (eshell))
      (split-window-horizontally)
      (select-window (next-window) t)
      (switch-to-buffer (or (get-buffer "*compilation*")
                            (get-buffer "*scratch*"))))))

(global-set-key (kbd "s-3") 'wjh3pane-create-3pane-layout)

Lo he vinculado a "Super 3" (lo he superpuesto a la tecla de bloqueo de mayúsculas), pero puedes ajustarlo a tu gusto. Tal como está, debe invocar la función manualmente, antes o después de llamar a compile . Eso podría automatizarse con un poco más de esfuerzo, por ejemplo, utilizando consejos. (Intenté usar un gancho de compilación, pero parecía que sería complicado). Además, actualmente no hace nada para guardar / restaurar la configuración de la ventana anterior.

Leave a Comment

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

Scroll to Top

web tasarım