🔖

Lem Advent Calendar 2023 - Lisp Mode - Overview

2023/12/07に公開

これは 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