Friday, April 29, 2011

In Emacs Lisp, how do I check if a variable is defined?

In Emacs Lisp, how do I check if a variable is defined?

From stackoverflow
  • 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
    
    Rainer Joswig : sometimes it might also be useful to use INTERN-SOFT to check whether a symbol exists.
  • 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
    
  • 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.

0 comments:

Post a Comment