Caskはもう古い、これからはEl-Get - いまどきのEmacsパッケージ管理

秘伝のタレとなったEmacsの設定をgitで管理するなどして, 複数の環境で同じ設定を使うようにするのはかなり一般的になってきました. ただ, 使っている非標準パッケージも含めてきちんと管理しようと思うとけっこう大変です. とくに, 以下のような点はぜひとも実現したいところですが, (これまでは)なかなか難しい部分もありました.

  • 使っているパッケージのインストールを自動化したい
  • いろいろな配布元(GitHub, Emacs Wiki, 個人Webサイト, etc.)からインストールしたい
  • きちんと動くことがわかっているパッケージバージョンに固定したい
  • 新しいパッケージを簡単に試したい
  • パッケージと設定の対応をわかりやすくしたい
続きを読む

anythingでgitリポジトリ内のファイルの全列挙をきちんとやる

anythingでgitリポジトリ内のファイルを列挙するなんていうのはやり尽くされている気がするけれど, きちんとやっているものは意外と少なかったので, フルスクラッチで書いた.

続きを読む

Evil: EmacsをVimのごとく使う - 拡張編

Roads? Where we're going we don't need roads.

Back to the Future

Evilの真髄はその拡張性です. 本稿では主にチュートリアルを通して, Evilを拡張する方法を解説します.

続きを読む

Evil: EmacsをVimのごとく使う - 設定編

Then you will see, it is not the spoon that bends, it is only yourself.

The Matrix

EmacsあるいはVimに慣れ親しんでいれば, Evilを使うのにある程度は勝手がわかるものの, 逆にしっくりこない点も多いでしょう. EvilはEmacsの機能との相互運用性を重視していることから, Vimユーザにとって不慣れな点が生じることは避けられず, EvilがVimをエミュレートする以上, Emacsユーザにとって不慣れな点が生じることも避けられません. 本稿では, どちらに慣れ親しんだユーザにとっても快適に使えるようにEvilをカスタマイズするためのヒントを紹介します. ただし, いくらカスタマイズしても完全なVimや完全なEmacsになることはありません. 使い勝手をよくして自分の好みに合わせながら, できるだけEvilのやり方に慣れていくように努めることが大切でしょう.

続きを読む

Evil: EmacsをVimのごとく使う - 導入編

You underestimate the power of the dark side.

Star Wars: Episode VI - Return of the Jedi

EmacsLispで自由自在に拡張でき, エディタの枠におさまらず, コンピュータ上でのあらゆる創造的活動のための環境として発達してきました. しかし, 少なくともファイルを閲覧し編集するという操作に関しては, vi/Vimが非常に優れたインタフェースであることもまた事実です. 両者はそれぞれが根強いファンを抱え, 長らく宗教戦争を繰り返してきました.

この対立が止揚された結果として生まれたのがEvilです. Emacsのなんでもありな環境の上でVimをエミュレートすることで, EmacsでありながらVimの操作性を実現したのです.

本稿では, Evilとは何かということに始まり, 具体的な導入方法について解説します.

続きを読む

はてなダイアリーにEmacsから投稿

Emacsからはてなダイアリーに投稿できるようにする試みはやり尽くされている感じがするけれど, 古すぎたりどうもしっくりこなかったりしたので, 自分で一から実装した.

続きを読む

Emacs上のターミナルを最強に: term+.el

第6回関西Emacs勉強会で, Emacs上で最強のターミナル(端末)環境を実現する話をしてきました. 以下がそのとき用いたスライドです.

このスライドだけでは, とりあえず使ってみるのではなく常用したい場合にどうしたらよいかわかりにくいと思うので, その辺りを補足しながら, きちんとしたドキュメントを書くまでの暫定の使い方を書いておこうと思います.

続きを読む

Emacsでプレフィックスキーにもコマンドを割り当てる

Emacsでは, たとえばC-c C-jにコマンドが割り当たっているとすると, C-cまで打った時点では入力待ちになる. 慣れてくるとC-c C-jは素早く打てて, C-cを押して次が何のキーだったか迷うようなことはなくなってくるので, C-cを押してしばらく(0.5秒とか)経った場合は続けて別のキーを入力するつもりはないものとして扱って, C-c単体に別のコマンドを割り当てられるようにしてもよいのではないか.

もっと深刻な話としては, たとえばESC xというキー列はM-xと同等に解釈されてしまうので, ESCそのものにコマンドを割り当てることはできない. もしもM-xはAlt+xでしか打たないというのであれば, M-xのときにはESCとxが同時に入力されるはずなので, ESCの入力があってからほんの少しでも(0.01秒とか)入力待ちになったら, それはESC単体の入力とみなしても問題はなさそうなもの. 実際, ViperVimpulse, Evilなどでは, この発想でESCとM-x等の両方に別々のコマンドを割り当てている. 今回は, これをESCだけでなく一般のキーに対してできるようにしたという話.

続きを読む

Emacsで状態に応じてモードラインの色を変える

モードラインの色を自動的に切り替えるためのマイナーモードをだいぶ前に作ってあったので, 使用例とともに紹介.

続きを読む