
У меня есть этот код в моем файле .emacs (set-default-font "Monaco 16")
. Когда я запускаю emacs, когда он не открыт (например, нажав на ярлык), он запускается с Monaco 16, но когда я создаю новый фрейм, C-x 5 2
он запускается со старым шрифтом по умолчанию, который слишком мал для чтения. Есть ли способ обойти это?
РЕДАКТИРОВАТЬ
При загрузке emacs выдает ошибку и проблема, похоже, в (set-default-font "Monaco 16" nil t) в моем .emacs
. Что не так? Копирую отладочную копию emacs:
Debugger entered--Lisp error: (wrong-number-of-arguments #[(font-name &optional$
\203^X^@\305\304\306\"\307 _^Q\305\304\310\"\311 _^P\312\313 \314^KBC\"\210
\2039^@\312\313 \306\315 \307 \"B\310\315^H\311 \"BD\"\210*\316\317\320\$
set-default-font("Monaco 16" nil t)
eval-buffer(#<buffer *load*> nil "/Users/a/.emacs" nil t) ; Reading at buff$
load-with-code-conversion("/Users/a/.emacs" "/Users/a/.emacs" t t)
load("~/.emacs" t t)
#[nil "^H\205\276^@ \306=\203^Q^@\307^H\310Q\202A^@ \311=\2033^@\312\307\31$
command-line()
normal-top-level()
решение1
set-default-font
устарело. Но в любом случае, похоже, что он делает для вас то, о чем говорит строка документации. То, как вы это называете,это должно изменить шрифттолько для текущего кадра.
Если вы хотите изменить шрифт по умолчанию для всех фреймов, то передайте его t
в качестве третьего аргумента. Например: (set-default-font "Monaco 16" nil t)
.
Сделайте это C-h f set-default-font
, и вы увидите что-то вроде этого:
,----
| set-default-font is an alias for `set-frame-font' in `frame.el'.
|
| (set-default-font FONT &optional KEEP-SIZE FRAMES)
|
| This function is obsolete since 23.1;
| use `set-frame-font' instead.
|
| Set the default font to FONT.
| When called interactively, prompt for the name of a font, and use
| that font on the selected frame. When called from Lisp, FONT
| should be a font name (a string), a font object, font entity, or
| font spec.
|
| If KEEP-SIZE is nil, keep the number of frame lines and columns
| fixed. If KEEP-SIZE is non-nil (or with a prefix argument), try
| to keep the current frame size fixed (in pixels) by adjusting the
| number of lines and columns.
|
| If FRAMES is nil, apply the font to the selected frame only.
| If FRAMES is non-nil, it should be a list of frames to act upon,
| or t meaning all graphical frames. Also, if FRAME is non-nil,
| alter the user's Customization settings as though the
| font-related attributes of the `default' face had been "set in
| this session", so that the font is applied to future frames.
`----
решение2
Если это не работает для графической версии Emacs, то, скорее всего, с ней конфликтует другая настройка:
(set-face-attribute 'default nil :background "black" :foreground "white"
:font "Courier" :height 180)
решение3
В Emacs 24.3 на Mac OS X 10.9 (set-frame-font "Monaco 10" nil t)
у меня выдает ошибку "неверное число аргументов", но (set-frame-font "Monaco 10") срабатывает. Однако это эффективно только в выбранном/начальном фрейме.
К счастью, (set-face-attribute 'default nil :font "Monaco 10")
мне это подходит и эффективно во всех оправах.
решение4
Одним из обходных путей является настройка default-frame-alist
.
C-h v default-frame-alist click 'customize' If there is no 'font' paramater, click 'INS' and add `font` as the Parameter. As the value, add "Monaco 16" (the double quotes are essential)
Затем «Применить» его для этого сеанса (и протестировать, открыв новый фрейм C-x 5 2
) и «Применить и сохранить» его в файле инициализации.