Emacsでコマンドを定義するとき、(interactive)で入力補完を利用することができる。
(interactive "f")で実在するファイル名、(interactive "a")で函数名が補完できる、といった具合だ。Helmなどの補完インターフェイスを利用すると、さらに入力しやすくなる。(君は誰とEmacsる? (補完インターフェイス紹介篇)を参照)
この機能の概要は、Emacsのdescribe-functionでinteractiveを引くと、どんな文字を利用できるのかが一覧できる。(GNU Emacs Lisp Reference Manual: Interactive Codes)
さて、では変数名を補完入力させようと思ったら、どうすればいいのか。
v -- Variable name: symbol that is
custom-variable-p.
vがその文字にあたるようだ。しかしその後に不穏なことが書いてある。「custom-variable-pにあたるシンボルこそが変数なのだ」と。
私は変数default-directoryを補完対象にしたかったのだが、なるほど、うまくいかないようだ……?
ちなみに、(interactive "v")に相当する単独の函数はread-variableで、およそ同じ動作をする。
解決
custom-variable-pで判定するって言ってるんだから、函数を一時的に上書きしてやればいいよ。
そう、**cl-letf**だね。
(cl-letf (((symbol-function 'custom-variable-p) #'boundp)) (read-variable "Variable: "))
実際に動かしてみる。
予想的中! 別の条件で変数を絞りこみたいときにも、これを応用できますね ヾ(〃><)ノ゙☆
おまけ
いろんなものがコピーできるcopyitに変数の値をコピペする機能をつけたんですよ。
みなさんも使ってみて、おともだちにも紹介してくださいね☆

