2012-03-20 17 views
2

我有一個有限的符號列表,並且我想創建一個基於ido的用戶界面以在其中進行選擇,但我也希望這能夠記住。我想出了是這樣的:帶有歷史記錄的Elisp ido模式,用於列表fo符號

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

但不管多少次,我選擇綠色的顏色似乎想出以相同的順序和HIST仍然爲零。 任何人都可以幫忙嗎?

回答

3

Elisp使用動態範圍界定,這意味着變量名真的很重要。更具體地說,在你的情況下,你的hist和ido使用的hist變量之間有一個命名衝突。總是使用全局變量的<prefix>-來避免這種問題。

+0

我嘗試了'my-hist'而不是'hist',它實際上改變了'my-hist'變量並且當我做M-p時表現正確。但結果仍然是原來的順序。 – fakedrake 2012-03-21 09:24:50

+0

也許這並不意味着改變選項的順序。我認爲它現在可以運作。謝謝 – fakedrake 2012-03-21 09:58:00