2012-07-17 Stefan Monnier <monnier@iro.umontreal.ca>
+ * emacs-lisp/elint.el (elint-find-args-in-code):
+ Use help-function-arglist, so as to handle lexical byte-code.
+
* progmodes/sh-script.el (sh-syntax-propertize-function): Fix last
change (bug#11826).
;;; Code:
+(require 'help-fns)
+
(defgroup elint nil
"Linting for Emacs Lisp."
:prefix "elint-"
(defun elint-find-args-in-code (code)
"Extract the arguments from CODE.
CODE can be a lambda expression, a macro, or byte-compiled code."
- (cond
- ((byte-code-function-p code)
- (aref code 0))
- ((and (listp code) (eq (car code) 'lambda))
- (car (cdr code)))
- ((and (listp code) (eq (car code) 'macro))
- (elint-find-args-in-code (cdr code)))
- (t 'unknown)))
+ (let ((args (help-function-arglist code)))
+ (if (listp args) args 'unknown)))
;;;
;;; Functions to check some special forms