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