何があっても喰らいついていくスタイル

いろいろなことに苦しめられた鬱憤を晴らします。

メインで扱うのはLinuxとの奮闘記など。またその他趣味のことなど。

elisp:一発(キーバインド)でinit.elを開けるようにする

emacsを使い始めてからまだかなり日が浅いため、設定しなければならないことがたくさんある。

よって必然的にinit.elを頻繁に開くことになるわけだが、いちいち

C-x C-f ~/.emacs.d/init.el

と入力しなければいけないのは非常に面倒臭い。 

(実際、一度開けば

find file: ~/.emacs.d/

まで勝手に表示されるので問題ないが、まぁこれは聞かなかったことに。)

 

そこで、少しelispを学んで、キーバインドでフォルダを開けるようにしようと思う。

 

まずは、自分の知っている限りでコードを書いてみた。

このようなものである。

(global-set-key 'find-file "~/.emacs.d/init.el")

*scratch*バッファで試してみたところ、ちゃんとinit.elが開くため、「行けんじゃね?」と思いinit.elに記述、保存、再起動。

 

f:id:compress:20140224112813p:plain

・・・開かない。

f:id:compress:20140224112135p:plainさらに、エラーが出る始末。(文字化けは後日改善するつもり)

 

うーんうーんと悩んでいると、便りになるサイトを発見。

unoh.github.com by unoh

 

どうやら、

1.init.elを開いたバッファを受け取る

2.そのバッファを表示する(切り替える)

という流れになるらしい。

そのためには、find-fileではなくfind-file-noselect(バッファを受け取る)を使えばよいそう。

ちょっとやってみよう。

 

それっ!

(switch-to-buffer (find-file-noselect "~/.emacs.d/init.el"))

開いた! が、emacsを開くと同時にinit.elが開く!おかしい!

 

それもそのはず、キーバインドの設定をしていない。

これらを組み合わせるために、

GNU Emacs Lispリファレンスマニュアル: 9. 制御構造

ここを参考にさせてもらった。

 

人のinit.elなどを見るとwhenで記述している場合が多いので僕もwhenを使うことにする。

(when (global-set-key (kbd C-c C-e))

    (switch-to-buffer (find-file-noselect "~/.emacs.d/init.el")))

うーん開かない。

関数を作ってやればいいのかな?

 

またもやネットを漁り・・・

マンガで分かるLisp(Manga Guide to Lisp)

非常にシュールだがわかりやすいlisp入門を見つけた。

これに従って書いてみる。

 

(global-set-key

 (kbd "C-c C-e")

 (lambda ()

  (switch-to-buffer (find-file-noselect "~/.emacs.d/init.el"))))

今度こそ行けるだろう。

f:id:compress:20140225135517p:plain

ダメだった。

 

ここで、神様のようなサイトを発見。

http://www.gentei.org/~yuuji/elisp/elisplec.html#SEC1

これによると、関数名の後に

(interactive)

を入れなければならないらしい。

 

(global-set-key

 (kbd "C-c C-e")

  (lambda () (interactive)

   (switch-to-buffer (find-file-noselect "~/.emacs.d/init.el"))))

これでどうだ?

f:id:compress:20140225172941p:plain

開いたー!!(汚いinit.elが見苦しい)

しかし粘って粘ってうまく行った時の感動は格別だなぁ。

 

今後自分のemacsがどんどん面白くなっていくのが楽しみだ。