2012-03-20 4 views
2

私はシンボルの有限リストを持っており、それらの中から選択するにはidoベースのユーザーインターフェースを作りたいと思いますが、これも覚えておきたいものです。Elispイドモードのシンボルリストの履歴

(defvar hist nil) 
(ido-completing-read "What, ... is your favorite color? " '("red" "green" "blue") nil t nil 'hist) 

しかし、どんなに私が選ぶ何回緑の色が同じ順番に出てくるように見えるとHISTがnilのまま:私が思い付いたことはこれです。 誰も助けることができますか?

答えて

3

Elispは動的スコープを使用しています。つまり、変数名が重要です。具体的には、あなたの場合は、histとidoが使用する変数histの間に命名の競合があります。このような問題を避けるには、常にグローバル変数に<prefix>-を使用してください。

+0

私は 'hist'ではなく' my-hist'を試しました。実際には 'my-hist'変数を変更し、M-pを実行すると正しく動作します。しかし、結果はまだ元の順序です。 – fakedrake

+0

おそらく、オプションの順序を変更するつもりはありませんでした。私はそれが今になっているように機能すると思う。ありがとうございました – fakedrake