2012-06-08 18 views
5

Estoy usando Emacs en una netbook pequeña para escribir código, y he establecido el tamaño de fuente para que aproximadamente caracteres de columna de relleno llenen el ancho de una sola ventana 'maximizada' (es decir, tamaño de fuente bastante grande). Sin embargo, si abro dos ventanas una al lado de la otra, me gustaría que el tamaño de la fuente en esas ventanas se reduzca automáticamente para que el ancho de cada ventana tenga capacidad para al menos 79 caracteres.Emacs cambia dinámicamente el tamaño de fuente según el ancho de la ventana y la columna de relleno

Antes de comenzar a analizar esto (no soy bueno en Lisp), es posible obtener el ancho de la ventana en cada cambio de tamaño, dividirlo por columnas de relleno, y de acuerdo con ese resultado seleccionar un tamaño de fuente monoespaciado ?

+0

Debe ser posible, aunque la preferencia de fuente tiene un papel que desempeñar para determinar la altura de la fuente después de cada división y no dividir. mira estas funciones 'frame-pixel-width'' frame-char-width' 'set-face-attribute' – kindahero

Respuesta

2

Me parece el lugar adecuado para hacer esto sería window-size-change-functions:

Funciones de llamada antes de remostrado, si los tamaños de las ventanas tienen cambiado. El valor debe ser una lista de funciones que toman un argumento . Justo antes de volver a mostrar, para cada fotograma, si alguna de sus ventanas ha cambiado de tamaño desde la última vez que se volvió a mostrar, o se ha dividido , todas las funciones de la lista se llaman, con el argumento como .

En concreto, se adhieren algo como esto en su .emacs:

(defun window-width-to-font-size (window-width) 
    ;; Insert a calculation to turn window width into 79 chars. 
) 

(add-to-list 
'window-size-change-functions 
(lambda (frame) 
    (dolist (window (window-list frame)) 
    (set-face-attribute 
     'default nil 
     :width (window-width-to-font-size (window-body-width window)))))) 
0

Tal vez echar un vistazo a la biblioteca face-remap+.el, que básicamente hace lo contrario: Al reducir el tamaño del texto el tamaño de la ventana se reduce en consecuencia, por lo no hay espacio extra perdido alrededor del texto. No sé si ese código ayudará, pero podría darte algunas ideas.

Cuestiones relacionadas