2

У меня есть этот код в моем файле .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()

5 ответов5

3

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.
`----
1

Если это не работает для версии Emacs с графическим интерфейсом, вероятно, конфликтует другой параметр:

(set-face-attribute 'default nil :background "black" :foreground "white"
  :font "Courier" :height 180)
0

В 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") работает для меня и действует во всех кадрах.

0

Смотрите принятый ответ от: Настройки шрифта Emacs не работают в новом фрейме

то есть:

(add-to-list 'default-frame-alist
             '(font . "Source Code Pro-15:style=Light"))

сохраняет указанный шрифт в новых кадрах, подтвержденных в Emacs 24.4

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .