In Emacs Lisp, how do I check if a variable is defined?
+28
A:
you may want boundp: returns t if variable (a symbol) is not void; more precisely, if its current binding is not void. It returns nil otherwise.
(boundp 'abracadabra) ; Starts out void.
=> nil
(let ((abracadabra 5)) ; Locally bind it.
(boundp 'abracadabra))
=> t
(boundp 'abracadabra) ; Still globally void.
=> nil
(setq abracadabra 5) ; Make it globally nonvoid.
=> 5
(boundp 'abracadabra)
=> t
dfa
2009-04-16 19:06:05
sometimes it might also be useful to use INTERN-SOFT to check whether a symbol exists.
Rainer Joswig
2009-04-16 19:15:39
+6
A:
In addition to dfa's answer you may also want to see if it's bound as a function using fboundp:
(defun baz () ) => baz (boundp 'baz) => nil (fboundp 'baz) => t
Jacob Gabrielson
2009-04-17 15:43:10
A:
If you want to check a variable value from within emacs (I don't know if this applies, since you wrote "in Emacs Lisp"?):
M-:
starts Eval
in the mini buffer. Write in the name of the variable and press return. The mini-buffer shows the value of the variable.
If the variable is not defined, you get a debugger error.
Gauthier
2010-06-29 12:01:09