このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

Emacs Lisp の add-to-list

僕がEmacs Lispをいじるのは .emacs を書き換えるときくらい。

それで、ナントカ-alistの設定のとき、次のようなコードをよく見かけます。


(setq foo-bar-alist
(cons '(name . value)
foo-bar-alist))

これは、add-to-listを使って次のように書いたほうがスッキリするよね。


(add-to-list 'foo-bar-alist '(name . value))
add-to-listではさらに、同じ要素が重複して追加されることを防げます。setqのように自動的にクォートはされないので変数名(記号アトム)に「'」は必要です。

add-to-listの第3引数に非nilLisp風の真)を渡すと、新しい要素がリストの最後に追加されます。


(add-to-list 'foo-bar-alist '(name-two . value-two) t)

試しに:


(setq foo-bar-alist nil)
(add-to-list 'foo-bar-alist '(name-one . value-one))
(add-to-list 'foo-bar-alist '(name-two . value-two) t)
(add-to-list 'foo-bar-alist '(name-three . value-three))
これをまとめて実行(評価)すると、foo-bar-alistの値は、((name-three . value-three) (name-one . value-one) (name-two . value-two)) となります。