2012-09-05 19 views
6

Para todas mis tareas utilizo la fuente URW Chancery L en Emacs. Pero para algunas tareas, , como las tablas org-mode, shell o sunrise-commander, me gustaría configurar la fuente de ancho único. Entonces, mi pregunta, ¿cómo puedo hacerlo? Todo lo que encontré al respecto es set-default-font, que no es lo que quiero.Emacs buffer-local font

Respuesta

0

Este fragmento establece la familia de "Arial" font sólo en el modo C:

(defun set-my-font() 
    (overlay-put (make-overlay (point-min) (point-max) nil nil t) 
       'face '(:family "Monospace"))) 

(add-hook 'org-mode-hook 'set-my-font) 

Reemplazar con org-mode-hook con el modo (s) deseado, y debería funcionar también.

Esta solución efectúa la creación de la fuente del buffer-local configurando la propiedad de la familia de fuentes de una superposición sobre todo el búfer. La propiedad face de la superposición solo especifica la familia de fuentes (Monospace), y la nueva visualización de Emacs es lo suficientemente inteligente como para fusionarla con otras propiedades de texto, como los colores especificados por font-lock.

+0

He reemplazado en su familia de ejemplo con 'Monospace', y, curiosamente, solo ayuda con los símbolos cirílicos. Las tablas en modo orgánico todavía no son visualmente verticales. – KAction

+0

¿Puede indicarme cómo obtener una tabla de modo de organización? No soy usuario de org-mode, y las cosas triviales que probé parecían funcionar bien. – user4815162342

+0

En encabezado printf 'org-mode', con '|' separado, como 'foo | bar | baz |'. A continuación, presione Entrar, inserte '|' y presione Tab. Obtendrás celdas alineadas. Bueno, visualmente alineado solo por monowidth. – KAction

8

Las caras (es decir, los objetos utilizados para especificar la apariencia de texto como fuente, color, ...) son en su mayoría globales en Emacs, aunque también se pueden establecer en un marco, por lo que puede hacer lo anterior creando un marco separado y cambiar la cara 'predeterminada' para usar en ese marco. Dicho esto, Emacs ahora también puede cambiar la apariencia de la cara para buffers específicos a través de la reasignación de cara . P.ej.

(face-remap-add-relative 'default '(:family "Monospace")) 

debe hacer que el búfer en uso utilice Monospace. Por lo tanto, agregar lo anterior al org-mode-hook podría resolver su problema.

+0

Mismo efecto: afecta solo al cirílico. ¿Hay alguna forma de insertar screeshots en SO? – KAction

0

¿Has intentado personalizar org-table?

Puede modificarlo con org-menu > Customize > Customize > org-table

o utilizar la línea de comandos

M-x set-face-font RET org-table RET -PfEd-DejaVu Sans Mono-normal-normal-normal-*-*-*-*-*-m-0-iso10646-1

Uso pestaña de auto-completar y ver otras fuentes disponibles

Finaly usted podría también modificar directamente init.el tener algo como

(custom-set-faces 
'(org-table ((t (:foreground "LightSkyBlue" :family "DejaVu Sans Mono")))))