My開発メモ

emacsクライアントの起動時にinit.elの内容を読み込ませる

init.el の中に次のような記述をしていた。

(if window-system
    (setq linum-format "%4d")
  (setq linum-format "%4d|"))

こういうのもある。

(if window-system
    (load "resize-frame-interactively"))

これらは、emacsサーバーが起動するときは読み込まれない。
(emacsサーバーは GUI じゃないからな)

解決法

以下のようにする。

1つめ

(defun line-number-setup (frame)
  (with-selected-frame frame
    (if window-system
        (progn
          (setq linum-format "%4d")
          (set-face-attribute 'linum nil :height 0.9))
      (setq linum-format "%4d|"))))


;; 既存フレームに適用(デーモン起動時や通常起動時の初期状態)
(line-number-setup (selected-frame))

;; 新しいフレームが作られたときにも適用
(add-hook 'after-make-frame-functions #'line-number-setup)

2つめ

(defun resize-frame-setup (frame)
  (with-selected-frame frame
    (if window-system
        (load "resize-frame-interactively"))))

(resize-frame-setup (selected-frame))

(add-hook 'after-make-frame-functions #'resize-frame-setup)
#' は、関数を値として扱う場合の表記法で、
#'resize-frame-setup

function resize-frame-setup
という意味になる。

カテゴリー: Emacs, memo

タグ: emacs-client, emacsクライアント, init.el, 設定ファイル

カウント: 19