rocks emacs emacs24

rocks - Orden de evaluación inversa de split-height-threshold y split-width-threshold en Emacs para display-buffer



emacs windows installer (1)

Puede hacer que Emacs haga esto mediante la personalización de la variable split-window-preferred-function :

(defun my-split-window-sensibly (&optional window) (let ((window (or window (selected-window)))) (or (and (window-splittable-p window t) ;; Split window horizontally. (with-selected-window window (split-window-right))) (and (window-splittable-p window) ;; Split window vertically. (with-selected-window window (split-window-below))) (and (eq window (frame-root-window (window-frame window))) (not (window-minibuffer-p window)) ;; If WINDOW is the only window on its frame and is not the ;; minibuffer window, try to split it horizontally disregarding ;; the value of `split-width-threshold''. (let ((split-width-threshold 0)) (when (window-splittable-p window t) (with-selected-window window (split-window-right)))))))) (setq split-window-preferred-function ''my-split-window-sensibly)

La variable split-window-preferred-function

especifica una función para dividir una ventana, con el fin de crear una nueva ventana para mostrar un búfer. Es utilizado por la función de acción display-buffer-pop-up-window para dividir realmente la ventana.

Por defecto, está configurado para split-window-sensibly . La función que proporciono arriba es una versión modificada de " split-window-sensibly window.el (definida en window.el ) que simplemente invierte los pasos de la función original, haciendo que Emacs "prefiera" las divisiones lado a lado de las ventanas sobre las apiladas.

Cuando display-buffer tiene que crear una nueva ventana en un panel existente, el manual de Emacs establece que el split-height-threshold se busca primero para determinar si la nueva ventana puede estar debajo de la actual, luego se evalúa el split-width-threshold de la misma manera para ventanas lado a lado.

¿Hay alguna manera de hacer que Emacs intente primero poner las ventanas una al lado de la otra si el ancho es lo suficientemente alto? Puedo establecer el split-height-threshold en nil para inhibir por completo la división vertical, pero eso hace que Emacs robe otra ventana si la actual no es lo suficientemente amplia.