Почему emacs не запускается (set-face-attribute ...) в init.el, хотя остальная часть буфера выполняется?

1604
Squidly

Я попал (set-face-attribute 'default nil :height 100)в мой init.el, потому что я считаю размер шрифта по умолчанию слишком большим. Тем не менее, он не выполняется при загрузке emacs.

У меня нет init.elcфайла, который не является представительной обновленной версией моей init.el, и я знаю, что остальная часть my init.elвыполняется.

(set-face-attribute ...)После него нет других сексов, которые могли бы его перезаписать.

Вернувшись к моему init.elпосле загрузки emacs и выполнив его самостоятельно, он правильно устанавливает свойство (т. Е. Для всех буферов (но не для новых кадров), постоянно)

3
Хотя ваш init.el не перезаписывает его, он все равно может не иметь никакого эффекта. Возможно, `set-face-attribute` является свойством буфера? (Это все по памяти). Вы можете попробовать поместить команду в ловушку, которая будет выполнена позже. alexis 11 лет назад 0
Код правильный. Попробуйте использовать только это в вашем файле инициализации и удалите все другие коды и пакеты. Если это работает тогда (т. Е. С пустым init, за исключением `set-face-attribute.. .`), тогда у вас конфликт с чем-то другим в других ваших настройках. Если вы уже выбрали другой возможный `set-face-attribute` и ничего не нашли, и если вы отключили свои цветовые темы, вам нужно будет медленно включить остальные настройки, пока не обнаружите конфликт. Также обратите внимание на настройки фрейма со спецификацией шрифта, например, `default-frame-alist`. lawlist 11 лет назад 2

2 ответа на вопрос

3
Squidly

After some chopping bits out of my config file, I discovered it was due to (add-to-list 'default-frame-alist '(font . "DejaVu Sans Mono-12")).

The reason I'd discounted it before was because I ran (set-face-attribute 'default nil :height 100) at the very end of my init file.

The solution is to change the sexp that alters default-frame-alist to be (add-to-list 'default-frame-alist '(font . "DejaVu Sans Mono-12") '(height . 100)), and remove the one that alters the face-attribute directly

1. Вы должны принять свой собственный ответ, если он адекватен. 2. Почему бы вам не настроить `default-frame-alist` (` Mx customize-option`) вместо того, чтобы возиться с ним, используя Lisp в вашем файле инициализации? Это опция пользователя по причине. Drew 11 лет назад 1
Потому что, похоже, он пока не работает так, как задумано. Я еще не вернулся, чтобы отредактировать ответ. Что касается elisp, я предпочитаю использовать customize - я думаю, что любой из этих вариантов действителен, и я предпочитаю подход elisp. Squidly 11 лет назад 0
0
preskitt91

Это старая ветка, но у меня была такая же проблема, и мне удалось ее исправить. Я вижу, что вы сделали то же самое, но хотели внести свой вклад в мое решение, поскольку я не нашел его где-либо еще.

Я просто добавил следующую строку в мой ~ / .emacs.d / init.el:

(add-hook 'find-file-hook (lambda () (set-face-attribute 'default nil :height 105))) 

И это сработало. Реквизиты для alexis в комментариях к OP для предложения.

Не приводит ли это к неправильному размеру шрифта в исходном чистом буфере? Radon Rosborough 6 лет назад 0

Похожие вопросы