ずっとEmacsをメインエディタとしていましたが、先月lemに移行しました。

https://github.com/cxxxr/lem

lemはCommon Lispで書かれたエディタです。

「なんでLem使わないの？」って訊かれたから、試してうまく動かなかったところを具体的にリストアップしたら凄い勢いで改善されててだんだん使わない理由がなくなってきてる。外堀埋められてる感ある — fukamachi (@nitro_idiot) 2018年7月9日

そもそも自分はCommon Lisperだしlem使うほうが資産がCL界に降りてきて良いよな、という考えもあり使いたい気持ちはありました。

vi-modeさえまともに動けばまあ他の不便は我慢できるか、という状態だったので、vi-modeのバグを上げて修正と機能追加をしつつ使い始めてみました。

結果、なんとか使い続けられています。

この1ヶ月でEmacsを使ったのはSwift書くのに数日だけでした。さすがにシンタックスハイライトもないのはつらい。

活発な開発

lemには毎日コミットがあり「Common Lispプロジェクトでもっとも活発なのでは…？」と思うほど。

この1ヶ月でコミットは200を超えており、今日めでたくv1.4がリリースされました。

vi-modeの改善 by fukamachi & gos-k他

css-modeの追加 by myao

auto-save-modeに自動保存機能追加 by snmsts

ファイルエンコーディングエラーの対応 by snmsts

js-modeのオートインデント機能 by fukamachi

paredit-modeの部分実装 by gos-k & fukamachi

さらにリリース直後にrust-modeが追加されたりと勢いが衰えていない様子。

lemの良いところ

lemの良いところは起動が速いところです。

拡張も含めてダンプコアを吐くので起動が素のVim並に速いです。

起動が速いのでシェルと行ったり来たりできるため、必要ならシェルとの連携もできます。

たとえばQlotを使うには qlot exec lem とかやればlemのREPLがプロジェクトローカルなquicklispを参照します。

Common Lispで書かれているので拡張もContributeも楽です。

lemを使ってみませんか

特にCommon Lisperの方々、lemを使ってみませんか。

インストールはRoswellでできます。

ros install cxxxr/lem

インストールすると lem で起動できます。SLIMEは M-x slime で起動できます。

設定は ~/.lem/init.lisp に書きます。たとえばvi-modeを有効にするには、

(lem-vi-mode:vi-mode)

と書いておけば自動で有効になります。

僕の .lem はGitHubで公開しているので参考にどうぞ。

https://github.com/fukamachi/.lem

lemのバージョン更新もRoswellでできます。

ros update lem