Function: idlwave-rescan-asynchronously

idlwave-rescan-asynchronously is an interactive and byte-compiled function defined in idlwave.el.gz.

Signature

(idlwave-rescan-asynchronously)

Documentation

Dispatch another Emacs instance to update the idlwave catalog.

After the process finishes normally, the first access to routine info will re-read the catalog.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/obsolete/idlwave.el.gz
(defun idlwave-rescan-asynchronously ()
  "Dispatch another Emacs instance to update the idlwave catalog.
After the process finishes normally, the first access to routine info
will re-read the catalog."
  (interactive)
  (if (processp idlwave-catalog-process)
      (if (eq (process-status idlwave-catalog-process) 'run)
	  (if (yes-or-no-p "A catalog-updating process is running.  Kill it? ")
	      (progn
		(condition-case nil
		    (kill-process idlwave-catalog-process)
		  (error nil))
		(error "Process killed, no new process started"))
	    (error "Quit"))
	(condition-case nil
	    (kill-process idlwave-catalog-process)
	  (error nil))))
  (if (or (not idlwave-user-catalog-file)
	  (not (stringp idlwave-user-catalog-file))
	  (not (file-regular-p idlwave-user-catalog-file)))
      (error "No catalog has been produced yet"))
  (let* ((emacs (concat invocation-directory invocation-name))
	 (args (list "-batch"
		     "-l" (expand-file-name "~/.emacs")
		     "-l" "idlwave"
		     "-f" "idlwave-rescan-catalog-directories"))
	 (process (apply #'start-process "idlcat"
			 nil emacs args)))
    (setq idlwave-catalog-process process)
    (set-process-sentinel
     process
     (lambda (_pro why)
       (when (string-match "finished" why)
	 (setq idlwave-routines nil
	       idlwave-system-routines nil
	       idlwave-catalog-process nil)
	 (or (idlwave-start-load-rinfo-timer)
	     (idlwave-update-routine-info '(4))))))
    (message "Background job started to update catalog file")))