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に記述、保存、再起動。
・・・開かない。
さらに、エラーが出る始末。(文字化けは後日改善するつもり)
うーんうーんと悩んでいると、便りになるサイトを発見。
どうやら、
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"))))
今度こそ行けるだろう。
ダメだった。
ここで、神様のようなサイトを発見。
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"))))
これでどうだ?
開いたー!!(汚いinit.elが見苦しい)
しかし粘って粘ってうまく行った時の感動は格別だなぁ。
今後自分のemacsがどんどん面白くなっていくのが楽しみだ。
Emacs:mozcで日本語入力(補足)
前前回の記事:
Emacs:mozcで日本語入力 - 何があっても喰らいついていくスタイル
前前回の記事の後しばらくmozcを使ってみたのだが、前回の記事で紹介した方法だとたまにmozcにならず、emacs標準の日本語入力になってしまったりしてとても不安定であった。
そこで、日本語入力の切り替えに
toggle-input-method
ではなく
mozc-mode
を使うことでこれを解決した。
つまり
(global-set-key (kbd "C-j") 'toggle-input-method)
↓
(global-set-key (kbd "C-j") 'mozc-mode)
とすれば良いのである。
これならばどんな時でも確実にmozc-modeに切り替わる。
しかし1つ小さい欠点がある。
これは気にする人と気にしない人がいると思うが、実は、mozc-modeの時はemacsの左下に[mozc]という表示が出てこないのである。
こういうのはelispを書けばどうにかなるんだろうけど、その気はさらさらない(僕は気にならない)。
とりあえず、このmozc-modeによって僕の日本語入力の安泰は保たれた。めでたし。
Emacs24.3(最新版)のビルド・インストール
ブログを始めてみたはいいがネタが出てこない。
こうやって日記的に今日自分のやったことの一部をつけていくくらいしかできない。
長文の記事が書ける(自分のように空白でごまかすのではなく)人を本当に尊敬する。
ではインストールしていく。
みなさんおなじみの方法だ。
-*- 追記(2014,3,25): lubuntuをインストールし直したところ、./configureできなかったため、解決策を追記 -*-
まずここからemacs-24.3.tar.gzをダウンロードする。
GNU Emacs - GNU Project - Free Software Foundation (FSF)
その後、
tar xzvf emacs-24.3.tar.gz
で解凍。
出てきたemacs-24.3を~/src/に移動(自分の場合は)。
そしてコンパイルをします。
;;どのようにコンパイルするのかを決めるmakeファイルを作成
~/src/emacs-24.3$ ./configure
;;コンパイル
~/src/emacs-24.3$ make
;;インストール
~/src/emacs-24.3$ sudo make install
エラーが出なければOKです。
-*- 追記: ./configureが出来ない人へ -*-
先日、lubuntuをインストールし直したところ、./configureに失敗した。
そこで、
$sudo apt-get install gcc
$sudo apt-get install build-essential
$sudo apt-get build-dep emacs23
これで./configureできるようになった。
できない人はぜひ。
はい、これでemacs24.3のインストールは終了。
速いよね。
端末から
端末がemacsに占拠されるのが嫌ならば
また端末内で開きたいのなら
emacs -nw
と入力すれば開く。
たとえemacs23を入れていたとしても、emacsとだけ入力すれば勝手に最新のバージョンのemacsが開かれるはず。
apt-getのレポジトリにはemacs23までしか置かれていなかったため、自分でビルドしなければならなかったという話であった。
Emacs:mozcで日本語入力
emacsの標準の日本語入力機能がひどかったため、いろいろとググってみたところ、emacs-mozcというemacs上でmozcが使えるなんてものがあるらしい。
早速使ってみた。
Ubuntu12.04 での Google日本語入力(mozc) の導入/設定 - わからん
ここを見ながら作業。
自分の場合はもうすでに普段の日本語入力の為にmozcを導入していたため、emacs-mozcのみ導入。
とりあえずインストール
$sudo apt-get install emacs-mozc
これで
/usr/share/emacs23/site-lisp/emacs-mozc/mozc.elc
/usr/share/emacs/site-lisp/emacs-mozc/mozc.el
が配置された。
自分は.emacs.d派なのだが、もうすでにこいつらがsite-lisp/に配置されてしまっていたので、もういいかということで。
その後init.elへ
(require 'mozc)
(set-language-environment "Japanese")
(setq default-input-method "japanese-mozc")
と追加、保存、再起動。
その後半角/全角キーでもmozcに切り替わらなかったため悪戦苦闘していたが、ふとした拍子に"C-¥"で切り替えられることを発見。
(↑mozcに切り替わっていることが分かる)
これで切り替えられるようになった訳だが、これから日本語へ切り替える度にいちいち"C-¥"を入力するというのではさすがに効率が悪すぎる。
そこで、使っていない"C-j"をmozc切り替えに使用。
(global-set-key (kbd "C-j") 'toggle-input-method)
正常に動いた。
また、リンク先に載っている候補のぶら下げも設定してみた。
この通り非常に便利である。
導入が簡単なので、みんなもぜひ使ってみて欲しい(org-modeなどが捗る)。
追記(2014-2-26):
このあとしばらく使ってみたが、動作が不安定で調子が悪かった。
http://compress.hatenadiary.com/entry/2014/02/25/113759
解決策を見つけたのでぜひ。
受験が終わり、少し小休止。
合格不合格はともかくとして、試験自体は全て終わったので、すこしPCをいじります。合格不合格がすべて出揃うまでにはまだあと一週間くらいありますね。
この時間でPythonのレベルをある程度上げよう・・・。
今日は午後からLubuntuをルーター経由でネットに接続しようと奮闘していた。決着がついたのはほんのさっきのこと。
ちなみに、現在使っているPCは有線でしかネットに接続できない。
ガラケーでネットをさんざん探しまわって、とりあえず
・/etc/resolv.confにnameserverを書き加える(DNSサーバ設定?)
・/usr/network/interfacesに、IPアドレスなどもろもろを書き加える
などを試してみたが、全くつながる気配がない。
「もうだめか・・・」と諦めかけた矢先、欠陥品だと決めつけて買ったままほとんど使っていない無線LANカードを差してみることを思いつく。
・・・ドライバー入れてないのになぜか認識。
その後あっという間に設定は終了し、こうしてブログが開けるまでに至ったのである。
結局有線に関しては何も解決していないことに気づいたが、もう無線が使えるようになったせいでどうでもよくなってしまった。
今後これで不具合が出るようならまた有線に戻すつもりではあるが、まぁその時はその時で。