window-splitting – ¿Cómo puedo obtener una política sensata de ventana dividida?

Pregunta:

Emacs está constantemente creando nuevas ventanas y últimamente me ha estado arruinando el día. ¿Cómo puedo decirle a emacs que use la siguiente política al crear ventanas?

  • Prefiero divisiones verticales
  • Deje de hacer divisiones verticales cuando las ventanas tengan menos de 80 columnas.
  • Deje de hacer divisiones horizontales cuando la ventana tenga menos de 60 filas.
  • Cuando llegue a esta cuadrícula de 6×6, en mi monitor de 27 ", ¡empiece a reutilizar Windows!

Además, preferiría que mis ventanas siempre estén equilibradas, pero cada división deja desequilibrados los tamaños de las viudas. ¡Prefiero tener 3 ventanas del mismo tamaño que 1 grande y dos demasiado pequeñas! ¿Existe un escenario para esto, o un lugar sensato para poner un consejo sobre ventanas de equilibrio?

Respuesta:

Un poco tarde, pero porque también busqué esto y no pude encontrar una solución lista:

Podrías definir tu propia función split-window-sensibly .
Para hacerlo, ponga lo siguiente en su init.el :

(setq split-height-threshold 120
      split-width-threshold 160)

(defun my-split-window-sensibly (&optional window)
    "replacement `split-window-sensibly' function which prefers vertical splits"
    (interactive)
    (let ((window (or window (selected-window))))
        (or (and (window-splittable-p window t)
                 (with-selected-window window
                     (split-window-right)))
            (and (window-splittable-p window)
                 (with-selected-window window
                     (split-window-below))))))

(setq split-window-preferred-function #'my-split-window-sensibly)

Nota: los umbrales deben ser dos veces más grandes que la ventana más pequeña permitida, porque cada una de las nuevas ventanas usa la mitad del tamaño de la ventana anterior.
La última línea le dice a emacs que use la función de división definida.

Leave a Comment

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

web tasarım