Usando uma fonte diferente para cada modo principal

19

É possível definir fontes diferentes seguindo o modo principal? Diga Inconsolata-12em org-modebuffers e Symbola-12em todos os modos restantes. Ou pelo menos, é possível fazer uma

(set-frame-font "Inconsolata" t)

depois de mudar para org-modebuffers?

csantosb
fonte

Respostas:

21

buffer-face-sete buffer-face-modeno Emacs 23 ou posterior foi projetado exatamente para isso. No wiki do Emacs :

;; Use variable width font faces in current buffer
 (defun my-buffer-face-mode-variable ()
   "Set font to a variable width (proportional) fonts in current buffer"
   (interactive)
   (setq buffer-face-mode-face '(:family "Symbola" :height 100 :width semi-condensed))
   (buffer-face-mode))

 ;; Use monospaced font faces in current buffer
 (defun my-buffer-face-mode-fixed ()
   "Sets a fixed width (monospace) font in current buffer"
   (interactive)
   (setq buffer-face-mode-face '(:family "Inconsolata" :height 100))
   (buffer-face-mode))

 ;; Set default font faces for Info and ERC modes
 (add-hook 'erc-mode-hook 'my-buffer-face-mode-variable)
 (add-hook 'Info-mode-hook 'my-buffer-face-mode-variable)
Ryan
fonte
4

Você pode fazer a alteração usando o org-mode-hook, assim

(add-hook 'org-mode-hook (lambda () (set-frame-font "Inconsolata" t)))

O que mudará a fonte sempre que você entrar no modo organizacional. A desvantagem é que ela não altera a fonte novamente depois que você sai do modo organizacional.

Edit: como indicado por Ryan , você pode seguir os conselhos desta página wiki para fazê-lo por buffer. Não testei extensivamente, mas isso parece funcionar

(add-hook 'org-mode-hook (lambda ()
                            (setq buffer-face-mode-face '(:family "Inconsolata"))
                            (buffer-face-mode)))

Pode haver problemas se você deseja usar buffer-face-modeem outros buffers, mas se você o usar apenas para isso, ele deverá funcionar.

resueman
fonte
4
Você já olhou buffer-face-set? Esta página da wiki indica que você pode fazer a mesma coisa por buffer, em vez de por quadro.
Ryan
1
Ótimo, obrigado, é exatamente isso que eu estava procurando. Essa comunidade é extraordinária.
Csantosb