Function: idlwave-do-find-module
idlwave-do-find-module is a byte-compiled function defined in
idlwave.el.gz.
Signature
(idlwave-do-find-module NAME TYPE CLASS &optional FORCE-SOURCE THIS-BUFFER)
Source Code
;; Defined in /usr/src/emacs/lisp/obsolete/idlwave.el.gz
(defun idlwave-do-find-module (name type class
&optional force-source this-buffer)
(let ((name1 (idlwave-make-full-name class name))
source buf1 entry
(buf (current-buffer))
(pos (point))
file name2)
(setq entry (idlwave-best-rinfo-assq name type class (idlwave-routines)
'WITH-FILE)
source (or force-source (nth 3 entry))
name2 (if (nth 2 entry)
(idlwave-make-full-name (nth 2 entry) name)
name1))
(if source
(setq file (idlwave-routine-source-file source)))
(unless file ; Try to find it on the path.
(setq file
(idlwave-expand-lib-file-name
(if class
(format "%s__define.pro" (downcase class))
(format "%s.pro" (downcase name))))))
(cond
((or (null name) (equal name ""))
(error "Abort"))
((eq (car source) 'system)
(error "Source code for system routine %s is not available"
name2))
((or (not file) (not (file-regular-p file)))
(error "Source code for routine %s is not available"
name2))
(t
(when (not this-buffer)
(setq buf1
(idlwave-find-file-noselect file 'find))
(pop-to-buffer buf1 t))
(goto-char (point-max))
(let ((case-fold-search t))
(if (re-search-backward
(concat "^[ \t]*\\<"
(cond ((eq type 'fun) "function")
((eq type 'pro) "pro")
(t "\\(pro\\|function\\)"))
"\\>[ \t]+"
(regexp-quote (downcase name2))
"[^a-zA-Z0-9_$]")
nil t)
(goto-char (match-beginning 0))
(pop-to-buffer buf)
(goto-char pos)
(error "Could not find routine %s" name2)))))))