Verwenden Sie für jeden Hauptmodus eine andere Schriftart

19

Ist es möglich, nach dem Hauptmodus verschiedene Schriftarten einzustellen? Sprich Inconsolata-12in org-modePuffern und Symbola-12in allen übrigen Modi. Oder zumindest ist es möglich, a

(set-frame-font "Inconsolata" t)

nach dem Wechsel zu org-modePuffern?

csantosb
quelle

Antworten:

21

buffer-face-setund buffer-face-modein Emacs 23 oder höher ist genau dafür ausgelegt. Aus dem Emacs-Wiki :

;; 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
quelle
4

Sie können die Änderung vornehmen org-mode-hook, indem Sie folgendermaßen vorgehen

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

Wodurch sich die Schriftart ändert, wenn Sie in den Organisationsmodus wechseln. Der Nachteil ist, dass die Schriftart nicht mehr geändert wird, nachdem Sie den Organisationsmodus verlassen haben.

Bearbeiten: Wie von Ryan hervorgehoben , können Sie den Ratschlägen auf dieser Wiki-Seite folgen , um dies pro Puffer durchzuführen . Ich habe nicht ausgiebig getestet, aber das scheint zu funktionieren

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

Es kann Probleme geben, wenn Sie es buffer-face-modein anderen Puffern verwenden möchten. Wenn Sie es jedoch nur für diesen Zweck verwenden, sollte es funktionieren.

Retter
quelle
4
Haben Sie sich an buffer-face-set? Diese Wiki-Seite zeigt an, dass Sie dasselbe pro Puffer anstatt pro Frame tun können.
Ryan
1
Toll, danke, genau das habe ich gesucht. Diese Community ist außergewöhnlich.
csantosb