次のようにemacsclientのフォントを設定しようとしています:
(let ((default-font (cond
((member "Inconsolata" (font-family-list))
"Inconsolata 14")
(t
"monospace 20"))))
(set-default-font default-font)
(add-to-list 'default-frame-alist `(font . ,default-font)))
私C-x C-e
はcond
sexpで、それは を返します"Inconsolata 14"
。私C-x C-e
はlet
sexpにいて、フォントが更新されています。
経由でemacsを起動すると
$ emacs
動作します (フォントは Inconsolata 14 に設定されています)。
ただし、アプリケーションを起動すると
$ emacsclient --alternate-editor="" --create-frame "$@"
代わりに、フォントはモノスペース 20 です。
お知らせ下さい。
編集:
私はそれを含めることによってそれを発見しました
(message "%s" (font-family-list))
emacsclient の起動時に(font-family-list)
返される.emacs ファイル内。nil
残念ながら、初期化中にも:
;; Both also print `nil` to the `*Messages*` buffer.
(message "%s" (find-font (font-spec :name "inconsolata")))
(message "%s" (find-font (font-spec :name "Inconsolata")))
;; Throws "error: No fonts being used"
(message "%s" (describe-font "Inconsolata"))
初期化中にフォントがインストールされているかどうかを検出する方法がわかりません。私の質問は次のようになりました: emacsclient の起動時にフォントが使用可能かどうかを確実に確認するにはどうすればよいですか?
編集2:
after-init-hook
、emacs-startup-hook
、window-setup-hook
、before-make-frame-hook
、およびでエコーすると、after-make-frame-functions
も得られnil
ます。