🔖

Lem Advent Calendar 2023 - 他の人の.lem/init.lispを見てみる

2023/12/16に公開

これは Lem Advent Calendar の記事です。

lemの初期化ファイルは $HOME/.lem/init.lisp です。
このファイルが存在するとlemの起動時にそのファイルがloadされ、エディタを拡張することが出来ます。
原理的には何でも書けてしまうのですが、キーバインドやカスタマイズのための変数を設定したり、コマンドを定義する事を想定してます。

今日はインターネットに存在するlemのcontributorの.lemを勝手に見ていく回です。

github.com/fukamachi/.lem

一つ目は深町さんのリポジトリです。
Common Lispによる数々のwebフレームワークやテスティングフレームワークの作者です(いつもお世話になっています)
https://github.com/fukamachi/.lem

.lem内をasdfで管理しているようです。
lem-my-init.asdから.lem/modes/ディレクトリの各ファイルを読み込み、モード単位で設定が書かれています。
vi-modeやpareditを使っていたり、lem-vi-sexpというextensionを作って使っているのが特徴的です。
https://github.com/fukamachi/lem-vi-sexp


github.com/vindarel/lem-init

続いてvindarelのリポジトリです。
https://github.com/vindarel/lem-init

init.lispを見るとSDL2版を使っているようです。

以下の設定は開いたファイルがpdfかmp4のときに外部ライブラリを起動する設定です。
https://github.com/vindarel/lem-init/blob/936237b082ce679b8573a0dff6575c9972caad6d/lem-init.lisp#L289-L292
この辺りからlemをpdfやmp4のランチャーとしても使っているように見えるのが興味深いです。

ちなみに、この方はudemyでCommon Lispの講師もやっています。
https://www.udemy.com/course/common-lisp-programming/?referralCode=2F3D698BBC4326F94358


codeberg.org/sasanidas/lem-config

最後はsasanidasのリポジトリです。
https://codeberg.org/sasanidas/lem-config
lispディレクトリに必要なライブラリをバンドルし、initsディレクトリにlemの初期化ファイルを置いているようです、おそらくこれが一番大きな.lemではないでしょうか。
Common Lispの他にSchemeやJavaScript, Elixirなどを使っているのがわかります。
emacsclientを呼び出しlemからemacsを操作しているらしくとてもユニークです。

おわりに

ここではlemのコントリビュータの人達の.lemを見ていきました。
他にもGitHubで.lem language:"Common Lisp"で検索するといくつか見つかります。
こうやって見てみると各人がそれぞれのlemの環境を持っており、また様々な人達がlemを使っているのが嬉しく感じますね。

Discussion