* lisp/progmodes/elisp-mode.el (elisp--local-variables-1):

Handle quoted expressions.

Fixes: debbugs:18688
This commit is contained in:
Stefan Monnier 2014-10-14 21:56:56 -04:00
parent 643b1e97f7
commit 10fff83762
2 changed files with 16 additions and 2 deletions

View file

@ -1,3 +1,8 @@
2014-10-15 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/elisp-mode.el (elisp--local-variables-1):
Handle quoted expressions (bug#18688).
2014-10-14 Jérémy Compostella <jeremy.compostella@intel.com>
Michael Albinus <michael.albinus@gmx.de>

View file

@ -255,18 +255,27 @@ Blank lines separate paragraphs. Semicolons start comments.
(dolist (binding bindings)
(push (or (car-safe binding) binding) vars))
(elisp--local-variables-1 vars (car (last body)))))
(`(lambda ,_) (setq sexp nil))
(`(lambda ,_args)
;; FIXME: Look for the witness inside `args'.
(setq sexp nil))
(`(lambda ,args . ,body)
(elisp--local-variables-1
(append args vars) (car (last body))))
(append (remq '&optional (remq '&rest args)) vars)
(car (last body))))
(`(condition-case ,_ ,e) (elisp--local-variables-1 vars e))
(`(condition-case ,v ,_ . ,catches)
(elisp--local-variables-1
(cons v vars) (cdr (car (last catches)))))
(`(quote . ,_)
;; FIXME: Look for the witness inside sexp.
(setq sexp nil))
;; FIXME: Handle `cond'.
(`(,_ . ,_)
(elisp--local-variables-1 vars (car (last sexp))))
(`elisp--witness--lisp (or vars '(nil)))
(_ nil)))
;; We didn't find the witness in the last element so we try to
;; backtrack to the last-but-one.
(setq sexp (ignore-errors (butlast sexp)))))
res))