なぜ最近またemacsの設定を始めてるのか?を書いてみても良いかもしれない。vscodeだけでは辛くサブエディタ的なものが欲しくなる理由についての話。
一番大きな理由はvscodeがプロジェクト志向だからかもしれない。そして複数のプロジェクトを跨いだメモのようなものを取りたいと思ったときにプロジェクトを持たない横断的な環境が欲しくなる。
また、そもそもvscodeのextensionを入れてくと(入れてなくとも)起動が遅く重たい。ちょっとした思いつきを記録したいときにその思いつき自体はとても揮発性が高い。起動を待ってる間に忘れ去ってしまう。
ということなどを考えていくとメインエディタとは別のサブエディタ的な環境が欲しくなる。
例えばサブエディタに求める条件は以下のようなもの
- 起動が早い
- プロジェクトを持たない
- 手慣れたもの
- 頑張ってメンテする必要がない
ここで起動が早いというのは立ち上げっぱなしのものでも良い。ただしは別プロジェクトを開いたとき例えばlspのサーバーが立ち上がったり色々なサービスが裏側で立ち上がったりというのは避けたい。
emacsを選んだ理由は慣れてるからかつて使っていたからというだけの理由。他の人に過度に薦めるというつもりはさらさらない。
ただし過去にメインエディタとしてemacsを使っていたときのようにサードパーティのパッケージを入れて設定を頑張るのは辞めることにする。
依存を増やすということはメンテ対象を増やすということでありメインエディタならともかくサブエディタとして使う分には手離れが悪い。そんなわけでサードパーティパッケージを一切入れない設定をしようと思っている。
また、複数のプロジェクトを跨いだと言っていたがそれらに存在するファイルを開いておく上でタブの機能は欲しくなる。幸いemacsもtab-bar-modeがデフォルトで使えるようになっていて昔のようにelscreenなどに頼る必要はなくなっていた。
(他にも色々あるかもしれない。あとはWSLgがそれなりに動くというのも理由の1つとしてあるかもしれない。windows上でemacsは辛くmacからwindowsに変えたタイミングでvscodeをメインエディタにしていた。)
ここからはサブエディタとしての話ではなくemacs特有の話にも触れていく。
拡張を書くのがvscodeでは大変すぎるがemacsではその場で関数を書いてevalするだけで済む。このカスタマイズの粒度の細かさは便利。
また今その場に表示されてる文字列自身を定義した関数に渡すみたいなことが簡単にできいわゆる標準入力を受け取るツールを作り標準出力をクリップボードに入れるみたいなこともやりやすい。
サブエディタとして使う上で昔使っていたときの秘伝のタレのような設定ファイルが一応githubのリポジトリにあったものの陳腐化している。今回は1から書き直すことにした。
サブエディタとして使うからには例えばgoのコードを開いたときにgoplsが動くみたいな設定は要らない。起動ないしは読み込みが遅くなるので。
そしてサブエディタとして使うからにはプロジェクトを横断的に扱いたい。それは例えば横断的なWikiなど別の媒体への記録がしやすい形で扱いたい。なので例えば今バッファ中に開いているファイルをgithub上で開くというような機能(関数)が欲しくなる。またmarkdownのような形式にしたい。
ちなみに今も昔もemacsのキラーアプリ(?)と言われているmagitもorg-modeも自分には合わなかった。使いこなせなかった。