window-system毎のファイルを用意する場合の読み込み方について
(cond ((eq window-system 'w32) (load "~/.emacs.d/init-windows")) ((or (eq window-system 'ns) (eq window-system 'mac)) (load "~/.emacs.d/init-macos")))
こういうのは何となく嫌なので
(load (concat "~/.emacs.d/init-" (prin1-to-string window-system))) ;; 実際にはこんな風にしてる ;; (unless (boundp 'user-emacs-directory) ;; (defvar user-emacs-directory (expand-file-name "~/.emacs.d/"))) ;; (load (concat user-emacs-directory (prin1-to-string window-system)))
と書き換える。window-systemは排他的だからね。
(system-typeの場合も同じようにやればいいと思う)
window-systemはsymbolなので、(concat "~/.emacs.d/init-" window-system ".el") とはできない。
;; 型はtype-ofで調べられる。 (type-of window-system) => symbol (eq (type-of window-system) 'symbol) => t (symbolp window-system) => t
なのでprin1-to-stringを使ってsymbolをstringに変換すればOK。
(prin1ってどういうつもりで付けた名前なんだろう?)
(load (locate-user-emacs-file (prin1-to-string window-system)))でいいか。