Lem Advent Calendar 2023 - Lisp Mode - Overview
これは Lem Advent Calendar の記事です。
概要
Lisp ModeはLemに最初期に追加されたCommon Lisp用の拡張機能です。
その後30以上の言語用の拡張機能が追加されてきましたが、
今でもLisp Modeが最も活発に開発されています。
シンタックスハイライト、自動インデント、シンボル補完、S式単位の操作や
REPL、デバッガ、インスペクタなどをサポートしています。
それ以外にも日常的にCommon Lispを開発する上で必要になる機能を用意しています。
Features
ここではLisp Modeでのいくつかの機能を紹介します。
S式単位の操作
emacsにはforward-sexp(C-M-f)やbackward-sexp(C-M-b), forward-up-list(C-M-u)やdown-list(C-M-d)など、
S式単位でカーソルを左右に移動したり、リストの中に潜ったりする機能があり、Lemもこれを参考にしました。
| Command | Key bindings | Documentation |
|---|---|---|
| forward-sexp | M-C-f | カーソルをS式単位で一つ右に移動 |
| backward-sexp | M-C-b | カーソルをS式単位で一つ左に移動 |
| forward-list | M-C-n | カーソルを後ろのリストの右に移動 |
| backward-list | M-C-p | カーソルを前のリストの左に移動 |
| down-list | M-C-d | カーソルをリストの内側に移動 |
| up-list | M-C-u | カーソルを上のリストに移動 |
| mark-sexp | M-C-@, M-C-Space | S式単位で範囲選択 |
| kill-sexp | M-C-k | カーソルの次の位置のS式を削除 |
| transpose-sexps | M-C-t | カーソルの前後のS式を入れ替える |
また、これとは別にpareditも用意されています。
Eval
C-x C-eでカーソルの手前の式を評価します。

また評価結果の位置にカーソルを合わせてshow-context-menu(M-h)でメニューを開いた後、
"Inspect evaluation value"を選択すると値をinspectできます。

評価結果はshow-context-menu(M-h)でメニューを開いた後、"Clear eval results"を選択するとクリアできます。

Completion
他のエディタ同様、Lemも補完を備えています。

REPL
M-x start-lisp-replとすることでREPLを開けます。
またLispファイルを開いている状態でC-c C-zでも表示することができます。

M-rで入力履歴を検索したり、C-c M-oでバッファをクリアできたりします。
Inspector
REPLの評価結果を選択する事でインスペクタを開くことが出来ます。

Debugger
評価中のコードでエラーを引き起こすとデバッガが起動します。

おわりに
この章ではLemのLisp Modeについての機能を簡単に見ていきました。
次回はLisp Modeで使っているmicrosについてです。
Discussion