Function: idlwave-shell-filter-sysvars

idlwave-shell-filter-sysvars is a byte-compiled function defined in idlwave.el.gz.

Signature

(idlwave-shell-filter-sysvars)

Documentation

Get any new system variables and tags.

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/idlwave.el.gz
(defun idlwave-shell-filter-sysvars ()
  "Get any new system variables and tags."
  (let ((text idlwave-shell-command-output)
	(start 0)
	(old idlwave-system-variables-alist)
	var tags link old-entry) ;; type name class
    (setq idlwave-system-variables-alist nil)
    (while (string-match "^IDLWAVE-SYSVAR: !\\([a-zA-Z0-9_$]+\\)\\( \\(.*\\)\\)?"
			 text start)
      (setq start (match-end 0)
	    var (match-string 1 text)
	    tags (if (match-end 3)
		     (idlwave-split-string (match-string 3 text))))
      ;; Maintain old links, if present
      (setq old-entry (assq (idlwave-sintern-sysvar var) old))
      (setq link (assq 'link old-entry))
      (setq idlwave-system-variables-alist
	    (cons (list var
			(cons
			 'tags
			 (mapcar (lambda (x)
				   (cons x
					 (cdr (assq
					       (idlwave-sintern-sysvartag x)
					       (cdr (assq 'tags old-entry))))))
				 tags))
			link)
		  idlwave-system-variables-alist)))
    ;; Keep the old value if query was not successful
    (setq idlwave-system-variables-alist
	  (or idlwave-system-variables-alist old))))