salir - ¿Cómo configuro el tamaño de la ventana de Emacs?
emacs tutorial español (10)
En Windows, puede hacer que el marco de emacs se maximice usando esta función:
(defun w32-maximize-frame ()
"Maximize the current frame"
(interactive)
(w32-send-sys-command 61488))
Intento detectar el tamaño de la pantalla en la que estoy comenzando emacs, y ajustar el tamaño y la posición de la ventana en la que está comenzando (supongo que es el fotograma en emacs-speak) en consecuencia. Estoy intentando configurar mis .emacs para que siempre tenga una ventana "razonablemente grande" con su esquina superior izquierda cerca de la esquina superior izquierda de mi pantalla.
Supongo que esto es una gran pregunta para el caso general, así que para reducir las cosas un poco, estoy más interesado en GNU Emacs 22 en Windows y (Debian) Linux.
En ubuntu do:
(defun toggle-fullscreen ()
(interactive)
(x-send-client-message nil 0 nil "_NET_WM_STATE" 32
''(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0))
(x-send-client-message nil 0 nil "_NET_WM_STATE" 32
''(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0))
)
(toggle-fullscreen)
Intente agregar el siguiente código a .emacs
(add-to-list ''default-frame-alist ''(height . 24))
(add-to-list ''default-frame-alist ''(width . 80))
La forma más fácil que he encontrado para hacerlo en un entorno de X-Window es a través de recursos X. La parte relevante de mis .Xdefaults se ve así:
Emacs.geometry: 80x70
Debería poder sufijo con las coordenadas de ubicación + 0 + 0 para forzarlo a la esquina superior izquierda de la pantalla. (La razón por la que no lo hago es que ocasionalmente engendro nuevos marcos, y hace que las cosas sean confusas si aparecen en la misma ubicación exacta que la anterior)
Según el manual, esta técnica también funciona en MS Windows , almacenando los recursos como pares clave / valor en el registro. Nunca lo probé. Podría ser grandioso, podría ser mucho más un inconveniente comparado con simplemente editar un archivo.
Si desea cambiar el tamaño según la resolución, puede hacer algo como esto (ajustando el ancho y las resoluciones preferidas de acuerdo con sus necesidades específicas):
(defun set-frame-size-according-to-resolution ()
(interactive)
(if window-system
(progn
;; use 120 char wide window for largeish displays
;; and smaller 80 column windows for smaller displays
;; pick whatever numbers make sense for you
(if (> (x-display-pixel-width) 1280)
(add-to-list ''default-frame-alist (cons ''width 120))
(add-to-list ''default-frame-alist (cons ''width 80)))
;; for the height, subtract a couple hundred pixels
;; from the screen height (for panels, menubars and
;; whatnot), then divide by the height of a char to
;; get the height we want
(add-to-list ''default-frame-alist
(cons ''height (/ (- (x-display-pixel-height) 200)
(frame-char-height)))))))
(set-frame-size-according-to-resolution)
Tenga en cuenta que el sistema de ventanas está en desuso en las versiones más nuevas de emacs. Un reemplazo adecuado es (display-graphic-p)
. Vea esta respuesta a la pregunta ¿Cómo detectar que emacs está en modo terminal? para un poco más de fondo.
También puede usar el parámetro -geometry cuando enciende emacs: emacs -geometry 80x60+20+30
le dará una ventana de 80 caracteres de ancho, 60 filas de alto, con la esquina superior izquierda 20 píxeles hacia la derecha y 30 píxeles hacia abajo desde la parte superior esquina izquierda del fondo.
Tengo lo siguiente en mis .emacs
:
(if (window-system)
(set-frame-height (selected-frame) 60))
También puede ver las funciones set-frame-size
, set-frame-position
y set-frame-width
. Use Ch f
(también conocido como Mx describe-function
) para mostrar documentación detallada.
No estoy seguro de si hay una forma de calcular la altura / ancho máximo de un marco en el entorno de ventanas actual.
Tomado de: http://www.gnu.org/software/emacs/windows/old/faq4.html
(setq default-frame-alist
''((top . 200) (left . 400)
(width . 80) (height . 40)
(cursor-color . "white")
(cursor-type . box)
(foreground-color . "yellow")
(background-color . "black")
(font . "-*-Courier-normal-r-*-*-13-*-*-*-c-*-iso8859-1")))
(setq initial-frame-alist ''((top . 10) (left . 30)))
La primera configuración se aplica a todos los marcos de emacs, incluido el primero que aparece cuando comienzas. La segunda configuración agrega atributos adicionales al primer cuadro. Esto se debe a que a veces es bueno saber el marco original en el que comienzas emacs.
(defun set-frame-size-according-to-resolution ()
(interactive)
(if window-system
(progn
;; use 120 char wide window for largeish displays
;; and smaller 80 column windows for smaller displays
;; pick whatever numbers make sense for you
(if (> (x-display-pixel-width) 1280)
(add-to-list ''default-frame-alist (cons ''width 120))
(add-to-list ''default-frame-alist (cons ''width 80)))
;; for the height, subtract a couple hundred pixels
;; from the screen height (for panels, menubars and
;; whatnot), then divide by the height of a char to
;; get the height we want
(add-to-list ''default-frame-alist
(cons ''height (/ (- (x-display-pixel-height) 200)
(frame-char-height)))))))
(set-frame-size-according-to-resolution)
Prefiero la configuración de Bryan Oakley. Sin embargo, la ''altura no funciona correctamente en mi GNU Emacs 24.1.1.
(setq initial-frame-alist
(append ''((width . 263) (height . 112) (top . -5) (left . 5) (font . "4.System VIO"))
initial-frame-alist))
(setq default-frame-alist
(append ''((width . 263) (height . 112) (top . -5) (left . 5) (font . "4.System VIO"))
default-frame-alist))