Function: semantic-get-local-variables-emacs-lisp-mode
semantic-get-local-variables-emacs-lisp-mode is a byte-compiled
function defined in el.el.gz.
Signature
(semantic-get-local-variables-emacs-lisp-mode &optional POINT)
Documentation
Return a list of local variables for POINT.
Scan backwards from point at each successive function. For all occurrences
of let or let*, grab those variable names.
Override semantic-get-local-variables in emacs-lisp-mode buffers.
Source Code
;; Defined in /usr/src/emacs/lisp/cedet/semantic/bovine/el.el.gz
(define-mode-local-override semantic-get-local-variables emacs-lisp-mode
(&optional _point)
"Return a list of local variables for POINT.
Scan backwards from point at each successive function. For all occurrences
of `let' or `let*', grab those variable names."
(let* ((vars nil)
(fn nil))
(save-excursion
(while (setq fn (car (semantic-ctxt-current-function-emacs-lisp-mode
(point) (list t))))
(cond
((eq fn t)
nil)
((member fn '("let" "let*" "with-slots"))
;; Snarf variables
(up-list -1)
(forward-char 1)
(forward-symbol 1)
(skip-chars-forward "* \t\n")
(let ((varlst (read (buffer-substring-no-properties
(point)
(save-excursion
(forward-sexp 1)
(point))))))
(while varlst
(let* ((oneelt (car varlst))
(name (if (symbolp oneelt)
oneelt
(car oneelt))))
(setq vars (cons (semantic-tag-new-variable
(symbol-name name)
nil nil)
vars)))
(setq varlst (cdr varlst)))
))
((string= fn "lambda")
;; Snart args...
(up-list -1)
(forward-char 1)
(forward-word-strictly 1)
(skip-chars-forward "* \t\n")
(let ((arglst (read (buffer-substring-no-properties
(point)
(save-excursion
(forward-sexp 1)
(point))))))
(while arglst
(let* ((name (car arglst)))
(when (/= ?& (aref (symbol-name name) 0))
(setq vars (cons (semantic-tag-new-variable
(symbol-name name)
nil nil)
vars))))
(setq arglst (cdr arglst)))
))
)
(up-list -1)))
(nreverse vars)))