emacs 内からさまざまなプロジェクトにすばやくジャンプするためのヘルパー関数を定義しようとしています。次のようにマクロを定義することから始めました
(defmacro project-alias (name path)
`(defun ,name ()
(interactive)
(cd ,path)))
そして、これはうまく機能し(project-alias foo "~/bar")
ます。問題はありません。このマクロをタプルのリストに適用しようとすると、問題が発生します。
(setq projects '((foo . "~/foo")
(bar . "~/bar")))
(dolist (p projects)
(project-alias (car p) (cdr p)))
上記のコードエラー
Debugger entered--Lisp error: (wrong-type-argument symbolp (car p))
defalias((car p) (lambda nil (interactive) (cd (cdr p))))
最初の引数を文字列として渡し、intern
シンボル表現を喜びなく取得するために呼び出しを試みました。また、文字列形式を受け入れるようにマクロを定義しようとしましたが、それも機能しません
私は何を間違っていますか?