Шрифт Emacs по умолчанию не работает с новыми фреймами

Шрифт Emacs по умолчанию не работает с новыми фреймами

У меня есть этот код в моем файле .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) и «Применить и сохранить» его в файле инициализации.

Связанный контент