Режим 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>- что-то вроде глобальных переменных, чтобы избежать таких проблем.

Другие вопросы по тегам