KAction
KAction

Reputation: 2017

Emacs buffer-local font

For all my tasks I use URW Chancery L font in Emacs. But for some tasks, like org-mode tables, shell or sunrise-commander, I would like to set mono-width font. So, my question, how can I do it? All I found about it is set-default-font, which is not what I want.

Upvotes: 9

Views: 1987

Answers (3)

Malik Koné
Malik Koné

Reputation: 675

Did you try to customize org-table ?

You can modify it with org-menu > Customize > Customize > org-table

or use the command line

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

Use tab to auto-complete and see other available fonts

Finaly you could also directly modify you init.el to have something like

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

Upvotes: 0

Stefan
Stefan

Reputation: 28531

Faces (i.e. the objects used to specify appearence of text such as font, color, ...) are mostly global in Emacs, although they can also be set on a frame basis, so you can do the above by creating a separate frame and change the `default' face to use in that frame. This said, Emacs can also now also change face's appearence for specific buffers via face-remapping. E.g.

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

should make the current buffer use Monospace. So adding the above to org-mode-hook might just solve your problem.

Upvotes: 11

user4815162342
user4815162342

Reputation: 154886

This snippet sets the "Arial" font family only in C mode:

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

Replace with org-mode-hook with the desired mode(s), and it should work as well.

This solution effects creation of buffer-local font by setting the font family property of an overlay over the entire buffer. The overlay's face property only specifies the font family (Monospace), and Emacs redisplay is smart enough to merge it with other text properties, such as the colors specified by font-lock.

Upvotes: 1

Related Questions