Установка шрифта emacs по умолчанию для начального и нового фрейма - PullRequest
1 голос
/ 14 октября 2019

Этот или аналогичный вопрос задавался так много раз, что существует десятки ответов, но, похоже, единого мнения нет, поэтому я рискну гневать мониторов и задам свою собственную версию:

Я используюemacs 26.1 на Debian Bullseye. Я приобрел монитор 4k, на котором шрифты emacs по умолчанию выглядят слишком большими. Читая многие связанные ответы на этом сайте, я обнаружил, что добавление строки

(set-face-attribute 'default (selected-frame) :height 60)

в мой файл .emacs приводит к размеру шрифта в 6 пт в исходном фрейме Emacs, и это здорово. Проблема возникает, когда я пытаюсь открыть новый кадр с C-x 5 2. Новый фрейм открывается с размером шрифта 11. Это можно изменить с помощью Options -> установить шрифт по умолчанию и уменьшить его с 11 до 6. Однако было бы намного проще, если бы новый фрейм открывался с правильным размером шрифта (6).

Есть предложения?

Ответы [ 2 ]

1 голос
/ 14 октября 2019
  1. Вы можете использовать set-face-attribute для лица default, но используйте nil или t, а не (selected-frame) в качестве значения аргумента FRAME:

    (set-face-attribute 'default nil :height 60)
    

    C-h f set-face-attribute говорит вам:

set-face-attribute - это скомпилированная функция Lisp в faces.el.

(set-face-attribute FACE FRAME &rest ARGS)

Установить атрибуты FACE для FRAME из ARGS.

Эта функция переопределяет атрибуты лица, указанные в спецификации лица FACE. Он в основном предназначен только для внутреннего использования.

Если FRAME равен nil, установите атрибуты для всех существующих кадров, а также значения по умолчанию для новых кадров. Если FRAME равно t, измените значение по умолчанию только для новых кадров.

...

Или вы можете настроить параметр default-frame-alist, чтобы предоставить нужные значения параметров кадра. Это влияет на все новые кадры (обычные, по крайней мере). M-x customize-option default-frame-alist.

Вы можете установить параметр кадра font - например:

"-*-Lucida Console-normal-r-*-*-12-*-*-*-c-*-iso8859-1"
0 голосов
/ 14 октября 2019

В моем init у меня есть следующее, чтобы подключиться к after-make-frame-functions, где я настраиваю шрифты (конечно, откуда-то в сети),

(defun my-frame-init ()
  ;; eg.
  (set-face-attribute 'mode-line nil
                      :font "NanumGothicCoding-14"
                      :weight 'normal))

(if (daemonp)
    (add-hook 'after-make-frame-functions
              (lambda (frame)
                (select-frame frame)
                (my-frame-init)))
  (my-frame-init))
...