Pregunta

Estoy tratando de detectar el tamaño de la pantalla estoy empezando de emacs, y ajustar el tamaño y posición de la ventana de partida en (supongo que es el marco en emacs-hablar) en consecuencia.Estoy tratando de configurar mi .emacs así que siempre tengo un "razonablemente grande" de la ventana de la esquina superior izquierda cerca de la parte superior izquierda de la pantalla de mi.

Supongo que esto es un grande pedimos para el caso general, así que para limitar las cosas un poco estoy más interesado en GNU Emacs 22 en Windows y (Debian) de Linux.

¿Fue útil?

Solución

Si desea cambiar el tamaño de acuerdo a la resolución, puedes hacer algo como esto (ajustando el ancho preferido y resoluciones de acuerdo a 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 la ventana del sistema está en desuso en las últimas versiones de emacs.Un reemplazo adecuado es (display-graphic-p).Ver esta respuesta a la pregunta Cómo detectar que emacs es en la terminal de modo? para un poco más de fondo.

Otros consejos

Tengo el siguiente en mi .emacs:

(if (window-system)
  (set-frame-height (selected-frame) 60))

También puede buscar en las funciones set-frame-size, set-frame-position, y set-frame-width.Uso C-h f (aka M-x describe-function) para que aparezca la documentación detallada.

No estoy seguro de si hay una manera de calcular el máximo de la altura y la anchura de un marco en el actual entorno de ventana.

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)))

El primer ajuste se aplica a todos los emacs marcos incluyendo el primero que aparece cuando se inicia.La segunda opción agrega atributos adicionales para el primer fotograma.Esto es porque a veces es bueno saber la trama original que inicie emacs en.

La forma más sencilla que he encontrado para hacer que en un entorno X-Window es a través de X recursos.La parte relevante de mi .Xdefaults se parece a esto:

Emacs.geometry: 80x70

Usted debe ser capaz de con el sufijo +0+0 las coordenadas de localización de la fuerza a la esquina superior izquierda de su pantalla.(la razón por la que no lo hago es que me occasionnally generar nuevas tramas, y hace las cosas confuso si aparecen en la misma ubicación que el anterior)

Según el manual, esta técnica funciona en MS Windows, el almacenamiento de los recursos como pares clave/valor en el registro.Nunca he probado eso.Puede ser grande, puede ser mucho más de un inconveniente en comparación con simplemente la edición de un archivo.

Trate de añadir el siguiente código .emacs

(add-to-list 'default-frame-alist '(height . 24))

(add-to-list 'default-frame-alist '(width . 80)) 

Usted puede también el de la geometría del parámetro cuando se dispara hasta emacs: emacs -geometry 80x60+20+30 le dará una ventana de 80 caracteres de ancho, 60 filas de alto, con la esquina superior izquierda de 20 píxeles a la derecha y 30 píxeles hacia abajo desde la parte superior de la esquina izquierda del fondo.

En ubuntu hacer:

(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)

En windows, usted puede hacer que emacs marco maximizado el uso de esta función :

(defun w32-maximize-frame ()
  "Maximize the current frame"
  (interactive)
  (w32-send-sys-command 61488))
(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))
(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)

Yo prefiero Bryan Oakley configuración.Sin embargo, el 'altura no funciona correctamente en mi GNU Emacs 24.1.1.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top