Elscreenを入れてみた。ついでにColor-Themeとかも。

訳あってVimではなくEmacsを使い始めてみました。
Vim教会から追っ手を差し向けられそうです。。。


さてelscreenというのがなにやら便利だというので入れてみました。
設定ファイルに

;; ElScreen
;; EmacsGNU screen風のインターフェイスを使う
(setq elscreen-prefix-key "\C-z")
(require 'elscreen)

と書いてやって・・・・


これだけですがエラー出ました。

(wrong-type-argument consp nil)

よくあるのはAPELを入れ忘れ&load-path追加忘れというパターンですが
きちんと設定できているようでした。


仕方ないので

emacs -Q

で起動して少しずつ設定を読み込んでいくと
カラーテーマを読み込む辺りでどうも干渉している様子・・・。
先にelscreenの設定を読み込ませてあげることで解決しました。
他にmulti-termとも干渉すると外国人の記事も見かけましたが未検証です。


さてelscreenも動くようになったので他に2,3入れておきます。
* ElScreen-ColorTheme (elscreenの部分の色を空気読んでそれっぽく)
* ElScreen-server (emacsclientで開くと別のscreenで開く)
* ElScreen-dired (diredで開くとき"o"で別のスクリーンで開く)
入れておくと便利ですね。


最終的に下のような設定にしています。

;;====================
;; ElScreen
;;====================
;; EmacsGNU screen風のインターフェイスを使う
(setq elscreen-prefix-key "\C-z")
(require 'elscreen)
(if window-system
    (define-key elscreen-map "\C-z" 'iconify-or-deiconify-frame)
  (define-key elscreen-map "\C-z" 'suspend-emacs))

;; 以下は自動でスクリーンを生成する場合の設定
(defmacro elscreen-create-automatically (ad-do-it)
  `(if (not (elscreen-one-screen-p))
       ,ad-do-it
     (elscreen-create)
     (elscreen-notify-screen-modification 'force-immediately)
     (elscreen-message "New screen is automatically created")))

(defadvice elscreen-next (around elscreen-create-automatically activate)
  (elscreen-create-automatically ad-do-it))

(defadvice elscreen-previous (around elscreen-create-automatically activate)
  (elscreen-create-automatically ad-do-it))

(defadvice elscreen-toggle (around elscreen-create-automatically activate)
  (elscreen-create-automatically ad-do-it))
     
(setq elscreen-display-tab 10) ; タブの幅(6以上じゃないとダメ)
(setq elscreen-tab-display-kill-screen nil) ; タブの左端の×を非表示

(global-set-key (kbd "C-z C-c") 'elscreen-clone) ; 今のウインドウを基に作成
(global-set-key (kbd "C-z C-k") 'elscreen-kill-screen-and-buffers) ; スクリーンとバッファをkill
(global-set-key [(C-tab)] 'elscreen-next) ; ブラウザみたいに
(global-set-key [(C-S-tab)] 'elscreen-previous) ; ブラウザみたいに その2

;; elscreen-server
(require 'elscreen-server)

;; elscreen-dired
(require 'elscreen-dired)

;; elscreen-color-theme
(require 'elscreen-color-theme)