Function: idlwave-what-module
idlwave-what-module is a byte-compiled function defined in
idlwave.el.gz.
Signature
(idlwave-what-module)
Documentation
Return a default module for stuff near point.
Used by idlwave-routine-info and idlwave-find-module.
Source Code
;; Defined in /usr/src/emacs/lisp/obsolete/idlwave.el.gz
(defun idlwave-what-module ()
"Return a default module for stuff near point.
Used by `idlwave-routine-info' and `idlwave-find-module'."
(idlwave-routines)
(if (let ((case-fold-search t))
(save-excursion
(idlwave-beginning-of-statement)
(looking-at "[ \t]*\\(pro\\|function\\)[ \t]+\\(\\([a-zA-Z0-9_$]+\\)::\\)?\\([a-zA-Z0-9$_]+\\)\\([, \t\n]\\|$\\)")))
;; This is a function or procedure definition statement
;; We return the defined routine as module.
(list
(idlwave-sintern-routine-or-method (match-string-no-properties 4)
(match-string-no-properties 2))
(if (equal (downcase (match-string 1)) "pro") 'pro 'fun)
(idlwave-sintern-class (match-string 3)))
;; Not a definition statement - analyze precise position.
(let* ((where (idlwave-where))
(cw (nth 2 where))
(pro (car (nth 0 where)))
(func (car (nth 1 where)))
(this-word (idlwave-this-word "a-zA-Z0-9$_"))
(next-char (save-excursion (skip-chars-forward "a-zA-Z0-9$_")
(following-char)))
)
(cond
((and (eq cw 'procedure)
(not (equal this-word "")))
(setq this-word (idlwave-sintern-routine-or-method
this-word (nth 2 (nth 3 where))))
(list this-word 'pro
(idlwave-determine-class
(cons this-word (cdr (nth 3 where)))
'pro)))
((and (eq cw 'function)
(not (equal this-word ""))
(or (eq next-char ?\() ; exclude arrays, vars.
(looking-at "[a-zA-Z0-9_]*[ \t]*(")))
(setq this-word (idlwave-sintern-routine-or-method
this-word (nth 2 (nth 3 where))))
(list this-word 'fun
(idlwave-determine-class
(cons this-word (cdr (nth 3 where)))
'fun)))
((and (memq cw '(function-keyword procedure-keyword))
(not (equal this-word ""))
(eq next-char ?\()) ; A function!
(setq this-word (idlwave-sintern-routine this-word))
(list this-word 'fun nil))
(func
(list func 'fun (idlwave-determine-class (nth 1 where) 'fun)))
(pro
(list pro 'pro (idlwave-determine-class (nth 0 where) 'pro)))
(t nil)))))