Режим Elisp Ido с историей для списка символов
У меня есть конечный список символов, и я хочу сделать пользовательский интерфейс на основе идо, чтобы выбрать среди них, но я также хочу, чтобы это было в состоянии запомнить. Я придумал вот что:
(defvar hist nil)
(ido-completing-read "What, ... is your favorite color? " '("red" "green" "blue") nil t nil 'hist)
Но независимо от того, сколько раз я выбираю зеленый, цвета, кажется, появляются в одном и том же порядке, а их история остается нулевой. Кто-нибудь может помочь?
1 ответ
Решение
Elisp использует динамическую область видимости, что означает, что имена переменных действительно имеют значение. Более конкретно, в вашем случае у вас есть конфликт имен между hist
и hist
переменная, используемая ido. Всегда используйте <prefix>-
что-то вроде глобальных переменных, чтобы избежать таких проблем.