Как проверить, установлена ​​ли переменная в elisp / emacs? - PullRequest
9 голосов
/ 30 июля 2010

Допустим, у меня есть следующая строка в файле .emacs.

(setq-default default-directory "~/Desktop/mag")

Как мне проверить значение `default-directory 'в elisp?

Добавлено

Я задал этот вопрос, так как мне нужно проверить значение default-directory на основе этого вопроса .

Код elisp должен изменить каталог по умолчанию, когда я нажимаю Cx Cf, но я все равно получаю ~ /, а не ~ / Desktop / mag.Итак, мне нужно проверить, какое значение имеет каталог по умолчанию.

Ответы [ 5 ]

17 голосов
/ 30 июля 2010

Если вы находитесь в консоли, вы можете набрать C-h v, которая предложит вам ввести имя переменной. Введите default-directory (или любое другое имя), и вы получите буфер с некоторой информацией об этой переменной, включая ее значение.

Функция elisp, которую вы используете, является переменно-описанием:

(describe-variable VARIABLE)

Я понял это по C-h k C-h v. C-h k показывает вам, какую функцию должен вызывать следующий ключ или последовательность клавиш.

12 голосов
/ 30 июля 2010

Если вы просто хотите проверить значение, вы можете запустить следующее из буфера * scratch *:

(print default-directory) <ctrl-j>

Буфер * scratch * позволяет вам оценить lisp на лету.Вы должны нажать Ctrl-J, чтобы оценить.

6 голосов
/ 31 июля 2010

Как уже говорилось, C-h v - это самый простой способ узнать значение переменной.Чтобы сделать его еще лучше, поместите курсор на переменную, о которой вы хотите знать, и затем запустите C-h v, и по умолчанию это будет слово под курсором.Действительно удобно.

1 голос
/ 28 ноября 2013

Если вы просто хотите увидеть значение переменной в области эха (меньше беспорядка), попробуйте:

(defun describe-variable-short (var)
  (interactive "vVariable: ")
  (message (format "%s: %s" (symbol-name var) (symbol-value var))) )
(global-set-key "\C-hV" 'describe-variable-short)
1 голос
/ 30 июля 2010

Попробуйте:

(print default-directory)

напишите приведенный выше код в одной строке внутри emacs, дойдите до конца строки и нажмите C-x C-e

...