2015-02-10 6 views
0

Существуют ли стандартные методы, пакеты и т. Д. Для управления настройками шрифтов в emacs?Как управлять шрифтами в emacs?

Я хотел бы определить шрифты фиксированной и переменной ширины по умолчанию где-то один раз и установить шрифты граней в режимах, используя эти значения по умолчанию. Например, установите шрифт по умолчанию для org-mode на значение по умолчанию ширины переменной, а его лицевая сторона кода зафиксирует фиксированную ширину по умолчанию.

+1

Может быть [ColorTheme] (http://www.emacswiki.org/emacs?action=browse;oldid=ColorTheme;id = ColorAndCustomThemes). Я не знаю, есть ли у вас тема для режима, но вы можете быстро переключать тему с помощью велосипедов. – DJJ

+0

Это рекомендация по программному обеспечению. Попробуйте спросить у emacs.stackexchange.com – Squidly

+0

Спасибо, я не понимал, что есть emacs.stackexchange.com –

ответ

2

Вот адаптация системы, которая у меня есть. С тех пор я по умолчанию использовал только фиксированный шаг, но эти вызовы позволят вам определить шрифт, который будет использоваться для режимов, используя крючок режима.

Я вызываю метод «переключение шага» для переключения между фиксированными и переменными шагами на лету, когда это необходимо.

(set-face-font 'default "Source Code Pro Semibold-9") 
(set-face-font 'variable-pitch "Segoe UI Semibold-9") 
(copy-face 'default 'fixed-pitch) 

;;============================================================ 
;; toggle between variable pitch and fixed pitch font for 
;; the current buffer 
(defun fixed-pitch-mode() 
    (buffer-face-mode -1)) 

(defun variable-pitch-mode() 
    (buffer-face-mode t)) 

(defun toggle-pitch (&optional arg) 
    "Switch between the `fixed-pitch' face and the `variable-pitch' face" 
    (interactive) 
    (buffer-face-toggle 'variable-pitch)) 

;; enable buffer-face mode to provide buffer-local fonts 
(buffer-face-mode) 

;; Set the fonts to format correctly 
;(add-hook 'text-mode-hook 'fixed-pitch-mode) 
;(add-hook 'dired-mode-hook 'fixed-pitch-mode) 
;(add-hook 'calendar-mode-hook 'fixed-pitch-mode) 
;(add-hook 'org-agenda-mode-hook 'fixed-pitch-mode) 
;(add-hook 'shell-mode-hook 'fixed-pitch-mode) 
;(add-hook 'eshell-mode-hook 'fixed-pitch-mode) 
;(add-hook 'bs-mode-hook 'fixed-pitch-mode) 
;(add-hook 'w3m-mode-hook 'variable-pitch-mode) 
;(add-hook 'org-mode-hook 'variable-pitch-mode) 
(add-hook 'eww-mode-hook 'variable-pitch-mode) 
0

я, наконец, решил так:

Первый набор с фиксированным шагом и с переменным шагом шрифты для использования в целом:

(custom-set-faces 
'(fixed-pitch ((t (:family "Input Mono Narrow")))) 
'(variable-pitch ((t (:family "Arial"))))) 

Затем в крюке для вашего режима:

(add-hook 'org-mode-hook nil :inherit 'variable-pitch) 
+0

Этот вызов 'add-hook' выглядит необычно сломанным. Как вы думаете, что это делает? – phils

+0

Док-строка для 'add-hook' - т. Е., 'M-x description-function RET add-hook RET' сообщает нам, что у него есть 4 аргумента - имя крючка; имя функции; добавить эту функцию в конец списка крюков; и сделать ли буферизацию назначения буфера локальным. В вашем заявлении о крюке говорится, что к крюку нет функции, а затем вы назначаете как аргумент append, так и локальный аргумент buffer для функции, которая не существует в hook. Обычно 3-й и 4-й аргументы являются либо «nil», либо 't'. Второй аргумент - это имя функции или лямбда (что обескуражено). – lawlist

+0

Да, я думаю, что я все это стараюсь. Я не уверен, где я нашел это в Интернете. Это выглядит более перспективным: http://stackoverflow.com/a/534961/434405 –

1

Действительно полезный способ установки граней - использовать функцию отображения списка лиц M-x. Эта функция выведет буфер с именем лица слева и примером справа. Затем этот буфер позволяет настроить любой из лиц и посмотреть, что такое определение лица. Один из возможных «gotcha» заключается в том, что он будет отображать только лица, о которых он знает в момент запуска этой функции. Это означает, что если вы не загрузили org-mode, например, вы можете не видеть никаких определений сторон org-mode.

Одним из полезных опций при определении лица является опция наследования, которая сообщает лицу наследовать настройки другого лица. Некоторые из унаследованных значений могут быть переопределены (например, цвет лица) в определении «основного» лица.

Итак, в вашем случае я бы установил соответствующие значения для шрифтов фиксированной и переменной ширины по умолчанию, а затем установил другие грани, то есть грани org-mode, наследуемые от этих определений.

делать это таким образом shold устранить необходимость делать какие-либо дополнения крюк jiggery pokery

Смежные вопросы