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は非推奨です。しかし、いずれにせよ、ドキュメント文字列に書かれていることを実行しているようです。 あなたがそれを呼ぶ方法、フォントが変わるはずです現在のフレームのみ

すべてのフレームのデフォルトのフォントを変更する場合は、t3 番目の引数として渡します。例: (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 の GUI バージョンで機能しない場合は、別の設定が競合している可能性があります。

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

答え3

Mac OS X 10.9 上の Emacs 24.3 では、(set-frame-font "Monaco 10" nil t)「引数の数が間違っています」というエラーで失敗しますが、(set-frame-font "Monaco 10") は成功します。ただし、これは選択された/初期フレームでのみ有効です。

ありがたいことに、(set-face-attribute 'default nil :font "Monaco 10")私にとってはうまく機能し、すべてのフレームで効果的です。

答え4

回避策の 1 つは、をカスタマイズすることです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)、初期化ファイルに「適用して保存」します。

関連情報