aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ.D. Smith2005-07-04 01:51:24 +0000
committerJ.D. Smith2005-07-04 01:51:24 +0000
commit3938cb82d0fdfcf083c7b08fc9c3ce0f06778529 (patch)
treebe229a018c89cbe5b3f15afc7db74bbccf5e557b
parent9049a096e09bdd5da196aa9ddca5fec63df54f3b (diff)
downloademacs-3938cb82d0fdfcf083c7b08fc9c3ce0f06778529.tar.gz
emacs-3938cb82d0fdfcf083c7b08fc9c3ce0f06778529.zip
Updated to IDLWAVE v5.7 (see idlwave.org), and variable cleanup
-rw-r--r--lisp/progmodes/idlw-complete-structtag.el242
-rw-r--r--lisp/progmodes/idlw-help.el177
-rw-r--r--lisp/progmodes/idlw-rinfo.el224
-rw-r--r--lisp/progmodes/idlw-shell.el1101
-rw-r--r--lisp/progmodes/idlw-toolbar.el4
-rw-r--r--lisp/progmodes/idlwave.el917
6 files changed, 1523 insertions, 1142 deletions
diff --git a/lisp/progmodes/idlw-complete-structtag.el b/lisp/progmodes/idlw-complete-structtag.el
new file mode 100644
index 00000000000..53094f6ebeb
--- /dev/null
+++ b/lisp/progmodes/idlw-complete-structtag.el
@@ -0,0 +1,242 @@
1;;; idlw-complete-structtag.el --- Completion of structure tags.
2;; Copyright (c) 2001,2002 Free Software Foundation
3
4;; Author: Carsten Dominik <dominik@science.uva.nl>
5;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
6;; Version: 1.2
7;; Keywords: languages
8
9;; This file is part of GNU Emacs.
10
11;; GNU Emacs is free software; you can redistribute it and/or modify
12;; it under the terms of the GNU General Public License as published by
13;; the Free Software Foundation; either version 2, or (at your option)
14;; any later version.
15
16;; GNU Emacs is distributed in the hope that it will be useful,
17;; but WITHOUT ANY WARRANTY; without even the implied warranty of
18;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19;; GNU General Public License for more details.
20
21;; You should have received a copy of the GNU General Public License
22;; along with GNU Emacs; see the file COPYING. If not, write to the
23;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
24;; Boston, MA 02111-1307, USA.
25
26;;; Commentary:
27
28;; Completion of structure tags can be done automatically in the
29;; shell, since the list of tags can be determined dynamically through
30;; interaction with IDL.
31
32;; Completion of structure tags in a source buffer is highly ambiguous
33;; since you never know what kind of structure a variable will hold at
34;; runtime. To make this feature useful in source buffers, we need a
35;; special assumption/convention. We will assume that the structure is
36;; defined in the same buffer and directly assigned to the correct
37;; variable. This is mainly useful for applications in which there is one
38;; main structure which contains a large amount of information (and many
39;; tags). For example, many widget applications define a "state" structure
40;; that contains all important data about the application. The different
41;; routines called by the event handler then use this structure. If you
42;; use the same variable name for this structure throughout your
43;; application (a good idea for many reasons), IDLWAVE can support
44;; completion for its tags.
45;;
46;; This file is a completion plugin which implements this kind of
47;; completion. It is also an example which shows how completion plugins
48;; should be programmed.
49;;
50;; New versions of IDLWAVE, documentation, and more information available
51;; from:
52;; http://idlwave.org
53;;
54;; INSTALLATION
55;; ============
56;; Put this file on the emacs load path and load it with the following
57;; line in your .emacs file:
58;;
59;; (add-hook 'idlwave-load-hook
60;; (lambda () (require 'idlw-complete-structtag)))
61;;
62;; DESCRIPTION
63;; ===========
64;; Suppose your IDL program contains something like
65;;
66;; myvar = state.a*
67;;
68;; where the star marks the cursor position. If you now press the
69;; completion key M-TAB, IDLWAVE searches the current file for a
70;; structure definition
71;;
72;; state = {tag1:val1, tag2:val2, ...}
73;;
74;; and offers the tags for completion.
75;;
76;; In the idlwave shell, idlwave sends a "print,tag_names()" for the
77;; variable to idl and determines the current tag list dynamically.
78;;
79;; Notes
80;; -----
81;; - The structure definition assignment "state = {...}" must use the
82;; same variable name as the the completion location "state.*".
83;; - The structure definition must be in the same file.
84;; - The structure definition is searched backwards and then forward
85;; from the current position, until a definition with tags is found.
86;; - The file is parsed again for each new completion variable and location.
87;; - You can force an update of the tag list with the usual command
88;; to update routine info in IDLWAVE: C-c C-i
89
90
91;; Some variables to identify the previously used structure
92(defvar idlwave-current-tags-var nil)
93(defvar idlwave-current-tags-buffer nil)
94(defvar idlwave-current-tags-completion-pos nil)
95
96;; The tag list used for completion will be stored in the following vars
97(defvar idlwave-current-struct-tags nil)
98(defvar idlwave-sint-structtags nil)
99
100;; Create the sintern type for structure talks
101(idlwave-new-sintern-type 'structtag)
102
103;; Hook the plugin into idlwave
104(add-to-list 'idlwave-complete-special 'idlwave-complete-structure-tag)
105(add-hook 'idlwave-update-rinfo-hook 'idlwave-structtag-reset)
106
107;;; The main code follows below
108
109(defun idlwave-complete-structure-tag ()
110 "Complete a structure tag.
111This works by looking in the current file for a structure assignment to a
112variable with the same name and takes the tags from there. Quite useful
113for big structures like the state variables of a widget application.
114
115In the idlwave shell, the current content of the variable is used to get
116an up-to-date completion list."
117 (interactive)
118 (let ((pos (point))
119 start
120 (case-fold-search t))
121 (if (save-excursion
122 ;; Check if the context is right.
123 ;; In the shell, this could be extended to expressions like
124 ;; x[i+4].name.g*. But it is complicated because we would have
125 ;; to really parse this expression. For now, we allow only
126 ;; substructures, like "aaa.bbb.ccc.ddd"
127 (skip-chars-backward "[a-zA-Z0-9._$]")
128 (setq start (point)) ;; remember the start of the completion pos.
129 (and (< (point) pos)
130 (not (equal (char-before) ?!)) ; no sysvars
131 (looking-at "\\([a-zA-Z][.a-zA-Z0-9_]*\\)\\.")
132 (>= pos (match-end 0))
133 (not (string= (downcase (match-string 1)) "self"))))
134 (let* ((var (downcase (match-string 1))))
135 ;; Check if we need to update the "current" structure. Basically we
136 ;; do it always, except for subsequent completions at the same
137 ;; spot, to save a bit of time. Implementation: We require
138 ;; an update if
139 ;; - the variable is different or
140 ;; - the buffer is different or
141 ;; - we are completing at a different position
142 (if (or (not (string= var (or idlwave-current-tags-var "@")))
143 (not (eq (current-buffer) idlwave-current-tags-buffer))
144 (not (equal start idlwave-current-tags-completion-pos)))
145 (idlwave-prepare-structure-tag-completion var))
146 (setq idlwave-current-tags-completion-pos start)
147 (setq idlwave-completion-help-info
148 (list 'idlwave-complete-structure-tag-help))
149 (idlwave-complete-in-buffer 'structtag 'structtag
150 idlwave-current-struct-tags nil
151 "Select a structure tag" "structure tag")
152 t) ; we did the completion: return t to skip other completions
153 nil))) ; return nil to allow looking for other ways to complete
154
155(defun idlwave-structtag-reset ()
156 "Force an update of the current structure tag list upon next use."
157 (setq idlwave-current-tags-buffer nil))
158
159(defvar idlwave-structtag-struct-location nil
160 "The location of the structure definition, for help display.")
161
162(defun idlwave-prepare-structure-tag-completion (var)
163 "Find and parse the tag list for structure tag completion."
164 ;; This works differently in source buffers and in the shell
165 (if (eq major-mode 'idlwave-shell-mode)
166 ;; OK, we are in the shell, do it dynamically
167 (progn
168 (message "preparing shell tags")
169 ;; The following call puts the tags into `idlwave-current-struct-tags'
170 (idlwave-complete-structure-tag-query-shell var)
171 ;; initialize
172 (setq idlwave-sint-structtags nil
173 idlwave-current-tags-buffer (current-buffer)
174 idlwave-current-tags-var var
175 idlwave-structtag-struct-location (point)
176 idlwave-current-struct-tags
177 (mapcar (lambda (x)
178 (list (idlwave-sintern-structtag x 'set)))
179 idlwave-current-struct-tags))
180 (if (not idlwave-current-struct-tags)
181 (error "Cannot complete structure tags of variable %s" var)))
182 ;; Not the shell, so probably a source buffer.
183 (unless
184 (catch 'exit
185 (save-excursion
186 (goto-char (point-max))
187 ;; Find possible definitions of the structure.
188 (while (idlwave-find-structure-definition var nil 'all)
189 (let ((tags (idlwave-struct-tags)))
190 (when tags
191 ;; initialize
192 (setq idlwave-sint-structtags nil
193 idlwave-current-tags-buffer (current-buffer)
194 idlwave-current-tags-var var
195 idlwave-structtag-struct-location (point)
196 idlwave-current-struct-tags
197 (mapcar (lambda (x)
198 (list (idlwave-sintern-structtag x 'set)))
199 tags))
200 (throw 'exit t))))))
201 (error "Cannot complete structure tags of variable %s" var))))
202
203(defun idlwave-complete-structure-tag-query-shell (var)
204 "Ask the shell for the tags of the structure in variable or expression VAR."
205 (idlwave-shell-send-command
206 (format "if size(%s,/TYPE) eq 8 then print,tag_names(%s)" var var)
207 'idlwave-complete-structure-tag-get-tags-from-help
208 'hide 'wait))
209
210(defvar idlwave-shell-prompt-pattern)
211(defvar idlwave-shell-command-output)
212(defun idlwave-complete-structure-tag-get-tags-from-help ()
213 "Filter structure tag name output, result to `idlwave-current-struct-tags'."
214 (setq idlwave-current-struct-tags
215 (if (string-match (concat "tag_names(.*) *\n"
216 "\\(\\(.*[\r\n]?\\)*\\)"
217 "\\(" idlwave-shell-prompt-pattern "\\)")
218 idlwave-shell-command-output)
219 (split-string (match-string 1 idlwave-shell-command-output)))))
220
221
222;; Fake help in the source buffer for structure tags.
223;; kwd and name are global-variables here.
224(defvar name)
225(defvar kwd)
226(defvar idlwave-help-do-struct-tag)
227(defun idlwave-complete-structure-tag-help (mode word)
228 (cond
229 ((eq mode 'test)
230 ;; fontify only in source buffers, not in the shell.
231 (not (equal idlwave-current-tags-buffer
232 (get-buffer (idlwave-shell-buffer)))))
233 ((eq mode 'set)
234 (setq kwd word
235 idlwave-help-do-struct-tag idlwave-structtag-struct-location))
236 (t (error "This should not happen"))))
237
238(provide 'idlw-complete-structtag)
239
240;;; idlw-complete-structtag.el ends here
241
242
diff --git a/lisp/progmodes/idlw-help.el b/lisp/progmodes/idlw-help.el
index ba31e6e0ef8..5ed4c23d592 100644
--- a/lisp/progmodes/idlw-help.el
+++ b/lisp/progmodes/idlw-help.el
@@ -4,9 +4,9 @@
4;; Copyright (c) 2003,2004,2005 Free Software Foundation 4;; Copyright (c) 2003,2004,2005 Free Software Foundation
5;; 5;;
6;; Authors: J.D. Smith <jdsmith@as.arizona.edu> 6;; Authors: J.D. Smith <jdsmith@as.arizona.edu>
7;; Carsten Dominik <dominik@astro.uva.nl> 7;; Carsten Dominik <dominik@science.uva.nl>
8;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu> 8;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
9;; Version: 5.5 9;; Version: 5.7_22
10 10
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
12 12
@@ -36,12 +36,18 @@
36;; information, at: 36;; information, at:
37;; 37;;
38;; http://idlwave.org 38;; http://idlwave.org
39;; 39;;
40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
41 41
42 42
43;;; Code: 43;;; Code:
44(require 'browse-url) 44(defvar idlwave-help-browse-url-available nil
45 "Whether browse-url is available")
46
47(setq idlwave-help-browse-url-available
48 (condition-case nil
49 (require 'browse-url)
50 (error nil)))
45 51
46(defgroup idlwave-online-help nil 52(defgroup idlwave-online-help nil
47 "Online Help options for IDLWAVE mode." 53 "Online Help options for IDLWAVE mode."
@@ -52,10 +58,10 @@
52 :group 'idlwave-online-help 58 :group 'idlwave-online-help
53 :type 'boolean) 59 :type 'boolean)
54 60
55(defvar idlwave-html-link-sep 61(defvar idlwave-html-link-sep
56 (if idlwave-html-help-pre-v6 "#" "#wp")) 62 (if idlwave-html-help-pre-v6 "#" "#wp"))
57 63
58(defcustom idlwave-html-help-location 64(defcustom idlwave-html-help-location
59 (if (memq system-type '(ms-dos windows-nt)) 65 (if (memq system-type '(ms-dos windows-nt))
60 nil 66 nil
61 "/usr/local/etc/") 67 "/usr/local/etc/")
@@ -83,7 +89,7 @@ Defaults to `browse-url-browser-function', which see."
83 :group 'idlwave-online-help 89 :group 'idlwave-online-help
84 :type 'string) 90 :type 'string)
85 91
86(defcustom idlwave-help-browser-generic-args 92(defcustom idlwave-help-browser-generic-args
87 (if (boundp 'browse-url-generic-args) 93 (if (boundp 'browse-url-generic-args)
88 browse-url-generic-args "") 94 browse-url-generic-args "")
89 "Program args to use if using browse-url-generic-program." 95 "Program args to use if using browse-url-generic-program."
@@ -183,8 +189,7 @@ support."
183 :type 'string) 189 :type 'string)
184 190
185(defface idlwave-help-link 191(defface idlwave-help-link
186 '((((min-colors 88) (class color)) (:foreground "Blue1")) 192 '((((class color)) (:foreground "Blue"))
187 (((class color)) (:foreground "Blue"))
188 (t (:weight bold))) 193 (t (:weight bold)))
189 "Face for highlighting links into IDLWAVE online help." 194 "Face for highlighting links into IDLWAVE online help."
190 :group 'idlwave-online-help) 195 :group 'idlwave-online-help)
@@ -193,7 +198,7 @@ support."
193 198
194(defvar idlwave-help-activate-links-aggressively nil 199(defvar idlwave-help-activate-links-aggressively nil
195 "Obsolete variable.") 200 "Obsolete variable.")
196 201
197(defvar idlwave-completion-help-info) 202(defvar idlwave-completion-help-info)
198 203
199(defvar idlwave-help-frame nil 204(defvar idlwave-help-frame nil
@@ -242,6 +247,10 @@ support."
242 "--" 247 "--"
243 ["Quit" idlwave-help-quit t])) 248 ["Quit" idlwave-help-quit t]))
244 249
250(defvar idlwave-help-def-pos)
251(defvar idlwave-help-args)
252(defvar idlwave-help-in-header)
253
245(defun idlwave-help-mode () 254(defun idlwave-help-mode ()
246 "Major mode for displaying IDL Help. 255 "Major mode for displaying IDL Help.
247 256
@@ -282,6 +291,7 @@ Here are all keybindings.
282 (set (make-local-variable 'idlwave-help-in-header) nil) 291 (set (make-local-variable 'idlwave-help-in-header) nil)
283 (run-mode-hooks 'idlwave-help-mode-hook)) 292 (run-mode-hooks 'idlwave-help-mode-hook))
284 293
294(defvar idlwave-system-directory)
285(defun idlwave-html-help-location () 295(defun idlwave-html-help-location ()
286 "Return the help directory where HTML files are, or nil if that is unknown." 296 "Return the help directory where HTML files are, or nil if that is unknown."
287 (or (and (stringp idlwave-html-help-location) 297 (or (and (stringp idlwave-html-help-location)
@@ -316,16 +326,20 @@ It collects and prints the diagnostics messages."
316 (setq idlwave-last-context-help-pos marker) 326 (setq idlwave-last-context-help-pos marker)
317 (idlwave-do-context-help1 arg) 327 (idlwave-do-context-help1 arg)
318 (if idlwave-help-diagnostics 328 (if idlwave-help-diagnostics
319 (message "%s" (mapconcat 'identity 329 (message "%s" (mapconcat 'identity
320 (nreverse idlwave-help-diagnostics) 330 (nreverse idlwave-help-diagnostics)
321 "; ")))))) 331 "; "))))))
322 332
323(defvar idlwave-help-do-class-struct-tag nil) 333(defvar idlwave-help-do-class-struct-tag nil)
334(defvar idlwave-structtag-struct-location)
324(defvar idlwave-help-do-struct-tag nil) 335(defvar idlwave-help-do-struct-tag nil)
336(defvar idlwave-system-variables-alist)
337(defvar idlwave-executive-commands-alist)
338(defvar idlwave-system-class-info)
325(defun idlwave-do-context-help1 (&optional arg) 339(defun idlwave-do-context-help1 (&optional arg)
326 "The work-horse version of `idlwave-context-help', which see." 340 "The work-horse version of `idlwave-context-help', which see."
327 (save-excursion 341 (save-excursion
328 (if (equal (char-after) ?/) 342 (if (equal (char-after) ?/)
329 (forward-char 1) 343 (forward-char 1)
330 (if (equal (char-before) ?=) 344 (if (equal (char-before) ?=)
331 (backward-char 1))) 345 (backward-char 1)))
@@ -335,7 +349,7 @@ It collects and prints the diagnostics messages."
335 (beg (save-excursion (skip-chars-backward chars) (point))) 349 (beg (save-excursion (skip-chars-backward chars) (point)))
336 (end (save-excursion (skip-chars-forward chars) (point))) 350 (end (save-excursion (skip-chars-forward chars) (point)))
337 (this-word (buffer-substring-no-properties beg end)) 351 (this-word (buffer-substring-no-properties beg end))
338 (st-ass (assoc (downcase this-word) 352 (st-ass (assoc (downcase this-word)
339 idlwave-help-special-topic-words)) 353 idlwave-help-special-topic-words))
340 (classtag (and (string-match "self\\." this-word) 354 (classtag (and (string-match "self\\." this-word)
341 (< beg (- end 4)))) 355 (< beg (- end 4))))
@@ -343,7 +357,7 @@ It collects and prints the diagnostics messages."
343 (string-match "\\`\\([^.]+\\)\\." this-word) 357 (string-match "\\`\\([^.]+\\)\\." this-word)
344 (< beg (- end 4)))) 358 (< beg (- end 4))))
345 module keyword cw mod1 mod2 mod3) 359 module keyword cw mod1 mod2 mod3)
346 (if (or arg 360 (if (or arg
347 (and (not st-ass) 361 (and (not st-ass)
348 (not classtag) 362 (not classtag)
349 (not structtag) 363 (not structtag)
@@ -362,15 +376,15 @@ It collects and prints the diagnostics messages."
362 (setq module (list "init" 'fun (match-string 1 str)) 376 (setq module (list "init" 'fun (match-string 1 str))
363 idlwave-current-obj_new-class (match-string 1 str)) 377 idlwave-current-obj_new-class (match-string 1 str))
364 ))))) 378 )))))
365 (cond 379 (cond
366 (arg (setq mod1 module)) 380 (arg (setq mod1 module))
367 381
368 ;; A special topic -- only system help 382 ;; A special topic -- only system help
369 (st-ass (setq mod1 (list (cdr st-ass)))) 383 (st-ass (setq mod1 (list (cdr st-ass))))
370 384
371 ;; A system variable -- only system help 385 ;; A system variable -- only system help
372 ((string-match 386 ((string-match
373 "\\`!\\([a-zA-Z0-9_]+\\)\\(\.\\([A-Za-z0-9_]+\\)\\)?" 387 "\\`!\\([a-zA-Z0-9_]+\\)\\(\.\\([A-Za-z0-9_]+\\)\\)?"
374 this-word) 388 this-word)
375 (let* ((word (match-string-no-properties 1 this-word)) 389 (let* ((word (match-string-no-properties 1 this-word))
376 (entry (assq (idlwave-sintern-sysvar word) 390 (entry (assq (idlwave-sintern-sysvar word)
@@ -382,19 +396,18 @@ It collects and prints the diagnostics messages."
382 (cdr (assq 'tags entry)))))) 396 (cdr (assq 'tags entry))))))
383 (link (nth 1 (assq 'link entry)))) 397 (link (nth 1 (assq 'link entry))))
384 (if tag-target 398 (if tag-target
385 (setq link (idlwave-substitute-link-target link 399 (setq link (idlwave-substitute-link-target link
386 tag-target))) 400 tag-target)))
387 (setq mod1 (list link)))) 401 (setq mod1 (list link))))
388 402
389 ;; An executive command -- only system help 403 ;; An executive command -- only system help
390 ((string-match "^\\.\\([A-Z_]+\\)" this-word) 404 ((string-match "^\\.\\([A-Z_]+\\)" this-word)
391 (let* ((word (match-string 1 this-word)) 405 (let* ((word (match-string 1 this-word))
392 (link (cdr (assoc-string 406 (link (cdr (assoc-string
393 word 407 word
394 idlwave-executive-commands-alist 408 idlwave-executive-commands-alist t))))
395 t))))
396 (setq mod1 (list link)))) 409 (setq mod1 (list link))))
397 410
398 ;; A class -- system OR in-text help (via class__define). 411 ;; A class -- system OR in-text help (via class__define).
399 ((and (eq cw 'class) 412 ((and (eq cw 'class)
400 (or (idlwave-in-quote) ; e.g. obj_new 413 (or (idlwave-in-quote) ; e.g. obj_new
@@ -408,28 +421,28 @@ It collects and prints the diagnostics messages."
408 (name (concat (downcase this-word) "__define")) 421 (name (concat (downcase this-word) "__define"))
409 (link (nth 1 (assq 'link entry)))) 422 (link (nth 1 (assq 'link entry))))
410 (setq mod1 (list link name 'pro)))) 423 (setq mod1 (list link name 'pro))))
411 424
412 ;; A class structure tag (self.BLAH) -- only in-text help available 425 ;; A class structure tag (self.BLAH) -- only in-text help available
413 (classtag 426 (classtag
414 (let ((tag (substring this-word (match-end 0))) 427 (let ((tag (substring this-word (match-end 0)))
415 class-with found-in) 428 class-with found-in)
416 (when (setq class-with 429 (when (setq class-with
417 (idlwave-class-or-superclass-with-tag 430 (idlwave-class-or-superclass-with-tag
418 (nth 2 (idlwave-current-routine)) 431 (nth 2 (idlwave-current-routine))
419 tag)) 432 tag))
420 (setq found-in (idlwave-class-found-in class-with)) 433 (setq found-in (idlwave-class-found-in class-with))
421 (if (assq (idlwave-sintern-class class-with) 434 (if (assq (idlwave-sintern-class class-with)
422 idlwave-system-class-info) 435 idlwave-system-class-info)
423 (error "No help available for system class tags")) 436 (error "No help available for system class tags"))
424 (setq idlwave-help-do-class-struct-tag t) 437 (setq idlwave-help-do-class-struct-tag t)
425 (setq mod1 (list nil 438 (setq mod1 (list nil
426 (if found-in 439 (if found-in
427 (cons (concat found-in "__define") class-with) 440 (cons (concat found-in "__define") class-with)
428 (concat class-with "__define")) 441 (concat class-with "__define"))
429 'pro 442 'pro
430 nil ; no class.... it's a procedure! 443 nil ; no class.... it's a procedure!
431 tag))))) 444 tag)))))
432 445
433 ;; A regular structure tag -- only in text, and if 446 ;; A regular structure tag -- only in text, and if
434 ;; optional `complete-structtag' loaded. 447 ;; optional `complete-structtag' loaded.
435 (structtag 448 (structtag
@@ -440,7 +453,7 @@ It collects and prints the diagnostics messages."
440 (setq idlwave-help-do-struct-tag 453 (setq idlwave-help-do-struct-tag
441 idlwave-structtag-struct-location 454 idlwave-structtag-struct-location
442 mod1 (list nil nil nil nil tag)))) 455 mod1 (list nil nil nil nil tag))))
443 456
444 ;; A routine keyword -- in text or system help 457 ;; A routine keyword -- in text or system help
445 ((and (memq cw '(function-keyword procedure-keyword)) 458 ((and (memq cw '(function-keyword procedure-keyword))
446 (stringp this-word) 459 (stringp this-word)
@@ -482,7 +495,7 @@ It collects and prints the diagnostics messages."
482 (setq mod1 (append (list t) module (list keyword)) 495 (setq mod1 (append (list t) module (list keyword))
483 mod2 (list t this-word 'fun nil) 496 mod2 (list t this-word 'fun nil)
484 mod3 (append (list t) module))))) 497 mod3 (append (list t) module)))))
485 498
486 ;; Everything else 499 ;; Everything else
487 (t 500 (t
488 (setq mod1 (append (list t) module)))) 501 (setq mod1 (append (list t) module))))
@@ -515,14 +528,14 @@ Needs additional info stored in global `idlwave-completion-help-info'."
515 word link) 528 word link)
516 (mouse-set-point ev) 529 (mouse-set-point ev)
517 530
518 531
519 ;; See if we can also find help somewhere, e.g. for multiple classes 532 ;; See if we can also find help somewhere, e.g. for multiple classes
520 (setq word (idlwave-this-word)) 533 (setq word (idlwave-this-word))
521 (if (string= word "") 534 (if (string= word "")
522 (error "No help item selected")) 535 (error "No help item selected"))
523 (setq link (get-text-property 0 'link word)) 536 (setq link (get-text-property 0 'link word))
524 (select-window cw) 537 (select-window cw)
525 (cond 538 (cond
526 ;; Routine name 539 ;; Routine name
527 ((memq what '(procedure function routine)) 540 ((memq what '(procedure function routine))
528 (setq name word) 541 (setq name word)
@@ -533,9 +546,9 @@ Needs additional info stored in global `idlwave-completion-help-info'."
533 type))) 546 type)))
534 (setq link t) ; No specific link valid yet 547 (setq link t) ; No specific link valid yet
535 (if sclasses 548 (if sclasses
536 (setq classes (idlwave-members-only 549 (setq classes (idlwave-members-only
537 classes (cons class sclasses)))) 550 classes (cons class sclasses))))
538 (setq class (idlwave-popup-select ev classes 551 (setq class (idlwave-popup-select ev classes
539 "Select Class" 'sort)))) 552 "Select Class" 'sort))))
540 553
541 ;; XXX is this necessary, given all-method-classes? 554 ;; XXX is this necessary, given all-method-classes?
@@ -555,7 +568,7 @@ Needs additional info stored in global `idlwave-completion-help-info'."
555 type))) 568 type)))
556 (setq link t) ; Link can't be correct yet 569 (setq link t) ; Link can't be correct yet
557 (if sclasses 570 (if sclasses
558 (setq classes (idlwave-members-only 571 (setq classes (idlwave-members-only
559 classes (cons class sclasses)))) 572 classes (cons class sclasses))))
560 (setq class (idlwave-popup-select ev classes 573 (setq class (idlwave-popup-select ev classes
561 "Select Class" 'sort)) 574 "Select Class" 'sort))
@@ -567,14 +580,14 @@ Needs additional info stored in global `idlwave-completion-help-info'."
567 (if (string= (downcase name) "obj_new") 580 (if (string= (downcase name) "obj_new")
568 (setq class idlwave-current-obj_new-class 581 (setq class idlwave-current-obj_new-class
569 name "Init")))) 582 name "Init"))))
570 583
571 ;; Class name 584 ;; Class name
572 ((eq what 'class) 585 ((eq what 'class)
573 (setq class word 586 (setq class word
574 word nil)) 587 word nil))
575 588
576 ;; A special named function to call which sets some of our variables 589 ;; A special named function to call which sets some of our variables
577 ((and (symbolp what) 590 ((and (symbolp what)
578 (fboundp what)) 591 (fboundp what))
579 (funcall what 'set word)) 592 (funcall what 'set word))
580 593
@@ -589,7 +602,7 @@ Needs additional info stored in global `idlwave-completion-help-info'."
589 "Highlight all completions for which help is available and attach link. 602 "Highlight all completions for which help is available and attach link.
590Those words in `idlwave-completion-help-links' have links. The 603Those words in `idlwave-completion-help-links' have links. The
591`idlwave-help-link' face is used for this." 604`idlwave-help-link' face is used for this."
592 (if idlwave-highlight-help-links-in-completion 605 (if idlwave-highlight-help-links-in-completion
593 (with-current-buffer (get-buffer "*Completions*") 606 (with-current-buffer (get-buffer "*Completions*")
594 (save-excursion 607 (save-excursion
595 (let* ((case-fold-search t) 608 (let* ((case-fold-search t)
@@ -605,7 +618,7 @@ Those words in `idlwave-completion-help-links' have links. The
605 (setq beg (match-beginning 1) end (match-end 1) 618 (setq beg (match-beginning 1) end (match-end 1)
606 word (match-string 1) doit nil) 619 word (match-string 1) doit nil)
607 ;; Call special completion function test 620 ;; Call special completion function test
608 (if (and (symbolp what) 621 (if (and (symbolp what)
609 (fboundp what)) 622 (fboundp what))
610 (setq doit (funcall what 'test word)) 623 (setq doit (funcall what 'test word))
611 ;; Look for special link property passed in help-links 624 ;; Look for special link property passed in help-links
@@ -636,13 +649,13 @@ Those words in `idlwave-completion-help-links' have links. The
636 ;; Try to select the return frame. 649 ;; Try to select the return frame.
637 ;; This can crash on slow network connections, obviously when 650 ;; This can crash on slow network connections, obviously when
638 ;; we kill the help frame before the return-frame is selected. 651 ;; we kill the help frame before the return-frame is selected.
639 ;; To protect the workings, we wait for up to one second 652 ;; To protect the workings, we wait for up to one second
640 ;; and check if the return-frame *is* now selected. 653 ;; and check if the return-frame *is* now selected.
641 ;; This is marked "eperimental" since we are not sure when its OK. 654 ;; This is marked "eperimental" since we are not sure when its OK.
642 (let ((maxtime 1.0) (time 0.) (step 0.1)) 655 (let ((maxtime 1.0) (time 0.) (step 0.1))
643 (select-frame idlwave-help-return-frame) 656 (select-frame idlwave-help-return-frame)
644 (while (and (sit-for step) 657 (while (and (sit-for step)
645 (not (eq (selected-frame) 658 (not (eq (selected-frame)
646 idlwave-help-return-frame)) 659 idlwave-help-return-frame))
647 (< (setq time (+ time step)) maxtime))))) 660 (< (setq time (+ time step)) maxtime)))))
648 (delete-frame idlwave-help-frame)) 661 (delete-frame idlwave-help-frame))
@@ -655,7 +668,7 @@ Those words in `idlwave-completion-help-links' have links. The
655(defvar default-toolbar-visible-p) 668(defvar default-toolbar-visible-p)
656 669
657(defun idlwave-help-display-help-window (&optional pos-or-func) 670(defun idlwave-help-display-help-window (&optional pos-or-func)
658 "Display the help window. 671 "Display the help window.
659Move window start to POS-OR-FUNC, if passed as a position, or call it 672Move window start to POS-OR-FUNC, if passed as a position, or call it
660if passed as a function. See `idlwave-help-use-dedicated-frame'." 673if passed as a function. See `idlwave-help-use-dedicated-frame'."
661 (let ((cw (selected-window)) 674 (let ((cw (selected-window))
@@ -666,13 +679,13 @@ if passed as a function. See `idlwave-help-use-dedicated-frame'."
666 (switch-to-buffer buf)) 679 (switch-to-buffer buf))
667 ;; Do it in this frame and save the window configuration 680 ;; Do it in this frame and save the window configuration
668 (if (not (get-buffer-window buf nil)) 681 (if (not (get-buffer-window buf nil))
669 (setq idlwave-help-window-configuration 682 (setq idlwave-help-window-configuration
670 (current-window-configuration))) 683 (current-window-configuration)))
671 (display-buffer buf nil (selected-frame)) 684 (display-buffer buf nil (selected-frame))
672 (select-window (get-buffer-window buf))) 685 (select-window (get-buffer-window buf)))
673 (raise-frame) 686 (raise-frame)
674 (if pos-or-func 687 (if pos-or-func
675 (if (functionp pos-or-func) 688 (if (functionp pos-or-func)
676 (funcall pos-or-func) 689 (funcall pos-or-func)
677 (goto-char pos-or-func) 690 (goto-char pos-or-func)
678 (recenter 0))) 691 (recenter 0)))
@@ -694,31 +707,31 @@ if passed as a function. See `idlwave-help-use-dedicated-frame'."
694 (select-frame idlwave-help-return-frame))) 707 (select-frame idlwave-help-return-frame)))
695 708
696(defun idlwave-online-help (link &optional name type class keyword) 709(defun idlwave-online-help (link &optional name type class keyword)
697 "Display HTML or other special help on a certain topic. 710 "Display HTML or other special help on a certain topic.
698Either loads an HTML link, if LINK is non-nil, or gets special-help on 711Either loads an HTML link, if LINK is non-nil, or gets special-help on
699the optional arguments, if any special help is defined. If LINK is 712the optional arguments, if any special help is defined. If LINK is
700`t', first look up the optional arguments in the routine info list to 713`t', first look up the optional arguments in the routine info list to
701see if a link is set for it. Try extra help functions if necessary." 714see if a link is set for it. Try extra help functions if necessary."
702 ;; Lookup link 715 ;; Lookup link
703 (if (eq link t) 716 (if (eq link t)
704 (let ((entry (idlwave-best-rinfo-assoc name type class 717 (let ((entry (idlwave-best-rinfo-assoc name type class
705 (idlwave-routines) nil t))) 718 (idlwave-routines) nil t)))
706 (cond 719 (cond
707 ;; Try keyword link 720 ;; Try keyword link
708 ((and keyword 721 ((and keyword
709 (setq link (cdr (idlwave-entry-find-keyword entry keyword))))) 722 (setq link (cdr (idlwave-entry-find-keyword entry keyword)))))
710 ;; Default, regular entry link 723 ;; Default, regular entry link
711 (t (setq link (idlwave-entry-has-help entry)))))) 724 (t (setq link (idlwave-entry-has-help entry))))))
712 725
713 (cond 726 (cond
714 ;; An explicit link 727 ;; An explicit link
715 ((stringp link) 728 ((stringp link)
716 (idlwave-help-html-link link)) 729 (idlwave-help-html-link link))
717 730
718 ;; Any extra help 731 ;; Any extra help
719 (idlwave-extra-help-function 732 (idlwave-extra-help-function
720 (idlwave-help-get-special-help name type class keyword)) 733 (idlwave-help-get-special-help name type class keyword))
721 734
722 ;; Nothing worked 735 ;; Nothing worked
723 (t (idlwave-help-error name type class keyword)))) 736 (t (idlwave-help-error name type class keyword))))
724 737
@@ -729,7 +742,7 @@ see if a link is set for it. Try extra help functions if necessary."
729 (help-pos (save-excursion 742 (help-pos (save-excursion
730 (set-buffer (idlwave-help-get-help-buffer)) 743 (set-buffer (idlwave-help-get-help-buffer))
731 (let ((buffer-read-only nil)) 744 (let ((buffer-read-only nil))
732 (funcall idlwave-extra-help-function 745 (funcall idlwave-extra-help-function
733 name type class keyword))))) 746 name type class keyword)))))
734 (if help-pos 747 (if help-pos
735 (idlwave-help-display-help-window help-pos) 748 (idlwave-help-display-help-window help-pos)
@@ -743,6 +756,9 @@ see if a link is set for it. Try extra help functions if necessary."
743 (browse-url-generic-program idlwave-help-browser-generic-program) 756 (browse-url-generic-program idlwave-help-browser-generic-program)
744 ;(browse-url-generic-args idlwave-help-browser-generic-args) 757 ;(browse-url-generic-args idlwave-help-browser-generic-args)
745 full-link) 758 full-link)
759
760 (unless idlwave-help-browse-url-available
761 (error "browse-url is not available -- install it to use HTML help."))
746 762
747 (if (and (memq system-type '(ms-dos windows-nt)) 763 (if (and (memq system-type '(ms-dos windows-nt))
748 idlwave-help-use-hh) 764 idlwave-help-use-hh)
@@ -758,12 +774,12 @@ see if a link is set for it. Try extra help functions if necessary."
758 ;; Just a regular file name (+ anchor name) 774 ;; Just a regular file name (+ anchor name)
759 (unless (and (stringp help-loc) 775 (unless (and (stringp help-loc)
760 (file-directory-p help-loc)) 776 (file-directory-p help-loc))
761 (error 777 (error
762 "Invalid help location; customize `idlwave-html-help-location'.")) 778 "Invalid help location; customize `idlwave-html-help-location'."))
763 (setq full-link (concat 779 (setq full-link (concat
764 "file://" 780 "file://"
765 (expand-file-name 781 (expand-file-name
766 link 782 link
767 (expand-file-name "idl_html_help" help-loc))))) 783 (expand-file-name "idl_html_help" help-loc)))))
768 784
769 ;; Check for a local browser 785 ;; Check for a local browser
@@ -773,11 +789,10 @@ see if a link is set for it. Try extra help functions if necessary."
773 (browse-url full-link)))) 789 (browse-url full-link))))
774 790
775;; A special help routine for source-level syntax help in files. 791;; A special help routine for source-level syntax help in files.
776(defvar idlwave-help-def-pos)
777(defvar idlwave-help-args)
778(defvar idlwave-help-in-header)
779(defvar idlwave-help-fontify-source-code) 792(defvar idlwave-help-fontify-source-code)
780(defvar idlwave-help-source-try-header) 793(defvar idlwave-help-source-try-header)
794(defvar idlwave-current-tags-buffer)
795(defvar idlwave-current-tags-class)
781(defun idlwave-help-with-source (name type class keyword) 796(defun idlwave-help-with-source (name type class keyword)
782 "Provide help for routines not documented in the IDL manuals. Works 797 "Provide help for routines not documented in the IDL manuals. Works
783by loading the routine source file into the help buffer. Depending on 798by loading the routine source file into the help buffer. Depending on
@@ -799,7 +814,7 @@ This function can be used as `idlwave-extra-help-function'."
799 (if class-only ;Help with class? Using "Init" as source. 814 (if class-only ;Help with class? Using "Init" as source.
800 (setq name "Init" 815 (setq name "Init"
801 type 'fun)) 816 type 'fun))
802 (if (not struct-tag) 817 (if (not struct-tag)
803 (setq file 818 (setq file
804 (idlwave-routine-source-file 819 (idlwave-routine-source-file
805 (nth 3 (idlwave-best-rinfo-assoc 820 (nth 3 (idlwave-best-rinfo-assoc
@@ -812,7 +827,7 @@ This function can be used as `idlwave-extra-help-function'."
812 (if (or struct-tag (stringp file)) 827 (if (or struct-tag (stringp file))
813 (progn 828 (progn
814 (setq in-buf ; structure-tag completion is always in current buffer 829 (setq in-buf ; structure-tag completion is always in current buffer
815 (if struct-tag 830 (if struct-tag
816 idlwave-current-tags-buffer 831 idlwave-current-tags-buffer
817 (idlwave-get-buffer-visiting file))) 832 (idlwave-get-buffer-visiting file)))
818 ;; see if file is in a visited buffer, insert those contents 833 ;; see if file is in a visited buffer, insert those contents
@@ -834,19 +849,19 @@ This function can be used as `idlwave-extra-help-function'."
834 ;; Try to find a good place to display 849 ;; Try to find a good place to display
835 (setq def-pos 850 (setq def-pos
836 ;; Find the class structure tag if that's what we're after 851 ;; Find the class structure tag if that's what we're after
837 (cond 852 (cond
838 ;; Class structure tags: find the class or named structure 853 ;; Class structure tags: find the class or named structure
839 ;; definition 854 ;; definition
840 (class-struct-tag 855 (class-struct-tag
841 (save-excursion 856 (save-excursion
842 (setq class 857 (setq class
843 (if (string-match "[a-zA-Z0-9]\\(__\\)" name) 858 (if (string-match "[a-zA-Z0-9]\\(__\\)" name)
844 (substring name 0 (match-beginning 1)) 859 (substring name 0 (match-beginning 1))
845 idlwave-current-tags-class)) 860 idlwave-current-tags-class))
846 (and 861 (and
847 (idlwave-find-class-definition class nil real-class) 862 (idlwave-find-class-definition class nil real-class)
848 (idlwave-find-struct-tag keyword)))) 863 (idlwave-find-struct-tag keyword))))
849 864
850 ;; Generic structure tags: the structure definition 865 ;; Generic structure tags: the structure definition
851 ;; location within the file has been recorded in 866 ;; location within the file has been recorded in
852 ;; `struct-tag' 867 ;; `struct-tag'
@@ -856,14 +871,14 @@ This function can be used as `idlwave-extra-help-function'."
856 (integerp struct-tag) 871 (integerp struct-tag)
857 (goto-char struct-tag) 872 (goto-char struct-tag)
858 (idlwave-find-struct-tag keyword)))) 873 (idlwave-find-struct-tag keyword))))
859 874
860 ;; Just find the routine definition 875 ;; Just find the routine definition
861 (t 876 (t
862 (if class-only (point-min) 877 (if class-only (point-min)
863 (idlwave-help-find-routine-definition name type class keyword)))) 878 (idlwave-help-find-routine-definition name type class keyword))))
864 idlwave-help-def-pos def-pos) 879 idlwave-help-def-pos def-pos)
865 880
866 (if (and idlwave-help-source-try-header 881 (if (and idlwave-help-source-try-header
867 (not (or struct-tag class-struct-tag))) 882 (not (or struct-tag class-struct-tag)))
868 ;; Check if we can find the header 883 ;; Check if we can find the header
869 (save-excursion 884 (save-excursion
@@ -873,7 +888,7 @@ This function can be used as `idlwave-extra-help-function'."
873 idlwave-help-in-header header-pos))) 888 idlwave-help-in-header header-pos)))
874 889
875 (if (or header-pos def-pos) 890 (if (or header-pos def-pos)
876 (progn 891 (progn
877 (if (boundp 'idlwave-help-min-frame-width) 892 (if (boundp 'idlwave-help-min-frame-width)
878 (setq idlwave-help-min-frame-width 80)) 893 (setq idlwave-help-min-frame-width 80))
879 (goto-char (or header-pos def-pos))) 894 (goto-char (or header-pos def-pos)))
@@ -887,7 +902,7 @@ This function can be used as `idlwave-extra-help-function'."
887KEYWORD is ignored. Returns the point of match if successful, nil otherwise." 902KEYWORD is ignored. Returns the point of match if successful, nil otherwise."
888 (save-excursion 903 (save-excursion
889 (goto-char (point-max)) 904 (goto-char (point-max))
890 (if (re-search-backward 905 (if (re-search-backward
891 (concat "^[ \t]*" 906 (concat "^[ \t]*"
892 (if (eq type 'pro) "pro" 907 (if (eq type 'pro) "pro"
893 (if (eq type 'fun) "function" 908 (if (eq type 'fun) "function"
@@ -933,22 +948,22 @@ with spaces allowed between the keyword and the following dash or equal sign.
933If there is a match, we assume it is the keyword description." 948If there is a match, we assume it is the keyword description."
934 (let* ((case-fold-search t) 949 (let* ((case-fold-search t)
935 (rname (if (stringp class) 950 (rname (if (stringp class)
936 (concat 951 (concat
937 "\\(" 952 "\\("
938 ;; Traditional name or class::name 953 ;; Traditional name or class::name
939 "\\(" 954 "\\("
940 "\\(" (regexp-quote (downcase class)) "::\\)?" 955 "\\(" (regexp-quote (downcase class)) "::\\)?"
941 (regexp-quote (downcase name)) 956 (regexp-quote (downcase name))
942 "\\>\\)" 957 "\\>\\)"
943 (concat 958 (concat
944 "\\|" 959 "\\|"
945 ;; class__define or just class 960 ;; class__define or just class
946 (regexp-quote (downcase class)) "\\(__define\\)?") 961 (regexp-quote (downcase class)) "\\(__define\\)?")
947 "\\)") 962 "\\)")
948 (regexp-quote (downcase name)))) 963 (regexp-quote (downcase name))))
949 964
950 ;; NAME tag plus the routine name. The new version is from JD. 965 ;; NAME tag plus the routine name. The new version is from JD.
951 (name-re (concat 966 (name-re (concat
952 "\\(^;+\\*?[ \t]*" 967 "\\(^;+\\*?[ \t]*"
953 idlwave-help-doclib-name 968 idlwave-help-doclib-name
954 "\\([ \t]*:\\|[ \t]*$\\)[ \t]*\\(\n;+[ \t]*\\)*" 969 "\\([ \t]*:\\|[ \t]*$\\)[ \t]*\\(\n;+[ \t]*\\)*"
@@ -983,7 +998,7 @@ If there is a match, we assume it is the keyword description."
983 (regexp-quote (upcase keyword)) 998 (regexp-quote (upcase keyword))
984 "\\>"))) 999 "\\>")))
985 dstart dend name-pos kwds-pos kwd-pos) 1000 dstart dend name-pos kwds-pos kwd-pos)
986 (catch 'exit 1001 (catch 'exit
987 (save-excursion 1002 (save-excursion
988 (goto-char (point-min)) 1003 (goto-char (point-min))
989 (while (and (setq dstart (re-search-forward idlwave-doclib-start nil t)) 1004 (while (and (setq dstart (re-search-forward idlwave-doclib-start nil t))
@@ -991,7 +1006,7 @@ If there is a match, we assume it is the keyword description."
991 ;; found a routine header 1006 ;; found a routine header
992 (goto-char dstart) 1007 (goto-char dstart)
993 (if (setq name-pos (re-search-forward name-re dend t)) 1008 (if (setq name-pos (re-search-forward name-re dend t))
994 (progn 1009 (progn
995 (if keyword 1010 (if keyword
996 ;; We do need a keyword 1011 ;; We do need a keyword
997 (progn 1012 (progn
@@ -1073,7 +1088,7 @@ When DING is non-nil, ring the bell as well."
1073 (idlwave-help-find-first-header nil) 1088 (idlwave-help-find-first-header nil)
1074 (setq idlwave-help-in-header nil) 1089 (setq idlwave-help-in-header nil)
1075 (idlwave-help-toggle-header-match-and-def arg 'top))) 1090 (idlwave-help-toggle-header-match-and-def arg 'top)))
1076 1091
1077(defun idlwave-help-toggle-header-match-and-def (arg &optional top) 1092(defun idlwave-help-toggle-header-match-and-def (arg &optional top)
1078 (interactive "P") 1093 (interactive "P")
1079 (let ((args idlwave-help-args) 1094 (let ((args idlwave-help-args)
@@ -1085,7 +1100,7 @@ When DING is non-nil, ring the bell as well."
1085 (setq pos idlwave-help-def-pos)) 1100 (setq pos idlwave-help-def-pos))
1086 ;; Try to display header 1101 ;; Try to display header
1087 (setq pos (apply 'idlwave-help-find-in-doc-header 1102 (setq pos (apply 'idlwave-help-find-in-doc-header
1088 (if top 1103 (if top
1089 (list (car args) (nth 1 args) (nth 2 args) nil) 1104 (list (car args) (nth 1 args) (nth 2 args) nil)
1090 args))) 1105 args)))
1091 (if pos 1106 (if pos
@@ -1119,7 +1134,7 @@ Useful when source code is displayed as help. See the option
1119 (font-lock-fontify-buffer)) 1134 (font-lock-fontify-buffer))
1120 (set-syntax-table syntax-table))))) 1135 (set-syntax-table syntax-table)))))
1121 1136
1122 1137
1123(defun idlwave-help-error (name type class keyword) 1138(defun idlwave-help-error (name type class keyword)
1124 (error "Can't find help on %s%s %s" 1139 (error "Can't find help on %s%s %s"
1125 (or (and (or class name) (idlwave-make-full-name class name)) 1140 (or (and (or class name) (idlwave-make-full-name class name))
diff --git a/lisp/progmodes/idlw-rinfo.el b/lisp/progmodes/idlw-rinfo.el
index 9f95f8e6a5b..01888922cfe 100644
--- a/lisp/progmodes/idlw-rinfo.el
+++ b/lisp/progmodes/idlw-rinfo.el
@@ -1,9 +1,9 @@
1;;; idlw-rinfo.el --- Routine Information for IDLWAVE 1;;; idlw-rinfo.el --- Routine Information for IDLWAVE
2;; Copyright (c) 1999 Carsten Dominik 2;; Copyright (c) 1999 Carsten Dominik
3;; Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation 3;; Copyright (c) 1999, 2000, 2001,2002,2003,2004,2005 Free Software Foundation
4 4
5;; Author: J.D. Smith <jdsmith@as.arizona.edu> 5;; Author: J.D. Smith <jdsmith@as.arizona.edu>
6;; Version: 5.5 6;; Version: 5.7_22
7;; Keywords: languages 7;; Keywords: languages
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
@@ -30,7 +30,7 @@
30;; information is extracted automatically from the IDL documentation 30;; information is extracted automatically from the IDL documentation
31;; and by talking to IDL. 31;; and by talking to IDL.
32;; 32;;
33;; Created by get_html_rinfo on Sun Oct 10 16:06:07 2004 33;; Created by get_html_rinfo on Wed May 11 14:52:40 2005
34;; IDL version: 6.1 34;; IDL version: 6.1
35;; Number of files scanned: 3393 35;; Number of files scanned: 3393
36;; Number of routines found: 1850 36;; Number of routines found: 1850
@@ -1242,7 +1242,7 @@
1242 ("Init" fun "IDLanROI" (system) "Result = Obj->[%s::]%s([, X [, Y [, Z]]])" ("objects_an11.html" ) ("objects_an4.html" ("BLOCK_SIZE" . 1011320) ("DATA" . 1011322) ("DOUBLE" . 1011324) ("INTERIOR" . 1011326) ("TYPE" . 1011328))) 1242 ("Init" fun "IDLanROI" (system) "Result = Obj->[%s::]%s([, X [, Y [, Z]]])" ("objects_an11.html" ) ("objects_an4.html" ("BLOCK_SIZE" . 1011320) ("DATA" . 1011322) ("DOUBLE" . 1011324) ("INTERIOR" . 1011326) ("TYPE" . 1011328)))
1243 ("Add" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, ROI" ("objects_an20.html")) 1243 ("Add" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, ROI" ("objects_an20.html"))
1244 ("Cleanup" pro "IDLanROIGroup" (system) "Obj->[%s::]%s" ("objects_an21.html")) 1244 ("Cleanup" pro "IDLanROIGroup" (system) "Obj->[%s::]%s" ("objects_an21.html"))
1245 ("GetProperty" pro "IDLanROIGroup" (system) "Obj->[%s::]%s" ("objects_an25.html" ) ("objects_an19.html" ("ALL" . 1011995) ("ROIGROUP_XRANGE " . 1011998) ("ROIGROUP_YRANGE " . 1012000) ("ROIGROUP_ZRANGE " . 1012002))) 1245 ("GetProperty" pro "IDLanROIGroup" (system) "Obj->[%s::]%s" ("objects_an25.html" ) ("objects_an19.html" ("ALL" . 1011995) ("ROIGROUP_XRANGE" . 1011998) ("ROIGROUP_YRANGE" . 1012000) ("ROIGROUP_ZRANGE" . 1012002)))
1246 ("Rotate" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, Axis, Angle" ("objects_an27.html" ("CENTER" . 1004731))) 1246 ("Rotate" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, Axis, Angle" ("objects_an27.html" ("CENTER" . 1004731)))
1247 ("Scale" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, Sx[, Sy[, Sz]]" ("objects_an28.html")) 1247 ("Scale" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, Sx[, Sy[, Sz]]" ("objects_an28.html"))
1248 ("Translate" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, Tx[, Ty[, Tz]]" ("objects_an29.html")) 1248 ("Translate" pro "IDLanROIGroup" (system) "Obj->[%s::]%s, Tx[, Ty[, Tz]]" ("objects_an29.html"))
@@ -1433,120 +1433,120 @@
1433 ("Draw" pro "IDLgrBuffer" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr13.html" ("CREATE_INSTANCE" . 1007844) ("DRAW_INSTANCE" . 1007846))) 1433 ("Draw" pro "IDLgrBuffer" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr13.html" ("CREATE_INSTANCE" . 1007844) ("DRAW_INSTANCE" . 1007846)))
1434 ("Erase" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr14.html" ("COLOR" . 1007879))) 1434 ("Erase" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr14.html" ("COLOR" . 1007879)))
1435 ("GetDeviceInfo" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr16.html" ("ALL" . 1007957) ("MAX_NUM_CLIP_PLANES" . 1007959) ("MAX_TEXTURE_DIMENSIONS" . 1007961) ("MAX_VIEWPORT_DIMENSIONS" . 1007963) ("NAME" . 1007965) ("NUM_CPUS" . 1007967) ("VENDOR" . 1007970) ("VERSION" . 1007972))) 1435 ("GetDeviceInfo" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr16.html" ("ALL" . 1007957) ("MAX_NUM_CLIP_PLANES" . 1007959) ("MAX_TEXTURE_DIMENSIONS" . 1007961) ("MAX_VIEWPORT_DIMENSIONS" . 1007963) ("NAME" . 1007965) ("NUM_CPUS" . 1007967) ("VENDOR" . 1007970) ("VERSION" . 1007972)))
1436 ("GetProperty" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr18.html" ) ("objects_gr11.html" ("ALL" . 1050118) ("COLOR_MODEL" . 1050137) ("DIMENSIONS" . 1050141) ("GRAPHICS_TREE" . 1050143) ("IMAGE_DATA" . 1050202) ("N_COLORS" . 1092707) ("PALETTE" . 1050147) ("QUALITY" . 1050149) ("RESOLUTION " . 1093499) ("SCREEN_DIMENSIONS" . 1050191) ("UNITS " . 1050189) ("ZBUFFER_DATA" . 1050181))) 1436 ("GetProperty" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr18.html" ) ("objects_gr11.html" ("ALL" . 1050118) ("COLOR_MODEL" . 1050137) ("DIMENSIONS" . 1050141) ("GRAPHICS_TREE" . 1050143) ("IMAGE_DATA" . 1050202) ("N_COLORS" . 1092707) ("PALETTE" . 1050147) ("QUALITY" . 1050149) ("RESOLUTION" . 1093499) ("SCREEN_DIMENSIONS" . 1050191) ("UNITS" . 1050189) ("ZBUFFER_DATA" . 1050181)))
1437 ("SetProperty" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr24.html" ) ("objects_gr11.html" ("COLOR_MODEL" . 1050137) ("DIMENSIONS" . 1050141) ("GRAPHICS_TREE" . 1050143) ("PALETTE" . 1050147) ("QUALITY" . 1050149) ("RESOLUTION " . 1093499) ("UNITS " . 1050189))) 1437 ("SetProperty" pro "IDLgrBuffer" (system) "Obj->[%s::]%s" ("objects_gr24.html" ) ("objects_gr11.html" ("COLOR_MODEL" . 1050137) ("DIMENSIONS" . 1050141) ("GRAPHICS_TREE" . 1050143) ("PALETTE" . 1050147) ("QUALITY" . 1050149) ("RESOLUTION" . 1093499) ("UNITS" . 1050189)))
1438 ("GetContiguousPixels" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s()" ("objects_gr15.html")) 1438 ("GetContiguousPixels" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s()" ("objects_gr15.html"))
1439 ("GetFontnames" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr17.html" ("IDL_FONTS" . 1008013) ("STYLES" . 1008015))) 1439 ("GetFontnames" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr17.html" ("IDL_FONTS" . 1008013) ("STYLES" . 1008015)))
1440 ("GetTextDimensions" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr19.html" ("DESCENT" . 1008088) ("PATH" . 1008090))) 1440 ("GetTextDimensions" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr19.html" ("DESCENT" . 1008088) ("PATH" . 1008090)))
1441 ("Init" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s()" ("objects_gr20.html" ) ("objects_gr11.html" ("COLOR_MODEL" . 1050137) ("DIMENSIONS" . 1050141) ("GRAPHICS_TREE" . 1050143) ("N_COLORS" . 1092707) ("PALETTE" . 1050147) ("QUALITY" . 1050149) ("REGISTER_PROPERTIES" . 1050154) ("RESOLUTION " . 1093499) ("UNITS " . 1050189))) 1441 ("Init" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s()" ("objects_gr20.html" ) ("objects_gr11.html" ("COLOR_MODEL" . 1050137) ("DIMENSIONS" . 1050141) ("GRAPHICS_TREE" . 1050143) ("N_COLORS" . 1092707) ("PALETTE" . 1050147) ("QUALITY" . 1050149) ("REGISTER_PROPERTIES" . 1050154) ("RESOLUTION" . 1093499) ("UNITS" . 1050189)))
1442 ("PickData" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s( View, Object, Location, XYZLocation)" ("objects_gr21.html" ("DIMENSIONS" . 1008204) ("PATH" . 1008208) ("PICK_STATUS" . 1008214))) 1442 ("PickData" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s( View, Object, Location, XYZLocation)" ("objects_gr21.html" ("DIMENSIONS" . 1008204) ("PATH" . 1008208) ("PICK_STATUS" . 1008214)))
1443 ("Read" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s()" ("objects_gr22.html")) 1443 ("Read" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s()" ("objects_gr22.html"))
1444 ("Select" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s(Picture, XY)" ("objects_gr23.html" ("DIMENSIONS" . 1008316) ("ORDER" . 1008320) ("SUB_SELECTION" . 1343723) ("UNITS" . 1008323))) 1444 ("Select" fun "IDLgrBuffer" (system) "Result = Obj->[%s::]%s(Picture, XY)" ("objects_gr23.html" ("DIMENSIONS" . 1008316) ("ORDER" . 1008320) ("SUB_SELECTION" . 1343723) ("UNITS" . 1008323)))
1445 ("Cleanup" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr27.html")) 1445 ("Cleanup" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr27.html"))
1446 ("Draw" pro "IDLgrClipboard" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr28.html" ("CMYK" . 1345463) ("FILENAME" . 1008514) ("POSTSCRIPT" . 1008516) ("VECT_SHADING" . 1340124) ("VECT_SORTING" . 1340189) ("VECT_TEXT_RENDER_METHOD" . 1340235) ("VECTOR" . 1008518))) 1446 ("Draw" pro "IDLgrClipboard" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr28.html" ("CMYK" . 1345463) ("FILENAME" . 1008514) ("POSTSCRIPT" . 1008516) ("VECT_SHADING" . 1340124) ("VECT_SORTING" . 1340189) ("VECT_TEXT_RENDER_METHOD" . 1340235) ("VECTOR" . 1008518)))
1447 ("GetDeviceInfo" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr30.html" ("ALL" . 1008688) ("MAX_NUM_CLIP_PLANES" . 1008690) ("MAX_TEXTURE_DIMENSIONS" . 1008692) ("MAX_VIEWPORT_DIMENSIONS" . 1008694) ("NAME" . 1008696) ("NUM_CPUS" . 1008698) ("VENDOR" . 1008701) ("VERSION" . 1008703))) 1447 ("GetDeviceInfo" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr30.html" ("ALL" . 1008688) ("MAX_NUM_CLIP_PLANES" . 1008690) ("MAX_TEXTURE_DIMENSIONS" . 1008692) ("MAX_VIEWPORT_DIMENSIONS" . 1008694) ("NAME" . 1008696) ("NUM_CPUS" . 1008698) ("VENDOR" . 1008701) ("VERSION" . 1008703)))
1448 ("GetProperty" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr32.html" ) ("objects_gr26.html" ("ALL" . 1050377) ("COLOR_MODEL" . 1050391) ("DIMENSIONS" . 1050395) ("GRAPHICS_TREE" . 1050397) ("N_COLORS" . 1050399) ("PALETTE" . 1050401) ("QUALITY" . 1050403) ("RESOLUTION " . 1093541) ("SCREEN_DIMENSIONS" . 1050442) ("UNITS" . 1050439))) 1448 ("GetProperty" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr32.html" ) ("objects_gr26.html" ("ALL" . 1050377) ("COLOR_MODEL" . 1050391) ("DIMENSIONS" . 1050395) ("GRAPHICS_TREE" . 1050397) ("N_COLORS" . 1050399) ("PALETTE" . 1050401) ("QUALITY" . 1050403) ("RESOLUTION" . 1093541) ("SCREEN_DIMENSIONS" . 1050442) ("UNITS" . 1050439)))
1449 ("SetProperty" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr35.html" ) ("objects_gr26.html" ("DIMENSIONS" . 1050395) ("GRAPHICS_TREE" . 1050397) ("PALETTE" . 1050401) ("QUALITY" . 1050403) ("RESOLUTION " . 1093541) ("UNITS" . 1050439))) 1449 ("SetProperty" pro "IDLgrClipboard" (system) "Obj->[%s::]%s" ("objects_gr35.html" ) ("objects_gr26.html" ("DIMENSIONS" . 1050395) ("GRAPHICS_TREE" . 1050397) ("PALETTE" . 1050401) ("QUALITY" . 1050403) ("RESOLUTION" . 1093541) ("UNITS" . 1050439)))
1450 ("GetContiguousPixels" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s()" ("objects_gr29.html")) 1450 ("GetContiguousPixels" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s()" ("objects_gr29.html"))
1451 ("GetFontnames" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr31.html" ("IDL_FONTS" . 1008744) ("STYLES" . 1008746))) 1451 ("GetFontnames" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr31.html" ("IDL_FONTS" . 1008744) ("STYLES" . 1008746)))
1452 ("GetTextDimensions" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr33.html" ("DESCENT" . 1008820) ("PATH" . 1008822))) 1452 ("GetTextDimensions" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr33.html" ("DESCENT" . 1008820) ("PATH" . 1008822)))
1453 ("Init" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s()" ("objects_gr34.html" ) ("objects_gr26.html" ("COLOR_MODEL" . 1050391) ("DIMENSIONS" . 1050395) ("GRAPHICS_TREE" . 1050397) ("N_COLORS" . 1050399) ("PALETTE" . 1050401) ("QUALITY" . 1050403) ("REGISTER_PROPERTIES" . 1050408) ("RESOLUTION " . 1093541) ("UNITS" . 1050439))) 1453 ("Init" fun "IDLgrClipboard" (system) "Result = Obj->[%s::]%s()" ("objects_gr34.html" ) ("objects_gr26.html" ("COLOR_MODEL" . 1050391) ("DIMENSIONS" . 1050395) ("GRAPHICS_TREE" . 1050397) ("N_COLORS" . 1050399) ("PALETTE" . 1050401) ("QUALITY" . 1050403) ("REGISTER_PROPERTIES" . 1050408) ("RESOLUTION" . 1093541) ("UNITS" . 1050439)))
1454 ("Cleanup" pro "IDLgrColorbar" (system) "Obj->[%s::]%s" ("objects_gr38.html")) 1454 ("Cleanup" pro "IDLgrColorbar" (system) "Obj->[%s::]%s" ("objects_gr38.html"))
1455 ("GetProperty" pro "IDLgrColorbar" (system) "Obj->[%s::]%s" ("objects_gr40.html" ) ("objects_gr37.html" ("ALL" . 1050584) ("BLUE_VALUES " . 1050601) ("COLOR " . 1050603) ("DIMENSIONS" . 1050605) ("GREEN_VALUES" . 1050607) ("HIDE" . 1050609) ("MAJOR" . 1050613) ("MINOR" . 1050615) ("PALETTE" . 1050619) ("PARENT" . 1050728) ("RED_VALUES" . 1050726) ("SHOW_AXIS" . 1050623) ("SHOW_OUTLINE" . 1050628) ("SUBTICKLEN" . 1050632) ("THICK" . 1050634) ("THREED " . 1050636) ("TICKFORMAT" . 1050638) ("TICKFRMTDATA" . 1050643) ("TICKLEN" . 1050645) ("TICKTEXT" . 1050647) ("TICKVALUES" . 1050649) ("TITLE " . 1050651) ("XCOORD_CONV" . 1050655) ("XRANGE" . 1050718) ("YCOORD_CONV" . 1050716) ("YRANGE" . 1050708) ("ZCOORD_CONV " . 1050706) ("ZRANGE" . 1050697))) 1455 ("GetProperty" pro "IDLgrColorbar" (system) "Obj->[%s::]%s" ("objects_gr40.html" ) ("objects_gr37.html" ("ALL" . 1050584) ("BLUE_VALUES" . 1050601) ("COLOR" . 1050603) ("DIMENSIONS" . 1050605) ("GREEN_VALUES" . 1050607) ("HIDE" . 1050609) ("MAJOR" . 1050613) ("MINOR" . 1050615) ("PALETTE" . 1050619) ("PARENT" . 1050728) ("RED_VALUES" . 1050726) ("SHOW_AXIS" . 1050623) ("SHOW_OUTLINE" . 1050628) ("SUBTICKLEN" . 1050632) ("THICK" . 1050634) ("THREED" . 1050636) ("TICKFORMAT" . 1050638) ("TICKFRMTDATA" . 1050643) ("TICKLEN" . 1050645) ("TICKTEXT" . 1050647) ("TICKVALUES" . 1050649) ("TITLE" . 1050651) ("XCOORD_CONV" . 1050655) ("XRANGE" . 1050718) ("YCOORD_CONV" . 1050716) ("YRANGE" . 1050708) ("ZCOORD_CONV" . 1050706) ("ZRANGE" . 1050697)))
1456 ("SetProperty" pro "IDLgrColorbar" (system) "Obj->[%s::]%s" ("objects_gr42.html" ) ("objects_gr37.html" ("BLUE_VALUES " . 1050601) ("COLOR " . 1050603) ("DIMENSIONS" . 1050605) ("GREEN_VALUES" . 1050607) ("HIDE" . 1050609) ("MAJOR" . 1050613) ("MINOR" . 1050615) ("PALETTE" . 1050619) ("RED_VALUES" . 1050726) ("SHOW_AXIS" . 1050623) ("SHOW_OUTLINE" . 1050628) ("SUBTICKLEN" . 1050632) ("THICK" . 1050634) ("THREED " . 1050636) ("TICKFORMAT" . 1050638) ("TICKFRMTDATA" . 1050643) ("TICKLEN" . 1050645) ("TICKTEXT" . 1050647) ("TICKVALUES" . 1050649) ("TITLE " . 1050651) ("XCOORD_CONV" . 1050655) ("YCOORD_CONV" . 1050716) ("ZCOORD_CONV " . 1050706))) 1456 ("SetProperty" pro "IDLgrColorbar" (system) "Obj->[%s::]%s" ("objects_gr42.html" ) ("objects_gr37.html" ("BLUE_VALUES" . 1050601) ("COLOR" . 1050603) ("DIMENSIONS" . 1050605) ("GREEN_VALUES" . 1050607) ("HIDE" . 1050609) ("MAJOR" . 1050613) ("MINOR" . 1050615) ("PALETTE" . 1050619) ("RED_VALUES" . 1050726) ("SHOW_AXIS" . 1050623) ("SHOW_OUTLINE" . 1050628) ("SUBTICKLEN" . 1050632) ("THICK" . 1050634) ("THREED" . 1050636) ("TICKFORMAT" . 1050638) ("TICKFRMTDATA" . 1050643) ("TICKLEN" . 1050645) ("TICKTEXT" . 1050647) ("TICKVALUES" . 1050649) ("TITLE" . 1050651) ("XCOORD_CONV" . 1050655) ("YCOORD_CONV" . 1050716) ("ZCOORD_CONV" . 1050706)))
1457 ("ComputeDimensions" fun "IDLgrColorbar" (system) "Result = Obj->[%s::]%s( DestinationObj)" ("objects_gr39.html" ("PATH" . 1009084))) 1457 ("ComputeDimensions" fun "IDLgrColorbar" (system) "Result = Obj->[%s::]%s( DestinationObj)" ("objects_gr39.html" ("PATH" . 1009084)))
1458 ("Init" fun "IDLgrColorbar" (system) "Result = Obj->[%s::]%s([, aRed, aGreen, aBlue])" ("objects_gr41.html" ) ("objects_gr37.html" ("BLUE_VALUES " . 1050601) ("COLOR " . 1050603) ("DIMENSIONS" . 1050605) ("GREEN_VALUES" . 1050607) ("HIDE" . 1050609) ("MAJOR" . 1050613) ("MINOR" . 1050615) ("PALETTE" . 1050619) ("RED_VALUES" . 1050726) ("SHOW_AXIS" . 1050623) ("SHOW_OUTLINE" . 1050628) ("SUBTICKLEN" . 1050632) ("THICK" . 1050634) ("THREED " . 1050636) ("TICKFORMAT" . 1050638) ("TICKFRMTDATA" . 1050643) ("TICKLEN" . 1050645) ("TICKTEXT" . 1050647) ("TICKVALUES" . 1050649) ("TITLE " . 1050651) ("XCOORD_CONV" . 1050655) ("YCOORD_CONV" . 1050716) ("ZCOORD_CONV " . 1050706))) 1458 ("Init" fun "IDLgrColorbar" (system) "Result = Obj->[%s::]%s([, aRed, aGreen, aBlue])" ("objects_gr41.html" ) ("objects_gr37.html" ("BLUE_VALUES" . 1050601) ("COLOR" . 1050603) ("DIMENSIONS" . 1050605) ("GREEN_VALUES" . 1050607) ("HIDE" . 1050609) ("MAJOR" . 1050613) ("MINOR" . 1050615) ("PALETTE" . 1050619) ("RED_VALUES" . 1050726) ("SHOW_AXIS" . 1050623) ("SHOW_OUTLINE" . 1050628) ("SUBTICKLEN" . 1050632) ("THICK" . 1050634) ("THREED" . 1050636) ("TICKFORMAT" . 1050638) ("TICKFRMTDATA" . 1050643) ("TICKLEN" . 1050645) ("TICKTEXT" . 1050647) ("TICKVALUES" . 1050649) ("TITLE" . 1050651) ("XCOORD_CONV" . 1050655) ("YCOORD_CONV" . 1050716) ("ZCOORD_CONV" . 1050706)))
1459 ("AdjustLabelOffsets" pro "IDLgrContour" (system) "Obj->[%s::]%s, LevelIndex, LabelOffsets" ("objects_gr45.html")) 1459 ("AdjustLabelOffsets" pro "IDLgrContour" (system) "Obj->[%s::]%s, LevelIndex, LabelOffsets" ("objects_gr45.html"))
1460 ("Cleanup" pro "IDLgrContour" (system) "Obj->[%s::]%s" ("objects_gr46.html")) 1460 ("Cleanup" pro "IDLgrContour" (system) "Obj->[%s::]%s" ("objects_gr46.html"))
1461 ("GetLabelInfo" pro "IDLgrContour" (system) "Obj->[%s::]%s, Destination, LevelIndex" ("objects_gr48.html" ("LABEL_OBJECTS" . 1009508) ("LABEL_OFFSETS" . 1009503) ("LABEL_POLYLINES" . 1009505))) 1461 ("GetLabelInfo" pro "IDLgrContour" (system) "Obj->[%s::]%s, Destination, LevelIndex" ("objects_gr48.html" ("LABEL_OBJECTS" . 1009508) ("LABEL_OFFSETS" . 1009503) ("LABEL_POLYLINES" . 1009505)))
1462 ("GetProperty" pro "IDLgrContour" (system) "Obj->[%s::]%s" ("objects_gr49.html" ) ("objects_gr44.html" ("ALL" . 1050990) ("ALPHA_CHANNEL" . 1312243) ("AM_PM" . 1051012) ("ANISOTROPY" . 1051014) ("C_COLOR" . 1051029) ("C_FILL_PATTERN" . 1051031) ("C_LABEL_INTERVAL" . 1051033) ("C_LABEL_NOGAPS" . 1051035) ("C_LABEL_OBJECTS" . 1051037) ("C_LABEL_SHOW" . 1051044) ("C_LINESTYLE" . 1051046) ("C_THICK" . 1051056) ("C_USE_LABEL_COLOR" . 1066031) ("C_USE_LABEL_ORIENTATION" . 1051060) ("C_VALUE" . 1051062) ("CLIP_PLANES" . 1051064) ("COLOR" . 1051069) ("DATA_VALUES" . 1051071) ("DAYS_OF_WEEK" . 1051073) ("DEPTH_OFFSET " . 1051075) ("DEPTH_TEST_DISABLE" . 1051081) ("DEPTH_TEST_FUNCTION" . 1093566) ("DEPTH_WRITE_DISABLE" . 1093567) ("DOUBLE_DATA" . 1093568) ("DOUBLE_GEOM" . 1051083) ("DOWNHILL " . 1051085) ("FILL" . 1051087) ("GEOM" . 1051284) ("HIDE" . 1051101) ("LABEL_FONT" . 1051105) ("LABEL_FORMAT" . 1051107) ("LABEL_UNITS" . 1051116) ("MAX_VALUE" . 1051130) ("MIN_VALUE" . 1051134) ("MONTHS " . 1051132) ("N_LEVELS" . 1051138) ("PARENT" . 1051274) ("PLANAR" . 1051272) ("POLYGONS" . 1051144) ("SHADE_RANGE " . 1094439) ("SHADING" . 1051149) ("TICKINTERVAL " . 1051154) ("TICKLEN" . 1051156) ("USE_TEXT_ALIGNMENTS" . 1051158) ("XCOORD_CONV" . 1051162) ("XRANGE" . 1051264) ("YCOORD_CONV" . 1051168) ("YRANGE " . 1051250) ("ZCOORD_CONV " . 1051174) ("ZRANGE" . 1051240))) 1462 ("GetProperty" pro "IDLgrContour" (system) "Obj->[%s::]%s" ("objects_gr49.html" ) ("objects_gr44.html" ("ALL" . 1050990) ("ALPHA_CHANNEL" . 1312243) ("AM_PM" . 1051012) ("ANISOTROPY" . 1051014) ("C_COLOR" . 1051029) ("C_FILL_PATTERN" . 1051031) ("C_LABEL_INTERVAL" . 1051033) ("C_LABEL_NOGAPS" . 1051035) ("C_LABEL_OBJECTS" . 1051037) ("C_LABEL_SHOW" . 1051044) ("C_LINESTYLE" . 1051046) ("C_THICK" . 1051056) ("C_USE_LABEL_COLOR" . 1066031) ("C_USE_LABEL_ORIENTATION" . 1051060) ("C_VALUE" . 1051062) ("CLIP_PLANES" . 1051064) ("COLOR" . 1051069) ("DATA_VALUES" . 1051071) ("DAYS_OF_WEEK" . 1051073) ("DEPTH_OFFSET" . 1051075) ("DEPTH_TEST_DISABLE" . 1051081) ("DEPTH_TEST_FUNCTION" . 1093566) ("DEPTH_WRITE_DISABLE" . 1093567) ("DOUBLE_DATA" . 1093568) ("DOUBLE_GEOM" . 1051083) ("DOWNHILL" . 1051085) ("FILL" . 1051087) ("GEOM" . 1051284) ("HIDE" . 1051101) ("LABEL_FONT" . 1051105) ("LABEL_FORMAT" . 1051107) ("LABEL_UNITS" . 1051116) ("MAX_VALUE" . 1051130) ("MIN_VALUE" . 1051134) ("MONTHS" . 1051132) ("N_LEVELS" . 1051138) ("PARENT" . 1051274) ("PLANAR" . 1051272) ("POLYGONS" . 1051144) ("SHADE_RANGE" . 1094439) ("SHADING" . 1051149) ("TICKINTERVAL" . 1051154) ("TICKLEN" . 1051156) ("USE_TEXT_ALIGNMENTS" . 1051158) ("XCOORD_CONV" . 1051162) ("XRANGE" . 1051264) ("YCOORD_CONV" . 1051168) ("YRANGE" . 1051250) ("ZCOORD_CONV" . 1051174) ("ZRANGE" . 1051240)))
1463 ("SetProperty" pro "IDLgrContour" (system) "Obj->[%s::]%s" ("objects_gr51.html" ) ("objects_gr44.html" ("ALPHA_CHANNEL" . 1312243) ("AM_PM" . 1051012) ("ANISOTROPY" . 1051014) ("C_COLOR" . 1051029) ("C_FILL_PATTERN" . 1051031) ("C_LABEL_INTERVAL" . 1051033) ("C_LABEL_NOGAPS" . 1051035) ("C_LABEL_OBJECTS" . 1051037) ("C_LABEL_SHOW" . 1051044) ("C_LINESTYLE" . 1051046) ("C_THICK" . 1051056) ("C_USE_LABEL_COLOR" . 1066031) ("C_USE_LABEL_ORIENTATION" . 1051060) ("C_VALUE" . 1051062) ("CLIP_PLANES" . 1051064) ("COLOR" . 1051069) ("DATA_VALUES" . 1051071) ("DAYS_OF_WEEK" . 1051073) ("DEPTH_OFFSET " . 1051075) ("DEPTH_TEST_DISABLE" . 1051081) ("DEPTH_TEST_FUNCTION" . 1093566) ("DEPTH_WRITE_DISABLE" . 1093567) ("DOUBLE_DATA" . 1093568) ("DOUBLE_GEOM" . 1051083) ("DOWNHILL " . 1051085) ("FILL" . 1051087) ("GEOMX" . 1051282) ("GEOMY" . 1051091) ("GEOMZ" . 1051093) ("HIDE" . 1051101) ("LABEL_FONT" . 1051105) ("LABEL_FORMAT" . 1051107) ("LABEL_UNITS" . 1051116) ("MAX_VALUE" . 1051130) ("MIN_VALUE" . 1051134) ("MONTHS " . 1051132) ("N_LEVELS" . 1051138) ("PLANAR" . 1051272) ("POLYGONS" . 1051144) ("SHADE_RANGE " . 1094439) ("SHADING" . 1051149) ("TICKINTERVAL " . 1051154) ("TICKLEN" . 1051156) ("USE_TEXT_ALIGNMENTS" . 1051158) ("XCOORD_CONV" . 1051162) ("YCOORD_CONV" . 1051168) ("ZCOORD_CONV " . 1051174))) 1463 ("SetProperty" pro "IDLgrContour" (system) "Obj->[%s::]%s" ("objects_gr51.html" ) ("objects_gr44.html" ("ALPHA_CHANNEL" . 1312243) ("AM_PM" . 1051012) ("ANISOTROPY" . 1051014) ("C_COLOR" . 1051029) ("C_FILL_PATTERN" . 1051031) ("C_LABEL_INTERVAL" . 1051033) ("C_LABEL_NOGAPS" . 1051035) ("C_LABEL_OBJECTS" . 1051037) ("C_LABEL_SHOW" . 1051044) ("C_LINESTYLE" . 1051046) ("C_THICK" . 1051056) ("C_USE_LABEL_COLOR" . 1066031) ("C_USE_LABEL_ORIENTATION" . 1051060) ("C_VALUE" . 1051062) ("CLIP_PLANES" . 1051064) ("COLOR" . 1051069) ("DATA_VALUES" . 1051071) ("DAYS_OF_WEEK" . 1051073) ("DEPTH_OFFSET" . 1051075) ("DEPTH_TEST_DISABLE" . 1051081) ("DEPTH_TEST_FUNCTION" . 1093566) ("DEPTH_WRITE_DISABLE" . 1093567) ("DOUBLE_DATA" . 1093568) ("DOUBLE_GEOM" . 1051083) ("DOWNHILL" . 1051085) ("FILL" . 1051087) ("GEOMX" . 1051282) ("GEOMY" . 1051091) ("GEOMZ" . 1051093) ("HIDE" . 1051101) ("LABEL_FONT" . 1051105) ("LABEL_FORMAT" . 1051107) ("LABEL_UNITS" . 1051116) ("MAX_VALUE" . 1051130) ("MIN_VALUE" . 1051134) ("MONTHS" . 1051132) ("N_LEVELS" . 1051138) ("PLANAR" . 1051272) ("POLYGONS" . 1051144) ("SHADE_RANGE" . 1094439) ("SHADING" . 1051149) ("TICKINTERVAL" . 1051154) ("TICKLEN" . 1051156) ("USE_TEXT_ALIGNMENTS" . 1051158) ("XCOORD_CONV" . 1051162) ("YCOORD_CONV" . 1051168) ("ZCOORD_CONV" . 1051174)))
1464 ("GetCTM" fun "IDLgrContour" (system) "Result = Obj->[%s::]%s()" ("objects_gr47.html" ("DESTINATION" . 1009456) ("PATH" . 1009458) ("TOP" . 1009464))) 1464 ("GetCTM" fun "IDLgrContour" (system) "Result = Obj->[%s::]%s()" ("objects_gr47.html" ("DESTINATION" . 1009456) ("PATH" . 1009458) ("TOP" . 1009464)))
1465 ("Init" fun "IDLgrContour" (system) "Result = Obj->[%s::]%s([, Values])" ("objects_gr50.html" ) ("objects_gr44.html" ("ALPHA_CHANNEL" . 1312243) ("AM_PM" . 1051012) ("ANISOTROPY" . 1051014) ("C_COLOR" . 1051029) ("C_FILL_PATTERN" . 1051031) ("C_LABEL_INTERVAL" . 1051033) ("C_LABEL_NOGAPS" . 1051035) ("C_LABEL_OBJECTS" . 1051037) ("C_LABEL_SHOW" . 1051044) ("C_LINESTYLE" . 1051046) ("C_THICK" . 1051056) ("C_USE_LABEL_COLOR" . 1066031) ("C_USE_LABEL_ORIENTATION" . 1051060) ("C_VALUE" . 1051062) ("CLIP_PLANES" . 1051064) ("COLOR" . 1051069) ("DATA_VALUES" . 1051071) ("DAYS_OF_WEEK" . 1051073) ("DEPTH_OFFSET " . 1051075) ("DEPTH_TEST_DISABLE" . 1051081) ("DEPTH_TEST_FUNCTION" . 1093566) ("DEPTH_WRITE_DISABLE" . 1093567) ("DOUBLE_DATA" . 1093568) ("DOUBLE_GEOM" . 1051083) ("DOWNHILL " . 1051085) ("FILL" . 1051087) ("GEOMX" . 1051282) ("GEOMY" . 1051091) ("GEOMZ" . 1051093) ("HIDE" . 1051101) ("LABEL_FONT" . 1051105) ("LABEL_FORMAT" . 1051107) ("LABEL_FRMTDATA " . 1051113) ("LABEL_UNITS" . 1051116) ("MAX_VALUE" . 1051130) ("MIN_VALUE" . 1051134) ("MONTHS " . 1051132) ("N_LEVELS" . 1051138) ("PALETTE " . 1051140) ("PLANAR" . 1051272) ("POLYGONS" . 1051144) ("REGISTER_PROPERTIES" . 1051147) ("SHADE_RANGE " . 1094439) ("SHADING" . 1051149) ("TICKINTERVAL " . 1051154) ("TICKLEN" . 1051156) ("USE_TEXT_ALIGNMENTS" . 1051158) ("XCOORD_CONV" . 1051162) ("YCOORD_CONV" . 1051168) ("ZCOORD_CONV " . 1051174))) 1465 ("Init" fun "IDLgrContour" (system) "Result = Obj->[%s::]%s([, Values])" ("objects_gr50.html" ) ("objects_gr44.html" ("ALPHA_CHANNEL" . 1312243) ("AM_PM" . 1051012) ("ANISOTROPY" . 1051014) ("C_COLOR" . 1051029) ("C_FILL_PATTERN" . 1051031) ("C_LABEL_INTERVAL" . 1051033) ("C_LABEL_NOGAPS" . 1051035) ("C_LABEL_OBJECTS" . 1051037) ("C_LABEL_SHOW" . 1051044) ("C_LINESTYLE" . 1051046) ("C_THICK" . 1051056) ("C_USE_LABEL_COLOR" . 1066031) ("C_USE_LABEL_ORIENTATION" . 1051060) ("C_VALUE" . 1051062) ("CLIP_PLANES" . 1051064) ("COLOR" . 1051069) ("DATA_VALUES" . 1051071) ("DAYS_OF_WEEK" . 1051073) ("DEPTH_OFFSET" . 1051075) ("DEPTH_TEST_DISABLE" . 1051081) ("DEPTH_TEST_FUNCTION" . 1093566) ("DEPTH_WRITE_DISABLE" . 1093567) ("DOUBLE_DATA" . 1093568) ("DOUBLE_GEOM" . 1051083) ("DOWNHILL" . 1051085) ("FILL" . 1051087) ("GEOMX" . 1051282) ("GEOMY" . 1051091) ("GEOMZ" . 1051093) ("HIDE" . 1051101) ("LABEL_FONT" . 1051105) ("LABEL_FORMAT" . 1051107) ("LABEL_FRMTDATA" . 1051113) ("LABEL_UNITS" . 1051116) ("MAX_VALUE" . 1051130) ("MIN_VALUE" . 1051134) ("MONTHS" . 1051132) ("N_LEVELS" . 1051138) ("PALETTE" . 1051140) ("PLANAR" . 1051272) ("POLYGONS" . 1051144) ("REGISTER_PROPERTIES" . 1051147) ("SHADE_RANGE" . 1094439) ("SHADING" . 1051149) ("TICKINTERVAL" . 1051154) ("TICKLEN" . 1051156) ("USE_TEXT_ALIGNMENTS" . 1051158) ("XCOORD_CONV" . 1051162) ("YCOORD_CONV" . 1051168) ("ZCOORD_CONV" . 1051174)))
1466 ("Cleanup" pro "IDLgrFont" (system) "Obj->[%s::]%s" ("objects_gr54.html")) 1466 ("Cleanup" pro "IDLgrFont" (system) "Obj->[%s::]%s" ("objects_gr54.html"))
1467 ("GetProperty" pro "IDLgrFont" (system) "Obj->[%s::]%s" ("objects_gr55.html" ) ("objects_gr53.html" ("ALL" . 1051913) ("SIZE" . 1051936) ("SUBSTITUTE" . 1051938) ("THICK" . 1051940))) 1467 ("GetProperty" pro "IDLgrFont" (system) "Obj->[%s::]%s" ("objects_gr55.html" ) ("objects_gr53.html" ("ALL" . 1051913) ("SIZE" . 1051936) ("SUBSTITUTE" . 1051938) ("THICK" . 1051940)))
1468 ("SetProperty" pro "IDLgrFont" (system) "Obj->[%s::]%s" ("objects_gr57.html" ) ("objects_gr53.html" ("SIZE" . 1051936) ("SUBSTITUTE" . 1051938) ("THICK" . 1051940))) 1468 ("SetProperty" pro "IDLgrFont" (system) "Obj->[%s::]%s" ("objects_gr57.html" ) ("objects_gr53.html" ("SIZE" . 1051936) ("SUBSTITUTE" . 1051938) ("THICK" . 1051940)))
1469 ("Init" fun "IDLgrFont" (system) "Result = Obj->[%s::]%s([, Fontname])" ("objects_gr56.html" ) ("objects_gr53.html" ("SIZE" . 1051936) ("SUBSTITUTE" . 1051938) ("THICK" . 1051940))) 1469 ("Init" fun "IDLgrFont" (system) "Result = Obj->[%s::]%s([, Fontname])" ("objects_gr56.html" ) ("objects_gr53.html" ("SIZE" . 1051936) ("SUBSTITUTE" . 1051938) ("THICK" . 1051940)))
1470 ("Cleanup" pro "IDLgrImage" (system) "Obj->[%s::]%s" ("objects_gr60.html")) 1470 ("Cleanup" pro "IDLgrImage" (system) "Obj->[%s::]%s" ("objects_gr60.html"))
1471 ("GetProperty" pro "IDLgrImage" (system) "Obj->[%s::]%s" ("objects_gr62.html" ) ("objects_gr59.html" ("ALL " . 1052050) ("BLEND_FUNCTION" . 1052068) ("CHANNEL" . 1052124) ("CLIP_PLANES" . 1287882) ("DATA" . 1052132) ("DEPTH_TEST_DISABLE" . 1095165) ("DEPTH_TEST_FUNCTION" . 1095212) ("DEPTH_WRITE_DISABLE" . 1095251) ("DIMENSIONS" . 1095169) ("GREYSCALE" . 1052136) ("HIDE" . 1052140) ("INTERLEAVE" . 1052144) ("INTERPOLATE" . 1052150) ("LOCATION" . 1052152) ("NO_COPY" . 1052156) ("ORDER" . 1052158) ("PALETTE " . 1052160) ("PARENT" . 1052253) ("SUB_RECT" . 1052171) ("XCOORD_CONV" . 1052175) ("XRANGE" . 1052243) ("YCOORD_CONV" . 1052181) ("YRANGE" . 1052233) ("ZCOORD_CONV" . 1052187) ("ZRANGE" . 1052223))) 1471 ("GetProperty" pro "IDLgrImage" (system) "Obj->[%s::]%s" ("objects_gr62.html" ) ("objects_gr59.html" ("ALL" . 1052050) ("BLEND_FUNCTION" . 1052068) ("CHANNEL" . 1052124) ("CLIP_PLANES" . 1287882) ("DATA" . 1052132) ("DEPTH_TEST_DISABLE" . 1095165) ("DEPTH_TEST_FUNCTION" . 1095212) ("DEPTH_WRITE_DISABLE" . 1095251) ("DIMENSIONS" . 1095169) ("GREYSCALE" . 1052136) ("HIDE" . 1052140) ("INTERLEAVE" . 1052144) ("INTERPOLATE" . 1052150) ("LOCATION" . 1052152) ("NO_COPY" . 1052156) ("ORDER" . 1052158) ("PALETTE" . 1052160) ("PARENT" . 1052253) ("SUB_RECT" . 1052171) ("XCOORD_CONV" . 1052175) ("XRANGE" . 1052243) ("YCOORD_CONV" . 1052181) ("YRANGE" . 1052233) ("ZCOORD_CONV" . 1052187) ("ZRANGE" . 1052223)))
1472 ("SetProperty" pro "IDLgrImage" (system) "Obj->[%s::]%s" ("objects_gr64.html" ) ("objects_gr59.html" ("BLEND_FUNCTION" . 1052068) ("CHANNEL" . 1052124) ("CLIP_PLANES" . 1287882) ("DATA" . 1052132) ("DEPTH_TEST_DISABLE" . 1095165) ("DEPTH_TEST_FUNCTION" . 1095212) ("DEPTH_WRITE_DISABLE" . 1095251) ("DIMENSIONS" . 1095169) ("GREYSCALE" . 1052136) ("HIDE" . 1052140) ("INTERLEAVE" . 1052144) ("INTERPOLATE" . 1052150) ("LOCATION" . 1052152) ("NO_COPY" . 1052156) ("ORDER" . 1052158) ("PALETTE " . 1052160) ("RESET_DATA " . 1093772) ("SHARE_DATA" . 1052169) ("SUB_RECT" . 1052171) ("XCOORD_CONV" . 1052175) ("YCOORD_CONV" . 1052181) ("ZCOORD_CONV" . 1052187))) 1472 ("SetProperty" pro "IDLgrImage" (system) "Obj->[%s::]%s" ("objects_gr64.html" ) ("objects_gr59.html" ("BLEND_FUNCTION" . 1052068) ("CHANNEL" . 1052124) ("CLIP_PLANES" . 1287882) ("DATA" . 1052132) ("DEPTH_TEST_DISABLE" . 1095165) ("DEPTH_TEST_FUNCTION" . 1095212) ("DEPTH_WRITE_DISABLE" . 1095251) ("DIMENSIONS" . 1095169) ("GREYSCALE" . 1052136) ("HIDE" . 1052140) ("INTERLEAVE" . 1052144) ("INTERPOLATE" . 1052150) ("LOCATION" . 1052152) ("NO_COPY" . 1052156) ("ORDER" . 1052158) ("PALETTE" . 1052160) ("RESET_DATA" . 1093772) ("SHARE_DATA" . 1052169) ("SUB_RECT" . 1052171) ("XCOORD_CONV" . 1052175) ("YCOORD_CONV" . 1052181) ("ZCOORD_CONV" . 1052187)))
1473 ("GetCTM" fun "IDLgrImage" (system) "Result = Obj->[%s::]%s()" ("objects_gr61.html" ("DESTINATION" . 1010164) ("PATH" . 1010166) ("TOP" . 1010172))) 1473 ("GetCTM" fun "IDLgrImage" (system) "Result = Obj->[%s::]%s()" ("objects_gr61.html" ("DESTINATION" . 1010164) ("PATH" . 1010166) ("TOP" . 1010172)))
1474 ("Init" fun "IDLgrImage" (system) "Result = Obj->[%s::]%s([, ImageData])" ("objects_gr63.html" ) ("objects_gr59.html" ("BLEND_FUNCTION" . 1052068) ("CHANNEL" . 1052124) ("CLIP_PLANES" . 1287882) ("DATA" . 1052132) ("DEPTH_TEST_DISABLE" . 1095165) ("DEPTH_TEST_FUNCTION" . 1095212) ("DEPTH_WRITE_DISABLE" . 1095251) ("DIMENSIONS" . 1095169) ("GREYSCALE" . 1052136) ("HIDE" . 1052140) ("INTERLEAVE" . 1052144) ("INTERPOLATE" . 1052150) ("LOCATION" . 1052152) ("NO_COPY" . 1052156) ("ORDER" . 1052158) ("PALETTE " . 1052160) ("REGISTER_PROPERTIES" . 1052251) ("RESET_DATA " . 1093772) ("SHARE_DATA" . 1052169) ("SUB_RECT" . 1052171) ("XCOORD_CONV" . 1052175) ("YCOORD_CONV" . 1052181) ("ZCOORD_CONV" . 1052187))) 1474 ("Init" fun "IDLgrImage" (system) "Result = Obj->[%s::]%s([, ImageData])" ("objects_gr63.html" ) ("objects_gr59.html" ("BLEND_FUNCTION" . 1052068) ("CHANNEL" . 1052124) ("CLIP_PLANES" . 1287882) ("DATA" . 1052132) ("DEPTH_TEST_DISABLE" . 1095165) ("DEPTH_TEST_FUNCTION" . 1095212) ("DEPTH_WRITE_DISABLE" . 1095251) ("DIMENSIONS" . 1095169) ("GREYSCALE" . 1052136) ("HIDE" . 1052140) ("INTERLEAVE" . 1052144) ("INTERPOLATE" . 1052150) ("LOCATION" . 1052152) ("NO_COPY" . 1052156) ("ORDER" . 1052158) ("PALETTE" . 1052160) ("REGISTER_PROPERTIES" . 1052251) ("RESET_DATA" . 1093772) ("SHARE_DATA" . 1052169) ("SUB_RECT" . 1052171) ("XCOORD_CONV" . 1052175) ("YCOORD_CONV" . 1052181) ("ZCOORD_CONV" . 1052187)))
1475 ("Cleanup" pro "IDLgrLegend" (system) "Obj->[%s::]%s" ("objects_gr67.html")) 1475 ("Cleanup" pro "IDLgrLegend" (system) "Obj->[%s::]%s" ("objects_gr67.html"))
1476 ("GetProperty" pro "IDLgrLegend" (system) "Obj->[%s::]%s" ("objects_gr69.html" ) ("objects_gr66.html" ("ALL " . 1053896) ("BORDER_GAP" . 1053903) ("COLUMNS" . 1053905) ("FILL_COLOR" . 1053907) ("FONT" . 1053909) ("GAP" . 1053912) ("GLYPH_WIDTH" . 1053914) ("HIDE" . 1053916) ("ITEM_COLOR" . 1069308) ("ITEM_LINESTYLE " . 1053922) ("ITEM_NAME" . 1053935) ("ITEM_OBJECT " . 1053937) ("ITEM_THICK" . 1053940) ("ITEM_TYPE" . 1053942) ("OUTLINE_COLOR " . 1053948) ("OUTLINE_THICK" . 1053950) ("PARENT" . 1055362) ("SHOW_FILL" . 1053952) ("SHOW_OUTLINE " . 1053956) ("TEXT_COLOR " . 1053960) ("TITLE" . 1053962) ("XCOORD_CONV " . 1053966) ("XRANGE " . 1055399) ("YCOORD_CONV " . 1053972) ("YRANGE " . 1055389) ("ZCOORD_CONV" . 1053978) ("ZRANGE" . 1070059))) 1476 ("GetProperty" pro "IDLgrLegend" (system) "Obj->[%s::]%s" ("objects_gr69.html" ) ("objects_gr66.html" ("ALL" . 1053896) ("BORDER_GAP" . 1053903) ("COLUMNS" . 1053905) ("FILL_COLOR" . 1053907) ("FONT" . 1053909) ("GAP" . 1053912) ("GLYPH_WIDTH" . 1053914) ("HIDE" . 1053916) ("ITEM_COLOR" . 1069308) ("ITEM_LINESTYLE" . 1053922) ("ITEM_NAME" . 1053935) ("ITEM_OBJECT" . 1053937) ("ITEM_THICK" . 1053940) ("ITEM_TYPE" . 1053942) ("OUTLINE_COLOR" . 1053948) ("OUTLINE_THICK" . 1053950) ("PARENT" . 1055362) ("SHOW_FILL" . 1053952) ("SHOW_OUTLINE" . 1053956) ("TEXT_COLOR" . 1053960) ("TITLE" . 1053962) ("XCOORD_CONV" . 1053966) ("XRANGE" . 1055399) ("YCOORD_CONV" . 1053972) ("YRANGE" . 1055389) ("ZCOORD_CONV" . 1053978) ("ZRANGE" . 1070059)))
1477 ("SetProperty" pro "IDLgrLegend" (system) "Obj->[%s::]%s" ("objects_gr71.html" ) ("objects_gr66.html" ("BORDER_GAP" . 1053903) ("COLUMNS" . 1053905) ("FILL_COLOR" . 1053907) ("FONT" . 1053909) ("GAP" . 1053912) ("GLYPH_WIDTH" . 1053914) ("HIDE" . 1053916) ("ITEM_COLOR" . 1069308) ("ITEM_LINESTYLE " . 1053922) ("ITEM_NAME" . 1053935) ("ITEM_OBJECT " . 1053937) ("ITEM_THICK" . 1053940) ("ITEM_TYPE" . 1053942) ("OUTLINE_COLOR " . 1053948) ("OUTLINE_THICK" . 1053950) ("RECOMPUTE " . 1055360) ("SHOW_FILL" . 1053952) ("SHOW_OUTLINE " . 1053956) ("TEXT_COLOR " . 1053960) ("TITLE" . 1053962) ("XCOORD_CONV " . 1053966) ("YCOORD_CONV " . 1053972) ("ZCOORD_CONV" . 1053978))) 1477 ("SetProperty" pro "IDLgrLegend" (system) "Obj->[%s::]%s" ("objects_gr71.html" ) ("objects_gr66.html" ("BORDER_GAP" . 1053903) ("COLUMNS" . 1053905) ("FILL_COLOR" . 1053907) ("FONT" . 1053909) ("GAP" . 1053912) ("GLYPH_WIDTH" . 1053914) ("HIDE" . 1053916) ("ITEM_COLOR" . 1069308) ("ITEM_LINESTYLE" . 1053922) ("ITEM_NAME" . 1053935) ("ITEM_OBJECT" . 1053937) ("ITEM_THICK" . 1053940) ("ITEM_TYPE" . 1053942) ("OUTLINE_COLOR" . 1053948) ("OUTLINE_THICK" . 1053950) ("RECOMPUTE" . 1055360) ("SHOW_FILL" . 1053952) ("SHOW_OUTLINE" . 1053956) ("TEXT_COLOR" . 1053960) ("TITLE" . 1053962) ("XCOORD_CONV" . 1053966) ("YCOORD_CONV" . 1053972) ("ZCOORD_CONV" . 1053978)))
1478 ("ComputeDimensions" fun "IDLgrLegend" (system) "Result = Obj->[%s::]%s( DestinationObject)" ("objects_gr68.html" ("PATH" . 1010563))) 1478 ("ComputeDimensions" fun "IDLgrLegend" (system) "Result = Obj->[%s::]%s( DestinationObject)" ("objects_gr68.html" ("PATH" . 1010563)))
1479 ("Init" fun "IDLgrLegend" (system) "Result = Obj->[%s::]%s([, aItemNames])" ("objects_gr70.html" ) ("objects_gr66.html" ("BORDER_GAP" . 1053903) ("COLUMNS" . 1053905) ("FILL_COLOR" . 1053907) ("FONT" . 1053909) ("GAP" . 1053912) ("GLYPH_WIDTH" . 1053914) ("HIDE" . 1053916) ("ITEM_COLOR" . 1069308) ("ITEM_LINESTYLE " . 1053922) ("ITEM_NAME" . 1053935) ("ITEM_OBJECT " . 1053937) ("ITEM_THICK" . 1053940) ("ITEM_TYPE" . 1053942) ("OUTLINE_COLOR " . 1053948) ("OUTLINE_THICK" . 1053950) ("SHOW_FILL" . 1053952) ("SHOW_OUTLINE " . 1053956) ("TEXT_COLOR " . 1053960) ("TITLE" . 1053962) ("XCOORD_CONV " . 1053966) ("YCOORD_CONV " . 1053972) ("ZCOORD_CONV" . 1053978))) 1479 ("Init" fun "IDLgrLegend" (system) "Result = Obj->[%s::]%s([, aItemNames])" ("objects_gr70.html" ) ("objects_gr66.html" ("BORDER_GAP" . 1053903) ("COLUMNS" . 1053905) ("FILL_COLOR" . 1053907) ("FONT" . 1053909) ("GAP" . 1053912) ("GLYPH_WIDTH" . 1053914) ("HIDE" . 1053916) ("ITEM_COLOR" . 1069308) ("ITEM_LINESTYLE" . 1053922) ("ITEM_NAME" . 1053935) ("ITEM_OBJECT" . 1053937) ("ITEM_THICK" . 1053940) ("ITEM_TYPE" . 1053942) ("OUTLINE_COLOR" . 1053948) ("OUTLINE_THICK" . 1053950) ("SHOW_FILL" . 1053952) ("SHOW_OUTLINE" . 1053956) ("TEXT_COLOR" . 1053960) ("TITLE" . 1053962) ("XCOORD_CONV" . 1053966) ("YCOORD_CONV" . 1053972) ("ZCOORD_CONV" . 1053978)))
1480 ("Cleanup" pro "IDLgrLight" (system) "Obj->[%s::]%s" ("objects_gr74.html")) 1480 ("Cleanup" pro "IDLgrLight" (system) "Obj->[%s::]%s" ("objects_gr74.html"))
1481 ("GetProperty" pro "IDLgrLight" (system) "Obj->[%s::]%s" ("objects_gr76.html" ) ("objects_gr73.html" ("ALL" . 1055555) ("ATTENUATION " . 1055572) ("COLOR" . 1055581) ("CONEANGLE" . 1055583) ("DIRECTION" . 1055585) ("FOCUS" . 1055588) ("HIDE" . 1055590) ("INTENSITY" . 1055595) ("LOCATION" . 1055597) ("PALETTE" . 1088211) ("PARENT" . 1055635) ("TYPE" . 1093801) ("XCOORD_CONV " . 1055609) ("YCOORD_CONV" . 1055615) ("ZCOORD_CONV " . 1055621))) 1481 ("GetProperty" pro "IDLgrLight" (system) "Obj->[%s::]%s" ("objects_gr76.html" ) ("objects_gr73.html" ("ALL" . 1055555) ("ATTENUATION" . 1055572) ("COLOR" . 1055581) ("CONEANGLE" . 1055583) ("DIRECTION" . 1055585) ("FOCUS" . 1055588) ("HIDE" . 1055590) ("INTENSITY" . 1055595) ("LOCATION" . 1055597) ("PALETTE" . 1088211) ("PARENT" . 1055635) ("TYPE" . 1093801) ("XCOORD_CONV" . 1055609) ("YCOORD_CONV" . 1055615) ("ZCOORD_CONV" . 1055621)))
1482 ("SetProperty" pro "IDLgrLight" (system) "Obj->[%s::]%s" ("objects_gr78.html" ) ("objects_gr73.html" ("ATTENUATION " . 1055572) ("COLOR" . 1055581) ("CONEANGLE" . 1055583) ("DIRECTION" . 1055585) ("FOCUS" . 1055588) ("HIDE" . 1055590) ("INTENSITY" . 1055595) ("LOCATION" . 1055597) ("PALETTE" . 1088211) ("TYPE" . 1093801) ("XCOORD_CONV " . 1055609) ("YCOORD_CONV" . 1055615) ("ZCOORD_CONV " . 1055621))) 1482 ("SetProperty" pro "IDLgrLight" (system) "Obj->[%s::]%s" ("objects_gr78.html" ) ("objects_gr73.html" ("ATTENUATION" . 1055572) ("COLOR" . 1055581) ("CONEANGLE" . 1055583) ("DIRECTION" . 1055585) ("FOCUS" . 1055588) ("HIDE" . 1055590) ("INTENSITY" . 1055595) ("LOCATION" . 1055597) ("PALETTE" . 1088211) ("TYPE" . 1093801) ("XCOORD_CONV" . 1055609) ("YCOORD_CONV" . 1055615) ("ZCOORD_CONV" . 1055621)))
1483 ("GetCTM" fun "IDLgrLight" (system) "Result = Obj->[%s::]%s()" ("objects_gr75.html" ("DESTINATION" . 1010900) ("PATH" . 1010902) ("TOP" . 1010908))) 1483 ("GetCTM" fun "IDLgrLight" (system) "Result = Obj->[%s::]%s()" ("objects_gr75.html" ("DESTINATION" . 1010900) ("PATH" . 1010902) ("TOP" . 1010908)))
1484 ("Init" fun "IDLgrLight" (system) "Result = Obj->[%s::]%s()" ("objects_gr77.html" ) ("objects_gr73.html" ("ATTENUATION " . 1055572) ("COLOR" . 1055581) ("CONEANGLE" . 1055583) ("DIRECTION" . 1055585) ("FOCUS" . 1055588) ("HIDE" . 1055590) ("INTENSITY" . 1055595) ("LOCATION" . 1055597) ("PALETTE" . 1088211) ("REGISTER_PROPERTIES" . 1088158) ("TYPE" . 1093801) ("XCOORD_CONV " . 1055609) ("YCOORD_CONV" . 1055615) ("ZCOORD_CONV " . 1055621))) 1484 ("Init" fun "IDLgrLight" (system) "Result = Obj->[%s::]%s()" ("objects_gr77.html" ) ("objects_gr73.html" ("ATTENUATION" . 1055572) ("COLOR" . 1055581) ("CONEANGLE" . 1055583) ("DIRECTION" . 1055585) ("FOCUS" . 1055588) ("HIDE" . 1055590) ("INTENSITY" . 1055595) ("LOCATION" . 1055597) ("PALETTE" . 1088211) ("REGISTER_PROPERTIES" . 1088158) ("TYPE" . 1093801) ("XCOORD_CONV" . 1055609) ("YCOORD_CONV" . 1055615) ("ZCOORD_CONV" . 1055621)))
1485 ("Add" pro "IDLgrModel" (system) "Obj->[%s::]%s, Object" ("objects_gr81.html" ("ALIAS" . 1011206) ("POSITION" . 1011208))) 1485 ("Add" pro "IDLgrModel" (system) "Obj->[%s::]%s, Object" ("objects_gr81.html" ("ALIAS" . 1011206) ("POSITION" . 1011208)))
1486 ("Cleanup" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr82.html")) 1486 ("Cleanup" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr82.html"))
1487 ("Draw" pro "IDLgrModel" (system) "Obj->[%s::]%s, Destination, Picture" ("objects_gr83.html")) 1487 ("Draw" pro "IDLgrModel" (system) "Obj->[%s::]%s, Destination, Picture" ("objects_gr83.html"))
1488 ("GetProperty" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr86.html" ) ("objects_gr80.html" ("ALL " . 1055726) ("CLIP_PLANES " . 1055740) ("DEPTH_TEST_DISABLE" . 1094976) ("DEPTH_TEST_FUNCTION" . 1095322) ("DEPTH_WRITE_DISABLE" . 1095361) ("HIDE " . 1088312) ("LIGHTING" . 1055751) ("PARENT " . 1055781) ("SELECT_TARGET " . 1093831) ("TRANSFORM " . 1055764))) 1488 ("GetProperty" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr86.html" ) ("objects_gr80.html" ("ALL" . 1055726) ("CLIP_PLANES" . 1055740) ("DEPTH_TEST_DISABLE" . 1094976) ("DEPTH_TEST_FUNCTION" . 1095322) ("DEPTH_WRITE_DISABLE" . 1095361) ("HIDE" . 1088312) ("LIGHTING" . 1055751) ("PARENT" . 1055781) ("SELECT_TARGET" . 1093831) ("TRANSFORM" . 1055764)))
1489 ("Reset" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr88.html")) 1489 ("Reset" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr88.html"))
1490 ("Rotate" pro "IDLgrModel" (system) "Obj->[%s::]%s, Axis, Angle" ("objects_gr89.html" ("PREMULTIPLY" . 1011584))) 1490 ("Rotate" pro "IDLgrModel" (system) "Obj->[%s::]%s, Axis, Angle" ("objects_gr89.html" ("PREMULTIPLY" . 1011584)))
1491 ("Scale" pro "IDLgrModel" (system) "Obj->[%s::]%s, Sx, Sy, Sz" ("objects_gr90.html" ("PREMULTIPLY" . 1011618))) 1491 ("Scale" pro "IDLgrModel" (system) "Obj->[%s::]%s, Sx, Sy, Sz" ("objects_gr90.html" ("PREMULTIPLY" . 1011618)))
1492 ("SetProperty" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr91.html" ) ("objects_gr80.html" ("CLIP_PLANES " . 1055740) ("DEPTH_TEST_DISABLE" . 1094976) ("DEPTH_TEST_FUNCTION" . 1095322) ("DEPTH_WRITE_DISABLE" . 1095361) ("HIDE " . 1088312) ("LIGHTING" . 1055751) ("SELECT_TARGET " . 1093831) ("TRANSFORM " . 1055764))) 1492 ("SetProperty" pro "IDLgrModel" (system) "Obj->[%s::]%s" ("objects_gr91.html" ) ("objects_gr80.html" ("CLIP_PLANES" . 1055740) ("DEPTH_TEST_DISABLE" . 1094976) ("DEPTH_TEST_FUNCTION" . 1095322) ("DEPTH_WRITE_DISABLE" . 1095361) ("HIDE" . 1088312) ("LIGHTING" . 1055751) ("SELECT_TARGET" . 1093831) ("TRANSFORM" . 1055764)))
1493 ("Translate" pro "IDLgrModel" (system) "Obj->[%s::]%s, Tx, Ty, Tz" ("objects_gr92.html" ("PREMULTIPLY" . 1011687))) 1493 ("Translate" pro "IDLgrModel" (system) "Obj->[%s::]%s, Tx, Ty, Tz" ("objects_gr92.html" ("PREMULTIPLY" . 1011687)))
1494 ("GetByName" fun "IDLgrModel" (system) "Result = Obj->[%s::]%s(Name)" ("objects_gr84.html")) 1494 ("GetByName" fun "IDLgrModel" (system) "Result = Obj->[%s::]%s(Name)" ("objects_gr84.html"))
1495 ("GetCTM" fun "IDLgrModel" (system) "Result = Obj->[%s::]%s()" ("objects_gr85.html" ("DESTINATION" . 1011369) ("PATH" . 1011371) ("TOP" . 1011377))) 1495 ("GetCTM" fun "IDLgrModel" (system) "Result = Obj->[%s::]%s()" ("objects_gr85.html" ("DESTINATION" . 1011369) ("PATH" . 1011371) ("TOP" . 1011377)))
1496 ("Init" fun "IDLgrModel" (system) "Result = Obj->[%s::]%s()" ("objects_gr87.html" ) ("objects_gr80.html" ("CLIP_PLANES " . 1055740) ("DEPTH_TEST_DISABLE" . 1094976) ("DEPTH_TEST_FUNCTION" . 1095322) ("DEPTH_WRITE_DISABLE" . 1095361) ("HIDE " . 1088312) ("LIGHTING" . 1055751) ("REGISTER_PROPERTIES" . 1055779) ("SELECT_TARGET " . 1093831) ("TRANSFORM " . 1055764))) 1496 ("Init" fun "IDLgrModel" (system) "Result = Obj->[%s::]%s()" ("objects_gr87.html" ) ("objects_gr80.html" ("CLIP_PLANES" . 1055740) ("DEPTH_TEST_DISABLE" . 1094976) ("DEPTH_TEST_FUNCTION" . 1095322) ("DEPTH_WRITE_DISABLE" . 1095361) ("HIDE" . 1088312) ("LIGHTING" . 1055751) ("REGISTER_PROPERTIES" . 1055779) ("SELECT_TARGET" . 1093831) ("TRANSFORM" . 1055764)))
1497 ("Cleanup" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr95.html")) 1497 ("Cleanup" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr95.html"))
1498 ("GetProperty" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr96.html" ) ("objects_gr94.html" ("ALL " . 1055838) ("BITRATE " . 1055845) ("FILENAME" . 1055875) ("FORMAT " . 1055877) ("FRAME_RATE " . 1055881) ("IFRAME_GAP" . 1055927) ("INTERLACED" . 1055934) ("MOTION_VEC_LENGTH" . 1055936) ("QUALITY" . 1055964) ("SCALE" . 1055967) ("STATISTICS" . 1055969))) 1498 ("GetProperty" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr96.html" ) ("objects_gr94.html" ("ALL" . 1055838) ("BITRATE" . 1055845) ("FILENAME" . 1055875) ("FORMAT" . 1055877) ("FRAME_RATE" . 1055881) ("IFRAME_GAP" . 1055927) ("INTERLACED" . 1055934) ("MOTION_VEC_LENGTH" . 1055936) ("QUALITY" . 1055964) ("SCALE" . 1055967) ("STATISTICS" . 1055969)))
1499 ("Put" pro "IDLgrMPEG" (system) "Obj->[%s::]%s, Image[, Frame]" ("objects_gr98.html")) 1499 ("Put" pro "IDLgrMPEG" (system) "Obj->[%s::]%s, Image[, Frame]" ("objects_gr98.html"))
1500 ("Save" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr99.html" ("FILENAME" . 1012062))) 1500 ("Save" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr99.html" ("FILENAME" . 1012062)))
1501 ("SetProperty" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr100.html" ) ("objects_gr94.html" ("BITRATE " . 1055845) ("FILENAME" . 1055875) ("FORMAT " . 1055877) ("FRAME_RATE " . 1055881) ("IFRAME_GAP" . 1055927) ("INTERLACED" . 1055934) ("MOTION_VEC_LENGTH" . 1055936) ("QUALITY" . 1055964) ("SCALE" . 1055967) ("STATISTICS" . 1055969))) 1501 ("SetProperty" pro "IDLgrMPEG" (system) "Obj->[%s::]%s" ("objects_gr100.html" ) ("objects_gr94.html" ("BITRATE" . 1055845) ("FILENAME" . 1055875) ("FORMAT" . 1055877) ("FRAME_RATE" . 1055881) ("IFRAME_GAP" . 1055927) ("INTERLACED" . 1055934) ("MOTION_VEC_LENGTH" . 1055936) ("QUALITY" . 1055964) ("SCALE" . 1055967) ("STATISTICS" . 1055969)))
1502 ("Init" fun "IDLgrMPEG" (system) "Result = Obj->[%s::]%s()" ("objects_gr97.html" ) ("objects_gr94.html" ("BITRATE " . 1055845) ("FILENAME" . 1055875) ("FORMAT " . 1055877) ("FRAME_RATE " . 1055881) ("IFRAME_GAP" . 1055927) ("INTERLACED" . 1055934) ("MOTION_VEC_LENGTH" . 1055936) ("QUALITY" . 1055964) ("SCALE" . 1055967) ("STATISTICS" . 1055969) ("TEMP_DIRECTORY " . 1055971))) 1502 ("Init" fun "IDLgrMPEG" (system) "Result = Obj->[%s::]%s()" ("objects_gr97.html" ) ("objects_gr94.html" ("BITRATE" . 1055845) ("FILENAME" . 1055875) ("FORMAT" . 1055877) ("FRAME_RATE" . 1055881) ("IFRAME_GAP" . 1055927) ("INTERLACED" . 1055934) ("MOTION_VEC_LENGTH" . 1055936) ("QUALITY" . 1055964) ("SCALE" . 1055967) ("STATISTICS" . 1055969) ("TEMP_DIRECTORY" . 1055971)))
1503 ("Cleanup" pro "IDLgrPalette" (system) "Obj->[%s::]%s" ("objects_gr103.html")) 1503 ("Cleanup" pro "IDLgrPalette" (system) "Obj->[%s::]%s" ("objects_gr103.html"))
1504 ("GetProperty" pro "IDLgrPalette" (system) "Obj->[%s::]%s" ("objects_gr105.html" ) ("objects_gr102.html" ("ALL" . 1056048) ("BLUE_VALUES " . 1056069) ("BOTTOM_STRETCH " . 1056071) ("GAMMA" . 1056073) ("GREEN_VALUES" . 1056075) ("N_COLORS" . 1056093) ("RED_VALUES" . 1056079) ("TOP_STRETCH " . 1056081))) 1504 ("GetProperty" pro "IDLgrPalette" (system) "Obj->[%s::]%s" ("objects_gr105.html" ) ("objects_gr102.html" ("ALL" . 1056048) ("BLUE_VALUES" . 1056069) ("BOTTOM_STRETCH" . 1056071) ("GAMMA" . 1056073) ("GREEN_VALUES" . 1056075) ("N_COLORS" . 1056093) ("RED_VALUES" . 1056079) ("TOP_STRETCH" . 1056081)))
1505 ("LoadCT" pro "IDLgrPalette" (system) "Obj->[%s::]%s, TableNum" ("objects_gr107.html" ("FILE" . 1012379))) 1505 ("LoadCT" pro "IDLgrPalette" (system) "Obj->[%s::]%s, TableNum" ("objects_gr107.html" ("FILE" . 1012379)))
1506 ("SetProperty" pro "IDLgrPalette" (system) "Obj->[%s::]%s" ("objects_gr110.html" ) ("objects_gr102.html" ("BLUE_VALUES " . 1056069) ("BOTTOM_STRETCH " . 1056071) ("GAMMA" . 1056073) ("GREEN_VALUES" . 1056075) ("RED_VALUES" . 1056079) ("TOP_STRETCH " . 1056081))) 1506 ("SetProperty" pro "IDLgrPalette" (system) "Obj->[%s::]%s" ("objects_gr110.html" ) ("objects_gr102.html" ("BLUE_VALUES" . 1056069) ("BOTTOM_STRETCH" . 1056071) ("GAMMA" . 1056073) ("GREEN_VALUES" . 1056075) ("RED_VALUES" . 1056079) ("TOP_STRETCH" . 1056081)))
1507 ("SetRGB" pro "IDLgrPalette" (system) "Obj->[%s::]%s, Index, Red, Green, Blue" ("objects_gr109.html")) 1507 ("SetRGB" pro "IDLgrPalette" (system) "Obj->[%s::]%s, Index, Red, Green, Blue" ("objects_gr109.html"))
1508 ("GetRGB" fun "IDLgrPalette" (system) "Result = Obj->[%s::]%s(Index)" ("objects_gr104.html")) 1508 ("GetRGB" fun "IDLgrPalette" (system) "Result = Obj->[%s::]%s(Index)" ("objects_gr104.html"))
1509 ("Init" fun "IDLgrPalette" (system) "Result = Obj->[%s::]%s(, aRed, aGreen, aBlue)" ("objects_gr106.html" ) ("objects_gr102.html" ("BLUE_VALUES " . 1056069) ("BOTTOM_STRETCH " . 1056071) ("GAMMA" . 1056073) ("GREEN_VALUES" . 1056075) ("RED_VALUES" . 1056079) ("TOP_STRETCH " . 1056081))) 1509 ("Init" fun "IDLgrPalette" (system) "Result = Obj->[%s::]%s(, aRed, aGreen, aBlue)" ("objects_gr106.html" ) ("objects_gr102.html" ("BLUE_VALUES" . 1056069) ("BOTTOM_STRETCH" . 1056071) ("GAMMA" . 1056073) ("GREEN_VALUES" . 1056075) ("RED_VALUES" . 1056079) ("TOP_STRETCH" . 1056081)))
1510 ("NearestColor" fun "IDLgrPalette" (system) "Result = Obj->[%s::]%s(Red, Green, Blue)" ("objects_gr108.html")) 1510 ("NearestColor" fun "IDLgrPalette" (system) "Result = Obj->[%s::]%s(Red, Green, Blue)" ("objects_gr108.html"))
1511 ("Cleanup" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr113.html")) 1511 ("Cleanup" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr113.html"))
1512 ("GetProperty" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr114.html" ) ("objects_gr112.html" ("ALL" . 1056154) ("ORIENTATION " . 1056165) ("PATTERN" . 1056169) ("SPACING " . 1056171) ("STYLE" . 1056173))) 1512 ("GetProperty" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr114.html" ) ("objects_gr112.html" ("ALL" . 1056154) ("ORIENTATION" . 1056165) ("PATTERN" . 1056169) ("SPACING" . 1056171) ("STYLE" . 1056173)))
1513 ("SetProperty" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr116.html" ) ("objects_gr112.html" ("ORIENTATION " . 1056165) ("PATTERN" . 1056169) ("SPACING " . 1056171) ("STYLE" . 1056173))) 1513 ("SetProperty" pro "IDLgrPattern" (system) "Obj->[%s::]%s" ("objects_gr116.html" ) ("objects_gr112.html" ("ORIENTATION" . 1056165) ("PATTERN" . 1056169) ("SPACING" . 1056171) ("STYLE" . 1056173)))
1514 ("Init" fun "IDLgrPattern" (system) "Result = Obj->[%s::]%s([, Style])" ("objects_gr115.html" ) ("objects_gr112.html" ("ORIENTATION " . 1056165) ("PATTERN" . 1056169) ("SPACING " . 1056171) ("STYLE" . 1056173) ("THICK " . 1056179))) 1514 ("Init" fun "IDLgrPattern" (system) "Result = Obj->[%s::]%s([, Style])" ("objects_gr115.html" ) ("objects_gr112.html" ("ORIENTATION" . 1056165) ("PATTERN" . 1056169) ("SPACING" . 1056171) ("STYLE" . 1056173) ("THICK" . 1056179)))
1515 ("Cleanup" pro "IDLgrPlot" (system) "Obj->[%s::]%s" ("objects_gr119.html")) 1515 ("Cleanup" pro "IDLgrPlot" (system) "Obj->[%s::]%s" ("objects_gr119.html"))
1516 ("GetProperty" pro "IDLgrPlot" (system) "Obj->[%s::]%s" ("objects_gr121.html" ) ("objects_gr118.html" ("ALL" . 1056243) ("ALPHA_CHANNEL" . 1056258) ("CLIP_PLANES " . 1314217) ("COLOR " . 1056263) ("DATA" . 1056381) ("DEPTH_TEST_DISABLE" . 1094982) ("DEPTH_TEST_FUNCTION" . 1095444) ("DEPTH_WRITE_DISABLE" . 1095483) ("DOUBLE " . 1056269) ("HIDE " . 1056271) ("HISTOGRAM" . 1092755) ("LINESTYLE" . 1056277) ("MAX_VALUE " . 1056290) ("MIN_VALUE " . 1056292) ("NSUM" . 1056296) ("PALETTE" . 1056298) ("PARENT " . 1056392) ("POLAR " . 1056389) ("SYMBOL " . 1056306) ("THICK" . 1056311) ("VERT_COLORS" . 1056317) ("XCOORD_CONV" . 1056319) ("XRANGE " . 1056325) ("YCOORD_CONV " . 1056327) ("YRANGE" . 1056333) ("ZCOORD_CONV" . 1056335) ("ZRANGE" . 1074286) ("ZVALUE" . 1056400))) 1516 ("GetProperty" pro "IDLgrPlot" (system) "Obj->[%s::]%s" ("objects_gr121.html" ) ("objects_gr118.html" ("ALL" . 1056243) ("ALPHA_CHANNEL" . 1056258) ("CLIP_PLANES" . 1314217) ("COLOR" . 1056263) ("DATA" . 1056381) ("DEPTH_TEST_DISABLE" . 1094982) ("DEPTH_TEST_FUNCTION" . 1095444) ("DEPTH_WRITE_DISABLE" . 1095483) ("DOUBLE" . 1056269) ("HIDE" . 1056271) ("HISTOGRAM" . 1092755) ("LINESTYLE" . 1056277) ("MAX_VALUE" . 1056290) ("MIN_VALUE" . 1056292) ("NSUM" . 1056296) ("PALETTE" . 1056298) ("PARENT" . 1056392) ("POLAR" . 1056389) ("SYMBOL" . 1056306) ("THICK" . 1056311) ("VERT_COLORS" . 1056317) ("XCOORD_CONV" . 1056319) ("XRANGE" . 1056325) ("YCOORD_CONV" . 1056327) ("YRANGE" . 1056333) ("ZCOORD_CONV" . 1056335) ("ZRANGE" . 1074286) ("ZVALUE" . 1056400)))
1517 ("SetProperty" pro "IDLgrPlot" (system) "Obj->[%s::]%s" ("objects_gr123.html" ) ("objects_gr118.html" ("ALPHA_CHANNEL" . 1056258) ("CLIP_PLANES " . 1314217) ("COLOR " . 1056263) ("DATAX" . 1056378) ("DATAY" . 1056267) ("DEPTH_TEST_DISABLE" . 1094982) ("DEPTH_TEST_FUNCTION" . 1095444) ("DEPTH_WRITE_DISABLE" . 1095483) ("DOUBLE " . 1056269) ("HIDE " . 1056271) ("HISTOGRAM" . 1092755) ("LINESTYLE" . 1056277) ("MAX_VALUE " . 1056290) ("MIN_VALUE " . 1056292) ("NSUM" . 1056296) ("PALETTE" . 1056298) ("POLAR " . 1056389) ("RESET_DATA " . 1093845) ("SHARE_DATA " . 1056304) ("SYMBOL " . 1056306) ("THICK" . 1056311) ("VERT_COLORS" . 1056317) ("XCOORD_CONV" . 1056319) ("XRANGE " . 1056325) ("YCOORD_CONV " . 1056327) ("YRANGE" . 1056333) ("ZCOORD_CONV" . 1056335) ("ZVALUE" . 1056400))) 1517 ("SetProperty" pro "IDLgrPlot" (system) "Obj->[%s::]%s" ("objects_gr123.html" ) ("objects_gr118.html" ("ALPHA_CHANNEL" . 1056258) ("CLIP_PLANES" . 1314217) ("COLOR" . 1056263) ("DATAX" . 1056378) ("DATAY" . 1056267) ("DEPTH_TEST_DISABLE" . 1094982) ("DEPTH_TEST_FUNCTION" . 1095444) ("DEPTH_WRITE_DISABLE" . 1095483) ("DOUBLE" . 1056269) ("HIDE" . 1056271) ("HISTOGRAM" . 1092755) ("LINESTYLE" . 1056277) ("MAX_VALUE" . 1056290) ("MIN_VALUE" . 1056292) ("NSUM" . 1056296) ("PALETTE" . 1056298) ("POLAR" . 1056389) ("RESET_DATA" . 1093845) ("SHARE_DATA" . 1056304) ("SYMBOL" . 1056306) ("THICK" . 1056311) ("VERT_COLORS" . 1056317) ("XCOORD_CONV" . 1056319) ("XRANGE" . 1056325) ("YCOORD_CONV" . 1056327) ("YRANGE" . 1056333) ("ZCOORD_CONV" . 1056335) ("ZVALUE" . 1056400)))
1518 ("GetCTM" fun "IDLgrPlot" (system) "Result = Obj->[%s::]%s()" ("objects_gr120.html" ("DESTINATION" . 1012838) ("PATH" . 1012840) ("TOP" . 1012846))) 1518 ("GetCTM" fun "IDLgrPlot" (system) "Result = Obj->[%s::]%s()" ("objects_gr120.html" ("DESTINATION" . 1012838) ("PATH" . 1012840) ("TOP" . 1012846)))
1519 ("Init" fun "IDLgrPlot" (system) "Result = Obj->[%s::]%s([, [X,] Y])" ("objects_gr122.html" ) ("objects_gr118.html" ("ALPHA_CHANNEL" . 1056258) ("CLIP_PLANES " . 1314217) ("COLOR " . 1056263) ("DATAX" . 1056378) ("DATAY" . 1056267) ("DEPTH_TEST_DISABLE" . 1094982) ("DEPTH_TEST_FUNCTION" . 1095444) ("DEPTH_WRITE_DISABLE" . 1095483) ("DOUBLE " . 1056269) ("HIDE " . 1056271) ("HISTOGRAM" . 1092755) ("LINESTYLE" . 1056277) ("MAX_VALUE " . 1056290) ("MIN_VALUE " . 1056292) ("NSUM" . 1056296) ("PALETTE" . 1056298) ("POLAR " . 1056389) ("REGISTER_PROPERTIES" . 1056302) ("RESET_DATA " . 1093845) ("SHARE_DATA " . 1056304) ("SYMBOL " . 1056306) ("THICK" . 1056311) ("USE_ZVALUE" . 1056313) ("VERT_COLORS" . 1056317) ("XCOORD_CONV" . 1056319) ("XRANGE " . 1056325) ("YCOORD_CONV " . 1056327) ("YRANGE" . 1056333) ("ZCOORD_CONV" . 1056335) ("ZVALUE" . 1056400))) 1519 ("Init" fun "IDLgrPlot" (system) "Result = Obj->[%s::]%s([, [X,] Y])" ("objects_gr122.html" ) ("objects_gr118.html" ("ALPHA_CHANNEL" . 1056258) ("CLIP_PLANES" . 1314217) ("COLOR" . 1056263) ("DATAX" . 1056378) ("DATAY" . 1056267) ("DEPTH_TEST_DISABLE" . 1094982) ("DEPTH_TEST_FUNCTION" . 1095444) ("DEPTH_WRITE_DISABLE" . 1095483) ("DOUBLE" . 1056269) ("HIDE" . 1056271) ("HISTOGRAM" . 1092755) ("LINESTYLE" . 1056277) ("MAX_VALUE" . 1056290) ("MIN_VALUE" . 1056292) ("NSUM" . 1056296) ("PALETTE" . 1056298) ("POLAR" . 1056389) ("REGISTER_PROPERTIES" . 1056302) ("RESET_DATA" . 1093845) ("SHARE_DATA" . 1056304) ("SYMBOL" . 1056306) ("THICK" . 1056311) ("USE_ZVALUE" . 1056313) ("VERT_COLORS" . 1056317) ("XCOORD_CONV" . 1056319) ("XRANGE" . 1056325) ("YCOORD_CONV" . 1056327) ("YRANGE" . 1056333) ("ZCOORD_CONV" . 1056335) ("ZVALUE" . 1056400)))
1520 ("Cleanup" pro "IDLgrPolygon" (system) "Obj->[%s::]%s" ("objects_gr126.html")) 1520 ("Cleanup" pro "IDLgrPolygon" (system) "Obj->[%s::]%s" ("objects_gr126.html"))
1521 ("GetProperty" pro "IDLgrPolygon" (system) "Obj->[%s::]%s" ("objects_gr128.html" ) ("objects_gr125.html" ("ALL" . 1056563) ("ALPHA_CHANNEL" . 1316054) ("AMBIENT" . 1309898) ("BOTTOM" . 1074388) ("CLIP_PLANES" . 1056581) ("COLOR " . 1056586) ("DATA" . 1309971) ("DEPTH_OFFSET " . 1056590) ("DEPTH_TEST_DISABLE" . 1094995) ("DEPTH_TEST_FUNCTION" . 1095559) ("DEPTH_WRITE_DISABLE" . 1095598) ("DIFFUSE" . 1310292) ("DOUBLE " . 1310286) ("EMISSION" . 1310032) ("FILL_PATTERN " . 1056598) ("HIDE " . 1056602) ("LINESTYLE " . 1056606) ("NORMALS" . 1056621) ("PARENT " . 1056792) ("POLYGONS" . 1056790) ("REJECT " . 1093870) ("SHADE_RANGE " . 1056643) ("SHADING " . 1056645) ("SHININESS" . 1310128) ("SPECULAR" . 1310225) ("STYLE " . 1310253) ("TEXTURE_COORD" . 1214343) ("TEXTURE_INTERP " . 1056664) ("TEXTURE_MAP " . 1056666) ("THICK " . 1056674) ("VERT_COLORS " . 1056679) ("XCOORD_CONV " . 1088401) ("XRANGE" . 1056808) ("YCOORD_CONV " . 1075980) ("YRANGE" . 1056822) ("ZCOORD_CONV" . 1056694) ("ZERO_OPACITY_SKIP " . 1056700) ("ZRANGE" . 1056834))) 1521 ("GetProperty" pro "IDLgrPolygon" (system) "Obj->[%s::]%s" ("objects_gr128.html" ) ("objects_gr125.html" ("ALL" . 1056563) ("ALPHA_CHANNEL" . 1316054) ("AMBIENT" . 1309898) ("BOTTOM" . 1074388) ("CLIP_PLANES" . 1056581) ("COLOR" . 1056586) ("DATA" . 1309971) ("DEPTH_OFFSET" . 1056590) ("DEPTH_TEST_DISABLE" . 1094995) ("DEPTH_TEST_FUNCTION" . 1095559) ("DEPTH_WRITE_DISABLE" . 1095598) ("DIFFUSE" . 1310292) ("DOUBLE" . 1310286) ("EMISSION" . 1310032) ("FILL_PATTERN" . 1056598) ("HIDE" . 1056602) ("LINESTYLE" . 1056606) ("NORMALS" . 1056621) ("PARENT" . 1056792) ("POLYGONS" . 1056790) ("REJECT" . 1093870) ("SHADE_RANGE" . 1056643) ("SHADING" . 1056645) ("SHININESS" . 1310128) ("SPECULAR" . 1310225) ("STYLE" . 1310253) ("TEXTURE_COORD" . 1214343) ("TEXTURE_INTERP" . 1056664) ("TEXTURE_MAP" . 1056666) ("THICK" . 1056674) ("VERT_COLORS" . 1056679) ("XCOORD_CONV" . 1088401) ("XRANGE" . 1056808) ("YCOORD_CONV" . 1075980) ("YRANGE" . 1056822) ("ZCOORD_CONV" . 1056694) ("ZERO_OPACITY_SKIP" . 1056700) ("ZRANGE" . 1056834)))
1522 ("SetProperty" pro "IDLgrPolygon" (system) "Obj->[%s::]%s" ("objects_gr130.html" ) ("objects_gr125.html" ("ALPHA_CHANNEL" . 1316054) ("AMBIENT" . 1309898) ("BOTTOM" . 1074388) ("CLIP_PLANES" . 1056581) ("COLOR " . 1056586) ("DATA" . 1309971) ("DEPTH_OFFSET " . 1056590) ("DEPTH_TEST_DISABLE" . 1094995) ("DEPTH_TEST_FUNCTION" . 1095559) ("DEPTH_WRITE_DISABLE" . 1095598) ("DIFFUSE" . 1310292) ("DOUBLE " . 1310286) ("EMISSION" . 1310032) ("FILL_PATTERN " . 1056598) ("HIDE " . 1056602) ("LINESTYLE " . 1056606) ("NORMALS" . 1056621) ("POLYGONS" . 1056790) ("REJECT " . 1093870) ("RESET_DATA " . 1056641) ("SHADE_RANGE " . 1056643) ("SHADING " . 1056645) ("SHARE_DATA " . 1056650) ("SHININESS" . 1310128) ("SPECULAR" . 1310225) ("STYLE " . 1310253) ("TEXTURE_COORD" . 1214343) ("TEXTURE_INTERP " . 1056664) ("TEXTURE_MAP " . 1056666) ("THICK " . 1056674) ("VERT_COLORS " . 1056679) ("XCOORD_CONV " . 1088401) ("YCOORD_CONV " . 1075980) ("ZCOORD_CONV" . 1056694) ("ZERO_OPACITY_SKIP " . 1056700))) 1522 ("SetProperty" pro "IDLgrPolygon" (system) "Obj->[%s::]%s" ("objects_gr130.html" ) ("objects_gr125.html" ("ALPHA_CHANNEL" . 1316054) ("AMBIENT" . 1309898) ("BOTTOM" . 1074388) ("CLIP_PLANES" . 1056581) ("COLOR" . 1056586) ("DATA" . 1309971) ("DEPTH_OFFSET" . 1056590) ("DEPTH_TEST_DISABLE" . 1094995) ("DEPTH_TEST_FUNCTION" . 1095559) ("DEPTH_WRITE_DISABLE" . 1095598) ("DIFFUSE" . 1310292) ("DOUBLE" . 1310286) ("EMISSION" . 1310032) ("FILL_PATTERN" . 1056598) ("HIDE" . 1056602) ("LINESTYLE" . 1056606) ("NORMALS" . 1056621) ("POLYGONS" . 1056790) ("REJECT" . 1093870) ("RESET_DATA" . 1056641) ("SHADE_RANGE" . 1056643) ("SHADING" . 1056645) ("SHARE_DATA" . 1056650) ("SHININESS" . 1310128) ("SPECULAR" . 1310225) ("STYLE" . 1310253) ("TEXTURE_COORD" . 1214343) ("TEXTURE_INTERP" . 1056664) ("TEXTURE_MAP" . 1056666) ("THICK" . 1056674) ("VERT_COLORS" . 1056679) ("XCOORD_CONV" . 1088401) ("YCOORD_CONV" . 1075980) ("ZCOORD_CONV" . 1056694) ("ZERO_OPACITY_SKIP" . 1056700)))
1523 ("GetCTM" fun "IDLgrPolygon" (system) "Result = Obj->[%s::]%s()" ("objects_gr127.html" ("DESTINATION" . 1013188) ("PATH" . 1013190) ("TOP" . 1013196))) 1523 ("GetCTM" fun "IDLgrPolygon" (system) "Result = Obj->[%s::]%s()" ("objects_gr127.html" ("DESTINATION" . 1013188) ("PATH" . 1013190) ("TOP" . 1013196)))
1524 ("Init" fun "IDLgrPolygon" (system) "Result = Obj->[%s::]%s([, X [, Y[, Z]]])" ("objects_gr129.html" ) ("objects_gr125.html" ("ALPHA_CHANNEL" . 1316054) ("AMBIENT" . 1309898) ("BOTTOM" . 1074388) ("CLIP_PLANES" . 1056581) ("COLOR " . 1056586) ("DATA" . 1309971) ("DEPTH_OFFSET " . 1056590) ("DEPTH_TEST_DISABLE" . 1094995) ("DEPTH_TEST_FUNCTION" . 1095559) ("DEPTH_WRITE_DISABLE" . 1095598) ("DIFFUSE" . 1310292) ("DOUBLE " . 1310286) ("EMISSION" . 1310032) ("FILL_PATTERN " . 1056598) ("HIDDEN_LINES" . 1056600) ("HIDE " . 1056602) ("LINESTYLE " . 1056606) ("NORMALS" . 1056621) ("PALETTE" . 1056629) ("POLYGONS" . 1056790) ("REGISTER_PROPERTIES" . 1327262) ("REJECT " . 1093870) ("RESET_DATA " . 1056641) ("SHADE_RANGE " . 1056643) ("SHADING " . 1056645) ("SHARE_DATA " . 1056650) ("SHININESS" . 1310128) ("SPECULAR" . 1310225) ("STYLE " . 1310253) ("TEXTURE_COORD" . 1214343) ("TEXTURE_INTERP " . 1056664) ("TEXTURE_MAP " . 1056666) ("THICK " . 1056674) ("VERT_COLORS " . 1056679) ("XCOORD_CONV " . 1088401) ("YCOORD_CONV " . 1075980) ("ZCOORD_CONV" . 1056694) ("ZERO_OPACITY_SKIP " . 1056700))) 1524 ("Init" fun "IDLgrPolygon" (system) "Result = Obj->[%s::]%s([, X [, Y[, Z]]])" ("objects_gr129.html" ) ("objects_gr125.html" ("ALPHA_CHANNEL" . 1316054) ("AMBIENT" . 1309898) ("BOTTOM" . 1074388) ("CLIP_PLANES" . 1056581) ("COLOR" . 1056586) ("DATA" . 1309971) ("DEPTH_OFFSET" . 1056590) ("DEPTH_TEST_DISABLE" . 1094995) ("DEPTH_TEST_FUNCTION" . 1095559) ("DEPTH_WRITE_DISABLE" . 1095598) ("DIFFUSE" . 1310292) ("DOUBLE" . 1310286) ("EMISSION" . 1310032) ("FILL_PATTERN" . 1056598) ("HIDDEN_LINES" . 1056600) ("HIDE" . 1056602) ("LINESTYLE" . 1056606) ("NORMALS" . 1056621) ("PALETTE" . 1056629) ("POLYGONS" . 1056790) ("REGISTER_PROPERTIES" . 1327262) ("REJECT" . 1093870) ("RESET_DATA" . 1056641) ("SHADE_RANGE" . 1056643) ("SHADING" . 1056645) ("SHARE_DATA" . 1056650) ("SHININESS" . 1310128) ("SPECULAR" . 1310225) ("STYLE" . 1310253) ("TEXTURE_COORD" . 1214343) ("TEXTURE_INTERP" . 1056664) ("TEXTURE_MAP" . 1056666) ("THICK" . 1056674) ("VERT_COLORS" . 1056679) ("XCOORD_CONV" . 1088401) ("YCOORD_CONV" . 1075980) ("ZCOORD_CONV" . 1056694) ("ZERO_OPACITY_SKIP" . 1056700)))
1525 ("Cleanup" pro "IDLgrPolyline" (system) "Obj->[%s::]%s" ("objects_gr133.html")) 1525 ("Cleanup" pro "IDLgrPolyline" (system) "Obj->[%s::]%s" ("objects_gr133.html"))
1526 ("GetProperty" pro "IDLgrPolyline" (system) "Obj->[%s::]%s" ("objects_gr135.html" ) ("objects_gr132.html" ("ALL" . 1056980) ("ALPHA_CHANNEL" . 1329463) ("CLIP_PLANES " . 1056996) ("COLOR" . 1057001) ("DATA" . 1057003) ("DEPTH_TEST_DISABLE" . 1095001) ("DEPTH_TEST_FUNCTION" . 1095681) ("DEPTH_WRITE_DISABLE" . 1095720) ("DOUBLE" . 1057005) ("HIDE" . 1057007) ("LABEL_NOGAPS" . 1057011) ("LABEL_OBJECTS" . 1057019) ("LABEL_OFFSETS " . 1057017) ("LABEL_POLYLINES" . 1057330) ("LABEL_USE_VERTEX_COLOR" . 1077987) ("LINESTYLE" . 1057029) ("PALETTE " . 1057044) ("PARENT" . 1057101) ("POLYLINES" . 1057099) ("SHADING" . 1057051) ("SYMBOL" . 1057058) ("THICK" . 1057063) ("USE_LABEL_COLOR" . 1057065) ("USE_LABEL_ORIENTATION" . 1057067) ("USE_TEXT_ALIGNMENTS" . 1057069) ("VERT_COLORS " . 1057073) ("XCOORD_CONV " . 1057075) ("XRANGE" . 1057143) ("YCOORD_CONV" . 1057081) ("YRANGE " . 1057133) ("ZCOORD_CONV" . 1077892) ("ZRANGE" . 1057121))) 1526 ("GetProperty" pro "IDLgrPolyline" (system) "Obj->[%s::]%s" ("objects_gr135.html" ) ("objects_gr132.html" ("ALL" . 1056980) ("ALPHA_CHANNEL" . 1329463) ("CLIP_PLANES" . 1056996) ("COLOR" . 1057001) ("DATA" . 1057003) ("DEPTH_TEST_DISABLE" . 1095001) ("DEPTH_TEST_FUNCTION" . 1095681) ("DEPTH_WRITE_DISABLE" . 1095720) ("DOUBLE" . 1057005) ("HIDE" . 1057007) ("LABEL_NOGAPS" . 1057011) ("LABEL_OBJECTS" . 1057019) ("LABEL_OFFSETS" . 1057017) ("LABEL_POLYLINES" . 1057330) ("LABEL_USE_VERTEX_COLOR" . 1077987) ("LINESTYLE" . 1057029) ("PALETTE" . 1057044) ("PARENT" . 1057101) ("POLYLINES" . 1057099) ("SHADING" . 1057051) ("SYMBOL" . 1057058) ("THICK" . 1057063) ("USE_LABEL_COLOR" . 1057065) ("USE_LABEL_ORIENTATION" . 1057067) ("USE_TEXT_ALIGNMENTS" . 1057069) ("VERT_COLORS" . 1057073) ("XCOORD_CONV" . 1057075) ("XRANGE" . 1057143) ("YCOORD_CONV" . 1057081) ("YRANGE" . 1057133) ("ZCOORD_CONV" . 1077892) ("ZRANGE" . 1057121)))
1527 ("SetProperty" pro "IDLgrPolyline" (system) "Obj->[%s::]%s" ("objects_gr137.html" ) ("objects_gr132.html" ("ALPHA_CHANNEL" . 1329463) ("CLIP_PLANES " . 1056996) ("COLOR" . 1057001) ("DATA" . 1057003) ("DEPTH_TEST_DISABLE" . 1095001) ("DEPTH_TEST_FUNCTION" . 1095681) ("DEPTH_WRITE_DISABLE" . 1095720) ("DOUBLE" . 1057005) ("HIDE" . 1057007) ("LABEL_NOGAPS" . 1057011) ("LABEL_OBJECTS" . 1057019) ("LABEL_OFFSETS " . 1057017) ("LABEL_POLYLINES" . 1057330) ("LABEL_USE_VERTEX_COLOR" . 1077987) ("LINESTYLE" . 1057029) ("PALETTE " . 1057044) ("POLYLINES" . 1057099) ("RESET_DATA" . 1093906) ("SHADING" . 1057051) ("SHARE_DATA " . 1057056) ("SYMBOL" . 1057058) ("THICK" . 1057063) ("USE_LABEL_COLOR" . 1057065) ("USE_LABEL_ORIENTATION" . 1057067) ("USE_TEXT_ALIGNMENTS" . 1057069) ("VERT_COLORS " . 1057073) ("XCOORD_CONV " . 1057075) ("YCOORD_CONV" . 1057081) ("ZCOORD_CONV" . 1077892))) 1527 ("SetProperty" pro "IDLgrPolyline" (system) "Obj->[%s::]%s" ("objects_gr137.html" ) ("objects_gr132.html" ("ALPHA_CHANNEL" . 1329463) ("CLIP_PLANES" . 1056996) ("COLOR" . 1057001) ("DATA" . 1057003) ("DEPTH_TEST_DISABLE" . 1095001) ("DEPTH_TEST_FUNCTION" . 1095681) ("DEPTH_WRITE_DISABLE" . 1095720) ("DOUBLE" . 1057005) ("HIDE" . 1057007) ("LABEL_NOGAPS" . 1057011) ("LABEL_OBJECTS" . 1057019) ("LABEL_OFFSETS" . 1057017) ("LABEL_POLYLINES" . 1057330) ("LABEL_USE_VERTEX_COLOR" . 1077987) ("LINESTYLE" . 1057029) ("PALETTE" . 1057044) ("POLYLINES" . 1057099) ("RESET_DATA" . 1093906) ("SHADING" . 1057051) ("SHARE_DATA" . 1057056) ("SYMBOL" . 1057058) ("THICK" . 1057063) ("USE_LABEL_COLOR" . 1057065) ("USE_LABEL_ORIENTATION" . 1057067) ("USE_TEXT_ALIGNMENTS" . 1057069) ("VERT_COLORS" . 1057073) ("XCOORD_CONV" . 1057075) ("YCOORD_CONV" . 1057081) ("ZCOORD_CONV" . 1077892)))
1528 ("GetCTM" fun "IDLgrPolyline" (system) "Result = Obj->[%s::]%s()" ("objects_gr134.html" ("DESTINATION" . 1013579) ("PATH" . 1013581) ("TOP" . 1013587))) 1528 ("GetCTM" fun "IDLgrPolyline" (system) "Result = Obj->[%s::]%s()" ("objects_gr134.html" ("DESTINATION" . 1013579) ("PATH" . 1013581) ("TOP" . 1013587)))
1529 ("Init" fun "IDLgrPolyline" (system) "Result = Obj->[%s::]%s([, X [, Y[, Z]]])" ("objects_gr136.html" ) ("objects_gr132.html" ("ALPHA_CHANNEL" . 1329463) ("CLIP_PLANES " . 1056996) ("COLOR" . 1057001) ("DATA" . 1057003) ("DEPTH_TEST_DISABLE" . 1095001) ("DEPTH_TEST_FUNCTION" . 1095681) ("DEPTH_WRITE_DISABLE" . 1095720) ("DOUBLE" . 1057005) ("HIDE" . 1057007) ("LABEL_NOGAPS" . 1057011) ("LABEL_OBJECTS" . 1057019) ("LABEL_OFFSETS " . 1057017) ("LABEL_POLYLINES" . 1057330) ("LABEL_USE_VERTEX_COLOR" . 1077987) ("LINESTYLE" . 1057029) ("PALETTE " . 1057044) ("POLYLINES" . 1057099) ("REGISTER_PROPERTIES" . 1057049) ("RESET_DATA" . 1093906) ("SHADING" . 1057051) ("SHARE_DATA " . 1057056) ("SYMBOL" . 1057058) ("THICK" . 1057063) ("USE_LABEL_COLOR" . 1057065) ("USE_LABEL_ORIENTATION" . 1057067) ("USE_TEXT_ALIGNMENTS" . 1057069) ("VERT_COLORS " . 1057073) ("XCOORD_CONV " . 1057075) ("YCOORD_CONV" . 1057081) ("ZCOORD_CONV" . 1077892))) 1529 ("Init" fun "IDLgrPolyline" (system) "Result = Obj->[%s::]%s([, X [, Y[, Z]]])" ("objects_gr136.html" ) ("objects_gr132.html" ("ALPHA_CHANNEL" . 1329463) ("CLIP_PLANES" . 1056996) ("COLOR" . 1057001) ("DATA" . 1057003) ("DEPTH_TEST_DISABLE" . 1095001) ("DEPTH_TEST_FUNCTION" . 1095681) ("DEPTH_WRITE_DISABLE" . 1095720) ("DOUBLE" . 1057005) ("HIDE" . 1057007) ("LABEL_NOGAPS" . 1057011) ("LABEL_OBJECTS" . 1057019) ("LABEL_OFFSETS" . 1057017) ("LABEL_POLYLINES" . 1057330) ("LABEL_USE_VERTEX_COLOR" . 1077987) ("LINESTYLE" . 1057029) ("PALETTE" . 1057044) ("POLYLINES" . 1057099) ("REGISTER_PROPERTIES" . 1057049) ("RESET_DATA" . 1093906) ("SHADING" . 1057051) ("SHARE_DATA" . 1057056) ("SYMBOL" . 1057058) ("THICK" . 1057063) ("USE_LABEL_COLOR" . 1057065) ("USE_LABEL_ORIENTATION" . 1057067) ("USE_TEXT_ALIGNMENTS" . 1057069) ("VERT_COLORS" . 1057073) ("XCOORD_CONV" . 1057075) ("YCOORD_CONV" . 1057081) ("ZCOORD_CONV" . 1077892)))
1530 ("Cleanup" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr140.html")) 1530 ("Cleanup" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr140.html"))
1531 ("Draw" pro "IDLgrPrinter" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr141.html" ("VECT_SORTING" . 1340440) ("VECT_TEXT_RENDER_METHOD" . 1340452) ("VECTOR" . 1013979))) 1531 ("Draw" pro "IDLgrPrinter" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr141.html" ("VECT_SORTING" . 1340440) ("VECT_TEXT_RENDER_METHOD" . 1340452) ("VECTOR" . 1013979)))
1532 ("GetProperty" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr144.html" ) ("objects_gr139.html" ("ALL " . 1057354) ("COLOR_MODEL" . 1057403) ("DIMENSIONS" . 1057476) ("GAMMA" . 1057474) ("GRAPHICS_TREE " . 1057413) ("LANDSCAPE" . 1057415) ("N_COLORS " . 1057418) ("N_COPIES" . 1057420) ("NAME " . 1344875) ("PALETTE" . 1057464) ("PRINT_QUALITY" . 1057428) ("QUALITY" . 1057435) ("RESOLUTION " . 1093938) ("UNITS" . 1057441))) 1532 ("GetProperty" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr144.html" ) ("objects_gr139.html" ("ALL" . 1057354) ("COLOR_MODEL" . 1057403) ("DIMENSIONS" . 1057476) ("GAMMA" . 1057474) ("GRAPHICS_TREE" . 1057413) ("LANDSCAPE" . 1057415) ("N_COLORS" . 1057418) ("N_COPIES" . 1057420) ("NAME" . 1344875) ("PALETTE" . 1057464) ("PRINT_QUALITY" . 1057428) ("QUALITY" . 1057435) ("RESOLUTION" . 1093938) ("UNITS" . 1057441)))
1533 ("NewDocument" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr147.html")) 1533 ("NewDocument" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr147.html"))
1534 ("NewPage" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr148.html")) 1534 ("NewPage" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr148.html"))
1535 ("SetProperty" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr149.html" ) ("objects_gr139.html" ("GAMMA" . 1057474) ("GRAPHICS_TREE " . 1057413) ("LANDSCAPE" . 1057415) ("N_COPIES" . 1057420) ("PALETTE" . 1057464) ("PRINT_QUALITY" . 1057428) ("QUALITY" . 1057435) ("UNITS" . 1057441))) 1535 ("SetProperty" pro "IDLgrPrinter" (system) "Obj->[%s::]%s" ("objects_gr149.html" ) ("objects_gr139.html" ("GAMMA" . 1057474) ("GRAPHICS_TREE" . 1057413) ("LANDSCAPE" . 1057415) ("N_COPIES" . 1057420) ("PALETTE" . 1057464) ("PRINT_QUALITY" . 1057428) ("QUALITY" . 1057435) ("UNITS" . 1057441)))
1536 ("GetContiguousPixels" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s()" ("objects_gr142.html")) 1536 ("GetContiguousPixels" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s()" ("objects_gr142.html"))
1537 ("GetFontnames" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr143.html" ("IDL_FONTS" . 1014147) ("STYLES" . 1014149))) 1537 ("GetFontnames" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr143.html" ("IDL_FONTS" . 1014147) ("STYLES" . 1014149)))
1538 ("GetTextDimensions" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr145.html" ("DESCENT" . 1014231) ("PATH" . 1014233))) 1538 ("GetTextDimensions" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr145.html" ("DESCENT" . 1014231) ("PATH" . 1014233)))
1539 ("Init" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s()" ("objects_gr146.html" ) ("objects_gr139.html" ("COLOR_MODEL" . 1057403) ("GAMMA" . 1057474) ("GRAPHICS_TREE " . 1057413) ("LANDSCAPE" . 1057415) ("N_COLORS " . 1057418) ("N_COPIES" . 1057420) ("PALETTE" . 1057464) ("PRINT_QUALITY" . 1057428) ("QUALITY" . 1057435) ("REGISTER_PROPERTIES" . 1057456) ("UNITS" . 1057441))) 1539 ("Init" fun "IDLgrPrinter" (system) "Result = Obj->[%s::]%s()" ("objects_gr146.html" ) ("objects_gr139.html" ("COLOR_MODEL" . 1057403) ("GAMMA" . 1057474) ("GRAPHICS_TREE" . 1057413) ("LANDSCAPE" . 1057415) ("N_COLORS" . 1057418) ("N_COPIES" . 1057420) ("PALETTE" . 1057464) ("PRINT_QUALITY" . 1057428) ("QUALITY" . 1057435) ("REGISTER_PROPERTIES" . 1057456) ("UNITS" . 1057441)))
1540 ("Cleanup" pro "IDLgrROI" (system) "Obj->[%s::]%s" ("objects_gr152.html")) 1540 ("Cleanup" pro "IDLgrROI" (system) "Obj->[%s::]%s" ("objects_gr152.html"))
1541 ("GetProperty" pro "IDLgrROI" (system) "Obj->[%s::]%s" ("objects_gr153.html" ) ("objects_gr151.html" ("ALL" . 1057567) ("ALPHA_CHANNEL" . 1315614) ("CLIP_PLANES" . 1057587) ("COLOR " . 1057592) ("DEPTH_TEST_DISABLE" . 1095007) ("DEPTH_TEST_FUNCTION" . 1095803) ("DEPTH_WRITE_DISABLE" . 1095842) ("DOUBLE" . 1078228) ("HIDE" . 1078231) ("LINESTYLE " . 1057600) ("PALETTE " . 1057611) ("PARENT " . 1345141) ("STYLE" . 1093956) ("SYMBOL" . 1057621) ("THICK" . 1057626) ("XCOORD_CONV" . 1057630) ("XRANGE" . 1057656) ("YCOORD_CONV" . 1057636) ("YRANGE" . 1057668) ("ZCOORD_CONV" . 1057666) ("ZRANGE" . 1057574))) 1541 ("GetProperty" pro "IDLgrROI" (system) "Obj->[%s::]%s" ("objects_gr153.html" ) ("objects_gr151.html" ("ALL" . 1057567) ("ALPHA_CHANNEL" . 1315614) ("CLIP_PLANES" . 1057587) ("COLOR" . 1057592) ("DEPTH_TEST_DISABLE" . 1095007) ("DEPTH_TEST_FUNCTION" . 1095803) ("DEPTH_WRITE_DISABLE" . 1095842) ("DOUBLE" . 1078228) ("HIDE" . 1078231) ("LINESTYLE" . 1057600) ("PALETTE" . 1057611) ("PARENT" . 1345141) ("STYLE" . 1093956) ("SYMBOL" . 1057621) ("THICK" . 1057626) ("XCOORD_CONV" . 1057630) ("XRANGE" . 1057656) ("YCOORD_CONV" . 1057636) ("YRANGE" . 1057668) ("ZCOORD_CONV" . 1057666) ("ZRANGE" . 1057574)))
1542 ("SetProperty" pro "IDLgrROI" (system) "Obj->[%s::]%s" ("objects_gr156.html" ) ("objects_gr151.html" ("ALPHA_CHANNEL" . 1315614) ("CLIP_PLANES" . 1057587) ("COLOR " . 1057592) ("DEPTH_TEST_DISABLE" . 1095007) ("DEPTH_TEST_FUNCTION" . 1095803) ("DEPTH_WRITE_DISABLE" . 1095842) ("DOUBLE" . 1078228) ("HIDE" . 1078231) ("LINESTYLE " . 1057600) ("PALETTE " . 1057611) ("STYLE" . 1093956) ("SYMBOL" . 1057621) ("THICK" . 1057626) ("XCOORD_CONV" . 1057630) ("YCOORD_CONV" . 1057636) ("ZCOORD_CONV" . 1057666))) 1542 ("SetProperty" pro "IDLgrROI" (system) "Obj->[%s::]%s" ("objects_gr156.html" ) ("objects_gr151.html" ("ALPHA_CHANNEL" . 1315614) ("CLIP_PLANES" . 1057587) ("COLOR" . 1057592) ("DEPTH_TEST_DISABLE" . 1095007) ("DEPTH_TEST_FUNCTION" . 1095803) ("DEPTH_WRITE_DISABLE" . 1095842) ("DOUBLE" . 1078228) ("HIDE" . 1078231) ("LINESTYLE" . 1057600) ("PALETTE" . 1057611) ("STYLE" . 1093956) ("SYMBOL" . 1057621) ("THICK" . 1057626) ("XCOORD_CONV" . 1057630) ("YCOORD_CONV" . 1057636) ("ZCOORD_CONV" . 1057666)))
1543 ("Init" fun "IDLgrROI" (system) "Result = Obj->[%s::]%s([, X[, Y[, Z]]])" ("objects_gr154.html" ) ("objects_gr151.html" ("ALPHA_CHANNEL" . 1315614) ("CLIP_PLANES" . 1057587) ("COLOR " . 1057592) ("DEPTH_TEST_DISABLE" . 1095007) ("DEPTH_TEST_FUNCTION" . 1095803) ("DEPTH_WRITE_DISABLE" . 1095842) ("DOUBLE" . 1078228) ("HIDE" . 1078231) ("LINESTYLE " . 1057600) ("PALETTE " . 1057611) ("REGISTER_PROPERTIES" . 1057616) ("STYLE" . 1093956) ("SYMBOL" . 1057621) ("THICK" . 1057626) ("XCOORD_CONV" . 1057630) ("YCOORD_CONV" . 1057636) ("ZCOORD_CONV" . 1057666))) 1543 ("Init" fun "IDLgrROI" (system) "Result = Obj->[%s::]%s([, X[, Y[, Z]]])" ("objects_gr154.html" ) ("objects_gr151.html" ("ALPHA_CHANNEL" . 1315614) ("CLIP_PLANES" . 1057587) ("COLOR" . 1057592) ("DEPTH_TEST_DISABLE" . 1095007) ("DEPTH_TEST_FUNCTION" . 1095803) ("DEPTH_WRITE_DISABLE" . 1095842) ("DOUBLE" . 1078228) ("HIDE" . 1078231) ("LINESTYLE" . 1057600) ("PALETTE" . 1057611) ("REGISTER_PROPERTIES" . 1057616) ("STYLE" . 1093956) ("SYMBOL" . 1057621) ("THICK" . 1057626) ("XCOORD_CONV" . 1057630) ("YCOORD_CONV" . 1057636) ("ZCOORD_CONV" . 1057666)))
1544 ("PickVertex" fun "IDLgrROI" (system) "Result = Obj->[%s::]%s( Dest, View, Point)" ("objects_gr155.html" ("PATH" . 1014753))) 1544 ("PickVertex" fun "IDLgrROI" (system) "Result = Obj->[%s::]%s( Dest, View, Point)" ("objects_gr155.html" ("PATH" . 1014753)))
1545 ("Add" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s, ROI" ("objects_gr159.html")) 1545 ("Add" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s, ROI" ("objects_gr159.html"))
1546 ("Cleanup" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s" ("objects_gr160.html")) 1546 ("Cleanup" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s" ("objects_gr160.html"))
1547 ("GetProperty" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s" ("objects_gr161.html" ) ("objects_gr158.html" ("ALL" . 1057772) ("CLIP_PLANES" . 1057798) ("COLOR " . 1057803) ("DEPTH_TEST_DISABLE" . 1095013) ("DEPTH_TEST_FUNCTION" . 1095918) ("DEPTH_WRITE_DISABLE" . 1095957) ("HIDE" . 1057805) ("PARENT " . 1057863) ("XCOORD_CONV" . 1057861) ("XRANGE " . 1057853) ("YCOORD_CONV" . 1057851) ("YRANGE" . 1080305) ("ZCOORD_CONV" . 1057839) ("ZRANGE" . 1057781))) 1547 ("GetProperty" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s" ("objects_gr161.html" ) ("objects_gr158.html" ("ALL" . 1057772) ("CLIP_PLANES" . 1057798) ("COLOR" . 1057803) ("DEPTH_TEST_DISABLE" . 1095013) ("DEPTH_TEST_FUNCTION" . 1095918) ("DEPTH_WRITE_DISABLE" . 1095957) ("HIDE" . 1057805) ("PARENT" . 1057863) ("XCOORD_CONV" . 1057861) ("XRANGE" . 1057853) ("YCOORD_CONV" . 1057851) ("YRANGE" . 1080305) ("ZCOORD_CONV" . 1057839) ("ZRANGE" . 1057781)))
1548 ("SetProperty" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s" ("objects_gr164.html" ) ("objects_gr158.html" ("CLIP_PLANES" . 1057798) ("COLOR " . 1057803) ("DEPTH_TEST_DISABLE" . 1095013) ("DEPTH_TEST_FUNCTION" . 1095918) ("DEPTH_WRITE_DISABLE" . 1095957) ("HIDE" . 1057805) ("XCOORD_CONV" . 1057861) ("YCOORD_CONV" . 1057851) ("ZCOORD_CONV" . 1057839))) 1548 ("SetProperty" pro "IDLgrROIGroup" (system) "Obj->[%s::]%s" ("objects_gr164.html" ) ("objects_gr158.html" ("CLIP_PLANES" . 1057798) ("COLOR" . 1057803) ("DEPTH_TEST_DISABLE" . 1095013) ("DEPTH_TEST_FUNCTION" . 1095918) ("DEPTH_WRITE_DISABLE" . 1095957) ("HIDE" . 1057805) ("XCOORD_CONV" . 1057861) ("YCOORD_CONV" . 1057851) ("ZCOORD_CONV" . 1057839)))
1549 ("Init" fun "IDLgrROIGroup" (system) "Result = Obj->[%s::]%s()" ("objects_gr162.html" ) ("objects_gr158.html" ("CLIP_PLANES" . 1057798) ("COLOR " . 1057803) ("DEPTH_TEST_DISABLE" . 1095013) ("DEPTH_TEST_FUNCTION" . 1095918) ("DEPTH_WRITE_DISABLE" . 1095957) ("HIDE" . 1057805) ("XCOORD_CONV" . 1057861) ("YCOORD_CONV" . 1057851) ("ZCOORD_CONV" . 1057839))) 1549 ("Init" fun "IDLgrROIGroup" (system) "Result = Obj->[%s::]%s()" ("objects_gr162.html" ) ("objects_gr158.html" ("CLIP_PLANES" . 1057798) ("COLOR" . 1057803) ("DEPTH_TEST_DISABLE" . 1095013) ("DEPTH_TEST_FUNCTION" . 1095918) ("DEPTH_WRITE_DISABLE" . 1095957) ("HIDE" . 1057805) ("XCOORD_CONV" . 1057861) ("YCOORD_CONV" . 1057851) ("ZCOORD_CONV" . 1057839)))
1550 ("PickRegion" fun "IDLgrROIGroup" (system) "Result = Obj->[%s::]%s( Dest, View, Point)" ("objects_gr163.html" ("PATH" . 1015096))) 1550 ("PickRegion" fun "IDLgrROIGroup" (system) "Result = Obj->[%s::]%s( Dest, View, Point)" ("objects_gr163.html" ("PATH" . 1015096)))
1551 ("Add" pro "IDLgrScene" (system) "Obj->[%s::]%s, View" ("objects_gr167.html" ("POSITION" . 1015243))) 1551 ("Add" pro "IDLgrScene" (system) "Obj->[%s::]%s, View" ("objects_gr167.html" ("POSITION" . 1015243)))
1552 ("Cleanup" pro "IDLgrScene" (system) "Obj->[%s::]%s" ("objects_gr168.html")) 1552 ("Cleanup" pro "IDLgrScene" (system) "Obj->[%s::]%s" ("objects_gr168.html"))
@@ -1555,10 +1555,10 @@
1555 ("GetByName" fun "IDLgrScene" (system) "Result = Obj->[%s::]%s(Name)" ("objects_gr169.html")) 1555 ("GetByName" fun "IDLgrScene" (system) "Result = Obj->[%s::]%s(Name)" ("objects_gr169.html"))
1556 ("Init" fun "IDLgrScene" (system) "Result = Obj->[%s::]%s()" ("objects_gr171.html" ) ("objects_gr166.html" ("COLOR" . 1080480) ("HIDE" . 1057961) ("REGISTER_PROPERTIES" . 1057969))) 1556 ("Init" fun "IDLgrScene" (system) "Result = Obj->[%s::]%s()" ("objects_gr171.html" ) ("objects_gr166.html" ("COLOR" . 1080480) ("HIDE" . 1057961) ("REGISTER_PROPERTIES" . 1057969)))
1557 ("Cleanup" pro "IDLgrSurface" (system) "Obj->[%s::]%s" ("objects_gr175.html")) 1557 ("Cleanup" pro "IDLgrSurface" (system) "Obj->[%s::]%s" ("objects_gr175.html"))
1558 ("GetProperty" pro "IDLgrSurface" (system) "Obj->[%s::]%s" ("objects_gr177.html" ) ("objects_gr174.html" ("ALL" . 1058014) ("ALPHA_CHANNEL" . 1314657) ("AMBIENT" . 1310692) ("BOTTOM" . 1058035) ("CLIP_PLANES" . 1058037) ("COLOR" . 1058042) ("DATA" . 1339889) ("DEPTH_OFFSET " . 1058050) ("DEPTH_TEST_DISABLE" . 1095019) ("DEPTH_TEST_FUNCTION" . 1096040) ("DEPTH_WRITE_DISABLE" . 1096079) ("DIFFUSE" . 1310743) ("DOUBLE" . 1058056) ("EMISSION" . 1310780) ("EXTENDED_LEGO" . 1058059) ("HIDDEN_LINES" . 1058061) ("HIDE" . 1058063) ("LINESTYLE " . 1058067) ("MAX_VALUE " . 1058080) ("MIN_VALUE" . 1058082) ("PALETTE " . 1058086) ("PARENT " . 1058283) ("SHADE_RANGE" . 1058090) ("SHADING" . 1058092) ("SHININESS" . 1310817) ("SHOW_SKIRT" . 1058099) ("SKIRT" . 1058101) ("SPECULAR" . 1310884) ("STYLE" . 1058103) ("TEXTURE_COORD" . 1604848) ("TEXTURE_HIGHRES" . 1058120) ("TEXTURE_INTERP" . 1058123) ("TEXTURE_MAP" . 1058125) ("THICK " . 1058136) ("USE_TRIANGLES" . 1058140) ("VERT_COLORS" . 1058142) ("XCOORD_CONV" . 1058145) ("XRANGE " . 1058297) ("YCOORD_CONV" . 1058295) ("YRANGE" . 1058309) ("ZCOORD_CONV" . 1058307) ("ZERO_OPACITY_SKIP" . 1058163) ("ZRANGE" . 1082521))) 1558 ("GetProperty" pro "IDLgrSurface" (system) "Obj->[%s::]%s" ("objects_gr177.html" ) ("objects_gr174.html" ("ALL" . 1058014) ("ALPHA_CHANNEL" . 1314657) ("AMBIENT" . 1310692) ("BOTTOM" . 1058035) ("CLIP_PLANES" . 1058037) ("COLOR" . 1058042) ("DATA" . 1339889) ("DEPTH_OFFSET" . 1058050) ("DEPTH_TEST_DISABLE" . 1095019) ("DEPTH_TEST_FUNCTION" . 1096040) ("DEPTH_WRITE_DISABLE" . 1096079) ("DIFFUSE" . 1310743) ("DOUBLE" . 1058056) ("EMISSION" . 1310780) ("EXTENDED_LEGO" . 1058059) ("HIDDEN_LINES" . 1058061) ("HIDE" . 1058063) ("LINESTYLE" . 1058067) ("MAX_VALUE" . 1058080) ("MIN_VALUE" . 1058082) ("PALETTE" . 1058086) ("PARENT" . 1058283) ("SHADE_RANGE" . 1058090) ("SHADING" . 1058092) ("SHININESS" . 1310817) ("SHOW_SKIRT" . 1058099) ("SKIRT" . 1058101) ("SPECULAR" . 1310884) ("STYLE" . 1058103) ("TEXTURE_COORD" . 1604848) ("TEXTURE_HIGHRES" . 1058120) ("TEXTURE_INTERP" . 1058123) ("TEXTURE_MAP" . 1058125) ("THICK" . 1058136) ("USE_TRIANGLES" . 1058140) ("VERT_COLORS" . 1058142) ("XCOORD_CONV" . 1058145) ("XRANGE" . 1058297) ("YCOORD_CONV" . 1058295) ("YRANGE" . 1058309) ("ZCOORD_CONV" . 1058307) ("ZERO_OPACITY_SKIP" . 1058163) ("ZRANGE" . 1082521)))
1559 ("SetProperty" pro "IDLgrSurface" (system) "Obj->[%s::]%s" ("objects_gr179.html" ) ("objects_gr174.html" ("ALPHA_CHANNEL" . 1314657) ("AMBIENT" . 1310692) ("BOTTOM" . 1058035) ("CLIP_PLANES" . 1058037) ("COLOR" . 1058042) ("DATAX" . 1339826) ("DATAY" . 1058046) ("DATAZ" . 1058048) ("DEPTH_OFFSET " . 1058050) ("DEPTH_TEST_DISABLE" . 1095019) ("DEPTH_TEST_FUNCTION" . 1096040) ("DEPTH_WRITE_DISABLE" . 1096079) ("DIFFUSE" . 1310743) ("DOUBLE" . 1058056) ("EMISSION" . 1310780) ("EXTENDED_LEGO" . 1058059) ("HIDDEN_LINES" . 1058061) ("HIDE" . 1058063) ("LINESTYLE " . 1058067) ("MAX_VALUE " . 1058080) ("MIN_VALUE" . 1058082) ("PALETTE " . 1058086) ("RESET_DATA" . 1094044) ("SHADE_RANGE" . 1058090) ("SHADING" . 1058092) ("SHARE_DATA" . 1082385) ("SHININESS" . 1310817) ("SHOW_SKIRT" . 1058099) ("SKIRT" . 1058101) ("SPECULAR" . 1310884) ("STYLE" . 1058103) ("TEXTURE_COORD" . 1604848) ("TEXTURE_HIGHRES" . 1058120) ("TEXTURE_INTERP" . 1058123) ("TEXTURE_MAP" . 1058125) ("THICK " . 1058136) ("USE_TRIANGLES" . 1058140) ("VERT_COLORS" . 1058142) ("XCOORD_CONV" . 1058145) ("YCOORD_CONV" . 1058295) ("ZCOORD_CONV" . 1058307) ("ZERO_OPACITY_SKIP" . 1058163))) 1559 ("SetProperty" pro "IDLgrSurface" (system) "Obj->[%s::]%s" ("objects_gr179.html" ) ("objects_gr174.html" ("ALPHA_CHANNEL" . 1314657) ("AMBIENT" . 1310692) ("BOTTOM" . 1058035) ("CLIP_PLANES" . 1058037) ("COLOR" . 1058042) ("DATAX" . 1339826) ("DATAY" . 1058046) ("DATAZ" . 1058048) ("DEPTH_OFFSET" . 1058050) ("DEPTH_TEST_DISABLE" . 1095019) ("DEPTH_TEST_FUNCTION" . 1096040) ("DEPTH_WRITE_DISABLE" . 1096079) ("DIFFUSE" . 1310743) ("DOUBLE" . 1058056) ("EMISSION" . 1310780) ("EXTENDED_LEGO" . 1058059) ("HIDDEN_LINES" . 1058061) ("HIDE" . 1058063) ("LINESTYLE" . 1058067) ("MAX_VALUE" . 1058080) ("MIN_VALUE" . 1058082) ("PALETTE" . 1058086) ("RESET_DATA" . 1094044) ("SHADE_RANGE" . 1058090) ("SHADING" . 1058092) ("SHARE_DATA" . 1082385) ("SHININESS" . 1310817) ("SHOW_SKIRT" . 1058099) ("SKIRT" . 1058101) ("SPECULAR" . 1310884) ("STYLE" . 1058103) ("TEXTURE_COORD" . 1604848) ("TEXTURE_HIGHRES" . 1058120) ("TEXTURE_INTERP" . 1058123) ("TEXTURE_MAP" . 1058125) ("THICK" . 1058136) ("USE_TRIANGLES" . 1058140) ("VERT_COLORS" . 1058142) ("XCOORD_CONV" . 1058145) ("YCOORD_CONV" . 1058295) ("ZCOORD_CONV" . 1058307) ("ZERO_OPACITY_SKIP" . 1058163)))
1560 ("GetCTM" fun "IDLgrSurface" (system) "Result = Obj->[%s::]%s()" ("objects_gr176.html" ("DESTINATION" . 1015591) ("PATH" . 1015593) ("TOP" . 1015599))) 1560 ("GetCTM" fun "IDLgrSurface" (system) "Result = Obj->[%s::]%s()" ("objects_gr176.html" ("DESTINATION" . 1015591) ("PATH" . 1015593) ("TOP" . 1015599)))
1561 ("Init" fun "IDLgrSurface" (system) "Result = Obj->[%s::]%s([, Z [, X, Y]])" ("objects_gr178.html" ) ("objects_gr174.html" ("ALPHA_CHANNEL" . 1314657) ("AMBIENT" . 1310692) ("BOTTOM" . 1058035) ("CLIP_PLANES" . 1058037) ("COLOR" . 1058042) ("DATAX" . 1339826) ("DATAY" . 1058046) ("DATAZ" . 1058048) ("DEPTH_OFFSET " . 1058050) ("DEPTH_TEST_DISABLE" . 1095019) ("DEPTH_TEST_FUNCTION" . 1096040) ("DEPTH_WRITE_DISABLE" . 1096079) ("DIFFUSE" . 1310743) ("DOUBLE" . 1058056) ("EMISSION" . 1310780) ("EXTENDED_LEGO" . 1058059) ("HIDDEN_LINES" . 1058061) ("HIDE" . 1058063) ("LINESTYLE " . 1058067) ("MAX_VALUE " . 1058080) ("MIN_VALUE" . 1058082) ("PALETTE " . 1058086) ("REGISTER_PROPERTIES" . 1094041) ("RESET_DATA" . 1094044) ("SHADE_RANGE" . 1058090) ("SHADING" . 1058092) ("SHARE_DATA" . 1082385) ("SHININESS" . 1310817) ("SHOW_SKIRT" . 1058099) ("SKIRT" . 1058101) ("SPECULAR" . 1310884) ("STYLE" . 1058103) ("TEXTURE_COORD" . 1604848) ("TEXTURE_HIGHRES" . 1058120) ("TEXTURE_INTERP" . 1058123) ("TEXTURE_MAP" . 1058125) ("THICK " . 1058136) ("USE_TRIANGLES" . 1058140) ("VERT_COLORS" . 1058142) ("XCOORD_CONV" . 1058145) ("YCOORD_CONV" . 1058295) ("ZCOORD_CONV" . 1058307) ("ZERO_OPACITY_SKIP" . 1058163))) 1561 ("Init" fun "IDLgrSurface" (system) "Result = Obj->[%s::]%s([, Z [, X, Y]])" ("objects_gr178.html" ) ("objects_gr174.html" ("ALPHA_CHANNEL" . 1314657) ("AMBIENT" . 1310692) ("BOTTOM" . 1058035) ("CLIP_PLANES" . 1058037) ("COLOR" . 1058042) ("DATAX" . 1339826) ("DATAY" . 1058046) ("DATAZ" . 1058048) ("DEPTH_OFFSET" . 1058050) ("DEPTH_TEST_DISABLE" . 1095019) ("DEPTH_TEST_FUNCTION" . 1096040) ("DEPTH_WRITE_DISABLE" . 1096079) ("DIFFUSE" . 1310743) ("DOUBLE" . 1058056) ("EMISSION" . 1310780) ("EXTENDED_LEGO" . 1058059) ("HIDDEN_LINES" . 1058061) ("HIDE" . 1058063) ("LINESTYLE" . 1058067) ("MAX_VALUE" . 1058080) ("MIN_VALUE" . 1058082) ("PALETTE" . 1058086) ("REGISTER_PROPERTIES" . 1094041) ("RESET_DATA" . 1094044) ("SHADE_RANGE" . 1058090) ("SHADING" . 1058092) ("SHARE_DATA" . 1082385) ("SHININESS" . 1310817) ("SHOW_SKIRT" . 1058099) ("SKIRT" . 1058101) ("SPECULAR" . 1310884) ("STYLE" . 1058103) ("TEXTURE_COORD" . 1604848) ("TEXTURE_HIGHRES" . 1058120) ("TEXTURE_INTERP" . 1058123) ("TEXTURE_MAP" . 1058125) ("THICK" . 1058136) ("USE_TRIANGLES" . 1058140) ("VERT_COLORS" . 1058142) ("XCOORD_CONV" . 1058145) ("YCOORD_CONV" . 1058295) ("ZCOORD_CONV" . 1058307) ("ZERO_OPACITY_SKIP" . 1058163)))
1562 ("Cleanup" pro "IDLgrSymbol" (system) "Obj->[%s::]%s" ("objects_gr182.html")) 1562 ("Cleanup" pro "IDLgrSymbol" (system) "Obj->[%s::]%s" ("objects_gr182.html"))
1563 ("GetProperty" pro "IDLgrSymbol" (system) "Obj->[%s::]%s" ("objects_gr183.html" ) ("objects_gr181.html" ("ALL" . 1058799) ("ALPHA_CHANNEL" . 1315142) ("COLOR" . 1058811) ("DATA" . 1058813) ("SIZE" . 1058817) ("THICK" . 1058823))) 1563 ("GetProperty" pro "IDLgrSymbol" (system) "Obj->[%s::]%s" ("objects_gr183.html" ) ("objects_gr181.html" ("ALL" . 1058799) ("ALPHA_CHANNEL" . 1315142) ("COLOR" . 1058811) ("DATA" . 1058813) ("SIZE" . 1058817) ("THICK" . 1058823)))
1564 ("SetProperty" pro "IDLgrSymbol" (system) "Obj->[%s::]%s" ("objects_gr185.html" ) ("objects_gr181.html" ("ALPHA_CHANNEL" . 1315142) ("COLOR" . 1058811) ("DATA" . 1058813) ("SIZE" . 1058817) ("THICK" . 1058823))) 1564 ("SetProperty" pro "IDLgrSymbol" (system) "Obj->[%s::]%s" ("objects_gr185.html" ) ("objects_gr181.html" ("ALPHA_CHANNEL" . 1315142) ("COLOR" . 1058811) ("DATA" . 1058813) ("SIZE" . 1058817) ("THICK" . 1058823)))
@@ -1569,16 +1569,16 @@
1569 ("Init" fun "IDLgrTessellator" (system) "Result = Obj->[%s::]%s()" ("objects_gr190.html" )) 1569 ("Init" fun "IDLgrTessellator" (system) "Result = Obj->[%s::]%s()" ("objects_gr190.html" ))
1570 ("Tessellate" fun "IDLgrTessellator" (system) "Result = Obj->[%s::]%s( Vertices, Poly)" ("objects_gr192.html" ("AUXDATA" . 1016374) ("QUIET" . 1016376))) 1570 ("Tessellate" fun "IDLgrTessellator" (system) "Result = Obj->[%s::]%s( Vertices, Poly)" ("objects_gr192.html" ("AUXDATA" . 1016374) ("QUIET" . 1016376)))
1571 ("Cleanup" pro "IDLgrText" (system) "Obj->[%s::]%s" ("objects_gr195.html")) 1571 ("Cleanup" pro "IDLgrText" (system) "Obj->[%s::]%s" ("objects_gr195.html"))
1572 ("GetProperty" pro "IDLgrText" (system) "Obj->[%s::]%s" ("objects_gr197.html" ) ("objects_gr194.html" ("ALIGNMENT" . 1058986) ("ALL" . 1058984) ("ALPHA_CHANNEL" . 1096721) ("BASELINE" . 1096723) ("CHAR_DIMENSIONS" . 1058905) ("CLIP_PLANES " . 1058910) ("COLOR " . 1058915) ("DEPTH_TEST_DISABLE" . 1095025) ("DEPTH_TEST_FUNCTION" . 1096162) ("DEPTH_WRITE_DISABLE" . 1096201) ("ENABLE_FORMATTING" . 1058917) ("FILL_BACKGROUND" . 1058922) ("FILL_COLOR" . 1090549) ("FONT" . 1090557) ("HIDE" . 1058929) ("KERNING" . 1058933) ("LOCATIONS" . 1090561) ("ONGLASS" . 1058937) ("PALETTE" . 1058939) ("PARENT" . 1058996) ("RECOMPUTE_DIMENSIONS " . 1058994) ("RENDER_METHOD" . 1096891) ("STRINGS " . 1096894) ("UPDIR " . 1058950) ("VERTICAL_ALIGNMENT" . 1058954) ("XCOORD_CONV" . 1058956) ("XRANGE" . 1059010) ("YCOORD_CONV" . 1059008) ("YRANGE" . 1059022) ("ZCOORD_CONV" . 1058968) ("ZRANGE" . 1058890))) 1572 ("GetProperty" pro "IDLgrText" (system) "Obj->[%s::]%s" ("objects_gr197.html" ) ("objects_gr194.html" ("ALIGNMENT" . 1058986) ("ALL" . 1058984) ("ALPHA_CHANNEL" . 1096721) ("BASELINE" . 1096723) ("CHAR_DIMENSIONS" . 1058905) ("CLIP_PLANES" . 1058910) ("COLOR" . 1058915) ("DEPTH_TEST_DISABLE" . 1095025) ("DEPTH_TEST_FUNCTION" . 1096162) ("DEPTH_WRITE_DISABLE" . 1096201) ("ENABLE_FORMATTING" . 1058917) ("FILL_BACKGROUND" . 1058922) ("FILL_COLOR" . 1090549) ("FONT" . 1090557) ("HIDE" . 1058929) ("KERNING" . 1058933) ("LOCATIONS" . 1090561) ("ONGLASS" . 1058937) ("PALETTE" . 1058939) ("PARENT" . 1058996) ("RECOMPUTE_DIMENSIONS" . 1058994) ("RENDER_METHOD" . 1096891) ("STRINGS" . 1096894) ("UPDIR" . 1058950) ("VERTICAL_ALIGNMENT" . 1058954) ("XCOORD_CONV" . 1058956) ("XRANGE" . 1059010) ("YCOORD_CONV" . 1059008) ("YRANGE" . 1059022) ("ZCOORD_CONV" . 1058968) ("ZRANGE" . 1058890)))
1573 ("SetProperty" pro "IDLgrText" (system) "Obj->[%s::]%s" ("objects_gr199.html" ) ("objects_gr194.html" ("ALIGNMENT" . 1058986) ("ALPHA_CHANNEL" . 1096721) ("BASELINE" . 1096723) ("CHAR_DIMENSIONS" . 1058905) ("CLIP_PLANES " . 1058910) ("COLOR " . 1058915) ("DEPTH_TEST_DISABLE" . 1095025) ("DEPTH_TEST_FUNCTION" . 1096162) ("DEPTH_WRITE_DISABLE" . 1096201) ("ENABLE_FORMATTING" . 1058917) ("FILL_BACKGROUND" . 1058922) ("FILL_COLOR" . 1090549) ("FONT" . 1090557) ("HIDE" . 1058929) ("KERNING" . 1058933) ("LOCATIONS" . 1090561) ("ONGLASS" . 1058937) ("PALETTE" . 1058939) ("RECOMPUTE_DIMENSIONS " . 1058994) ("RENDER_METHOD" . 1096891) ("STRINGS " . 1096894) ("UPDIR " . 1058950) ("VERTICAL_ALIGNMENT" . 1058954) ("XCOORD_CONV" . 1058956) ("YCOORD_CONV" . 1059008) ("ZCOORD_CONV" . 1058968))) 1573 ("SetProperty" pro "IDLgrText" (system) "Obj->[%s::]%s" ("objects_gr199.html" ) ("objects_gr194.html" ("ALIGNMENT" . 1058986) ("ALPHA_CHANNEL" . 1096721) ("BASELINE" . 1096723) ("CHAR_DIMENSIONS" . 1058905) ("CLIP_PLANES" . 1058910) ("COLOR" . 1058915) ("DEPTH_TEST_DISABLE" . 1095025) ("DEPTH_TEST_FUNCTION" . 1096162) ("DEPTH_WRITE_DISABLE" . 1096201) ("ENABLE_FORMATTING" . 1058917) ("FILL_BACKGROUND" . 1058922) ("FILL_COLOR" . 1090549) ("FONT" . 1090557) ("HIDE" . 1058929) ("KERNING" . 1058933) ("LOCATIONS" . 1090561) ("ONGLASS" . 1058937) ("PALETTE" . 1058939) ("RECOMPUTE_DIMENSIONS" . 1058994) ("RENDER_METHOD" . 1096891) ("STRINGS" . 1096894) ("UPDIR" . 1058950) ("VERTICAL_ALIGNMENT" . 1058954) ("XCOORD_CONV" . 1058956) ("YCOORD_CONV" . 1059008) ("ZCOORD_CONV" . 1058968)))
1574 ("GetCTM" fun "IDLgrText" (system) "Result = Obj->[%s::]%s()" ("objects_gr196.html" ("DESTINATION" . 1016508) ("PATH" . 1016510) ("TOP" . 1016516))) 1574 ("GetCTM" fun "IDLgrText" (system) "Result = Obj->[%s::]%s()" ("objects_gr196.html" ("DESTINATION" . 1016508) ("PATH" . 1016510) ("TOP" . 1016516)))
1575 ("Init" fun "IDLgrText" (system) "Result = Obj->[%s::]%s([, String or vector of strings])" ("objects_gr198.html" ) ("objects_gr194.html" ("ALIGNMENT" . 1058986) ("ALPHA_CHANNEL" . 1096721) ("BASELINE" . 1096723) ("CHAR_DIMENSIONS" . 1058905) ("CLIP_PLANES " . 1058910) ("COLOR " . 1058915) ("DEPTH_TEST_DISABLE" . 1095025) ("DEPTH_TEST_FUNCTION" . 1096162) ("DEPTH_WRITE_DISABLE" . 1096201) ("ENABLE_FORMATTING" . 1058917) ("FILL_BACKGROUND" . 1058922) ("FILL_COLOR" . 1090549) ("FONT" . 1090557) ("HIDE" . 1058929) ("KERNING" . 1058933) ("LOCATIONS" . 1090561) ("ONGLASS" . 1058937) ("PALETTE" . 1058939) ("RECOMPUTE_DIMENSIONS " . 1058994) ("REGISTER_PROPERTIES" . 1058946) ("RENDER_METHOD" . 1096891) ("STRINGS " . 1096894) ("UPDIR " . 1058950) ("VERTICAL_ALIGNMENT" . 1058954) ("XCOORD_CONV" . 1058956) ("YCOORD_CONV" . 1059008) ("ZCOORD_CONV" . 1058968))) 1575 ("Init" fun "IDLgrText" (system) "Result = Obj->[%s::]%s([, String or vector of strings])" ("objects_gr198.html" ) ("objects_gr194.html" ("ALIGNMENT" . 1058986) ("ALPHA_CHANNEL" . 1096721) ("BASELINE" . 1096723) ("CHAR_DIMENSIONS" . 1058905) ("CLIP_PLANES" . 1058910) ("COLOR" . 1058915) ("DEPTH_TEST_DISABLE" . 1095025) ("DEPTH_TEST_FUNCTION" . 1096162) ("DEPTH_WRITE_DISABLE" . 1096201) ("ENABLE_FORMATTING" . 1058917) ("FILL_BACKGROUND" . 1058922) ("FILL_COLOR" . 1090549) ("FONT" . 1090557) ("HIDE" . 1058929) ("KERNING" . 1058933) ("LOCATIONS" . 1090561) ("ONGLASS" . 1058937) ("PALETTE" . 1058939) ("RECOMPUTE_DIMENSIONS" . 1058994) ("REGISTER_PROPERTIES" . 1058946) ("RENDER_METHOD" . 1096891) ("STRINGS" . 1096894) ("UPDIR" . 1058950) ("VERTICAL_ALIGNMENT" . 1058954) ("XCOORD_CONV" . 1058956) ("YCOORD_CONV" . 1059008) ("ZCOORD_CONV" . 1058968)))
1576 ("Add" pro "IDLgrView" (system) "Obj->[%s::]%s, Model" ("objects_gr202.html" ("POSITION" . 1016823))) 1576 ("Add" pro "IDLgrView" (system) "Obj->[%s::]%s, Model" ("objects_gr202.html" ("POSITION" . 1016823)))
1577 ("Cleanup" pro "IDLgrView" (system) "Obj->[%s::]%s" ("objects_gr203.html")) 1577 ("Cleanup" pro "IDLgrView" (system) "Obj->[%s::]%s" ("objects_gr203.html"))
1578 ("GetProperty" pro "IDLgrView" (system) "Obj->[%s::]%s" ("objects_gr205.html" ) ("objects_gr201.html" ("ALL " . 1059162) ("COLOR" . 1059182) ("DEPTH_CUE" . 1059184) ("DIMENSIONS" . 1059192) ("DOUBLE" . 1059194) ("EYE" . 1059197) ("HIDE" . 1059199) ("LOCATION" . 1090641) ("PARENT " . 1092817) ("PROJECTION" . 1059231) ("TRANSPARENT" . 1094108) ("UNITS " . 1059207) ("VIEWPLANE_RECT " . 1059216) ("ZCLIP " . 1059219))) 1578 ("GetProperty" pro "IDLgrView" (system) "Obj->[%s::]%s" ("objects_gr205.html" ) ("objects_gr201.html" ("ALL" . 1059162) ("COLOR" . 1059182) ("DEPTH_CUE" . 1059184) ("DIMENSIONS" . 1059192) ("DOUBLE" . 1059194) ("EYE" . 1059197) ("HIDE" . 1059199) ("LOCATION" . 1090641) ("PARENT" . 1092817) ("PROJECTION" . 1059231) ("TRANSPARENT" . 1094108) ("UNITS" . 1059207) ("VIEWPLANE_RECT" . 1059216) ("ZCLIP" . 1059219)))
1579 ("SetProperty" pro "IDLgrView" (system) "Obj->[%s::]%s" ("objects_gr207.html" ) ("objects_gr201.html" ("COLOR" . 1059182) ("DEPTH_CUE" . 1059184) ("DIMENSIONS" . 1059192) ("DOUBLE" . 1059194) ("EYE" . 1059197) ("HIDE" . 1059199) ("LOCATION" . 1090641) ("PROJECTION" . 1059231) ("TRANSPARENT" . 1094108) ("UNITS " . 1059207) ("VIEWPLANE_RECT " . 1059216) ("ZCLIP " . 1059219))) 1579 ("SetProperty" pro "IDLgrView" (system) "Obj->[%s::]%s" ("objects_gr207.html" ) ("objects_gr201.html" ("COLOR" . 1059182) ("DEPTH_CUE" . 1059184) ("DIMENSIONS" . 1059192) ("DOUBLE" . 1059194) ("EYE" . 1059197) ("HIDE" . 1059199) ("LOCATION" . 1090641) ("PROJECTION" . 1059231) ("TRANSPARENT" . 1094108) ("UNITS" . 1059207) ("VIEWPLANE_RECT" . 1059216) ("ZCLIP" . 1059219)))
1580 ("GetByName" fun "IDLgrView" (system) "Result = Obj->[%s::]%s(Name)" ("objects_gr204.html")) 1580 ("GetByName" fun "IDLgrView" (system) "Result = Obj->[%s::]%s(Name)" ("objects_gr204.html"))
1581 ("Init" fun "IDLgrView" (system) "Result = Obj->[%s::]%s()" ("objects_gr206.html" ) ("objects_gr201.html" ("COLOR" . 1059182) ("DEPTH_CUE" . 1059184) ("DIMENSIONS" . 1059192) ("DOUBLE" . 1059194) ("EYE" . 1059197) ("HIDE" . 1059199) ("LOCATION" . 1090641) ("PROJECTION" . 1059231) ("REGISTER_PROPERTIES" . 1059205) ("TRANSPARENT" . 1094108) ("UNITS " . 1059207) ("VIEWPLANE_RECT " . 1059216) ("ZCLIP " . 1059219))) 1581 ("Init" fun "IDLgrView" (system) "Result = Obj->[%s::]%s()" ("objects_gr206.html" ) ("objects_gr201.html" ("COLOR" . 1059182) ("DEPTH_CUE" . 1059184) ("DIMENSIONS" . 1059192) ("DOUBLE" . 1059194) ("EYE" . 1059197) ("HIDE" . 1059199) ("LOCATION" . 1090641) ("PROJECTION" . 1059231) ("REGISTER_PROPERTIES" . 1059205) ("TRANSPARENT" . 1094108) ("UNITS" . 1059207) ("VIEWPLANE_RECT" . 1059216) ("ZCLIP" . 1059219)))
1582 ("Add" pro "IDLgrViewgroup" (system) "Obj->[%s::]%s, Object" ("objects_gr210.html" ("POSITION" . 1017170))) 1582 ("Add" pro "IDLgrViewgroup" (system) "Obj->[%s::]%s, Object" ("objects_gr210.html" ("POSITION" . 1017170)))
1583 ("Cleanup" pro "IDLgrViewgroup" (system) "Obj->[%s::]%s" ("objects_gr211.html")) 1583 ("Cleanup" pro "IDLgrViewgroup" (system) "Obj->[%s::]%s" ("objects_gr211.html"))
1584 ("GetProperty" pro "IDLgrViewgroup" (system) "Obj->[%s::]%s" ("objects_gr213.html" ) ("objects_gr209.html" ("ALL" . 1077311) ("HIDE" . 1059327) ("PARENT" . 1084394))) 1584 ("GetProperty" pro "IDLgrViewgroup" (system) "Obj->[%s::]%s" ("objects_gr213.html" ) ("objects_gr209.html" ("ALL" . 1077311) ("HIDE" . 1059327) ("PARENT" . 1084394)))
@@ -1587,28 +1587,28 @@
1587 ("Init" fun "IDLgrViewgroup" (system) "Result = Obj->[%s::]%s()" ("objects_gr214.html" ) ("objects_gr209.html" ("HIDE" . 1059327) ("REGISTER_PROPERTIES" . 1059341))) 1587 ("Init" fun "IDLgrViewgroup" (system) "Result = Obj->[%s::]%s()" ("objects_gr214.html" ) ("objects_gr209.html" ("HIDE" . 1059327) ("REGISTER_PROPERTIES" . 1059341)))
1588 ("Cleanup" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr218.html")) 1588 ("Cleanup" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr218.html"))
1589 ("ComputeBounds" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr219.html" ("OPACITY" . 1017518) ("RESET" . 1017520) ("VOLUMES" . 1017522))) 1589 ("ComputeBounds" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr219.html" ("OPACITY" . 1017518) ("RESET" . 1017520) ("VOLUMES" . 1017522)))
1590 ("GetProperty" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr221.html" ) ("objects_gr217.html" ("ALL" . 1059382) ("ALPHA_CHANNEL" . 1315212) ("AMBIENT" . 1059403) ("BOUNDS" . 1059406) ("CLIP_PLANES" . 1059408) ("COMPOSITE_FUNCTION" . 1092822) ("DATA0" . 1059427) ("DATA1 " . 1059429) ("DATA2" . 1059431) ("DATA3" . 1059433) ("DEPTH_CUE" . 1059436) ("DEPTH_TEST_DISABLE" . 1095038) ("DEPTH_TEST_FUNCTION" . 1096277) ("DEPTH_WRITE_DISABLE" . 1096316) ("HIDE" . 1059445) ("HINTS" . 1059449) ("INTERPOLATE" . 1059455) ("LIGHTING_MODEL" . 1059457) ("NO_COPY" . 1059462) ("OPACITY_TABLE0" . 1086135) ("OPACITY_TABLE1" . 1059466) ("PARENT" . 1088485) ("RENDER_STEP" . 1096662) ("RGB_TABLE0" . 1088582) ("RGB_TABLE1" . 1059472) ("TWO_SIDED " . 1059474) ("VALID_DATA" . 1059634) ("VOLUME_SELECT " . 1059632) ("XCOORD_CONV" . 1059489) ("XRANGE" . 1059648) ("YCOORD_CONV" . 1059495) ("YRANGE" . 1059660) ("ZBUFFER" . 1059501) ("ZCOORD_CONV" . 1059503) ("ZERO_OPACITY_SKIP" . 1059509) ("ZRANGE" . 1059393))) 1590 ("GetProperty" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr221.html" ) ("objects_gr217.html" ("ALL" . 1059382) ("ALPHA_CHANNEL" . 1315212) ("AMBIENT" . 1059403) ("BOUNDS" . 1059406) ("CLIP_PLANES" . 1059408) ("COMPOSITE_FUNCTION" . 1092822) ("DATA0" . 1059427) ("DATA1" . 1059429) ("DATA2" . 1059431) ("DATA3" . 1059433) ("DEPTH_CUE" . 1059436) ("DEPTH_TEST_DISABLE" . 1095038) ("DEPTH_TEST_FUNCTION" . 1096277) ("DEPTH_WRITE_DISABLE" . 1096316) ("HIDE" . 1059445) ("HINTS" . 1059449) ("INTERPOLATE" . 1059455) ("LIGHTING_MODEL" . 1059457) ("NO_COPY" . 1059462) ("OPACITY_TABLE0" . 1086135) ("OPACITY_TABLE1" . 1059466) ("PARENT" . 1088485) ("RENDER_STEP" . 1096662) ("RGB_TABLE0" . 1088582) ("RGB_TABLE1" . 1059472) ("TWO_SIDED" . 1059474) ("VALID_DATA" . 1059634) ("VOLUME_SELECT" . 1059632) ("XCOORD_CONV" . 1059489) ("XRANGE" . 1059648) ("YCOORD_CONV" . 1059495) ("YRANGE" . 1059660) ("ZBUFFER" . 1059501) ("ZCOORD_CONV" . 1059503) ("ZERO_OPACITY_SKIP" . 1059509) ("ZRANGE" . 1059393)))
1591 ("SetProperty" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr224.html" ) ("objects_gr217.html" ("ALPHA_CHANNEL" . 1315212) ("AMBIENT" . 1059403) ("BOUNDS" . 1059406) ("CLIP_PLANES" . 1059408) ("COMPOSITE_FUNCTION" . 1092822) ("DATA0" . 1059427) ("DATA1 " . 1059429) ("DATA2" . 1059431) ("DATA3" . 1059433) ("DEPTH_CUE" . 1059436) ("DEPTH_TEST_DISABLE" . 1095038) ("DEPTH_TEST_FUNCTION" . 1096277) ("DEPTH_WRITE_DISABLE" . 1096316) ("HIDE" . 1059445) ("HINTS" . 1059449) ("INTERPOLATE" . 1059455) ("LIGHTING_MODEL" . 1059457) ("NO_COPY" . 1059462) ("OPACITY_TABLE0" . 1086135) ("OPACITY_TABLE1" . 1059466) ("RENDER_STEP" . 1096662) ("RGB_TABLE0" . 1088582) ("RGB_TABLE1" . 1059472) ("TWO_SIDED " . 1059474) ("VOLUME_SELECT " . 1059632) ("XCOORD_CONV" . 1059489) ("YCOORD_CONV" . 1059495) ("ZBUFFER" . 1059501) ("ZCOORD_CONV" . 1059503) ("ZERO_OPACITY_SKIP" . 1059509))) 1591 ("SetProperty" pro "IDLgrVolume" (system) "Obj->[%s::]%s" ("objects_gr224.html" ) ("objects_gr217.html" ("ALPHA_CHANNEL" . 1315212) ("AMBIENT" . 1059403) ("BOUNDS" . 1059406) ("CLIP_PLANES" . 1059408) ("COMPOSITE_FUNCTION" . 1092822) ("DATA0" . 1059427) ("DATA1" . 1059429) ("DATA2" . 1059431) ("DATA3" . 1059433) ("DEPTH_CUE" . 1059436) ("DEPTH_TEST_DISABLE" . 1095038) ("DEPTH_TEST_FUNCTION" . 1096277) ("DEPTH_WRITE_DISABLE" . 1096316) ("HIDE" . 1059445) ("HINTS" . 1059449) ("INTERPOLATE" . 1059455) ("LIGHTING_MODEL" . 1059457) ("NO_COPY" . 1059462) ("OPACITY_TABLE0" . 1086135) ("OPACITY_TABLE1" . 1059466) ("RENDER_STEP" . 1096662) ("RGB_TABLE0" . 1088582) ("RGB_TABLE1" . 1059472) ("TWO_SIDED" . 1059474) ("VOLUME_SELECT" . 1059632) ("XCOORD_CONV" . 1059489) ("YCOORD_CONV" . 1059495) ("ZBUFFER" . 1059501) ("ZCOORD_CONV" . 1059503) ("ZERO_OPACITY_SKIP" . 1059509)))
1592 ("GetCTM" fun "IDLgrVolume" (system) "Result = Obj->[%s::]%s()" ("objects_gr220.html" ("DESTINATION" . 1017555) ("PATH" . 1017557) ("TOP" . 1017563))) 1592 ("GetCTM" fun "IDLgrVolume" (system) "Result = Obj->[%s::]%s()" ("objects_gr220.html" ("DESTINATION" . 1017555) ("PATH" . 1017557) ("TOP" . 1017563)))
1593 ("Init" fun "IDLgrVolume" (system) "Result = Obj->[%s::]%s([, vol0 [, vol1 [, vol2 [, vol3]]]])" ("objects_gr222.html" ) ("objects_gr217.html" ("ALPHA_CHANNEL" . 1315212) ("AMBIENT" . 1059403) ("BOUNDS" . 1059406) ("CLIP_PLANES" . 1059408) ("COMPOSITE_FUNCTION" . 1092822) ("DATA0" . 1059427) ("DATA1 " . 1059429) ("DATA2" . 1059431) ("DATA3" . 1059433) ("DEPTH_CUE" . 1059436) ("DEPTH_TEST_DISABLE" . 1095038) ("DEPTH_TEST_FUNCTION" . 1096277) ("DEPTH_WRITE_DISABLE" . 1096316) ("HIDE" . 1059445) ("HINTS" . 1059449) ("INTERPOLATE" . 1059455) ("LIGHTING_MODEL" . 1059457) ("NO_COPY" . 1059462) ("OPACITY_TABLE0" . 1086135) ("OPACITY_TABLE1" . 1059466) ("REGISTER_PROPERTIES" . 1059616) ("RENDER_STEP" . 1096662) ("RGB_TABLE0" . 1088582) ("RGB_TABLE1" . 1059472) ("TWO_SIDED " . 1059474) ("VOLUME_SELECT " . 1059632) ("XCOORD_CONV" . 1059489) ("YCOORD_CONV" . 1059495) ("ZBUFFER" . 1059501) ("ZCOORD_CONV" . 1059503) ("ZERO_OPACITY_SKIP" . 1059509))) 1593 ("Init" fun "IDLgrVolume" (system) "Result = Obj->[%s::]%s([, vol0 [, vol1 [, vol2 [, vol3]]]])" ("objects_gr222.html" ) ("objects_gr217.html" ("ALPHA_CHANNEL" . 1315212) ("AMBIENT" . 1059403) ("BOUNDS" . 1059406) ("CLIP_PLANES" . 1059408) ("COMPOSITE_FUNCTION" . 1092822) ("DATA0" . 1059427) ("DATA1" . 1059429) ("DATA2" . 1059431) ("DATA3" . 1059433) ("DEPTH_CUE" . 1059436) ("DEPTH_TEST_DISABLE" . 1095038) ("DEPTH_TEST_FUNCTION" . 1096277) ("DEPTH_WRITE_DISABLE" . 1096316) ("HIDE" . 1059445) ("HINTS" . 1059449) ("INTERPOLATE" . 1059455) ("LIGHTING_MODEL" . 1059457) ("NO_COPY" . 1059462) ("OPACITY_TABLE0" . 1086135) ("OPACITY_TABLE1" . 1059466) ("REGISTER_PROPERTIES" . 1059616) ("RENDER_STEP" . 1096662) ("RGB_TABLE0" . 1088582) ("RGB_TABLE1" . 1059472) ("TWO_SIDED" . 1059474) ("VOLUME_SELECT" . 1059632) ("XCOORD_CONV" . 1059489) ("YCOORD_CONV" . 1059495) ("ZBUFFER" . 1059501) ("ZCOORD_CONV" . 1059503) ("ZERO_OPACITY_SKIP" . 1059509)))
1594 ("PickVoxel" fun "IDLgrVolume" (system) "Result = Obj->[%s::]%s ( Win, View, Point)" ("objects_gr223.html" ("PATH" . 1017818))) 1594 ("PickVoxel" fun "IDLgrVolume" (system) "Result = Obj->[%s::]%s ( Win, View, Point)" ("objects_gr223.html" ("PATH" . 1017818)))
1595 ("Cleanup" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr227.html")) 1595 ("Cleanup" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr227.html"))
1596 ("Draw" pro "IDLgrVRML" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr228.html")) 1596 ("Draw" pro "IDLgrVRML" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr228.html"))
1597 ("GetDeviceInfo" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr229.html" ("ALL" . 1018053) ("MAX_NUM_CLIP_PLANES" . 1018055) ("MAX_TEXTURE_DIMENSIONS" . 1018057) ("MAX_VIEWPORT_DIMENSIONS" . 1018059) ("NAME" . 1018061) ("NUM_CPUS" . 1018063) ("VENDOR" . 1018066) ("VERSION" . 1018068))) 1597 ("GetDeviceInfo" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr229.html" ("ALL" . 1018053) ("MAX_NUM_CLIP_PLANES" . 1018055) ("MAX_TEXTURE_DIMENSIONS" . 1018057) ("MAX_VIEWPORT_DIMENSIONS" . 1018059) ("NAME" . 1018061) ("NUM_CPUS" . 1018063) ("VENDOR" . 1018066) ("VERSION" . 1018068)))
1598 ("GetProperty" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr231.html" ) ("objects_gr226.html" ("ALL" . 1059804) ("COLOR_MODEL" . 1059817) ("DIMENSIONS" . 1059821) ("FILENAME" . 1059824) ("GRAPHICS_TREE " . 1059826) ("N_COLORS" . 1059828) ("PALETTE" . 1059830) ("QUALITY " . 1059832) ("RESOLUTION" . 1094159) ("SCREEN_DIMENSIONS" . 1059862) ("UNITS" . 1059860))) 1598 ("GetProperty" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr231.html" ) ("objects_gr226.html" ("ALL" . 1059804) ("COLOR_MODEL" . 1059817) ("DIMENSIONS" . 1059821) ("FILENAME" . 1059824) ("GRAPHICS_TREE" . 1059826) ("N_COLORS" . 1059828) ("PALETTE" . 1059830) ("QUALITY" . 1059832) ("RESOLUTION" . 1094159) ("SCREEN_DIMENSIONS" . 1059862) ("UNITS" . 1059860)))
1599 ("SetProperty" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr234.html" ) ("objects_gr226.html" ("DIMENSIONS" . 1059821) ("FILENAME" . 1059824) ("GRAPHICS_TREE " . 1059826) ("PALETTE" . 1059830) ("QUALITY " . 1059832) ("RESOLUTION" . 1094159) ("UNITS" . 1059860))) 1599 ("SetProperty" pro "IDLgrVRML" (system) "Obj->[%s::]%s" ("objects_gr234.html" ) ("objects_gr226.html" ("DIMENSIONS" . 1059821) ("FILENAME" . 1059824) ("GRAPHICS_TREE" . 1059826) ("PALETTE" . 1059830) ("QUALITY" . 1059832) ("RESOLUTION" . 1094159) ("UNITS" . 1059860)))
1600 ("GetFontnames" fun "IDLgrVRML" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr230.html" ("IDL_FONTS" . 1018109) ("STYLES" . 1018111))) 1600 ("GetFontnames" fun "IDLgrVRML" (system) "Result = Obj->[%s::]%s( FamilyName)" ("objects_gr230.html" ("IDL_FONTS" . 1018109) ("STYLES" . 1018111)))
1601 ("GetTextDimensions" fun "IDLgrVRML" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr232.html" ("DESCENT" . 1018185) ("PATH" . 1018187))) 1601 ("GetTextDimensions" fun "IDLgrVRML" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr232.html" ("DESCENT" . 1018185) ("PATH" . 1018187)))
1602 ("Init" fun "IDLgrVRML" (system) "Result = Obj->[%s::]%s()" ("objects_gr233.html" ) ("objects_gr226.html" ("COLOR_MODEL" . 1059817) ("DIMENSIONS" . 1059821) ("FILENAME" . 1059824) ("GRAPHICS_TREE " . 1059826) ("N_COLORS" . 1059828) ("PALETTE" . 1059830) ("QUALITY " . 1059832) ("REGISTER_PROPERTIES" . 1059837) ("RESOLUTION" . 1094159) ("UNITS" . 1059860) ("WORLDINFO " . 1059848) ("WORLDTITLE" . 1059850))) 1602 ("Init" fun "IDLgrVRML" (system) "Result = Obj->[%s::]%s()" ("objects_gr233.html" ) ("objects_gr226.html" ("COLOR_MODEL" . 1059817) ("DIMENSIONS" . 1059821) ("FILENAME" . 1059824) ("GRAPHICS_TREE" . 1059826) ("N_COLORS" . 1059828) ("PALETTE" . 1059830) ("QUALITY" . 1059832) ("REGISTER_PROPERTIES" . 1059837) ("RESOLUTION" . 1094159) ("UNITS" . 1059860) ("WORLDINFO" . 1059848) ("WORLDTITLE" . 1059850)))
1603 ("Cleanup" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr237.html")) 1603 ("Cleanup" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr237.html"))
1604 ("Draw" pro "IDLgrWindow" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr238.html" ("CREATE_INSTANCE" . 1018509) ("DRAW_INSTANCE" . 1018511))) 1604 ("Draw" pro "IDLgrWindow" (system) "Obj->[%s::]%s [, Picture]" ("objects_gr238.html" ("CREATE_INSTANCE" . 1018509) ("DRAW_INSTANCE" . 1018511)))
1605 ("Erase" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr239.html" ("COLOR" . 1018544))) 1605 ("Erase" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr239.html" ("COLOR" . 1018544)))
1606 ("GetDeviceInfo" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr241.html" ("ALL" . 1018622) ("MAX_NUM_CLIP_PLANES" . 1018624) ("MAX_TEXTURE_DIMENSIONS" . 1018626) ("MAX_VIEWPORT_DIMENSIONS" . 1018628) ("NAME" . 1018630) ("NUM_CPUS" . 1018632) ("VENDOR" . 1018635) ("VERSION" . 1018637))) 1606 ("GetDeviceInfo" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr241.html" ("ALL" . 1018622) ("MAX_NUM_CLIP_PLANES" . 1018624) ("MAX_TEXTURE_DIMENSIONS" . 1018626) ("MAX_VIEWPORT_DIMENSIONS" . 1018628) ("NAME" . 1018630) ("NUM_CPUS" . 1018632) ("VENDOR" . 1018635) ("VERSION" . 1018637)))
1607 ("GetProperty" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr244.html" ) ("objects_gr236.html" ("ALL" . 1059951) ("COLOR_MODEL" . 1059974) ("CURRENT_ZOOM" . 1249228) ("DIMENSIONS " . 1249231) ("DISPLAY_NAME (X Only)" . 1059985) ("GRAPHICS_TREE" . 1059987) ("IMAGE_DATA " . 1060084) ("LOCATION " . 1060082) ("MINIMUM_VIRTUAL_DIMENSIONS" . 1343479) ("N_COLORS" . 1059992) ("PALETTE" . 1059998) ("QUALITY" . 1060003) ("RENDERER" . 1094184) ("RESOLUTION" . 1060060) ("RETAIN" . 1060058) ("SCREEN_DIMENSIONS " . 1060073) ("TITLE" . 1060071) ("UNITS" . 1060033) ("VIRTUAL_DIMENSIONS" . 1060050) ("VISIBLE_LOCATION" . 1097046) ("ZBUFFER_DATA" . 1091007) ("ZOOM_BASE" . 1342797) ("ZOOM_NSTEP" . 1342953))) 1607 ("GetProperty" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr244.html" ) ("objects_gr236.html" ("ALL" . 1059951) ("COLOR_MODEL" . 1059974) ("CURRENT_ZOOM" . 1249228) ("DIMENSIONS" . 1249231) ("DISPLAY_NAME (X Only)" . 1059985) ("GRAPHICS_TREE" . 1059987) ("IMAGE_DATA" . 1060084) ("LOCATION" . 1060082) ("MINIMUM_VIRTUAL_DIMENSIONS" . 1343479) ("N_COLORS" . 1059992) ("PALETTE" . 1059998) ("QUALITY" . 1060003) ("RENDERER" . 1094184) ("RESOLUTION" . 1060060) ("RETAIN" . 1060058) ("SCREEN_DIMENSIONS" . 1060073) ("TITLE" . 1060071) ("UNITS" . 1060033) ("VIRTUAL_DIMENSIONS" . 1060050) ("VISIBLE_LOCATION" . 1097046) ("ZBUFFER_DATA" . 1091007) ("ZOOM_BASE" . 1342797) ("ZOOM_NSTEP" . 1342953)))
1608 ("Iconify" pro "IDLgrWindow" (system) "Obj->[%s::]%s, IconFlag" ("objects_gr246.html")) 1608 ("Iconify" pro "IDLgrWindow" (system) "Obj->[%s::]%s, IconFlag" ("objects_gr246.html"))
1609 ("SetCurrentCursor" pro "IDLgrWindow" (system) "Obj->[%s::]%s [, CursorName]" ("objects_gr251.html" ("HOTSPOT" . 1019148) ("IMAGE" . 1019144) ("MASK" . 1019146) ("STANDARD" . 1019150))) 1609 ("SetCurrentCursor" pro "IDLgrWindow" (system) "Obj->[%s::]%s [, CursorName]" ("objects_gr251.html" ("HOTSPOT" . 1019148) ("IMAGE" . 1019144) ("MASK" . 1019146) ("STANDARD" . 1019150)))
1610 ("SetCurrentZoom" pro "IDLgrWindow" (system) "Obj-> [%s::]%s, ZoomFactor" ("objects_gr252.html" ("RESET" . 1360383))) 1610 ("SetCurrentZoom" pro "IDLgrWindow" (system) "Obj-> [%s::]%s, ZoomFactor" ("objects_gr252.html" ("RESET" . 1360383)))
1611 ("SetProperty" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr253.html" ) ("objects_gr236.html" ("DIMENSIONS " . 1249231) ("DISPLAY_NAME (X Only)" . 1059985) ("GRAPHICS_TREE" . 1059987) ("LOCATION " . 1060082) ("MINIMUM_VIRTUAL_DIMENSIONS" . 1343479) ("PALETTE" . 1059998) ("QUALITY" . 1060003) ("TITLE" . 1060071) ("UNITS" . 1060033) ("VIRTUAL_DIMENSIONS" . 1060050) ("VISIBLE_LOCATION" . 1097046) ("ZOOM_BASE" . 1342797))) 1611 ("SetProperty" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr253.html" ) ("objects_gr236.html" ("DIMENSIONS" . 1249231) ("DISPLAY_NAME (X Only)" . 1059985) ("GRAPHICS_TREE" . 1059987) ("LOCATION" . 1060082) ("MINIMUM_VIRTUAL_DIMENSIONS" . 1343479) ("PALETTE" . 1059998) ("QUALITY" . 1060003) ("TITLE" . 1060071) ("UNITS" . 1060033) ("VIRTUAL_DIMENSIONS" . 1060050) ("VISIBLE_LOCATION" . 1097046) ("ZOOM_BASE" . 1342797)))
1612 ("Show" pro "IDLgrWindow" (system) "Obj->[%s::]%s, Position" ("objects_gr254.html")) 1612 ("Show" pro "IDLgrWindow" (system) "Obj->[%s::]%s, Position" ("objects_gr254.html"))
1613 ("ZoomIn" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr255.html")) 1613 ("ZoomIn" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr255.html"))
1614 ("ZoomOut" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr256.html")) 1614 ("ZoomOut" pro "IDLgrWindow" (system) "Obj->[%s::]%s" ("objects_gr256.html"))
@@ -1616,7 +1616,7 @@
1616 ("GetDimensions" fun "IDLgrWindow" (system) "Result = Obj -> [%s::]%s ()" ("objects_gr242.html" ("MINIMUM_VIRTUAL_DIMENSIONS" . 1360348) ("ORIGINAL_VIRTUAL_DIMENSIONS" . 1360355) ("VIRTUAL_DIMENSIONS" . 1360358) ("VISIBLE_LOCATION" . 1360361))) 1616 ("GetDimensions" fun "IDLgrWindow" (system) "Result = Obj -> [%s::]%s ()" ("objects_gr242.html" ("MINIMUM_VIRTUAL_DIMENSIONS" . 1360348) ("ORIGINAL_VIRTUAL_DIMENSIONS" . 1360355) ("VIRTUAL_DIMENSIONS" . 1360358) ("VISIBLE_LOCATION" . 1360361)))
1617 ("GetFontnames" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s(FamilyName)" ("objects_gr243.html" ("IDL_FONTS" . 1018678) ("STYLES" . 1018680))) 1617 ("GetFontnames" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s(FamilyName)" ("objects_gr243.html" ("IDL_FONTS" . 1018678) ("STYLES" . 1018680)))
1618 ("GetTextDimensions" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr245.html" ("DESCENT" . 1018765) ("PATH" . 1018767))) 1618 ("GetTextDimensions" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s( TextObj)" ("objects_gr245.html" ("DESCENT" . 1018765) ("PATH" . 1018767)))
1619 ("Init" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s()" ("objects_gr247.html" ) ("objects_gr236.html" ("COLOR_MODEL" . 1059974) ("DIMENSIONS " . 1249231) ("GRAPHICS_TREE" . 1059987) ("LOCATION " . 1060082) ("MINIMUM_VIRTUAL_DIMENSIONS" . 1343479) ("N_COLORS" . 1059992) ("PALETTE" . 1059998) ("QUALITY" . 1060003) ("REGISTER_PROPERTIES" . 1060008) ("RENDERER" . 1094184) ("RETAIN" . 1060058) ("TITLE" . 1060071) ("UNITS" . 1060033) ("VIRTUAL_DIMENSIONS" . 1060050) ("VISIBLE_LOCATION" . 1097046) ("ZOOM_BASE" . 1342797))) 1619 ("Init" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s()" ("objects_gr247.html" ) ("objects_gr236.html" ("COLOR_MODEL" . 1059974) ("DIMENSIONS" . 1249231) ("GRAPHICS_TREE" . 1059987) ("LOCATION" . 1060082) ("MINIMUM_VIRTUAL_DIMENSIONS" . 1343479) ("N_COLORS" . 1059992) ("PALETTE" . 1059998) ("QUALITY" . 1060003) ("REGISTER_PROPERTIES" . 1060008) ("RENDERER" . 1094184) ("RETAIN" . 1060058) ("TITLE" . 1060071) ("UNITS" . 1060033) ("VIRTUAL_DIMENSIONS" . 1060050) ("VISIBLE_LOCATION" . 1097046) ("ZOOM_BASE" . 1342797)))
1620 ("PickData" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s( View, Object, Location, XYZLocation)" ("objects_gr248.html" ("DIMENSIONS" . 1018957) ("PATH" . 1018961) ("PICK_STATUS" . 1018967))) 1620 ("PickData" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s( View, Object, Location, XYZLocation)" ("objects_gr248.html" ("DIMENSIONS" . 1018957) ("PATH" . 1018961) ("PICK_STATUS" . 1018967)))
1621 ("Read" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s()" ("objects_gr249.html")) 1621 ("Read" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s()" ("objects_gr249.html"))
1622 ("Select" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s( Picture, XY)" ("objects_gr250.html" ("DIMENSIONS" . 1019069) ("ORDER" . 1019073) ("SUB_SELECTION" . 1343670) ("UNITS" . 1019076))) 1622 ("Select" fun "IDLgrWindow" (system) "Result = Obj->[%s::]%s( Picture, XY)" ("objects_gr250.html" ("DIMENSIONS" . 1019069) ("ORDER" . 1019073) ("SUB_SELECTION" . 1343670) ("UNITS" . 1019076)))
@@ -1691,7 +1691,7 @@
1691 ("PromptUserText" fun "IDLitIMessaging" (system) "Result = Obj->[%s::]%s(StrPrompt, Answer)" ("objects_it86.html" ("TITLE" . 1080016))) 1691 ("PromptUserText" fun "IDLitIMessaging" (system) "Result = Obj->[%s::]%s(StrPrompt, Answer)" ("objects_it86.html" ("TITLE" . 1080016)))
1692 ("PromptUserYesNo" fun "IDLitIMessaging" (system) "Result = Obj->[%s::]%s(StrPrompt, Answer)" ("objects_it87.html" ("TITLE" . 1080036))) 1692 ("PromptUserYesNo" fun "IDLitIMessaging" (system) "Result = Obj->[%s::]%s(StrPrompt, Answer)" ("objects_it87.html" ("TITLE" . 1080036)))
1693 ("Cleanup" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it93.html")) 1693 ("Cleanup" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it93.html"))
1694 ("GetProperty" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it96.html" ) ("objects_it92.html" ("BUTTON_EVENTS" . 1080361) ("DESCRIPTION" . 1080417) ("KEYBOARD_EVENTS" . 1080504) ("MOTION_EVENTS" . 1080532) ("OPERATION_IDENTIFIER" . 1080560) ("PARAMETER_IDENTIFIER" . 1080588) ("TRANSIENT_DEFAULT " . 1080617) ("TRANSIENT_MOTION" . 1080650) ("TYPES" . 1080678) ("VISUAL_TYPE" . 1080735))) 1694 ("GetProperty" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it96.html" ) ("objects_it92.html" ("BUTTON_EVENTS" . 1080361) ("DESCRIPTION" . 1080417) ("KEYBOARD_EVENTS" . 1080504) ("MOTION_EVENTS" . 1080532) ("OPERATION_IDENTIFIER" . 1080560) ("PARAMETER_IDENTIFIER" . 1080588) ("TRANSIENT_DEFAULT" . 1080617) ("TRANSIENT_MOTION" . 1080650) ("TYPES" . 1080678) ("VISUAL_TYPE" . 1080735)))
1695 ("OnKeyboard" pro "IDLitManipulator" (system) "Obj->[%s::]%s, Win, IsASCII, Character, KeyValue, X, Y, Press, Release, KeyMods" ("objects_it98.html")) 1695 ("OnKeyboard" pro "IDLitManipulator" (system) "Obj->[%s::]%s, Win, IsASCII, Character, KeyValue, X, Y, Press, Release, KeyMods" ("objects_it98.html"))
1696 ("OnLoseCurrentManipulator" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it99.html")) 1696 ("OnLoseCurrentManipulator" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it99.html"))
1697 ("OnMouseDown" pro "IDLitManipulator" (system) "Obj->[%s::]%s, Win, X, Y, IButton, KeyMods, NClicks" ("objects_it100.html")) 1697 ("OnMouseDown" pro "IDLitManipulator" (system) "Obj->[%s::]%s, Win, X, Y, IButton, KeyMods, NClicks" ("objects_it100.html"))
@@ -1699,10 +1699,10 @@
1699 ("OnMouseUp" pro "IDLitManipulator" (system) "Obj->[%s::]%s, Win, X, Y, IButton" ("objects_it102.html")) 1699 ("OnMouseUp" pro "IDLitManipulator" (system) "Obj->[%s::]%s, Win, X, Y, IButton" ("objects_it102.html"))
1700 ("RegisterCursor" pro "IDLitManipulator" (system) "Obj->[%s::]%s, ArrCursor, Name" ("objects_it104.html" ("DEFAULT" . 1281810))) 1700 ("RegisterCursor" pro "IDLitManipulator" (system) "Obj->[%s::]%s, ArrCursor, Name" ("objects_it104.html" ("DEFAULT" . 1281810)))
1701 ("SetCurrentManipulator" pro "IDLitManipulator" (system) "Obj->[%s::]%s [, Item]" ("objects_it105.html")) 1701 ("SetCurrentManipulator" pro "IDLitManipulator" (system) "Obj->[%s::]%s [, Item]" ("objects_it105.html"))
1702 ("SetProperty" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it120.html" ) ("objects_it92.html" ("BUTTON_EVENTS" . 1080361) ("DESCRIPTION" . 1080417) ("DISABLE" . 1080445) ("KEYBOARD_EVENTS" . 1080504) ("MOTION_EVENTS" . 1080532) ("OPERATION_IDENTIFIER" . 1080560) ("PARAMETER_IDENTIFIER" . 1080588) ("TRANSIENT_DEFAULT " . 1080617) ("TRANSIENT_MOTION" . 1080650) ("VISUAL_TYPE" . 1080735))) 1702 ("SetProperty" pro "IDLitManipulator" (system) "Obj->[%s::]%s" ("objects_it120.html" ) ("objects_it92.html" ("BUTTON_EVENTS" . 1080361) ("DESCRIPTION" . 1080417) ("DISABLE" . 1080445) ("KEYBOARD_EVENTS" . 1080504) ("MOTION_EVENTS" . 1080532) ("OPERATION_IDENTIFIER" . 1080560) ("PARAMETER_IDENTIFIER" . 1080588) ("TRANSIENT_DEFAULT" . 1080617) ("TRANSIENT_MOTION" . 1080650) ("VISUAL_TYPE" . 1080735)))
1703 ("CommitUndoValues" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s()" ("objects_it94.html" ("UNCOMMIT" . 1080828))) 1703 ("CommitUndoValues" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s()" ("objects_it94.html" ("UNCOMMIT" . 1080828)))
1704 ("GetCursorType" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s(TypeIn, KeyMods)" ("objects_it95.html")) 1704 ("GetCursorType" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s(TypeIn, KeyMods)" ("objects_it95.html"))
1705 ("Init" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s()" ("objects_it97.html" ) ("objects_it92.html" ("BUTTON_EVENTS" . 1080361) ("DEFAULT_CURSOR" . 1080389) ("DESCRIPTION" . 1080417) ("DISABLE" . 1080445) ("KEYBOARD_EVENTS" . 1080504) ("MOTION_EVENTS" . 1080532) ("OPERATION_IDENTIFIER" . 1080560) ("PARAMETER_IDENTIFIER" . 1080588) ("TRANSIENT_DEFAULT " . 1080617) ("TRANSIENT_MOTION" . 1080650) ("TYPES" . 1080678) ("VIEWS_ONLY" . 1080706) ("VISUAL_TYPE" . 1080735))) 1705 ("Init" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s()" ("objects_it97.html" ) ("objects_it92.html" ("BUTTON_EVENTS" . 1080361) ("DEFAULT_CURSOR" . 1080389) ("DESCRIPTION" . 1080417) ("DISABLE" . 1080445) ("KEYBOARD_EVENTS" . 1080504) ("MOTION_EVENTS" . 1080532) ("OPERATION_IDENTIFIER" . 1080560) ("PARAMETER_IDENTIFIER" . 1080588) ("TRANSIENT_DEFAULT" . 1080617) ("TRANSIENT_MOTION" . 1080650) ("TYPES" . 1080678) ("VIEWS_ONLY" . 1080706) ("VISUAL_TYPE" . 1080735)))
1706 ("RecordUndoValues" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s()" ("objects_it103.html")) 1706 ("RecordUndoValues" fun "IDLitManipulator" (system) "Result = Obj->[%s::]%s()" ("objects_it103.html"))
1707 ("Add" pro "IDLitManipulatorContainer" (system) "Obj->[%s::]%s, Manipulator" ("objects_it109.html")) 1707 ("Add" pro "IDLitManipulatorContainer" (system) "Obj->[%s::]%s, Manipulator" ("objects_it109.html"))
1708 ("GetProperty" pro "IDLitManipulatorContainer" (system) "Obj->[%s::]%s" ("objects_it112.html" )) 1708 ("GetProperty" pro "IDLitManipulatorContainer" (system) "Obj->[%s::]%s" ("objects_it112.html" ))
@@ -1816,7 +1816,7 @@
1816 ("BeginManipulation" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Manipulator" ("objects_it241.html")) 1816 ("BeginManipulation" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Manipulator" ("objects_it241.html"))
1817 ("Cleanup" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it242.html")) 1817 ("Cleanup" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it242.html"))
1818 ("EndManipulation" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Manipulator" ("objects_it243.html")) 1818 ("EndManipulation" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Manipulator" ("objects_it243.html"))
1819 ("GetProperty" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it251.html" ) ("objects_it238.html" ("CENTER_OF_ROTATION" . 1086295) ("IMPACTS_RANGE " . 1255230) ("ISOTROPIC" . 1086379) ("MANIPULATOR_TARGET " . 1086407) ("PROPERTY_INTERSECTION" . 1153078))) 1819 ("GetProperty" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it251.html" ) ("objects_it238.html" ("CENTER_OF_ROTATION" . 1086295) ("IMPACTS_RANGE" . 1255230) ("ISOTROPIC" . 1086379) ("MANIPULATOR_TARGET" . 1086407) ("PROPERTY_INTERSECTION" . 1153078)))
1820 ("Move" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Source, Destination" ("objects_it261.html")) 1820 ("Move" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Source, Destination" ("objects_it261.html"))
1821 ("On2DRotate" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Notifier, IsRotated" ("objects_it262.html")) 1821 ("On2DRotate" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Notifier, IsRotated" ("objects_it262.html"))
1822 ("OnAxesRequestChange" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Notifier, AxesRequest" ("objects_it263.html")) 1822 ("OnAxesRequestChange" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Notifier, AxesRequest" ("objects_it263.html"))
@@ -1836,7 +1836,7 @@
1836 ("SetAxesStyleRequest" pro "IDLitVisualization" (system) "Obj->[%s::]%s, StyleRequest" ("objects_it278.html" ("NO_NOTIFY" . 1264441))) 1836 ("SetAxesStyleRequest" pro "IDLitVisualization" (system) "Obj->[%s::]%s, StyleRequest" ("objects_it278.html" ("NO_NOTIFY" . 1264441)))
1837 ("SetCurrentSelectionVisual" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Manipulator" ("objects_it279.html")) 1837 ("SetCurrentSelectionVisual" pro "IDLitVisualization" (system) "Obj->[%s::]%s, Manipulator" ("objects_it279.html"))
1838 ("SetDefaultSelectionVisual" pro "IDLitVisualization" (system) "Obj->[%s::]%s, SelectionVisual" ("objects_it281.html" ("POSITION" . 1087891))) 1838 ("SetDefaultSelectionVisual" pro "IDLitVisualization" (system) "Obj->[%s::]%s, SelectionVisual" ("objects_it281.html" ("POSITION" . 1087891)))
1839 ("SetProperty" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it283.html" ) ("objects_it238.html" ("CENTER_OF_ROTATION" . 1086295) ("IMPACTS_RANGE " . 1255230) ("ISOTROPIC" . 1086379) ("MANIPULATOR_TARGET " . 1086407) ("TYPE" . 1086465))) 1839 ("SetProperty" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it283.html" ) ("objects_it238.html" ("CENTER_OF_ROTATION" . 1086295) ("IMPACTS_RANGE" . 1255230) ("ISOTROPIC" . 1086379) ("MANIPULATOR_TARGET" . 1086407) ("TYPE" . 1086465)))
1840 ("UpdateSelectionVisual" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it284.html")) 1840 ("UpdateSelectionVisual" pro "IDLitVisualization" (system) "Obj->[%s::]%s" ("objects_it284.html"))
1841 ("VisToWindow" pro "IDLitVisualization" (system) "Obj->[%s::]%s, InX, InY, InZ, OutX, OutY, OutZ" ("objects_it285.html" ("NO_TRANSFORM" . 1157092))) 1841 ("VisToWindow" pro "IDLitVisualization" (system) "Obj->[%s::]%s, InX, InY, InZ, OutX, OutY, OutZ" ("objects_it285.html" ("NO_TRANSFORM" . 1157092)))
1842 ("WindowToVis" pro "IDLitVisualization" (system) "Obj->[%s::]%s, InX, InY, InZ, OutX, OutY, OutZ or Obj->[%s::]%s, InX, InY, OutX, OutY or Obj->[%s::]%s, InVerts, OutVerts" ("objects_it286.html")) 1842 ("WindowToVis" pro "IDLitVisualization" (system) "Obj->[%s::]%s, InX, InY, InZ, OutX, OutY, OutZ or Obj->[%s::]%s, InX, InY, OutX, OutY or Obj->[%s::]%s, InVerts, OutVerts" ("objects_it286.html"))
@@ -1851,7 +1851,7 @@
1851 ("GetSelectionVisual" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s(Manipulator)" ("objects_it253.html")) 1851 ("GetSelectionVisual" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s(Manipulator)" ("objects_it253.html"))
1852 ("GetTypes" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it254.html")) 1852 ("GetTypes" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it254.html"))
1853 ("GetXYZRange" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s(XRange,YRange, ZRange)" ("objects_it255.html" ("DATA" . 1087296) ("NO_TRANSFORM" . 1087298))) 1853 ("GetXYZRange" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s(XRange,YRange, ZRange)" ("objects_it255.html" ("DATA" . 1087296) ("NO_TRANSFORM" . 1087298)))
1854 ("Init" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it256.html" ) ("objects_it238.html" ("CENTER_OF_ROTATION" . 1086295) ("IMPACTS_RANGE " . 1255230) ("ISOTROPIC" . 1086379) ("MANIPULATOR_TARGET " . 1086407) ("PROPERTY_INTERSECTION" . 1153078) ("TYPE" . 1086465))) 1854 ("Init" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it256.html" ) ("objects_it238.html" ("CENTER_OF_ROTATION" . 1086295) ("IMPACTS_RANGE" . 1255230) ("ISOTROPIC" . 1086379) ("MANIPULATOR_TARGET" . 1086407) ("PROPERTY_INTERSECTION" . 1153078) ("TYPE" . 1086465)))
1855 ("Is3D" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it257.html")) 1855 ("Is3D" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it257.html"))
1856 ("IsIsotropic" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it258.html")) 1856 ("IsIsotropic" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it258.html"))
1857 ("IsManipulatorTarget" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it259.html")) 1857 ("IsManipulatorTarget" fun "IDLitVisualization" (system) "Result = Obj->[%s::]%s()" ("objects_it259.html"))
@@ -1942,11 +1942,11 @@
1942 ("IDLgrLegend" (tags "OSCALENODE" "BORDER_GAP" "COLUMNS" "OOUTLINE" "OFILL" "OFONT" "GAP" "GLYPHWIDTH" "PITEM_COLOR" "PITEM_LINESTYLE" "PITEM_NAME" "PITEM_OBJECT" "PITEM_THICK" "PITEM_TYPE" "OTITLE" "PTEXT_COLOR" "BRECOMPUTE" "PGLYPHS" "PTEXTS" "HGLYPHWIDTH" "VGLYPHWIDTH" "COLORMODE" "CLEANLEAVE" "CLEANGLYPHS" "IDLGRLEGENDVERSION") (inherits "IDLgrModel") (link "objects_gr65.html")) 1942 ("IDLgrLegend" (tags "OSCALENODE" "BORDER_GAP" "COLUMNS" "OOUTLINE" "OFILL" "OFONT" "GAP" "GLYPHWIDTH" "PITEM_COLOR" "PITEM_LINESTYLE" "PITEM_NAME" "PITEM_OBJECT" "PITEM_THICK" "PITEM_TYPE" "OTITLE" "PTEXT_COLOR" "BRECOMPUTE" "PGLYPHS" "PTEXTS" "HGLYPHWIDTH" "VGLYPHWIDTH" "COLORMODE" "CLEANLEAVE" "CLEANGLYPHS" "IDLGRLEGENDVERSION") (inherits "IDLgrModel") (link "objects_gr65.html"))
1943 ("IDLgrPolygon" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRPOLYGON_TOP" "IDLGRPOLYGONVERSION" "DATA" "PRECISION" "FILLPATTERN" "POLYGONS" "NORMALS" "POLYGONFLAGS" "SHADING" "SHADERANGE" "STYLE" "TXTRCOORD" "TXTRMAP" "VERTCOLORS" "BTMCOLOR" "AMBIENT" "DIFFUSE" "SPECULAR" "EMISSION" "SHININESS" "LINESTYLE" "THICK" "DEPTHOFFSET" "IDLGRPOLYGON_BOTTOM") (inherits "IDLitComponent") (link "objects_gr124.html")) 1943 ("IDLgrPolygon" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRPOLYGON_TOP" "IDLGRPOLYGONVERSION" "DATA" "PRECISION" "FILLPATTERN" "POLYGONS" "NORMALS" "POLYGONFLAGS" "SHADING" "SHADERANGE" "STYLE" "TXTRCOORD" "TXTRMAP" "VERTCOLORS" "BTMCOLOR" "AMBIENT" "DIFFUSE" "SPECULAR" "EMISSION" "SHININESS" "LINESTYLE" "THICK" "DEPTHOFFSET" "IDLGRPOLYGON_BOTTOM") (inherits "IDLitComponent") (link "objects_gr124.html"))
1944 ("IDLgrWindow" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRWINDOW_TOP" "IDLGRWINDOWVERSION" "WINDOWFLAGS" "CURRENT_ZOOM" "DIMENSIONS" "DISPLAYNAME" "INDEX" "LOCATION" "MINIMUM_VIRTUAL_DIMENSIONS" "ORIGINAL_VIRTUAL_DIMENSIONS" "RENDERER" "RETAIN" "SCREENDIMENSIONS" "SELF" "TITLE" "UNITS" "VIRTUAL_DIMENSIONS" "VISIBLE_LOCATION" "ZOOM_BASE" "ZOOM_NSTEP" "EXTERNAL_WINDOW" "NEXT" "WFILL1" "PARENT" "WFILL2" "IDLGRWINDOW_BOTTOM") (inherits "IDLitComponent") (link "objects_gr235.html")) 1944 ("IDLgrWindow" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRWINDOW_TOP" "IDLGRWINDOWVERSION" "WINDOWFLAGS" "CURRENT_ZOOM" "DIMENSIONS" "DISPLAYNAME" "INDEX" "LOCATION" "MINIMUM_VIRTUAL_DIMENSIONS" "ORIGINAL_VIRTUAL_DIMENSIONS" "RENDERER" "RETAIN" "SCREENDIMENSIONS" "SELF" "TITLE" "UNITS" "VIRTUAL_DIMENSIONS" "VISIBLE_LOCATION" "ZOOM_BASE" "ZOOM_NSTEP" "EXTERNAL_WINDOW" "NEXT" "WFILL1" "PARENT" "WFILL2" "IDLGRWINDOW_BOTTOM") (inherits "IDLitComponent") (link "objects_gr235.html"))
1945 ("IDLgrROI" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRROI_TOP" "IDLGRROIVERSION" "LINESTYLE" "STYLE" "SYMBOL" "THICK" "IDLGRROI_BOTTOM") (inherits "IDLanROI" "IDLitComponent") (link "objects_gr150.html"))
1946 ("IDLgrPolyline" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRPOLYLINE_TOP" "IDLGRPOLYLINEVERSION" "POLYLINEFLAGS" "DATA" "PRECISION" "LABEL_NOGAPS" "LABEL_OBJECTS" "LABEL_OFFSETS" "LABEL_POLYLINES" "LINESTYLE" "POLYLINES" "SYMBOL" "PSYMBOL" "THICK" "SHADING" "USE_LABEL_COLOR" "USE_LABEL_ORIENTATION" "VERTCOLORS" "LABEL_INFO" "FILL1" "IDLGRPOLYLINE_BOTTOM") (inherits "IDLitComponent") (link "objects_gr131.html")) 1945 ("IDLgrPolyline" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRPOLYLINE_TOP" "IDLGRPOLYLINEVERSION" "POLYLINEFLAGS" "DATA" "PRECISION" "LABEL_NOGAPS" "LABEL_OBJECTS" "LABEL_OFFSETS" "LABEL_POLYLINES" "LINESTYLE" "POLYLINES" "SYMBOL" "PSYMBOL" "THICK" "SHADING" "USE_LABEL_COLOR" "USE_LABEL_ORIENTATION" "VERTCOLORS" "LABEL_INFO" "FILL1" "IDLGRPOLYLINE_BOTTOM") (inherits "IDLitComponent") (link "objects_gr131.html"))
1946 ("IDLgrROI" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRROI_TOP" "IDLGRROIVERSION" "LINESTYLE" "STYLE" "SYMBOL" "THICK" "IDLGRROI_BOTTOM") (inherits "IDLanROI" "IDLitComponent") (link "objects_gr150.html"))
1947 ("IDLitManipulatorManager" (tags "_OOLDCURR" "_ODEFAULT" "_OWINCURR" "_CURROBS") (inherits "IDLitManipulatorContainer") (link "objects_it121.html")) 1947 ("IDLitManipulatorManager" (tags "_OOLDCURR" "_ODEFAULT" "_OWINCURR" "_CURROBS") (inherits "IDLitManipulatorContainer") (link "objects_it121.html"))
1948 ("IDLgrPlot" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRPLOT_TOP" "IDLGRPLOTVERSION" "DATA" "PLOTFLAGS" "LINESTYLE" "PRECISION" "MAXVAL" "MINVAL" "NSUM" "SYMBOL" "PSYMBOL" "THICK" "VERTCOLORS" "ZVALUE" "LINEDATA" "PFILL1" "IDLGRPLOT_BOTTOM") (inherits "IDLitComponent") (link "objects_gr117.html"))
1949 ("IDLgrVolume" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRVOLUME_TOP" "IDLGRVOLUMEVERSION" "AMBIENT" "BOUNDS" "LIMITS" "DIMENSIONS" "COLORTABLE" "COMPOSITEFUNC" "CUTPLANES" "NUMCUTPLANES" "DEPTH_CUE" "OPACITYTABLE" "RENDERSTEP" "DATA" "EDM_VOLUME" "VOLUMEFLAGS" "IDLGRVOLUME_BOTTOM") (inherits "IDLitComponent") (link "objects_gr216.html")) 1948 ("IDLgrVolume" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRVOLUME_TOP" "IDLGRVOLUMEVERSION" "AMBIENT" "BOUNDS" "LIMITS" "DIMENSIONS" "COLORTABLE" "COMPOSITEFUNC" "CUTPLANES" "NUMCUTPLANES" "DEPTH_CUE" "OPACITYTABLE" "RENDERSTEP" "DATA" "EDM_VOLUME" "VOLUMEFLAGS" "IDLGRVOLUME_BOTTOM") (inherits "IDLitComponent") (link "objects_gr216.html"))
1949 ("IDLgrPlot" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRPLOT_TOP" "IDLGRPLOTVERSION" "DATA" "PLOTFLAGS" "LINESTYLE" "PRECISION" "MAXVAL" "MINVAL" "NSUM" "SYMBOL" "PSYMBOL" "THICK" "VERTCOLORS" "ZVALUE" "LINEDATA" "PFILL1" "IDLGRPLOT_BOTTOM") (inherits "IDLitComponent") (link "objects_gr117.html"))
1950 ("IDLgrROIGroup" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRROIGROUP_TOP" "IDLGRROIGROUPVERSION" "IDLGRROIGROUP_BOTTOM") (inherits "IDLanROIGroup" "IDLitComponent") (link "objects_gr157.html")) 1950 ("IDLgrROIGroup" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRROIGROUP_TOP" "IDLGRROIGROUPVERSION" "IDLGRROIGROUP_BOTTOM") (inherits "IDLanROIGroup" "IDLitComponent") (link "objects_gr157.html"))
1951 ("IDLgrText" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRTEXT_TOP" "IDLGRTEXTVERSION" "TEXTFLAGS" "ALIGNMENT" "BASELINE" "CHAR_DIMENSIONS" "RECOMP_CTM" "FONT" "LOCATIONS" "STRINGS" "SUBPARENT" "UPDIR" "VERTICAL_ALIGNMENT" "FILL_COLOR" "RENDER_MODE" "IDLGRTEXT_BOTTOM") (inherits "IDLitComponent") (link "objects_gr193.html")) 1951 ("IDLgrText" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRTEXT_TOP" "IDLGRTEXTVERSION" "TEXTFLAGS" "ALIGNMENT" "BASELINE" "CHAR_DIMENSIONS" "RECOMP_CTM" "FONT" "LOCATIONS" "STRINGS" "SUBPARENT" "UPDIR" "VERTICAL_ALIGNMENT" "FILL_COLOR" "RENDER_MODE" "IDLGRTEXT_BOTTOM") (inherits "IDLitComponent") (link "objects_gr193.html"))
1952 ("IDLitManipulatorContainer" (tags "_BISMESSAGER" "_CLASSNAME" "_OCHILDREN" "M_BAUTOSWITCH" "M_CURRMANIP") (inherits "IDLitManipulator" "IDL_Container") (link "objects_it107.html")) 1952 ("IDLitManipulatorContainer" (tags "_BISMESSAGER" "_CLASSNAME" "_OCHILDREN" "M_BAUTOSWITCH" "M_CURRMANIP") (inherits "IDLitManipulator" "IDL_Container") (link "objects_it107.html"))
@@ -1955,33 +1955,33 @@
1955 ("IDLgrImage" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRIMAGE_TOP" "IDLGRIMAGEVERSION" "CHANNEL" "DATA" "DIMENSIONS" "SUB_RECT" "IMAGEFLAGS" "LOCATION" "INTERLEAVE" "INTERPOLATE" "BLEND_FUNCTIONS" "IDLGRIMAGE_BOTTOM") (inherits "IDLitComponent") (link "objects_gr58.html")) 1955 ("IDLgrImage" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRIMAGE_TOP" "IDLGRIMAGEVERSION" "CHANNEL" "DATA" "DIMENSIONS" "SUB_RECT" "IMAGEFLAGS" "LOCATION" "INTERLEAVE" "INTERPOLATE" "BLEND_FUNCTIONS" "IDLGRIMAGE_BOTTOM") (inherits "IDLitComponent") (link "objects_gr58.html"))
1956 ("IDLgrLight" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRLIGHT_TOP" "IDLGRLIGHTVERSION" "ATTENUATION" "CONEANGLE" "DIRECTION" "FOCUS" "INTENSITY" "LOCATION" "TYPE" "IDLGRLIGHT_BOTTOM") (inherits "IDLitComponent") (link "objects_gr72.html")) 1956 ("IDLgrLight" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "ALPHACHANNEL" "CLIP_PLANES" "COLOR" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRLIGHT_TOP" "IDLGRLIGHTVERSION" "ATTENUATION" "CONEANGLE" "DIRECTION" "FOCUS" "INTENSITY" "LOCATION" "TYPE" "IDLGRLIGHT_BOTTOM") (inherits "IDLitComponent") (link "objects_gr72.html"))
1957 ("IDLgrView" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRVIEW_TOP" "IDLGRVIEWVERSION" "VIEWFLAGS" "COLOR" "DEPTH_CUE" "DIMENSIONS" "PRECISION" "EYE" "LOCATION" "OBLIQUE" "PROJECTION" "TRANSPARENT" "UNITS" "VIEW" "ZCLIP" "IDLGRVIEW_BOTTOM") (inherits "IDLitComponent" "IDL_Container") (link "objects_gr200.html")) 1957 ("IDLgrView" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRVIEW_TOP" "IDLGRVIEWVERSION" "VIEWFLAGS" "COLOR" "DEPTH_CUE" "DIMENSIONS" "PRECISION" "EYE" "LOCATION" "OBLIQUE" "PROJECTION" "TRANSPARENT" "UNITS" "VIEW" "ZCLIP" "IDLGRVIEW_BOTTOM") (inherits "IDLitComponent" "IDL_Container") (link "objects_gr200.html"))
1958 ("IDLgrClipboard" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRCLIPBOARD_TOP" "IDLGRCLIPBOARDVERSION" "UNITS" "DIMENSIONS" "FILENAME" "VECTOR" "POSTSCRIPT" "IDLGRCLIPBOARD_BOTTOM") (inherits "IDLitComponent") (link "objects_gr25.html"))
1959 ("IDLgrVRML" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRVRML_TOP" "IDLGRVRMLVERSION" "UNITS" "DIMENSIONS" "FILENAME" "WORLDINFO" "WORLDTITLE" "IDLGRVRML_BOTTOM") (inherits "IDLitComponent") (link "objects_gr225.html")) 1958 ("IDLgrVRML" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRVRML_TOP" "IDLGRVRMLVERSION" "UNITS" "DIMENSIONS" "FILENAME" "WORLDINFO" "WORLDTITLE" "IDLGRVRML_BOTTOM") (inherits "IDLitComponent") (link "objects_gr225.html"))
1960 ("IDLitManipulator" (tags "PSELECTIONLIST" "NSELECTIONLIST" "BUTTONPRESS" "_OCMDSET" "_TYPES" "_OHITVIS" "_OHITVIEWGROUP" "_PSUBHITLIST" "_STRVISUALTYPE" "_IDOPERATION" "_IDPARAMETER" "_DEFAULTCURSOR" "_SUBTYPE" "_STRTMPMSG" "_SKIPMACROHISTORY" "_TRANSMOTION" "_INTRANSMOTION" "_TRANSIENT" "_KEYTRANSIENT" "_DISABLE" "_VIEWMODE" "_UIEVENTMASK" "_OLDQUALITY" "_DRAQQUAL" "_NORMALIZEDZ") (inherits "IDLitComponent" "IDLitIMessaging") (link "objects_it91.html")) 1959 ("IDLgrClipboard" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRCLIPBOARD_TOP" "IDLGRCLIPBOARDVERSION" "UNITS" "DIMENSIONS" "FILENAME" "VECTOR" "POSTSCRIPT" "IDLGRCLIPBOARD_BOTTOM") (inherits "IDLitComponent") (link "objects_gr25.html"))
1961 ("IDLgrPrinter" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRPRINTER_TOP" "IDLGRPRINTERVERSION" "PRINTERFLAGS" "NCOPIES" "UNITS" "GAMMA" "IDLGRPRINTER_BOTTOM") (inherits "IDLitComponent") (link "objects_gr138.html")) 1960 ("IDLgrPrinter" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRPRINTER_TOP" "IDLGRPRINTERVERSION" "PRINTERFLAGS" "NCOPIES" "UNITS" "GAMMA" "IDLGRPRINTER_BOTTOM") (inherits "IDLitComponent") (link "objects_gr138.html"))
1961 ("IDLitManipulator" (tags "PSELECTIONLIST" "NSELECTIONLIST" "BUTTONPRESS" "_OCMDSET" "_TYPES" "_OHITVIS" "_OHITVIEWGROUP" "_PSUBHITLIST" "_STRVISUALTYPE" "_IDOPERATION" "_IDPARAMETER" "_DEFAULTCURSOR" "_SUBTYPE" "_STRTMPMSG" "_SKIPMACROHISTORY" "_TRANSMOTION" "_INTRANSMOTION" "_TRANSIENT" "_KEYTRANSIENT" "_DISABLE" "_VIEWMODE" "_UIEVENTMASK" "_OLDQUALITY" "_DRAQQUAL" "_NORMALIZEDZ") (inherits "IDLitComponent" "IDLitIMessaging") (link "objects_it91.html"))
1962 ("IDLgrModel" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRMODEL_TOP" "IDLGRMODELVERSION" "MODELFLAGS" "CLIP_PLANES" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "TRANSFORM" "IDLGRMODEL_BOTTOM") (inherits "IDLitComponent" "IDL_Container") (link "objects_gr79.html")) 1962 ("IDLgrModel" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRMODEL_TOP" "IDLGRMODELVERSION" "MODELFLAGS" "CLIP_PLANES" "DEPTH_TEST_DISABLE" "DEPTH_TEST_FUNCTION" "DEPTH_WRITE_DISABLE" "TRANSFORM" "IDLGRMODEL_BOTTOM") (inherits "IDLitComponent" "IDL_Container") (link "objects_gr79.html"))
1963 ("IDLgrBuffer" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRBUFFER_TOP" "IDLGRBUFFERVERSION" "UNITS" "DIMENSIONS" "IDLGRBUFFER_BOTTOM") (inherits "IDLitComponent") (link "objects_gr10.html")) 1963 ("IDLgrBuffer" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRBUFFER_TOP" "IDLGRBUFFERVERSION" "UNITS" "DIMENSIONS" "IDLGRBUFFER_BOTTOM") (inherits "IDLitComponent") (link "objects_gr10.html"))
1964 ("IDLitParameterSet" (tags "_PNAMES") (inherits "IDLitDataContainer") (link "objects_it159.html")) 1964 ("IDLitParameterSet" (tags "_PNAMES") (inherits "IDLitDataContainer") (link "objects_it159.html"))
1965 ("IDLitDataContainer" (tags "_BISMESSAGER" "_CLASSNAME" "_OCHILDREN" "_IDISABLE" "_IUPDATES" "_BINSEARCH") (inherits "IDLitData" "IDL_Container") (link "objects_it59.html")) 1965 ("IDLitDataContainer" (tags "_ONOTIFIER" "_PDATA" "_PMETADATA" "_TYPE" "_AUTODELETE" "_NREF" "_PDESTRUCT" "_HIDE" "_READ_ONLY" "_IDISABLE" "_IUPDATES" "_BINSEARCH") (inherits "IDLitContainer") (link "objects_it59.html"))
1966 ("IDLgrScene" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRSCENE_TOP" "IDLGRSCENEVERSION" "COLOR" "TRANSPARENT" "IDLGRSCENE_BOTTOM") (inherits "IDLitComponent" "IDL_Container") (link "objects_gr165.html")) 1966 ("IDLgrScene" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRSCENE_TOP" "IDLGRSCENEVERSION" "COLOR" "TRANSPARENT" "IDLGRSCENE_BOTTOM") (inherits "IDLitComponent" "IDL_Container") (link "objects_gr165.html"))
1967 ("IDLitUI" (tags "_MENUBARS" "_TOOLBARS" "_STATUSBAR" "_UISERVICES" "_PDISPATCHSUBJECT" "_PDISPATCHOBSERVER" "_OTOOL" "_IDISPATCH" "_WBASE") (inherits "IDLitContainer") (link "objects_it222.html"))
1968 ("IDLgrViewgroup" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRVIEWGROUP_TOP" "IDLGRVIEWGROUPVERSION" "IDLGRVIEWGROUP_BOTTOM") (inherits "IDLitComponent" "IDL_Container") (link "objects_gr208.html")) 1967 ("IDLgrViewgroup" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "PARENT" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRVIEWGROUP_TOP" "IDLGRVIEWGROUPVERSION" "IDLGRVIEWGROUP_BOTTOM") (inherits "IDLitComponent" "IDL_Container") (link "objects_gr208.html"))
1968 ("IDLitUI" (tags "_MENUBARS" "_TOOLBARS" "_STATUSBAR" "_UISERVICES" "_PDISPATCHSUBJECT" "_PDISPATCHOBSERVER" "_OTOOL" "_IDISPATCH" "_WBASE") (inherits "IDLitContainer") (link "objects_it222.html"))
1969 ("IDLitDataOperation" (tags "_NAN" "_WITHINUI" "_RECORDPROPERTIES") (inherits "IDLitOperation") (link "objects_it69.html")) 1969 ("IDLitDataOperation" (tags "_NAN" "_WITHINUI" "_RECORDPROPERTIES") (inherits "IDLitOperation") (link "objects_it69.html"))
1970 ("IDLgrMPEG" (tags "IDLGRMPEG_TOP" "IDLGRMPEGVERSION" "DIMENSIONS" "FILENAME" "FORMAT" "FRAMERATE" "INTERLACED" "QUALITY" "SCALE" "STATISTICS" "DISPLAYDIMS" "FIRSTFRAME" "LASTFRAME" "MPEGID" "TEMPNODE" "TEMPNODEFILLER" "TEMP_DIRECTORY" "BITRATE" "IFRAME_GAP" "MOTION_LENGTH" "FLAGS" "IDLGRMPEG_BOTTOM") (link "objects_gr93.html")) 1970 ("IDLgrMPEG" (tags "IDLGRMPEG_TOP" "IDLGRMPEGVERSION" "DIMENSIONS" "FILENAME" "FORMAT" "FRAMERATE" "INTERLACED" "QUALITY" "SCALE" "STATISTICS" "DISPLAYDIMS" "FIRSTFRAME" "LASTFRAME" "MPEGID" "TEMPNODE" "TEMPNODEFILLER" "TEMP_DIRECTORY" "BITRATE" "IFRAME_GAP" "MOTION_LENGTH" "FLAGS" "IDLGRMPEG_BOTTOM") (link "objects_gr93.html"))
1971 ("IDLitCommandSet" (inherits "IDLitCommand" "IDL_Container") (link "objects_it12.html")) 1971 ("IDLitCommandSet" (inherits "IDLitCommand" "IDL_Container") (link "objects_it12.html"))
1972 ("IDLitData" (tags "_ONOTIFIER" "_PDATA" "_PMETADATA" "_TYPE" "_AUTODELETE" "_NREF" "_PDESTRUCT" "_HIDE" "_READ_ONLY") (inherits "IDLitComponent") (link "objects_it44.html"))
1973 ("IDLitOperation" (tags "_BEXPENSIVE" "_REVERSIBLE" "_BSHOWEXECUTIONUI" "_BSKIPHISTORY" "_BSKIPMACRO" "_BMACROSHOWUIIFNULLCMD" "_BMACROSUPPRESSREFRESH" "_TYPES") (inherits "IDLitComponent" "IDLitIMessaging") (link "objects_it134.html"))
1974 ("IDLitContainer" (tags "_BISMESSAGER" "_CLASSNAME" "_OCHILDREN") (inherits "IDLitComponent" "IDL_Container") (link "objects_it33.html")) 1972 ("IDLitContainer" (tags "_BISMESSAGER" "_CLASSNAME" "_OCHILDREN") (inherits "IDLitComponent" "IDL_Container") (link "objects_it33.html"))
1973 ("IDLitOperation" (tags "_BEXPENSIVE" "_REVERSIBLE" "_BSHOWEXECUTIONUI" "_BSKIPHISTORY" "_BSKIPMACRO" "_BMACROSHOWUIIFNULLCMD" "_BMACROSUPPRESSREFRESH" "_TYPES") (inherits "IDLitComponent" "IDLitIMessaging") (link "objects_it134.html"))
1974 ("IDLitData" (tags "_ONOTIFIER" "_PDATA" "_PMETADATA" "_TYPE" "_AUTODELETE" "_NREF" "_PDESTRUCT" "_HIDE" "_READ_ONLY") (inherits "IDLitComponent") (link "objects_it44.html"))
1975 ("IDLitWriter" (tags "_TYPES" "_BITDEPTH" "_GRAPHICSFORMAT" "_SCALEFACTOR") (inherits "IDLitReader") (link "objects_it311.html")) 1975 ("IDLitWriter" (tags "_TYPES" "_BITDEPTH" "_GRAPHICSFORMAT" "_SCALEFACTOR") (inherits "IDLitReader") (link "objects_it311.html"))
1976 ("IDLdbRecordset" (tags "IDLDBRECORDSET_TOP" "IDLDBRECORDSETVERSION" "ISTABLE" "PDBOBJ" "ISREADONLY" "NFIELDS" "CURROW" "SOURCE" "CURSORTYPE" "PFIELDS" "PSDEF" "ROWSTATUS" "ROWSET" "ROWPOS" "HSTMT" "HDBC" "IDLDBRECORDSET_BOTTOM") (link "api14.html")) 1976 ("IDLdbRecordset" (tags "IDLDBRECORDSET_TOP" "IDLDBRECORDSETVERSION" "ISTABLE" "PDBOBJ" "ISREADONLY" "NFIELDS" "CURROW" "SOURCE" "CURSORTYPE" "PFIELDS" "PSDEF" "ROWSTATUS" "ROWSET" "ROWPOS" "HSTMT" "HDBC" "IDLDBRECORDSET_BOTTOM") (link "api14.html"))
1977 ("IDLdbDatabase" (tags "IDLDBDATABASE_TOP" "IDLDBDATABASEVERSION" "READONLY" "ISCONNECTED" "FETCHDIR" "POSOPS" "POSSTATEMENTS" "SCROLLCONCUR" "SCROLLOPTIONS" "STATICSENSE" "GETDATAEXT" "USINGCURSOR" "NSTATEMENTS" "P_RECOBJS" "HDBC" "IDLDBDATABASE_BOTTOM") (link "api6.html"))
1978 ("IDLitCommand" (tags "_PDATADICTIONARY" "_SIZEITEMS" "_STRIDTARGET" "_STRIDOPERATION") (inherits "IDLitComponent") (link "objects_it3.html"))
1979 ("IDLffLangCat" (tags "FILENAMES" "_AVAILABLE_FILES" "LANGUAGE" "DEFAULT_LANGUAGE" "APPLICATIONS" "APPLICATION_PATH" "KEYS" "N_KEYS" "STRINGS" "DEF_KEYS" "N_DEF_KEYS" "DEF_STRINGS" "AVAILABLE_LANGUAGES" "VERBOSE" "STRICT" "IDLFFLANGCATVERSION") (link "objects_ff44.html")) 1977 ("IDLffLangCat" (tags "FILENAMES" "_AVAILABLE_FILES" "LANGUAGE" "DEFAULT_LANGUAGE" "APPLICATIONS" "APPLICATION_PATH" "KEYS" "N_KEYS" "STRINGS" "DEF_KEYS" "N_DEF_KEYS" "DEF_STRINGS" "AVAILABLE_LANGUAGES" "VERBOSE" "STRICT" "IDLFFLANGCATVERSION") (link "objects_ff44.html"))
1978 ("IDLitCommand" (tags "_PDATADICTIONARY" "_SIZEITEMS" "_STRIDTARGET" "_STRIDOPERATION") (inherits "IDLitComponent") (link "objects_it3.html"))
1979 ("IDLdbDatabase" (tags "IDLDBDATABASE_TOP" "IDLDBDATABASEVERSION" "READONLY" "ISCONNECTED" "FETCHDIR" "POSOPS" "POSSTATEMENTS" "SCROLLCONCUR" "SCROLLOPTIONS" "STATICSENSE" "GETDATAEXT" "USINGCURSOR" "NSTATEMENTS" "P_RECOBJS" "HDBC" "IDLDBDATABASE_BOTTOM") (link "api6.html"))
1980 ("IDLitReader" (tags "_STRFILENAME" "_PEXTENSIONS") (inherits "IDLitComponent" "IDLitIMessaging") (link "objects_it169.html")) 1980 ("IDLitReader" (tags "_STRFILENAME" "_PEXTENSIONS") (inherits "IDLitComponent" "IDLitIMessaging") (link "objects_it169.html"))
1981 ("IDLanROI" (tags "IDLANROI_TOP" "IDLANROIVERSION" "IDLANROIFLAGS" "NALLOCVERTS" "NUSEDVERTS" "BLOCKSIZE" "DATA" "TYPE" "PRECISION" "PLANE" "ROI_XRANGE" "ROI_YRANGE" "ROI_ZRANGE" "IDLANROI_BOTTOM") (link "objects_an3.html")) 1981 ("IDLanROI" (tags "IDLANROI_TOP" "IDLANROIVERSION" "IDLANROIFLAGS" "NALLOCVERTS" "NUSEDVERTS" "BLOCKSIZE" "DATA" "TYPE" "PRECISION" "PLANE" "ROI_XRANGE" "ROI_YRANGE" "ROI_ZRANGE" "IDLANROI_BOTTOM") (link "objects_an3.html"))
1982 ("IDLgrPalette" (tags "IDLGRPALETTE_TOP" "IDLGRPALETTE_SERIALNUM" "IDLGRPALETTEVERSION" "GAMMA" "BOTTOMSTRETCH" "TOPSTRETCH" "NENTRIES" "ORIGLUT" "CURRLUT" "INVTABLE" "UVALUE" "NAME" "IDLGRPALETTE_BOTTOM") (link "objects_gr101.html"))
1983 ("IDLanROIGroup" (tags "IDLANROIGROUP_TOP" "IDLANROIGROUPVERSION" "IDLANROIGROUPFLAGS" "ROIGROUP_XRANGE" "ROIGROUP_YRANGE" "ROIGROUP_ZRANGE" "IDLANROIGROUP_BOTTOM") (inherits "IDL_Container") (link "objects_an18.html")) 1982 ("IDLanROIGroup" (tags "IDLANROIGROUP_TOP" "IDLANROIGROUPVERSION" "IDLANROIGROUPFLAGS" "ROIGROUP_XRANGE" "ROIGROUP_YRANGE" "ROIGROUP_ZRANGE" "IDLANROIGROUP_BOTTOM") (inherits "IDL_Container") (link "objects_an18.html"))
1984 ("IDLffXMLDOMDocument" (tags "IDLFFXMLDOMDOCUMENT_TOP" "_DOM_IMPLEMENTATION" "_DOM_PARSER" "_DOM_ERROR_REPORTER" "_DOM_MEMORY_MANAGER" "IDLFFXMLDOMDOCUMENT_BOTTOM") (inherits "IDLffXMLDOMNode") (link "objects_ff102.html")) 1983 ("IDLffXMLDOMDocument" (tags "IDLFFXMLDOMDOCUMENT_TOP" "_DOM_IMPLEMENTATION" "_DOM_PARSER" "_DOM_ERROR_REPORTER" "_DOM_MEMORY_MANAGER" "IDLFFXMLDOMDOCUMENT_BOTTOM") (inherits "IDLffXMLDOMText") (link "objects_ff102.html"))
1984 ("IDLgrPalette" (tags "IDLGRPALETTE_TOP" "IDLGRPALETTE_SERIALNUM" "IDLGRPALETTEVERSION" "GAMMA" "BOTTOMSTRETCH" "TOPSTRETCH" "NENTRIES" "ORIGLUT" "CURRLUT" "INVTABLE" "UVALUE" "NAME" "IDLGRPALETTE_BOTTOM") (link "objects_gr101.html"))
1985 ("IDLitComponent" (tags "IDLITCOMPONENT_TOP" "IDLITCOMPONENTVERSION" "DESCRIPTION" "NAME" "ICON" "IDENTIFIER" "HELP" "UVALUE" "_PARENT" "PROPERTYDESCRIPTORS" "_FLAGS" "IDLITCOMPONENT_BOTTOM") (link "objects_it17.html")) 1985 ("IDLitComponent" (tags "IDLITCOMPONENT_TOP" "IDLITCOMPONENTVERSION" "DESCRIPTION" "NAME" "ICON" "IDENTIFIER" "HELP" "UVALUE" "_PARENT" "PROPERTYDESCRIPTORS" "_FLAGS" "IDLITCOMPONENT_BOTTOM") (link "objects_it17.html"))
1986 ("IDLgrSymbol" (tags "IDLGRSYMBOL_TOP" "IDLGRSYMBOLVERSION" "COLOR" "DATA" "SIZE" "THICK" "FLAGS" "UVALUE" "NAME" "ALPHA_CHANNEL" "IDLGRSYMBOL_BOTTOM") (link "objects_gr180.html")) 1986 ("IDLgrSymbol" (tags "IDLGRSYMBOL_TOP" "IDLGRSYMBOLVERSION" "COLOR" "DATA" "SIZE" "THICK" "FLAGS" "UVALUE" "NAME" "ALPHA_CHANNEL" "IDLGRSYMBOL_BOTTOM") (link "objects_gr180.html"))
1987 ("IDLgrFont" (tags "IDLGRFONT_TOP" "IDLGRFONTVERSION" "FONTFLAGS" "HERSHEY" "NAME" "SIZE" "SUBSTITUTE" "THICK" "ID" "UVALUE" "IDLGRFONT_BOTTOM") (link "objects_gr52.html")) 1987 ("IDLgrFont" (tags "IDLGRFONT_TOP" "IDLGRFONTVERSION" "FONTFLAGS" "HERSHEY" "NAME" "SIZE" "SUBSTITUTE" "THICK" "ID" "UVALUE" "IDLGRFONT_BOTTOM") (link "objects_gr52.html"))
@@ -1989,45 +1989,45 @@
1989 ("IDLffDXF" (tags "IDLFFDXF_TOP" "IDLFFDXFVERSION" "DXFREADVALID" "DXFHANDLEVALID" "DXFLUT" "SERIAL" "DXFHANDLE" "DXFHANDLEFILLER" "IDLFFDXF_BOTTOM") (link "objects_ff21.html")) 1989 ("IDLffDXF" (tags "IDLFFDXF_TOP" "IDLFFDXFVERSION" "DXFREADVALID" "DXFHANDLEVALID" "DXFLUT" "SERIAL" "DXFHANDLE" "DXFHANDLEFILLER" "IDLFFDXF_BOTTOM") (link "objects_ff21.html"))
1990 ("IDLffShape" (tags "IDLFFSHAPE_TOP" "IDLFFSHAPEVERSION" "FILENAME" "ISOPEN" "SHPTYPE" "PATTRIBUTE" "SHAPEHANDLE" "DBFHANDLE" "IDLFFSHAPE_BOTTOM") (link "objects_ff59.html")) 1990 ("IDLffShape" (tags "IDLFFSHAPE_TOP" "IDLFFSHAPEVERSION" "FILENAME" "ISOPEN" "SHPTYPE" "PATTRIBUTE" "SHAPEHANDLE" "DBFHANDLE" "IDLFFSHAPE_BOTTOM") (link "objects_ff59.html"))
1991 ("IDLffXMLSAX" (tags "IDLFFXMLSAX_TOP" "IDLFFXMLSAXVERSION" "VALIDATION_MODE" "HALT_PROCESSING" "FILENAME" "_XML_PARSER" "_XML_LOCATOR" "IDLFFXMLSAX_BOTTOM") (link "objects_ff209.html")) 1991 ("IDLffXMLSAX" (tags "IDLFFXMLSAX_TOP" "IDLFFXMLSAXVERSION" "VALIDATION_MODE" "HALT_PROCESSING" "FILENAME" "_XML_PARSER" "_XML_LOCATOR" "IDLFFXMLSAX_BOTTOM") (link "objects_ff209.html"))
1992 ("IDLffDICOM" (tags "IDLFFDICOM_TOP" "IDLFFDICOMVERSION" "DICOMFLAGS" "DICOMELEMENTS" "DICOMPREAMBLE" "DICOMHANDLE" "DICOMHANDLEFILLER" "IDLFFDICOM_BOTTOM") (link "objects_ff3.html"))
1993 ("TrackBall" (tags "BTNDOWN" "AXIS" "CONSTRAIN" "MOUSE" "CENTER" "RADIUS" "PT0" "PT1") (link "objects_misc33.html")) 1992 ("TrackBall" (tags "BTNDOWN" "AXIS" "CONSTRAIN" "MOUSE" "CENTER" "RADIUS" "PT0" "PT1") (link "objects_misc33.html"))
1994 ("IDLgrTessellator" (tags "IDLGRTESSELLATOR_TOP" "IDLGRTESSELLATORVERSION" "ITESSFLAGS" "IVERTS" "HVIDLIST" "IAUXSIZE" "IAUXTYPE" "IDLGRTESSELLATOR_BOTTOM") (link "objects_gr186.html")) 1993 ("IDLgrTessellator" (tags "IDLGRTESSELLATOR_TOP" "IDLGRTESSELLATORVERSION" "ITESSFLAGS" "IVERTS" "HVIDLIST" "IAUXSIZE" "IAUXTYPE" "IDLGRTESSELLATOR_BOTTOM") (link "objects_gr186.html"))
1995 ("IDLffXMLDOMNode" (inherits "IDLffXMLDOMDocumentType") (link "objects_ff162.html")) 1994 ("IDLffDICOM" (tags "IDLFFDICOM_TOP" "IDLFFDICOMVERSION" "DICOMFLAGS" "DICOMELEMENTS" "DICOMPREAMBLE" "DICOMHANDLE" "DICOMHANDLEFILLER" "IDLFFDICOM_BOTTOM") (link "objects_ff3.html"))
1996 ("IDLffXMLDOMDocumentType" (inherits "IDLffXMLDOMElement") (link "objects_ff123.html")) 1995 ("IDLffXMLDOMText" (inherits "IDLffXMLDOMProcessingInstruction") (link "objects_ff203.html"))
1996 ("IDLffXMLDOMProcessingInstruction" (inherits "IDLffXMLDOMAttr") (link "objects_ff196.html"))
1997 ("IDLffXMLDOMAttr" (inherits "IDLffXMLDOMElement") (link "objects_ff74.html"))
1998 ("IDLffXMLDOMElement" (inherits "IDLffXMLDOMNode") (link "objects_ff130.html"))
1997 ("IDLffXMLDOMNamedNodeMap" (tags "IDLFFXMLDOMNAMEDNODEMAP_TOP" "IDLFFXMLDOMNAMEDNODEMAPVERSION" "_IDLFFXMLDOMNAMEDNODEMAPNODE" "_IDLFFXMLDOMNAMEDNODEMAPOWNEDNODES" "_IDLFFXMLDOMNAMEDNODEMAPOWNER" "_IDLFFXMLDOMNAMEDNODEMAPDOCUMENT" "IDLFFXMLDOMNAMEDNODEMAP_BOTTOM") (link "objects_ff153.html")) 1999 ("IDLffXMLDOMNamedNodeMap" (tags "IDLFFXMLDOMNAMEDNODEMAP_TOP" "IDLFFXMLDOMNAMEDNODEMAPVERSION" "_IDLFFXMLDOMNAMEDNODEMAPNODE" "_IDLFFXMLDOMNAMEDNODEMAPOWNEDNODES" "_IDLFFXMLDOMNAMEDNODEMAPOWNER" "_IDLFFXMLDOMNAMEDNODEMAPDOCUMENT" "IDLFFXMLDOMNAMEDNODEMAP_BOTTOM") (link "objects_ff153.html"))
1998 ("IDLffXMLDOMElement" (inherits "IDLffXMLDOMNotation") (link "objects_ff130.html")) 2000 ("IDLffXMLDOMNode" (inherits "IDLffXMLDOMNotation") (link "objects_ff162.html"))
1999 ("IDLffXMLDOMNotation" (inherits "IDLffXMLDOMEntity") (link "objects_ff190.html")) 2001 ("IDLffXMLDOMNotation" (inherits "IDLffXMLDOMCharacterData") (link "objects_ff190.html"))
2000 ("IDLffXMLDOMEntity" (inherits "IDLffXMLDOMCharacterData") (link "objects_ff142.html"))
2001 ("IDLffXMLDOMCharacterData" (inherits "IDLffXMLDOMProcessingInstruction") (link "objects_ff86.html"))
2002 ("IDLffXMLDOMProcessingInstruction" (inherits "IDLffXMLDOMText") (link "objects_ff196.html"))
2003 ("IDLffXMLDOMText" (inherits "IDLffXMLDOMAttr") (link "objects_ff203.html"))
2004 ("IDLffXMLDOMAttr" (tags "IDLFFXMLDOMNODE_TOP" "IDLFFXMLDOMNODEVERSION" "_IDLFFXMLDOMNODEDOMNODE" "_IDLFFXMLDOMNODEOWNEDNODES" "_IDLFFXMLDOMNODEOWNER" "_IDLFFXMLDOMNODEDOCUMENT" "IDLFFXMLDOMNODE_BOTTOM") (link "objects_ff74.html"))
2005 ("IDLffXMLDOMNodeList" (tags "IDLFFXMLDOMNODELIST_TOP" "IDLFFXMLDOMNODELISTVERSION" "_IDLFFXMLDOMNODELISTNODE" "_IDLFFXMLDOMNODELISTOWNEDNODES" "_IDLFFXMLDOMNODELISTOWNER" "_IDLFFXMLDOMNODELISTDOCUMENT" "IDLFFXMLDOMNODELIST_BOTTOM") (link "objects_ff184.html")) 2002 ("IDLffXMLDOMNodeList" (tags "IDLFFXMLDOMNODELIST_TOP" "IDLFFXMLDOMNODELISTVERSION" "_IDLFFXMLDOMNODELISTNODE" "_IDLFFXMLDOMNODELISTOWNEDNODES" "_IDLFFXMLDOMNODELISTOWNER" "_IDLFFXMLDOMNODELISTDOCUMENT" "IDLFFXMLDOMNODELIST_BOTTOM") (link "objects_ff184.html"))
2003 ("IDLffXMLDOMCharacterData" (inherits "IDLffXMLDOMEntity") (link "objects_ff86.html"))
2004 ("IDLffXMLDOMEntity" (inherits "IDLffXMLDOMDocumentType") (link "objects_ff142.html"))
2005 ("IDLffXMLDOMDocumentType" (tags "IDLFFXMLDOMNODE_TOP" "IDLFFXMLDOMNODEVERSION" "_IDLFFXMLDOMNODEDOMNODE" "_IDLFFXMLDOMNODEOWNEDNODES" "_IDLFFXMLDOMNODEOWNER" "_IDLFFXMLDOMNODEDOCUMENT" "IDLFFXMLDOMNODE_BOTTOM") (link "objects_ff123.html"))
2006 ("IDL_Container" (tags "IDL_CONTAINER_TOP" "IDLCONTAINERVERSION" "PHEAD" "PTAIL" "NLIST" "IDL_CONTAINER_BOTTOM") (link "objects_misc3.html")) 2006 ("IDL_Container" (tags "IDL_CONTAINER_TOP" "IDLCONTAINERVERSION" "PHEAD" "PTAIL" "NLIST" "IDL_CONTAINER_BOTTOM") (link "objects_misc3.html"))
2007 ("IDLffJPEG2000" (tags "IDLFFJPEG2000_TOP" "CJPEG2000PTR" "IDLFFJPEG2000_BOTTOM") (link "objects_ff34.html")) 2007 ("IDLffJPEG2000" (tags "IDLFFJPEG2000_TOP" "CJPEG2000PTR" "IDLFFJPEG2000_BOTTOM") (link "objects_ff34.html"))
2008 ("IDLitParameter" (tags "_OPARAMETERDESCRIPTORS" "_OPARAMETERSET" "_PPARAMNAMES") (link "objects_it145.html")) 2008 ("IDLitParameter" (tags "_OPARAMETERDESCRIPTORS" "_OPARAMETERSET" "_PPARAMNAMES") (link "objects_it145.html"))
2009 ("IDL_Savefile" (tags "IDL_SAVEFILE_FILENAME" "IDL_SAVEFILE_RELAXED_STRUCTURE_ASSIGNMENT") (link "objects_misc13.html")) 2009 ("IDL_Savefile" (tags "IDL_SAVEFILE_FILENAME" "IDL_SAVEFILE_RELAXED_STRUCTURE_ASSIGNMENT") (link "objects_misc13.html"))
2010 ("IDLitIMessaging" (tags "__OTOOL") (link "objects_it78.html")) 2010 ("IDLitIMessaging" (tags "__OTOOL") (link "objects_it78.html"))
2011 ("IDLjavaObject" (link "objects_misc28.html"))
2012 ("IDLcomIDispatch" (link "objects_misc23.html")) 2011 ("IDLcomIDispatch" (link "objects_misc23.html"))
2013 ("IDLffMrSID" (link "objects_ff52.html")))) 2012 ("IDLffMrSID" (link "objects_ff52.html"))
2013 ("IDLjavaObject" (link "objects_misc28.html"))))
2014 2014
2015 2015
2016(setq idlwave-executive-commands-alist '( 2016(setq idlwave-executive-commands-alist '(
2017 ("GO" . "symbols6.html") 2017 ("RESET_SESSION" . "symbols8.html")
2018 ("OUT" . "symbols7.html")
2019 ("RETURN" . "symbols9.html")
2020 ("TRACE" . "symbols15.html") 2018 ("TRACE" . "symbols15.html")
2019 ("RNEW" . "symbols10.html")
2020 ("EDIT" . "symbols4.html")
2021 ("STEPOVER" . "symbols14.html")
2022 ("OUT" . "symbols7.html")
2021 ("RUN" . "symbols11.html") 2023 ("RUN" . "symbols11.html")
2022 ("SKIP" . "symbols12.html")
2023 ("COMPILE" . "symbols2.html")
2024 ("CONTINUE" . "symbols3.html") 2024 ("CONTINUE" . "symbols3.html")
2025 ("RESET_SESSION" . "symbols8.html")
2026 ("STEP" . "symbols13.html") 2025 ("STEP" . "symbols13.html")
2027 ("RNEW" . "symbols10.html") 2026 ("RETURN" . "symbols9.html")
2027 ("GO" . "symbols6.html")
2028 ("SKIP" . "symbols12.html")
2028 ("FULL_RESET_SESSION" . "symbols5.html") 2029 ("FULL_RESET_SESSION" . "symbols5.html")
2029 ("EDIT" . "symbols4.html") 2030 ("COMPILE" . "symbols2.html")
2030 ("STEPOVER" . "symbols14.html")
2031)) 2031))
2032 2032
2033;; Special words with associated help topic files 2033;; Special words with associated help topic files
diff --git a/lisp/progmodes/idlw-shell.el b/lisp/progmodes/idlw-shell.el
index 04e6a28ee40..be49e613b6c 100644
--- a/lisp/progmodes/idlw-shell.el
+++ b/lisp/progmodes/idlw-shell.el
@@ -5,7 +5,7 @@
5;; Carsten Dominik <dominik@astro.uva.nl> 5;; Carsten Dominik <dominik@astro.uva.nl>
6;; Chris Chase <chase@att.com> 6;; Chris Chase <chase@att.com>
7;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu> 7;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
8;; Version: 5.5 8;; Version: 5.7_22
9;; Keywords: processes 9;; Keywords: processes
10 10
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
@@ -45,7 +45,7 @@
45;; 45;;
46;; INSTALLATION: 46;; INSTALLATION:
47;; ============= 47;; =============
48;; 48;;
49;; Follow the instructions in the INSTALL file of the distribution. 49;; Follow the instructions in the INSTALL file of the distribution.
50;; In short, put this file on your load path and add the following 50;; In short, put this file on your load path and add the following
51;; lines to your .emacs file: 51;; lines to your .emacs file:
@@ -58,9 +58,9 @@
58;; 58;;
59;; The newest version of this file can be found on the maintainers 59;; The newest version of this file can be found on the maintainers
60;; web site. 60;; web site.
61;; 61;;
62;; http://idlwave.org 62;; http://idlwave.org
63;; 63;;
64;; DOCUMENTATION 64;; DOCUMENTATION
65;; ============= 65;; =============
66;; 66;;
@@ -77,7 +77,7 @@
77;; it is a bug in XEmacs. 77;; it is a bug in XEmacs.
78;; The Debug menu in source buffers *does* display the bindings correctly. 78;; The Debug menu in source buffers *does* display the bindings correctly.
79;; 79;;
80;; 80;;
81;; CUSTOMIZATION VARIABLES 81;; CUSTOMIZATION VARIABLES
82;; ======================= 82;; =======================
83;; 83;;
@@ -101,12 +101,12 @@
101 (condition-case () (require 'custom) (error nil)) 101 (condition-case () (require 'custom) (error nil))
102 (if (and (featurep 'custom) 102 (if (and (featurep 'custom)
103 (fboundp 'custom-declare-variable) 103 (fboundp 'custom-declare-variable)
104 (fboundp 'defface)) 104 (fboundp 'defface))
105 ;; We've got what we needed 105 ;; We've got what we needed
106 (setq idlwave-shell-have-new-custom t) 106 (setq idlwave-shell-have-new-custom t)
107 ;; We have the old or no custom-library, hack around it! 107 ;; We have the old or no custom-library, hack around it!
108 (defmacro defgroup (&rest args) nil) 108 (defmacro defgroup (&rest args) nil)
109 (defmacro defcustom (var value doc &rest args) 109 (defmacro defcustom (var value doc &rest args)
110 `(defvar ,var ,value ,doc)))) 110 `(defvar ,var ,value ,doc))))
111 111
112;;; Customizations: idlwave-shell group 112;;; Customizations: idlwave-shell group
@@ -117,11 +117,12 @@
117 :prefix "idlwave-shell" 117 :prefix "idlwave-shell"
118 :group 'idlwave) 118 :group 'idlwave)
119 119
120(defcustom idlwave-shell-prompt-pattern "^ ?IDL> " 120(defcustom idlwave-shell-prompt-pattern "^\r? ?IDL> "
121 "*Regexp to match IDL prompt at beginning of a line. 121 "*Regexp to match IDL prompt at beginning of a line.
122For example, \"^IDL> \" or \"^WAVE> \". 122For example, \"^\r?IDL> \" or \"^\r?WAVE> \".
123The \"^\" means beginning of line, and is required. 123The \"^\r?\" is needed, to indicate the beginning of the line, with
124This variable is used to initialize `comint-prompt-regexp' in the 124optional return character (which IDL seems to output randomly).
125This variable is used to initialize `comint-prompt-regexp' in the
125process buffer. 126process buffer.
126 127
127This is a fine thing to set in your `.emacs' file." 128This is a fine thing to set in your `.emacs' file."
@@ -210,7 +211,7 @@ So by default setting a breakpoint will be on C-c C-d C-b."
210 :type 'boolean) 211 :type 'boolean)
211 212
212(defcustom idlwave-shell-automatic-electric-debug 'breakpoint 213(defcustom idlwave-shell-automatic-electric-debug 'breakpoint
213 "Enter the electric-debug minor mode automatically. 214 "Enter the electric-debug minor mode automatically.
214This occurs at a breakpoint or any other halt. The mode is exited 215This occurs at a breakpoint or any other halt. The mode is exited
215upon return to the main level. Can be set to 'breakpoint to enter 216upon return to the main level. Can be set to 'breakpoint to enter
216electric debug mode only when breakpoints are tripped." 217electric debug mode only when breakpoints are tripped."
@@ -295,7 +296,7 @@ The history is only saved if the variable `idlwave-shell-save-command-history'
295is non-nil." 296is non-nil."
296 :group 'idlwave-shell-command-setup 297 :group 'idlwave-shell-command-setup
297 :type 'file) 298 :type 'file)
298 299
299(defcustom idlwave-shell-show-commands 300(defcustom idlwave-shell-show-commands
300 '(run misc breakpoint) 301 '(run misc breakpoint)
301 "*A list of command types to show output from in the shell. 302 "*A list of command types to show output from in the shell.
@@ -306,12 +307,12 @@ the copious shell traffic to be displayed."
306 :type '(choice 307 :type '(choice
307 (const everything) 308 (const everything)
308 (set :tag "Checklist" :greedy t 309 (set :tag "Checklist" :greedy t
309 (const :tag "All .run and .compile commands" run) 310 (const :tag "All .run and .compile commands" run)
310 (const :tag "All breakpoint commands" breakpoint) 311 (const :tag "All breakpoint commands" breakpoint)
311 (const :tag "All debug and stepping commands" debug) 312 (const :tag "All debug and stepping commands" debug)
312 (const :tag "Close, window, retall, etc. commands" misc)))) 313 (const :tag "Close, window, retall, etc. commands" misc))))
313 314
314(defcustom idlwave-shell-examine-alist 315(defcustom idlwave-shell-examine-alist
315 '(("Print" . "print,___") 316 '(("Print" . "print,___")
316 ("Help" . "help,___") 317 ("Help" . "help,___")
317 ("Structure Help" . "help,___,/STRUCTURE") 318 ("Structure Help" . "help,___,/STRUCTURE")
@@ -322,14 +323,14 @@ the copious shell traffic to be displayed."
322 ("Ptr Valid" . "print,ptr_valid(___)") 323 ("Ptr Valid" . "print,ptr_valid(___)")
323 ("Widget Valid" . "print,widget_info(___,/VALID)") 324 ("Widget Valid" . "print,widget_info(___,/VALID)")
324 ("Widget Geometry" . "help,widget_info(___,/GEOMETRY)")) 325 ("Widget Geometry" . "help,widget_info(___,/GEOMETRY)"))
325 "Alist of special examine commands for popup selection. 326 "Alist of special examine commands for popup selection.
326The keys are used in the selection popup created by 327The keys are used in the selection popup created by
327`idlwave-shell-examine-select', and the corresponding value is sent as 328`idlwave-shell-examine-select', and the corresponding value is sent as
328a command to the shell, with special sequence `___' replaced by the 329a command to the shell, with special sequence `___' replaced by the
329expression being examined." 330expression being examined."
330 :group 'idlwave-shell-command-setup 331 :group 'idlwave-shell-command-setup
331 :type '(repeat 332 :type '(repeat
332 (cons 333 (cons
333 (string :tag "Label ") 334 (string :tag "Label ")
334 (string :tag "Command")))) 335 (string :tag "Command"))))
335 336
@@ -340,11 +341,12 @@ expression being examined."
340 "*Non-nil mean, put output of examine commands in their own buffer." 341 "*Non-nil mean, put output of examine commands in their own buffer."
341 :group 'idlwave-shell-command-setup 342 :group 'idlwave-shell-command-setup
342 :type 'boolean) 343 :type 'boolean)
343 344
344(defcustom idlwave-shell-comint-settings 345(defcustom idlwave-shell-comint-settings
345 '((comint-scroll-to-bottom-on-input . t) 346 '((comint-scroll-to-bottom-on-input . t)
346 (comint-scroll-to-bottom-on-output . t) 347 (comint-scroll-to-bottom-on-output . t)
347 (comint-scroll-show-maximum-output . nil)) 348 (comint-scroll-show-maximum-output . nil)
349 (comint-prompt-read-only . t))
348 350
349 "Alist of special settings for the comint variables in the IDLWAVE Shell. 351 "Alist of special settings for the comint variables in the IDLWAVE Shell.
350Each entry is a cons cell with the name of a variable and a value. 352Each entry is a cons cell with the name of a variable and a value.
@@ -403,7 +405,7 @@ strings. Here is some example code which makes use of the default spells.
403 answer = GET_KBRD(1) 405 answer = GET_KBRD(1)
404 406
405Since the IDLWAVE shell defines the system variable `!IDLWAVE_VERSION', 407Since the IDLWAVE shell defines the system variable `!IDLWAVE_VERSION',
406you could actually check if you are running under Emacs before printing 408you could actually check if you are running under Emacs before printing
407the magic strings. Here is a procedure which uses this. 409the magic strings. Here is a procedure which uses this.
408 410
409Usage: 411Usage:
@@ -420,7 +422,7 @@ pro idlwave_char_input,on=on,off=off
420 if keyword_set(on) then print,'<chars>' $ 422 if keyword_set(on) then print,'<chars>' $
421 else if keyword_set(off) then print,'</chars>' $ 423 else if keyword_set(off) then print,'</chars>' $
422 else print,'<onechar>' 424 else print,'<onechar>'
423 endif 425 endif
424end" 426end"
425 :group 'idlwave-shell-command-setup 427 :group 'idlwave-shell-command-setup
426 :type '(list 428 :type '(list
@@ -428,6 +430,11 @@ end"
428 (regexp :tag "Char-mode regexp") 430 (regexp :tag "Char-mode regexp")
429 (regexp :tag "Line-mode regexp"))) 431 (regexp :tag "Line-mode regexp")))
430 432
433(defcustom idlwave-shell-breakpoint-popup-menu t
434 "*If non-nil, provide a menu on mouse-3 on breakpoint lines, and
435popup help text on the line."
436 :group 'idlwave-shell-command-setup
437 :type 'boolean)
431 438
432;; Breakpoint Overlays etc 439;; Breakpoint Overlays etc
433(defgroup idlwave-shell-highlighting-and-faces nil 440(defgroup idlwave-shell-highlighting-and-faces nil
@@ -478,10 +485,10 @@ line where IDL is stopped. See also `idlwave-shell-mark-stop-line'."
478 :group 'idlwave-shell-highlighting-and-faces 485 :group 'idlwave-shell-highlighting-and-faces
479 :type 'string) 486 :type 'string)
480 487
481(defcustom idlwave-shell-electric-stop-line-face 488(defcustom idlwave-shell-electric-stop-line-face
482 (prog1 489 (prog1
483 (copy-face 'modeline 'idlwave-shell-electric-stop-line-face) 490 (copy-face 'modeline 'idlwave-shell-electric-stop-line-face)
484 (set-face-background 'idlwave-shell-electric-stop-line-face 491 (set-face-background 'idlwave-shell-electric-stop-line-face
485 idlwave-shell-electric-stop-color) 492 idlwave-shell-electric-stop-color)
486 (condition-case nil 493 (condition-case nil
487 (set-face-foreground 'idlwave-shell-electric-stop-line-face nil) 494 (set-face-foreground 'idlwave-shell-electric-stop-line-face nil)
@@ -529,7 +536,7 @@ lines which have a breakpoint. See also `idlwave-shell-mark-breakpoints'."
529 ;; backward-compatibility alias 536 ;; backward-compatibility alias
530 (put 'idlwave-shell-bp-face 'face-alias 'idlwave-shell-bp)) 537 (put 'idlwave-shell-bp-face 'face-alias 'idlwave-shell-bp))
531 538
532(defcustom idlwave-shell-disabled-breakpoint-face 539(defcustom idlwave-shell-disabled-breakpoint-face
533 'idlwave-shell-disabled-bp 540 'idlwave-shell-disabled-bp
534 "*The face for disabled breakpoint lines in the source code. 541 "*The face for disabled breakpoint lines in the source code.
535Allows you to choose the font, color and other properties for 542Allows you to choose the font, color and other properties for
@@ -584,18 +591,18 @@ before use by the shell.")
584 591
585TYPE is either 'pro' or 'rinfo', and `idlwave-shell-temp-pro-file' or 592TYPE is either 'pro' or 'rinfo', and `idlwave-shell-temp-pro-file' or
586`idlwave-shell-temp-rinfo-save-file' is set (respectively)." 593`idlwave-shell-temp-rinfo-save-file' is set (respectively)."
587 (cond 594 (cond
588 ((eq type 'rinfo) 595 ((eq type 'rinfo)
589 (or idlwave-shell-temp-rinfo-save-file 596 (or idlwave-shell-temp-rinfo-save-file
590 (setq idlwave-shell-temp-rinfo-save-file 597 (setq idlwave-shell-temp-rinfo-save-file
591 (idlwave-shell-make-temp-file idlwave-shell-temp-pro-prefix)))) 598 (idlwave-shell-make-temp-file idlwave-shell-temp-pro-prefix))))
592 ((eq type 'pro) 599 ((eq type 'pro)
593 (or idlwave-shell-temp-pro-file 600 (or idlwave-shell-temp-pro-file
594 (setq idlwave-shell-temp-pro-file 601 (setq idlwave-shell-temp-pro-file
595 (idlwave-shell-make-temp-file idlwave-shell-temp-pro-prefix)))) 602 (idlwave-shell-make-temp-file idlwave-shell-temp-pro-prefix))))
596 (t (error "Wrong argument (idlwave-shell-temp-file): %s" 603 (t (error "Wrong argument (idlwave-shell-temp-file): %s"
597 (symbol-name type))))) 604 (symbol-name type)))))
598 605
599 606
600(defun idlwave-shell-make-temp-file (prefix) 607(defun idlwave-shell-make-temp-file (prefix)
601 "Create a temporary file." 608 "Create a temporary file."
@@ -623,7 +630,7 @@ TYPE is either 'pro' or 'rinfo', and `idlwave-shell-temp-pro-file' or
623 630
624 631
625(defvar idlwave-shell-dirstack-query "cd,current=___cur & print,___cur" 632(defvar idlwave-shell-dirstack-query "cd,current=___cur & print,___cur"
626 "Command used by `idlwave-shell-resync-dirs' to query IDL for 633 "Command used by `idlwave-shell-resync-dirs' to query IDL for
627the directory stack.") 634the directory stack.")
628 635
629(defvar idlwave-shell-path-query "print,'PATH:<'+transpose(expand_path(!PATH,/ARRAY))+'>' & print,'SYSDIR:<'+!dir+'>'" 636(defvar idlwave-shell-path-query "print,'PATH:<'+transpose(expand_path(!PATH,/ARRAY))+'>' & print,'SYSDIR:<'+!dir+'>'"
@@ -631,7 +638,7 @@ the directory stack.")
631 "The command which gets !PATH and !DIR info from the shell.") 638 "The command which gets !PATH and !DIR info from the shell.")
632 639
633(defvar idlwave-shell-mode-line-info nil 640(defvar idlwave-shell-mode-line-info nil
634 "Additional info displayed in the mode line") 641 "Additional info displayed in the mode line")
635 642
636(defvar idlwave-shell-default-directory nil 643(defvar idlwave-shell-default-directory nil
637 "The default directory in the idlwave-shell buffer, of outside use.") 644 "The default directory in the idlwave-shell buffer, of outside use.")
@@ -682,7 +689,7 @@ the directory stack.")
682 window-system) ; Window systems always 689 window-system) ; Window systems always
683 (progn 690 (progn
684 (setq idlwave-shell-stop-line-overlay (make-overlay 1 1)) 691 (setq idlwave-shell-stop-line-overlay (make-overlay 1 1))
685 (overlay-put idlwave-shell-stop-line-overlay 692 (overlay-put idlwave-shell-stop-line-overlay
686 'face idlwave-shell-stop-line-face)))) 693 'face idlwave-shell-stop-line-face))))
687 694
688 (t 695 (t
@@ -690,7 +697,7 @@ the directory stack.")
690 (if window-system 697 (if window-system
691 (progn 698 (progn
692 (setq idlwave-shell-stop-line-overlay (make-overlay 1 1)) 699 (setq idlwave-shell-stop-line-overlay (make-overlay 1 1))
693 (overlay-put idlwave-shell-stop-line-overlay 700 (overlay-put idlwave-shell-stop-line-overlay
694 'face idlwave-shell-stop-line-face))))) 701 'face idlwave-shell-stop-line-face)))))
695 702
696;; Now the expression and output overlays 703;; Now the expression and output overlays
@@ -746,12 +753,9 @@ with `*'s."
746(defvar idlwave-shell-ready nil 753(defvar idlwave-shell-ready nil
747 "If non-nil can send next command to IDL process.") 754 "If non-nil can send next command to IDL process.")
748 755
749(defvar idlwave-shell-wait-for-output nil
750 "Whether to wait for output to accumulate.")
751
752;;; The following are the types of messages we attempt to catch to 756;;; The following are the types of messages we attempt to catch to
753;;; resync our idea of where IDL execution currently is. 757;;; resync our idea of where IDL execution currently is.
754;;; 758;;;
755 759
756(defvar idlwave-shell-halt-frame nil 760(defvar idlwave-shell-halt-frame nil
757 "The frame associated with halt/breakpoint messages.") 761 "The frame associated with halt/breakpoint messages.")
@@ -795,7 +799,7 @@ IDL has currently stepped.")
795 799
796(defconst idlwave-shell-electric-debug-help 800(defconst idlwave-shell-electric-debug-help
797 " ==> IDLWAVE Electric Debug Mode Help <== 801 " ==> IDLWAVE Electric Debug Mode Help <==
798 802
799 Break Point Setting and Clearing: 803 Break Point Setting and Clearing:
800 b Set breakpoint ([C-u b] for conditional, [C-n b] nth hit, etc.). 804 b Set breakpoint ([C-u b] for conditional, [C-n b] nth hit, etc.).
801 d Clear nearby breakpoint. 805 d Clear nearby breakpoint.
@@ -821,7 +825,7 @@ IDL has currently stepped.")
821 Examining Expressions (with prefix for examining the region): 825 Examining Expressions (with prefix for examining the region):
822 p Print expression near point or in region ([C-u p]). 826 p Print expression near point or in region ([C-u p]).
823 ? Help on expression near point or in region ([C-u ?]). 827 ? Help on expression near point or in region ([C-u ?]).
824 x Examine expression near point or in region ([C-u x]) with 828 x Examine expression near point or in region ([C-u x]) with
825 letter completion of the examine type. 829 letter completion of the examine type.
826 830
827 Miscellaneous: 831 Miscellaneous:
@@ -875,18 +879,18 @@ IDL has currently stepped.")
875 `\\[idlwave-routine-info]' displays information about an IDL routine near point, 879 `\\[idlwave-routine-info]' displays information about an IDL routine near point,
876 just like in `idlwave-mode'. The module used is the one at point or 880 just like in `idlwave-mode'. The module used is the one at point or
877 the one whose argument list is being edited. 881 the one whose argument list is being edited.
878 To update IDLWAVE's knowledge about compiled or edited modules, use 882 To update IDLWAVE's knowledge about compiled or edited modules, use
879 \\[idlwave-update-routine-info]. 883 \\[idlwave-update-routine-info].
880 \\[idlwave-find-module] find the source of a module. 884 \\[idlwave-find-module] find the source of a module.
881 \\[idlwave-resolve] tells IDL to compile an unresolved module. 885 \\[idlwave-resolve] tells IDL to compile an unresolved module.
882 \\[idlwave-context-help] shows the online help on the item at 886 \\[idlwave-context-help] shows the online help on the item at
883 point, if online help has been installed. 887 point, if online help has been installed.
884 888
885 889
8864. Debugging 8904. Debugging
887 --------- 891 ---------
888 A complete set of commands for compiling and debugging IDL programs 892 A complete set of commands for compiling and debugging IDL programs
889 is available from the menu. Also keybindings starting with a 893 is available from the menu. Also keybindings starting with a
890 `C-c C-d' prefix are available for most commands in the *idl* buffer 894 `C-c C-d' prefix are available for most commands in the *idl* buffer
891 and also in source buffers. The best place to learn about the 895 and also in source buffers. The best place to learn about the
892 keybindings is again the menu. 896 keybindings is again the menu.
@@ -978,8 +982,8 @@ IDL has currently stepped.")
978 (idlwave-shell-display-line nil) 982 (idlwave-shell-display-line nil)
979 (setq idlwave-shell-calling-stack-index 0) 983 (setq idlwave-shell-calling-stack-index 0)
980 (setq idlwave-shell-only-prompt-pattern 984 (setq idlwave-shell-only-prompt-pattern
981 (concat "\\`[ \t\n]*" 985 (concat "\\`[ \t\n]*"
982 (substring idlwave-shell-prompt-pattern 1) 986 (substring idlwave-shell-prompt-pattern 1)
983 "[ \t\n]*\\'")) 987 "[ \t\n]*\\'"))
984 988
985 (when idlwave-shell-query-for-class 989 (when idlwave-shell-query-for-class
@@ -992,15 +996,12 @@ IDL has currently stepped.")
992 (set-marker comint-last-input-end (point)) 996 (set-marker comint-last-input-end (point))
993 (setq idlwave-idlwave_routine_info-compiled nil) 997 (setq idlwave-idlwave_routine_info-compiled nil)
994 (setq idlwave-shell-ready nil) 998 (setq idlwave-shell-ready nil)
995 (setq idlwave-shell-wait-for-output nil)
996 (setq idlwave-shell-bp-alist nil) 999 (setq idlwave-shell-bp-alist nil)
997 (idlwave-shell-update-bp-overlays) ; Throw away old overlays 1000 (idlwave-shell-update-bp-overlays) ; Throw away old overlays
998 (setq idlwave-shell-sources-alist nil) 1001 (setq idlwave-shell-sources-alist nil)
999 (setq idlwave-shell-default-directory default-directory) 1002 (setq idlwave-shell-default-directory default-directory)
1000 (setq idlwave-shell-hide-output nil) 1003 (setq idlwave-shell-hide-output nil)
1001 1004
1002 ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility
1003 ;;(make-local-hook 'kill-buffer-hook)
1004 (add-hook 'kill-buffer-hook 'idlwave-shell-kill-shell-buffer-confirm 1005 (add-hook 'kill-buffer-hook 'idlwave-shell-kill-shell-buffer-confirm
1005 nil 'local) 1006 nil 'local)
1006 (add-hook 'kill-buffer-hook 'idlwave-shell-delete-temp-files nil 'local) 1007 (add-hook 'kill-buffer-hook 'idlwave-shell-delete-temp-files nil 'local)
@@ -1014,14 +1015,14 @@ IDL has currently stepped.")
1014 (while (setq entry (pop list)) 1015 (while (setq entry (pop list))
1015 (set (make-local-variable (car entry)) (cdr entry))))) 1016 (set (make-local-variable (car entry)) (cdr entry)))))
1016 1017
1017 1018
1018 (unless (memq 'comint-carriage-motion 1019 (unless (memq 'comint-carriage-motion
1019 (default-value 'comint-output-filter-functions)) 1020 (default-value 'comint-output-filter-functions))
1020 ;; Strip those pesky ctrl-m's. 1021 ;; Strip those pesky ctrl-m's.
1021 (add-hook 'comint-output-filter-functions 1022 (add-hook 'comint-output-filter-functions
1022 (lambda (string) 1023 (lambda (string)
1023 (when (string-match "\r" string) 1024 (when (string-match "\r" string)
1024 (let ((pmark (process-mark (get-buffer-process 1025 (let ((pmark (process-mark (get-buffer-process
1025 (current-buffer))))) 1026 (current-buffer)))))
1026 (save-excursion 1027 (save-excursion
1027 ;; bare CR -> delete preceding line 1028 ;; bare CR -> delete preceding line
@@ -1043,8 +1044,6 @@ IDL has currently stepped.")
1043 (set (make-local-variable 'comment-start) ";") 1044 (set (make-local-variable 'comment-start) ";")
1044 (setq abbrev-mode t) 1045 (setq abbrev-mode t)
1045 1046
1046 ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility
1047 ;;(make-local-hook 'post-command-hook)
1048 (add-hook 'post-command-hook 'idlwave-command-hook nil t) 1047 (add-hook 'post-command-hook 'idlwave-command-hook nil t)
1049 1048
1050 ;; Read the command history? 1049 ;; Read the command history?
@@ -1063,9 +1062,8 @@ IDL has currently stepped.")
1063 (idlwave-shell-send-command idlwave-shell-initial-commands nil 'hide) 1062 (idlwave-shell-send-command idlwave-shell-initial-commands nil 'hide)
1064 ;; Turn off IDL's ^d interpreting, and define a system 1063 ;; Turn off IDL's ^d interpreting, and define a system
1065 ;; variable which knows the version of IDLWAVE 1064 ;; variable which knows the version of IDLWAVE
1066 (idlwave-shell-send-command 1065 (idlwave-shell-send-command
1067 (format "defsysv,'!idlwave_version','%s',1" 1066 (format "defsysv,'!idlwave_version','%s',1" idlwave-mode-version)
1068 idlwave-mode-version)
1069 nil 'hide) 1067 nil 'hide)
1070 ;; Get the paths if they weren't read in from file 1068 ;; Get the paths if they weren't read in from file
1071 (if (and (not idlwave-path-alist) 1069 (if (and (not idlwave-path-alist)
@@ -1085,7 +1083,7 @@ IDL has currently stepped.")
1085 (setq idlwave-system-directory sysdir) 1083 (setq idlwave-system-directory sysdir)
1086 (put 'idlwave-system-directory 'from-shell t)) 1084 (put 'idlwave-system-directory 'from-shell t))
1087 ;; Preserve any existing flags 1085 ;; Preserve any existing flags
1088 (setq idlwave-path-alist 1086 (setq idlwave-path-alist
1089 (mapcar (lambda (x) 1087 (mapcar (lambda (x)
1090 (let ((old-entry (assoc x old-path-alist))) 1088 (let ((old-entry (assoc x old-path-alist)))
1091 (if old-entry 1089 (if old-entry
@@ -1093,7 +1091,7 @@ IDL has currently stepped.")
1093 (list x)))) 1091 (list x))))
1094 dirs)) 1092 dirs))
1095 (put 'idlwave-path-alist 'from-shell t) 1093 (put 'idlwave-path-alist 'from-shell t)
1096 (if idlwave-path-alist 1094 (if idlwave-path-alist
1097 (if (and idlwave-auto-write-paths 1095 (if (and idlwave-auto-write-paths
1098 (not idlwave-library-path) 1096 (not idlwave-library-path)
1099 (not no-write) ) 1097 (not no-write) )
@@ -1129,8 +1127,8 @@ IDL has currently stepped.")
1129 (frame (selected-frame))) 1127 (frame (selected-frame)))
1130 (catch 'exit 1128 (catch 'exit
1131 (while flist 1129 (while flist
1132 (if (not (eq (car flist) 1130 (if (not (eq (car flist)
1133 idlwave-shell-idl-wframe)) 1131 idlwave-shell-idl-wframe))
1134 (throw 'exit (car flist)) 1132 (throw 'exit (car flist))
1135 (setq flist (cdr flist)))))) 1133 (setq flist (cdr flist))))))
1136 (make-frame)) 1134 (make-frame))
@@ -1148,9 +1146,9 @@ IDL has currently stepped.")
1148 ;; We do not have a source frame, so we use this one. 1146 ;; We do not have a source frame, so we use this one.
1149 (setq idlwave-shell-display-wframe (selected-frame))) 1147 (setq idlwave-shell-display-wframe (selected-frame)))
1150 ;; Return a new frame 1148 ;; Return a new frame
1151 (setq idlwave-shell-idl-wframe 1149 (setq idlwave-shell-idl-wframe
1152 (make-frame idlwave-shell-frame-parameters))))) 1150 (make-frame idlwave-shell-frame-parameters)))))
1153 1151
1154;;;###autoload 1152;;;###autoload
1155(defun idlwave-shell (&optional arg quick) 1153(defun idlwave-shell (&optional arg quick)
1156 "Run an inferior IDL, with I/O through buffer `(idlwave-shell-buffer)'. 1154 "Run an inferior IDL, with I/O through buffer `(idlwave-shell-buffer)'.
@@ -1177,14 +1175,14 @@ See also the variable `idlwave-shell-prompt-pattern'.
1177 (delete-other-windows)) 1175 (delete-other-windows))
1178 (and idlwave-shell-use-dedicated-frame 1176 (and idlwave-shell-use-dedicated-frame
1179 (setq idlwave-shell-idl-wframe (selected-frame))) 1177 (setq idlwave-shell-idl-wframe (selected-frame)))
1180 (add-hook 'idlwave-shell-sentinel-hook 1178 (add-hook 'idlwave-shell-sentinel-hook
1181 'save-buffers-kill-emacs t)) 1179 'save-buffers-kill-emacs t))
1182 1180
1183 ;; A non-nil arg means, we want a dedicated frame. This will last 1181 ;; A non-nil arg means, we want a dedicated frame. This will last
1184 ;; for the current editing session. 1182 ;; for the current editing session.
1185 (if arg (setq idlwave-shell-use-dedicated-frame t)) 1183 (if arg (setq idlwave-shell-use-dedicated-frame t))
1186 (if (equal arg '(16)) (setq idlwave-shell-use-dedicated-frame nil)) 1184 (if (equal arg '(16)) (setq idlwave-shell-use-dedicated-frame nil))
1187 1185
1188 ;; Check if the process still exists. If not, create it. 1186 ;; Check if the process still exists. If not, create it.
1189 (unless (comint-check-proc (idlwave-shell-buffer)) 1187 (unless (comint-check-proc (idlwave-shell-buffer))
1190 (let* ((prg (or idlwave-shell-explicit-file-name "idl")) 1188 (let* ((prg (or idlwave-shell-explicit-file-name "idl"))
@@ -1211,9 +1209,9 @@ See also the variable `idlwave-shell-prompt-pattern'.
1211 (if (eq (selected-frame) (window-frame window)) 1209 (if (eq (selected-frame) (window-frame window))
1212 (select-window window)))) 1210 (select-window window))))
1213 ;; Save the paths at the end 1211 ;; Save the paths at the end
1214 (add-hook 'idlwave-shell-sentinel-hook 1212 (add-hook 'idlwave-shell-sentinel-hook
1215 (lambda () 1213 (lambda ()
1216 (if (and 1214 (if (and
1217 idlwave-auto-write-paths 1215 idlwave-auto-write-paths
1218 idlwave-path-alist 1216 idlwave-path-alist
1219 (not idlwave-library-path) 1217 (not idlwave-library-path)
@@ -1244,7 +1242,7 @@ Return either nil or 'hide."
1244 (setq idlwave-shell-show-commands (list type)))) 1242 (setq idlwave-shell-show-commands (list type))))
1245 1243
1246 1244
1247(defun idlwave-shell-send-command (&optional cmd pcmd hide preempt 1245(defun idlwave-shell-send-command (&optional cmd pcmd hide preempt
1248 show-if-error) 1246 show-if-error)
1249 "Send a command to IDL process. 1247 "Send a command to IDL process.
1250 1248
@@ -1265,18 +1263,18 @@ If optional fourth argument PREEMPT is non-nil CMD is put at front of
1265`idlwave-shell-pending-commands'. If PREEMPT is 'wait, wait for all 1263`idlwave-shell-pending-commands'. If PREEMPT is 'wait, wait for all
1266output to complete and the next prompt to arrive before returning 1264output to complete and the next prompt to arrive before returning
1267\(useful if you need an answer now\). IDL is considered ready if the 1265\(useful if you need an answer now\). IDL is considered ready if the
1268prompt is present and if `idlwave-shell-ready' is non-nil. 1266prompt is present and if `idlwave-shell-ready' is non-nil.
1269 1267
1270If SHOW-IF-ERROR is non-nil, show the output it it contains an error 1268If SHOW-IF-ERROR is non-nil, show the output it it contains an error
1271message, independent of what HIDE is set to." 1269message, independent of what HIDE is set to."
1272 1270
1273; (setq hide nil) ; FIXME: turn this on for debugging only 1271; (setq hide nil) ; FIXME: turn this on for debugging only
1274; (if (null cmd) 1272; (if (null cmd)
1275; (progn 1273; (progn
1276; (message "SENDING Pending commands: %s" 1274; (message "SENDING Pending commands: %s"
1277; (prin1-to-string idlwave-shell-pending-commands))) 1275; (prin1-to-string idlwave-shell-pending-commands)))
1278; (message "SENDING %s|||%s" cmd pcmd)) 1276; (message "SENDING %s|||%s" cmd pcmd))
1279 (if (and (symbolp idlwave-shell-show-commands) 1277 (if (and (symbolp idlwave-shell-show-commands)
1280 (eq idlwave-shell-show-commands 'everything)) 1278 (eq idlwave-shell-show-commands 'everything))
1281 (setq hide nil)) 1279 (setq hide nil))
1282 (let ((save-buffer (current-buffer)) 1280 (let ((save-buffer (current-buffer))
@@ -1304,7 +1302,7 @@ message, independent of what HIDE is set to."
1304 (append (list (list cmd pcmd hide show-if-error)) 1302 (append (list (list cmd pcmd hide show-if-error))
1305 idlwave-shell-pending-commands) 1303 idlwave-shell-pending-commands)
1306 ;; Put at end. 1304 ;; Put at end.
1307 (append idlwave-shell-pending-commands 1305 (append idlwave-shell-pending-commands
1308 (list (list cmd pcmd hide show-if-error)))))) 1306 (list (list cmd pcmd hide show-if-error))))))
1309 ;; Check if IDL ready 1307 ;; Check if IDL ready
1310 (let ((save-point (point-marker))) 1308 (let ((save-point (point-marker)))
@@ -1339,9 +1337,11 @@ message, independent of what HIDE is set to."
1339 (set-marker comint-last-input-end (point)) 1337 (set-marker comint-last-input-end (point))
1340 (comint-simple-send proc cmd) 1338 (comint-simple-send proc cmd)
1341 (setq idlwave-shell-ready nil) 1339 (setq idlwave-shell-ready nil)
1342 (when (equal preempt 'wait) ; Get all the output at once 1340 (if (equal preempt 'wait) ; Get all the output at once
1343 (setq idlwave-shell-wait-for-output t) 1341 (while (not idlwave-shell-ready)
1344 (accept-process-output proc)))) 1342 (when (not (accept-process-output proc 6)) ; long wait
1343 (setq idlwave-shell-pending-commands nil)
1344 (error "Process timed out"))))))
1345 (goto-char save-point)) 1345 (goto-char save-point))
1346 (set-buffer save-buffer)))) 1346 (set-buffer save-buffer))))
1347 1347
@@ -1353,7 +1353,7 @@ message, independent of what HIDE is set to."
1353 (if (or (not (setq buf (get-buffer (idlwave-shell-buffer)))) 1353 (if (or (not (setq buf (get-buffer (idlwave-shell-buffer))))
1354 (not (setq proc (get-buffer-process buf)))) 1354 (not (setq proc (get-buffer-process buf))))
1355 (funcall errf "Shell is not running")) 1355 (funcall errf "Shell is not running"))
1356 (if (equal c ?\C-g) 1356 (if (equal c ?\C-g)
1357 (funcall errf "Abort") 1357 (funcall errf "Abort")
1358 (comint-send-string proc (char-to-string c))))) 1358 (comint-send-string proc (char-to-string c)))))
1359 1359
@@ -1394,7 +1394,7 @@ when the IDL prompt gets displayed again after the current IDL command."
1394 (if idlwave-shell-ready 1394 (if idlwave-shell-ready
1395 (funcall errf "No IDL program seems to be waiting for input")) 1395 (funcall errf "No IDL program seems to be waiting for input"))
1396 1396
1397 ;; OK, start the loop 1397 ;; OK, start the loop
1398 (message "Character mode on: Sending single chars (`C-g' to exit)") 1398 (message "Character mode on: Sending single chars (`C-g' to exit)")
1399 (message 1399 (message
1400 (catch 'exit 1400 (catch 'exit
@@ -1474,133 +1474,123 @@ error messages, etc."
1474 (setq output (substring output (string-match "\n" output))) 1474 (setq output (substring output (string-match "\n" output)))
1475 (while (string-match "\\(\n\\|\\`\\)%.*\\(\n .*\\)*" output) 1475 (while (string-match "\\(\n\\|\\`\\)%.*\\(\n .*\\)*" output)
1476 (setq output (replace-match "" nil t output))) 1476 (setq output (replace-match "" nil t output)))
1477 (unless 1477 (unless
1478 (string-match idlwave-shell-only-prompt-pattern output) 1478 (string-match idlwave-shell-only-prompt-pattern output)
1479 output)) 1479 output))
1480 1480
1481(defvar idlwave-shell-hidden-output-buffer " *idlwave-shell-hidden-output*" 1481(defvar idlwave-shell-hidden-output-buffer " *idlwave-shell-hidden-output*"
1482 "Buffer containing hidden output from IDL commands.") 1482 "Buffer containing hidden output from IDL commands.")
1483(defvar idlwave-shell-current-state nil) 1483(defvar idlwave-shell-current-state nil)
1484 1484
1485(defun idlwave-shell-filter (proc string) 1485(defun idlwave-shell-filter (proc string)
1486 "Watch for IDL prompt and filter incoming text. 1486 "Watch for IDL prompt and filter incoming text.
1487When the IDL prompt is received executes `idlwave-shell-post-command-hook' 1487When the IDL prompt is received executes `idlwave-shell-post-command-hook'
1488and then calls `idlwave-shell-send-command' for any pending commands." 1488and then calls `idlwave-shell-send-command' for any pending commands."
1489 ;; We no longer do the cleanup here - this is done by the process sentinel 1489 ;; We no longer do the cleanup here - this is done by the process sentinel
1490 (when (eq (process-status idlwave-shell-process-name) 'run) 1490 (if (eq (process-status idlwave-shell-process-name) 'run)
1491 ;; OK, process is still running, so we can use it. 1491 ;; OK, process is still running, so we can use it.
1492 (let ((data (match-data)) p full-output) 1492 (let ((data (match-data)) p full-output)
1493 (unwind-protect 1493 (unwind-protect
1494 (progn 1494 (progn
1495 ;; Ring the bell if necessary 1495 ;; Ring the bell if necessary
1496 (while (setq p (string-match "\C-G" string)) 1496 (while (setq p (string-match "\C-G" string))
1497 (ding) 1497 (ding)
1498 (aset string p ?\C-j )) 1498 (aset string p ?\C-j ))
1499 (if idlwave-shell-hide-output 1499 (if idlwave-shell-hide-output
1500 (save-excursion 1500 (save-excursion
1501 (while (setq p (string-match "\C-M" string)) 1501 (while (setq p (string-match "\C-M" string))
1502 (aset string p ?\ )) 1502 (aset string p ?\ ))
1503 (set-buffer 1503 (set-buffer
1504 (get-buffer-create idlwave-shell-hidden-output-buffer)) 1504 (get-buffer-create idlwave-shell-hidden-output-buffer))
1505 (goto-char (point-max)) 1505 (goto-char (point-max))
1506 (insert string)) 1506 (insert string))
1507 (idlwave-shell-comint-filter proc string)) 1507 (idlwave-shell-comint-filter proc string))
1508 ;; Watch for magic - need to accumulate the current line 1508 ;; Watch for magic - need to accumulate the current line
1509 ;; since it may not be sent all at once. 1509 ;; since it may not be sent all at once.
1510 (if (string-match "\n" string) 1510 (if (string-match "\n" string)
1511 (progn 1511 (progn
1512 (if idlwave-shell-use-input-mode-magic 1512 (if idlwave-shell-use-input-mode-magic
1513 (idlwave-shell-input-mode-magic 1513 (idlwave-shell-input-mode-magic
1514 (concat idlwave-shell-accumulation string))) 1514 (concat idlwave-shell-accumulation string)))
1515 (setq idlwave-shell-accumulation 1515 (setq idlwave-shell-accumulation
1516 (substring string 1516 (substring string
1517 (progn (string-match "\\(.*[\n\r]+\\)*" 1517 (progn (string-match "\\(.*[\n\r]+\\)*"
1518 string) 1518 string)
1519 (match-end 0))))) 1519 (match-end 0)))))
1520 (setq idlwave-shell-accumulation 1520 (setq idlwave-shell-accumulation
1521 (concat idlwave-shell-accumulation string))) 1521 (concat idlwave-shell-accumulation string)))
1522 1522
1523 1523
1524;;; Test/Debug code 1524;;; Test/Debug code
1525; (save-excursion (set-buffer 1525; (save-excursion (set-buffer
1526; (get-buffer-create "*idlwave-shell-output*")) 1526; (get-buffer-create "*idlwave-shell-output*"))
1527; (goto-char (point-max)) 1527; (goto-char (point-max))
1528; (insert "\nSTRING===>\n" string "\n<====\n")) 1528; (insert "\nSTRING===>\n" string "\n<====\n"))
1529 1529
1530 ;; Check for prompt in current accumulating output 1530 ;; Check for prompt in current accumulating output
1531 (if (setq idlwave-shell-ready 1531 (when (setq idlwave-shell-ready
1532 (string-match idlwave-shell-prompt-pattern 1532 (string-match idlwave-shell-prompt-pattern
1533 idlwave-shell-accumulation)) 1533 idlwave-shell-accumulation))
1534 (progn 1534 ;; Gather the command output
1535 ;; Gather the command output 1535 (if idlwave-shell-hide-output
1536 (save-excursion
1537 (set-buffer idlwave-shell-hidden-output-buffer)
1538 (setq full-output (buffer-string))
1539 (goto-char (point-max))
1540 (re-search-backward idlwave-shell-prompt-pattern nil t)
1541 (goto-char (match-end 0))
1542 (setq idlwave-shell-command-output
1543 (buffer-substring (point-min) (point)))
1544 (delete-region (point-min) (point)))
1545 (setq idlwave-shell-command-output
1546 (with-current-buffer (process-buffer proc)
1547 (buffer-substring
1548 (save-excursion
1549 (goto-char (process-mark proc))
1550 (forward-line 0)
1551 (point))
1552 comint-last-input-end))))
1553
1554 ;; Scan for state and do post commands - bracket
1555 ;; them with idlwave-shell-ready=nil since they may
1556 ;; call idlwave-shell-send-command themselves.
1557 (let ((idlwave-shell-ready nil))
1558 (idlwave-shell-scan-for-state)
1559 ;; Show the output in the shell if it contains an error
1536 (if idlwave-shell-hide-output 1560 (if idlwave-shell-hide-output
1537 (save-excursion 1561 (if (and idlwave-shell-show-if-error
1538 (set-buffer idlwave-shell-hidden-output-buffer) 1562 (eq idlwave-shell-current-state 'error))
1539 (setq full-output (buffer-string)) 1563 (idlwave-shell-comint-filter proc full-output)
1540 (goto-char (point-max)) 1564 ;; If it's only *mostly* hidden, filter % lines,
1541 (re-search-backward idlwave-shell-prompt-pattern nil t) 1565 ;; and show anything that remains
1542 (goto-char (match-end 0)) 1566 (if (eq idlwave-shell-hide-output 'mostly)
1543 (setq idlwave-shell-command-output 1567 (let ((filtered
1544 (buffer-substring (point-min) (point))) 1568 (idlwave-shell-filter-hidden-output
1545 (delete-region (point-min) (point))) 1569 full-output)))
1546 (setq idlwave-shell-command-output 1570 (if filtered
1547 (with-current-buffer (process-buffer proc) 1571 (idlwave-shell-comint-filter
1548 (buffer-substring 1572 proc filtered))))))
1549 (save-excursion 1573
1550 (goto-char (process-mark proc)) 1574 ;; Call the post-command hook
1551 (beginning-of-line nil) 1575 (if (listp idlwave-shell-post-command-hook)
1552 (point)) 1576 (progn
1553 comint-last-input-end)))) 1577 ;(message "Calling list")
1554 1578 ;(prin1 idlwave-shell-post-command-hook)
1555 ;; Scan for state and do post commands - bracket 1579 (eval idlwave-shell-post-command-hook))
1556 ;; them with idlwave-shell-ready=nil since they may 1580 ;(message "Calling command function")
1557 ;; call idlwave-shell-send-command themselves. 1581 (funcall idlwave-shell-post-command-hook))
1558 (let ((idlwave-shell-ready nil)) 1582
1559 (idlwave-shell-scan-for-state) 1583 ;; Reset to default state for next command.
1560 ;; Show the output in the shell if it contains an error 1584 ;; Also we do not want to find this prompt again.
1561 (if idlwave-shell-hide-output 1585 (setq idlwave-shell-accumulation nil
1562 (if (and idlwave-shell-show-if-error 1586 idlwave-shell-command-output nil
1563 (eq idlwave-shell-current-state 'error)) 1587 idlwave-shell-post-command-hook nil
1564 (idlwave-shell-comint-filter proc full-output) 1588 idlwave-shell-hide-output nil
1565 ;; If it's only *mostly* hidden, filter % lines, 1589 idlwave-shell-show-if-error nil))
1566 ;; and show anything that remains 1590 ;; Done with post command. Do pending command if
1567 (if (eq idlwave-shell-hide-output 'mostly) 1591 ;; any.
1568 (let ((filtered 1592 (idlwave-shell-send-command)))
1569 (idlwave-shell-filter-hidden-output 1593 (store-match-data data)))))
1570 full-output)))
1571 (if filtered
1572 (idlwave-shell-comint-filter
1573 proc filtered))))))
1574
1575 ;; Call the post-command hook
1576 (if (listp idlwave-shell-post-command-hook)
1577 (progn
1578 ;(message "Calling list")
1579 ;(prin1 idlwave-shell-post-command-hook)
1580 (eval idlwave-shell-post-command-hook))
1581 ;(message "Calling command function")
1582 (funcall idlwave-shell-post-command-hook))
1583
1584 ;; Reset to default state for next command.
1585 ;; Also we do not want to find this prompt again.
1586 (setq idlwave-shell-accumulation nil
1587 idlwave-shell-command-output nil
1588 idlwave-shell-post-command-hook nil
1589 idlwave-shell-hide-output nil
1590 idlwave-shell-show-if-error nil
1591 idlwave-shell-wait-for-output nil))
1592 ;; Done with post command. Do pending command if
1593 ;; any.
1594 (idlwave-shell-send-command))
1595 ;; We didn't get the prompt yet... maybe accept more output
1596 (when idlwave-shell-wait-for-output
1597;;; Test/Debug code
1598; (save-excursion (set-buffer
1599; (get-buffer-create "*idlwave-shell-output*"))
1600; (goto-char (point-max))
1601; (insert "\n<=== WAITING ON OUTPUT ==>\n"))
1602 (accept-process-output proc 1))))
1603 (store-match-data data)))))
1604 1594
1605(defun idlwave-shell-sentinel (process event) 1595(defun idlwave-shell-sentinel (process event)
1606 "The sentinel function for the IDLWAVE shell process." 1596 "The sentinel function for the IDLWAVE shell process."
@@ -1616,7 +1606,7 @@ and then calls `idlwave-shell-send-command' for any pending commands."
1616 (condition-case nil 1606 (condition-case nil
1617 (comint-write-input-ring) 1607 (comint-write-input-ring)
1618 (error nil))))) 1608 (error nil)))))
1619 1609
1620 (when (and (> (length (frame-list)) 1) 1610 (when (and (> (length (frame-list)) 1)
1621 (frame-live-p idlwave-shell-idl-wframe)) 1611 (frame-live-p idlwave-shell-idl-wframe))
1622 (delete-frame idlwave-shell-idl-wframe) 1612 (delete-frame idlwave-shell-idl-wframe)
@@ -1640,8 +1630,8 @@ and then calls `idlwave-shell-send-command' for any pending commands."
1640;; in module and file names. I am not sure if it will be necessary to 1630;; in module and file names. I am not sure if it will be necessary to
1641;; change this. Currently it seems to work the way it is. 1631;; change this. Currently it seems to work the way it is.
1642(defvar idlwave-shell-syntax-error 1632(defvar idlwave-shell-syntax-error
1643 "^% Syntax error.\\s-*\n\\s-*At:\\s-*\\(.*\\),\\s-*Line\\s-*\\(.*\\)" 1633 "^% Syntax error.\\s-*\n\\s-*At:\\s-*\\(.*\\),\\s-*Line\\s-*\\(.*\\)"
1644 "A regular expression to match an IDL syntax error. 1634 "A regular expression to match an IDL syntax error.
1645The 1st pair matches the file name, the second pair matches the line 1635The 1st pair matches the file name, the second pair matches the line
1646number.") 1636number.")
1647 1637
@@ -1649,16 +1639,16 @@ number.")
1649 "^% .*\n\\s-*At:\\s-*\\(.*\\),\\s-*Line\\s-*\\(.*\\)" 1639 "^% .*\n\\s-*At:\\s-*\\(.*\\),\\s-*Line\\s-*\\(.*\\)"
1650 "A regular expression to match any IDL error.") 1640 "A regular expression to match any IDL error.")
1651 1641
1652(defvar idlwave-shell-halting-error 1642(defvar idlwave-shell-halting-error
1653 "^% .*\n\\([^%].*\n\\)*% Execution halted at:\\(\\s-*\\S-+\\s-*[0-9]+\\s-*.*\\)\n" 1643 "^% .*\n\\([^%].*\n\\)*% Execution halted at:\\(\\s-*\\S-+\\s-*[0-9]+\\s-*.*\\)\n"
1654 "A regular expression to match errors which halt execution.") 1644 "A regular expression to match errors which halt execution.")
1655 1645
1656(defvar idlwave-shell-cant-continue-error 1646(defvar idlwave-shell-cant-continue-error
1657 "^% Can't continue from this point.\n" 1647 "^% Can't continue from this point.\n"
1658 "A regular expression to match errors stepping errors.") 1648 "A regular expression to match errors stepping errors.")
1659 1649
1660(defvar idlwave-shell-file-line-message 1650(defvar idlwave-shell-file-line-message
1661 (concat 1651 (concat
1662 "\\(" ; program name group (1) 1652 "\\(" ; program name group (1)
1663 "\\$MAIN\\$\\|" ; main level routine 1653 "\\$MAIN\\$\\|" ; main level routine
1664 "\\<[a-zA-Z][a-zA-Z0-9_$:]*" ; start with a letter followed by [..] 1654 "\\<[a-zA-Z][a-zA-Z0-9_$:]*" ; start with a letter followed by [..]
@@ -1676,7 +1666,7 @@ number.")
1676 "\\)" ; end line number group (5) 1666 "\\)" ; end line number group (5)
1677 ) 1667 )
1678 "*A regular expression to parse out the file name and line number. 1668 "*A regular expression to parse out the file name and line number.
1679The 1st group should match the subroutine name. 1669The 1st group should match the subroutine name.
1680The 3rd group is the line number. 1670The 3rd group is the line number.
1681The 5th group is the file name. 1671The 5th group is the file name.
1682All parts may contain linebreaks surrounded by spaces. This is important 1672All parts may contain linebreaks surrounded by spaces. This is important
@@ -1695,9 +1685,9 @@ the above."
1695 (cond 1685 (cond
1696 ;; Make sure we have output 1686 ;; Make sure we have output
1697 ((not idlwave-shell-command-output)) 1687 ((not idlwave-shell-command-output))
1698 1688
1699 ;; First Priority: Syntax and other errors 1689 ;; First Priority: Syntax and other errors
1700 ((or 1690 ((or
1701 (string-match idlwave-shell-syntax-error 1691 (string-match idlwave-shell-syntax-error
1702 idlwave-shell-command-output) 1692 idlwave-shell-command-output)
1703 (string-match idlwave-shell-other-error 1693 (string-match idlwave-shell-other-error
@@ -1711,19 +1701,19 @@ the above."
1711 (setq idlwave-shell-error-last (point))) 1701 (setq idlwave-shell-error-last (point)))
1712 (setq idlwave-shell-current-state 'error) 1702 (setq idlwave-shell-current-state 'error)
1713 (idlwave-shell-goto-next-error)) 1703 (idlwave-shell-goto-next-error))
1714 1704
1715 ;; Second Priority: Halting errors 1705 ;; Second Priority: Halting errors
1716 ((string-match idlwave-shell-halting-error 1706 ((string-match idlwave-shell-halting-error
1717 idlwave-shell-command-output) 1707 idlwave-shell-command-output)
1718 ;; Grab the file and line state info. 1708 ;; Grab the file and line state info.
1719 (setq idlwave-shell-calling-stack-index 0) 1709 (setq idlwave-shell-calling-stack-index 0)
1720 (setq idlwave-shell-halt-frame 1710 (setq idlwave-shell-halt-frame
1721 (idlwave-shell-parse-line 1711 (idlwave-shell-parse-line
1722 (substring idlwave-shell-command-output 1712 (substring idlwave-shell-command-output
1723 (match-beginning 2))) 1713 (match-beginning 2)))
1724 idlwave-shell-current-state 'error) 1714 idlwave-shell-current-state 'error)
1725 (idlwave-shell-display-line (idlwave-shell-pc-frame))) 1715 (idlwave-shell-display-line (idlwave-shell-pc-frame)))
1726 1716
1727 ;; Third Priority: Various types of innocuous HALT and 1717 ;; Third Priority: Various types of innocuous HALT and
1728 ;; TRACEBACK messages. 1718 ;; TRACEBACK messages.
1729 ((or (setq trace (string-match idlwave-shell-trace-message-re 1719 ((or (setq trace (string-match idlwave-shell-trace-message-re
@@ -1733,25 +1723,25 @@ the above."
1733 ;; Grab the file and line state info. 1723 ;; Grab the file and line state info.
1734 (setq idlwave-shell-calling-stack-index 0) 1724 (setq idlwave-shell-calling-stack-index 0)
1735 (setq idlwave-shell-halt-frame 1725 (setq idlwave-shell-halt-frame
1736 (idlwave-shell-parse-line 1726 (idlwave-shell-parse-line
1737 (substring idlwave-shell-command-output (match-end 0)))) 1727 (substring idlwave-shell-command-output (match-end 0))))
1738 (setq idlwave-shell-current-state 'halt) 1728 (setq idlwave-shell-current-state 'halt)
1739 ;; Don't debug trace messages 1729 ;; Don't debug trace messages
1740 (idlwave-shell-display-line (idlwave-shell-pc-frame) nil 1730 (idlwave-shell-display-line (idlwave-shell-pc-frame) nil
1741 (if trace 'no-debug))) 1731 (if trace 'no-debug)))
1742 1732
1743 ;; Fourth Priority: Breakpoints 1733 ;; Fourth Priority: Breakpoints
1744 ((string-match idlwave-shell-break-message 1734 ((string-match idlwave-shell-break-message
1745 idlwave-shell-command-output) 1735 idlwave-shell-command-output)
1746 (setq idlwave-shell-calling-stack-index 0) 1736 (setq idlwave-shell-calling-stack-index 0)
1747 (setq idlwave-shell-halt-frame 1737 (setq idlwave-shell-halt-frame
1748 (idlwave-shell-parse-line 1738 (idlwave-shell-parse-line
1749 (substring idlwave-shell-command-output (match-end 0)))) 1739 (substring idlwave-shell-command-output (match-end 0))))
1750 ;; We used to count hits on breakpoints 1740 ;; We used to count hits on breakpoints
1751 ;; this is no longer supported since IDL breakpoints 1741 ;; this is no longer supported since IDL breakpoints
1752 ;; have learned counting. 1742 ;; have learned counting.
1753 ;; Do breakpoint command processing 1743 ;; Do breakpoint command processing
1754 (let ((bp (assoc 1744 (let ((bp (assoc
1755 (list 1745 (list
1756 (nth 0 idlwave-shell-halt-frame) 1746 (nth 0 idlwave-shell-halt-frame)
1757 (nth 1 idlwave-shell-halt-frame)) 1747 (nth 1 idlwave-shell-halt-frame))
@@ -1764,9 +1754,9 @@ the above."
1764 ;; A breakpoint that we did not know about - perhaps it was 1754 ;; A breakpoint that we did not know about - perhaps it was
1765 ;; set by the user... Let's update our list. 1755 ;; set by the user... Let's update our list.
1766 (idlwave-shell-bp-query))) 1756 (idlwave-shell-bp-query)))
1767 (setq idlwave-shell-current-state 'breakpoint) 1757 (setq idlwave-shell-current-state 'breakpoint)
1768 (idlwave-shell-display-line (idlwave-shell-pc-frame))) 1758 (idlwave-shell-display-line (idlwave-shell-pc-frame)))
1769 1759
1770 ;; Last Priority: Can't Step errors 1760 ;; Last Priority: Can't Step errors
1771 ((string-match idlwave-shell-cant-continue-error 1761 ((string-match idlwave-shell-cant-continue-error
1772 idlwave-shell-command-output) 1762 idlwave-shell-command-output)
@@ -1775,13 +1765,14 @@ the above."
1775 ;; Otherwise, no particular state 1765 ;; Otherwise, no particular state
1776 (t (setq idlwave-shell-current-state nil))))) 1766 (t (setq idlwave-shell-current-state nil)))))
1777 1767
1768
1778(defun idlwave-shell-parse-line (string &optional skip-main) 1769(defun idlwave-shell-parse-line (string &optional skip-main)
1779 "Parse IDL message for the subroutine, file name and line number. 1770 "Parse IDL message for the subroutine, file name and line number.
1780We need to work hard here to remove the stupid line breaks inserted by 1771We need to work hard here to remove the stupid line breaks inserted by
1781IDL5. These line breaks can be right in the middle of procedure 1772IDL5. These line breaks can be right in the middle of procedure
1782or file names. 1773or file names.
1783It is very difficult to come up with a robust solution. This one seems 1774It is very difficult to come up with a robust solution. This one seems
1784to be pretty good though. 1775to be pretty good though.
1785 1776
1786Here is in what ways it improves over the previous solution: 1777Here is in what ways it improves over the previous solution:
1787 1778
@@ -1806,7 +1797,7 @@ statements."
1806 (setq procedure (match-string 1 string) 1797 (setq procedure (match-string 1 string)
1807 number (match-string 3 string) 1798 number (match-string 3 string)
1808 file (match-string 5 string)) 1799 file (match-string 5 string))
1809 1800
1810 ;; Repair the strings 1801 ;; Repair the strings
1811 (setq procedure (idlwave-shell-repair-string procedure)) 1802 (setq procedure (idlwave-shell-repair-string procedure))
1812 (setq number (idlwave-shell-repair-string number)) 1803 (setq number (idlwave-shell-repair-string number))
@@ -1832,7 +1823,7 @@ The last line of STRING may be garbage - we check which one makes a valid
1832file name." 1823file name."
1833 (let ((file1 "") (file2 "") (start 0)) 1824 (let ((file1 "") (file2 "") (start 0))
1834 ;; We scan no further than to the next "^%" line 1825 ;; We scan no further than to the next "^%" line
1835 (if (string-match "^%" file) 1826 (if (string-match "^%" file)
1836 (setq file (substring file 0 (match-beginning 0)))) 1827 (setq file (substring file 0 (match-beginning 0))))
1837 ;; Take out the line breaks 1828 ;; Take out the line breaks
1838 (while (string-match "[ \t]*\n[ \t]*" file start) 1829 (while (string-match "[ \t]*\n[ \t]*" file start)
@@ -1887,7 +1878,7 @@ file name."
1887The size is given by `idlwave-shell-graphics-window-size'." 1878The size is given by `idlwave-shell-graphics-window-size'."
1888 (interactive "P") 1879 (interactive "P")
1889 (let ((n (if n (prefix-numeric-value n) 0))) 1880 (let ((n (if n (prefix-numeric-value n) 0)))
1890 (idlwave-shell-send-command 1881 (idlwave-shell-send-command
1891 (apply 'format "window,%d,xs=%d,ys=%d" 1882 (apply 'format "window,%d,xs=%d,ys=%d"
1892 n idlwave-shell-graphics-window-size) 1883 n idlwave-shell-graphics-window-size)
1893 nil (idlwave-shell-hide-p 'misc) nil t))) 1884 nil (idlwave-shell-hide-p 'misc) nil t)))
@@ -1907,16 +1898,16 @@ directory."
1907Also get rid of widget events in the queue." 1898Also get rid of widget events in the queue."
1908 (interactive "P") 1899 (interactive "P")
1909 (save-selected-window 1900 (save-selected-window
1910 ;;if (widget_info(/MANAGED))[0] gt 0 then for i=0,n_elements(widget_info(/MANAGED))-1 do widget_control,(widget_info(/MANAGED))[i],/clear_events & 1901 ;;if (widget_info(/MANAGED))[0] gt 0 then for i=0,n_elements(widget_info(/MANAGED))-1 do widget_control,(widget_info(/MANAGED))[i],/clear_events &
1911 (idlwave-shell-send-command "retall" nil 1902 (idlwave-shell-send-command "retall" nil
1912 (if (idlwave-shell-hide-p 'misc) 'mostly) 1903 (if (idlwave-shell-hide-p 'misc) 'mostly)
1913 nil t) 1904 nil t)
1914 (idlwave-shell-display-line nil))) 1905 (idlwave-shell-display-line nil)))
1915 1906
1916(defun idlwave-shell-closeall (&optional arg) 1907(defun idlwave-shell-closeall (&optional arg)
1917 "Close all open files." 1908 "Close all open files."
1918 (interactive "P") 1909 (interactive "P")
1919 (idlwave-shell-send-command "close,/all" nil 1910 (idlwave-shell-send-command "close,/all" nil
1920 (idlwave-shell-hide-p 'misc) nil t)) 1911 (idlwave-shell-hide-p 'misc) nil t))
1921 1912
1922(defun idlwave-shell-quit (&optional arg) 1913(defun idlwave-shell-quit (&optional arg)
@@ -1932,7 +1923,7 @@ With prefix ARG, exit without confirmation."
1932 1923
1933(defun idlwave-shell-reset (&optional hidden) 1924(defun idlwave-shell-reset (&optional hidden)
1934 "Reset IDL. Return to main level and destroy the leftover variables. 1925 "Reset IDL. Return to main level and destroy the leftover variables.
1935This issues the following commands: 1926This issues the following commands:
1936RETALL 1927RETALL
1937WIDGET_CONTROL,/RESET 1928WIDGET_CONTROL,/RESET
1938CLOSE, /ALL 1929CLOSE, /ALL
@@ -1982,14 +1973,14 @@ HEAP_GC, /VERBOSE"
1982 ;; Set dummy values and kill the text 1973 ;; Set dummy values and kill the text
1983 (setq sep "@" sep-re "@ *" text "") 1974 (setq sep "@" sep-re "@ *" text "")
1984 (if idlwave-idlwave_routine_info-compiled 1975 (if idlwave-idlwave_routine_info-compiled
1985 (message 1976 (message
1986 "Routine Info warning: No match for BEGIN line in \n>>>\n%s\n<<<\n" 1977 "Routine Info warning: No match for BEGIN line in \n>>>\n%s\n<<<\n"
1987 idlwave-shell-command-output))) 1978 idlwave-shell-command-output)))
1988 (if (string-match "^>>>END OF IDLWAVE ROUTINE INFO.*" text) 1979 (if (string-match "^>>>END OF IDLWAVE ROUTINE INFO.*" text)
1989 (setq text (substring text 0 (match-beginning 0))) 1980 (setq text (substring text 0 (match-beginning 0)))
1990 (if idlwave-idlwave_routine_info-compiled 1981 (if idlwave-idlwave_routine_info-compiled
1991 (message 1982 (message
1992 "Routine Info warning: No match for END line in \n>>>\n%s\n<<<\n" 1983 "Routine Info warning: No match for END line in \n>>>\n%s\n<<<\n"
1993 idlwave-shell-command-output))) 1984 idlwave-shell-command-output)))
1994 (if (string-match "\\S-" text) 1985 (if (string-match "\\S-" text)
1995 ;; Obviously, the pro worked. Make a note that we have it now. 1986 ;; Obviously, the pro worked. Make a note that we have it now.
@@ -2007,59 +1998,59 @@ HEAP_GC, /VERBOSE"
2007 key (nth 4 specs) 1998 key (nth 4 specs)
2008 keys (if (and (stringp key) 1999 keys (if (and (stringp key)
2009 (not (string-match "\\` *\\'" key))) 2000 (not (string-match "\\` *\\'" key)))
2010 (mapcar 'list 2001 (mapcar 'list
2011 (delete "" (idlwave-split-string key " +"))))) 2002 (delete "" (idlwave-split-string key " +")))))
2012 (setq name (idlwave-sintern-routine-or-method name class t) 2003 (setq name (idlwave-sintern-routine-or-method name class t)
2013 class (idlwave-sintern-class class t) 2004 class (idlwave-sintern-class class t)
2014 file (if (equal file "") nil file) 2005 file (if (equal file "") nil file)
2015 keys (mapcar (lambda (x) 2006 keys (mapcar (lambda (x)
2016 (list (idlwave-sintern-keyword (car x) t))) keys)) 2007 (list (idlwave-sintern-keyword (car x) t))) keys))
2017 2008
2018 ;; In the following ignore routines already defined in buffers, 2009 ;; In the following ignore routines already defined in buffers,
2019 ;; assuming that if the buffer stuff differs, it is a "new" 2010 ;; assuming that if the buffer stuff differs, it is a "new"
2020 ;; version, not yet compiled, and should take precedence. 2011 ;; version, not yet compiled, and should take precedence.
2021 ;; We could do the same for the library to avoid duplicates - 2012 ;; We could do the same for the library to avoid duplicates -
2022 ;; but I think frequently a user might have several versions of 2013 ;; but I think frequently a user might have several versions of
2023 ;; the same function in different programs, and in this case the 2014 ;; the same function in different programs, and in this case the
2024 ;; compiled one will be the best guess of all versions. 2015 ;; compiled one will be the best guess of all versions.
2025 ;; Therefore, we leave duplicates of library routines in. 2016 ;; Therefore, we leave duplicates of library routines in.
2026 (cond ((string= name "$MAIN$")) ; ignore this one 2017 (cond ((string= name "$MAIN$")) ; ignore this one
2027 ((and (string= type "PRO") 2018 ((and (string= type "PRO")
2028 ;; FIXME: is it OK to make the buffer routines dominate? 2019 ;; FIXME: is it OK to make the buffer routines dominate?
2029 (or t (null file) 2020 (or t (null file)
2030 (not (idlwave-rinfo-assq name 'pro class 2021 (not (idlwave-rinfo-assq name 'pro class
2031 idlwave-buffer-routines))) 2022 idlwave-buffer-routines)))
2032 ;; FIXME: is it OK to make the library routines dominate? 2023 ;; FIXME: is it OK to make the library routines dominate?
2033 ;;(not (idlwave-rinfo-assq name 'pro class 2024 ;;(not (idlwave-rinfo-assq name 'pro class
2034 ;; idlwave-library-routines)) 2025 ;; idlwave-library-routines))
2035 ) 2026 )
2036 (setq entry (list name 'pro class 2027 (setq entry (list name 'pro class
2037 (cons 'compiled 2028 (cons 'compiled
2038 (if file 2029 (if file
2039 (list 2030 (list
2040 (file-name-nondirectory file) 2031 (file-name-nondirectory file)
2041 (idlwave-sintern-dir 2032 (idlwave-sintern-dir
2042 (file-name-directory file))))) 2033 (file-name-directory file)))))
2043 cs (cons nil keys))) 2034 cs (cons nil keys)))
2044 (if file 2035 (if file
2045 (push entry idlwave-compiled-routines) 2036 (push entry idlwave-compiled-routines)
2046 (push entry idlwave-unresolved-routines))) 2037 (push entry idlwave-unresolved-routines)))
2047 2038
2048 ((and (string= type "FUN") 2039 ((and (string= type "FUN")
2049 ;; FIXME: is it OK to make the buffer routines dominate? 2040 ;; FIXME: is it OK to make the buffer routines dominate?
2050 (or t (not file) 2041 (or t (not file)
2051 (not (idlwave-rinfo-assq name 'fun class 2042 (not (idlwave-rinfo-assq name 'fun class
2052 idlwave-buffer-routines))) 2043 idlwave-buffer-routines)))
2053 ;; FIXME: is it OK to make the library routines dominate? 2044 ;; FIXME: is it OK to make the library routines dominate?
2054 ;; (not (idlwave-rinfo-assq name 'fun class 2045 ;; (not (idlwave-rinfo-assq name 'fun class
2055 ;; idlwave-library-routines)) 2046 ;; idlwave-library-routines))
2056 ) 2047 )
2057 (setq entry (list name 'fun class 2048 (setq entry (list name 'fun class
2058 (cons 'compiled 2049 (cons 'compiled
2059 (if file 2050 (if file
2060 (list 2051 (list
2061 (file-name-nondirectory file) 2052 (file-name-nondirectory file)
2062 (idlwave-sintern-dir 2053 (idlwave-sintern-dir
2063 (file-name-directory file))))) 2054 (file-name-directory file)))))
2064 cs (cons nil keys))) 2055 cs (cons nil keys)))
2065 (if file 2056 (if file
@@ -2076,7 +2067,7 @@ Change the default directory for the process buffer to concur."
2076 (set-buffer (idlwave-shell-buffer)) 2067 (set-buffer (idlwave-shell-buffer))
2077 (if (string-match ",___cur[\n\r]\\(\\S-*\\) *[\n\r]" 2068 (if (string-match ",___cur[\n\r]\\(\\S-*\\) *[\n\r]"
2078 idlwave-shell-command-output) 2069 idlwave-shell-command-output)
2079 (let ((dir (substring idlwave-shell-command-output 2070 (let ((dir (substring idlwave-shell-command-output
2080 (match-beginning 1) (match-end 1)))) 2071 (match-beginning 1) (match-end 1))))
2081; (message "Setting Emacs working dir to %s" dir) 2072; (message "Setting Emacs working dir to %s" dir)
2082 (setq idlwave-shell-default-directory dir) 2073 (setq idlwave-shell-default-directory dir)
@@ -2090,10 +2081,10 @@ Change the default directory for the process buffer to concur."
2090 expression) 2081 expression)
2091 (save-excursion 2082 (save-excursion
2092 (goto-char apos) 2083 (goto-char apos)
2093 (setq expression (buffer-substring 2084 (setq expression (buffer-substring
2094 (catch 'exit 2085 (catch 'exit
2095 (while t 2086 (while t
2096 (if (not (re-search-backward 2087 (if (not (re-search-backward
2097 "[^][.A-Za-z0-9_() ]" bos t)) 2088 "[^][.A-Za-z0-9_() ]" bos t))
2098 (throw 'exit bos)) ;ran into bos 2089 (throw 'exit bos)) ;ran into bos
2099 (if (not (idlwave-is-pointer-dereference bol)) 2090 (if (not (idlwave-is-pointer-dereference bol))
@@ -2102,7 +2093,8 @@ Change the default directory for the process buffer to concur."
2102 (when (not (string= expression "")) 2093 (when (not (string= expression ""))
2103 (setq idlwave-shell-get-object-class nil) 2094 (setq idlwave-shell-get-object-class nil)
2104 (idlwave-shell-send-command 2095 (idlwave-shell-send-command
2105 (concat "print,obj_class(" expression ")") 2096 (concat "if obj_valid(" expression ") then print,obj_class("
2097 expression ")")
2106 'idlwave-shell-parse-object-class 2098 'idlwave-shell-parse-object-class
2107 'hide 'wait) 2099 'hide 'wait)
2108 ;; If we don't know anything about the class, update shell routines 2100 ;; If we don't know anything about the class, update shell routines
@@ -2114,14 +2106,11 @@ Change the default directory for the process buffer to concur."
2114 2106
2115(defun idlwave-shell-parse-object-class () 2107(defun idlwave-shell-parse-object-class ()
2116 "Parse the output of the obj_class command." 2108 "Parse the output of the obj_class command."
2117 (let ((match "print,obj_class([^\n\r]+[\n\r ]")) 2109 (let ((match "obj_class([^\n\r]+[\n\r ]"))
2118 (if (and 2110 (if (string-match (concat match "\\([A-Za-z_0-9]+\\) *[\n\r]\\("
2119 (not (string-match (concat match match "\\s-*^[\n\r]+" 2111 idlwave-shell-prompt-pattern "\\)")
2120 "% Syntax error") 2112 idlwave-shell-command-output)
2121 idlwave-shell-command-output)) 2113 (setq idlwave-shell-get-object-class
2122 (string-match (concat match "\\([A-Za-z_0-9]+\\)")
2123 idlwave-shell-command-output))
2124 (setq idlwave-shell-get-object-class
2125 (match-string 1 idlwave-shell-command-output))))) 2114 (match-string 1 idlwave-shell-command-output)))))
2126 2115
2127(defvar idlwave-sint-sysvars nil) 2116(defvar idlwave-sint-sysvars nil)
@@ -2135,7 +2124,7 @@ keywords."
2135 (interactive "P") 2124 (interactive "P")
2136 (let (exec-cmd) 2125 (let (exec-cmd)
2137 (cond 2126 (cond
2138 ((and 2127 ((and
2139 (setq exec-cmd (idlwave-shell-executive-command)) 2128 (setq exec-cmd (idlwave-shell-executive-command))
2140 (cdr exec-cmd) 2129 (cdr exec-cmd)
2141 (member (upcase (cdr exec-cmd)) 2130 (member (upcase (cdr exec-cmd))
@@ -2145,7 +2134,7 @@ keywords."
2145 (idlwave-shell-complete-filename)) 2134 (idlwave-shell-complete-filename))
2146 2135
2147 ((car-safe exec-cmd) 2136 ((car-safe exec-cmd)
2148 (setq idlwave-completion-help-info 2137 (setq idlwave-completion-help-info
2149 '(idlwave-shell-complete-execcomm-help)) 2138 '(idlwave-shell-complete-execcomm-help))
2150 (idlwave-complete-in-buffer 'execcomm 'execcomm 2139 (idlwave-complete-in-buffer 'execcomm 'execcomm
2151 idlwave-executive-commands-alist nil 2140 idlwave-executive-commands-alist nil
@@ -2164,7 +2153,7 @@ keywords."
2164 (let ((case-fold-search t)) 2153 (let ((case-fold-search t))
2165 (not (looking-at ".*obj_new"))))) 2154 (not (looking-at ".*obj_new")))))
2166 (idlwave-shell-complete-filename)) 2155 (idlwave-shell-complete-filename))
2167 2156
2168 (t 2157 (t
2169 ;; Default completion of modules and keywords 2158 ;; Default completion of modules and keywords
2170 (idlwave-complete arg))))) 2159 (idlwave-complete arg)))))
@@ -2186,7 +2175,7 @@ keywords."
2186We assume that we are after a file name when completing one of the 2175We assume that we are after a file name when completing one of the
2187args of an executive .run, .rnew or .compile." 2176args of an executive .run, .rnew or .compile."
2188 ;; CWD might have changed, resync, to set default directory 2177 ;; CWD might have changed, resync, to set default directory
2189 (idlwave-shell-resync-dirs) 2178 (idlwave-shell-resync-dirs)
2190 (let ((comint-file-name-chars idlwave-shell-file-name-chars)) 2179 (let ((comint-file-name-chars idlwave-shell-file-name-chars))
2191 (comint-dynamic-complete-as-filename))) 2180 (comint-dynamic-complete-as-filename)))
2192 2181
@@ -2227,7 +2216,7 @@ args of an executive .run, .rnew or .compile."
2227 2216
2228(defun idlwave-shell-redisplay (&optional hide) 2217(defun idlwave-shell-redisplay (&optional hide)
2229 "Tries to resync the display with where execution has stopped. 2218 "Tries to resync the display with where execution has stopped.
2230Issues a \"help,/trace\" command followed by a call to 2219Issues a \"help,/trace\" command followed by a call to
2231`idlwave-shell-display-line'. Also updates the breakpoint 2220`idlwave-shell-display-line'. Also updates the breakpoint
2232overlays." 2221overlays."
2233 (interactive) 2222 (interactive)
@@ -2240,7 +2229,7 @@ overlays."
2240 (idlwave-shell-bp-query)) 2229 (idlwave-shell-bp-query))
2241 2230
2242(defun idlwave-shell-display-level-in-calling-stack (&optional hide) 2231(defun idlwave-shell-display-level-in-calling-stack (&optional hide)
2243 (idlwave-shell-send-command 2232 (idlwave-shell-send-command
2244 "help,/trace" 2233 "help,/trace"
2245 `(progn 2234 `(progn
2246 ;; scanning for the state will reset the stack level - restore it 2235 ;; scanning for the state will reset the stack level - restore it
@@ -2271,14 +2260,14 @@ overlays."
2271 (setq idlwave-shell-calling-stack-index nmin 2260 (setq idlwave-shell-calling-stack-index nmin
2272 message (format "%d is the current calling stack level - can't go further down" 2261 message (format "%d is the current calling stack level - can't go further down"
2273 (- nmin))))) 2262 (- nmin)))))
2274 (setq idlwave-shell-calling-stack-routine 2263 (setq idlwave-shell-calling-stack-routine
2275 (nth 2 (nth idlwave-shell-calling-stack-index stack))) 2264 (nth 2 (nth idlwave-shell-calling-stack-index stack)))
2276 2265
2277 ;; only edebug if in that mode already 2266 ;; only edebug if in that mode already
2278 (idlwave-shell-display-line 2267 (idlwave-shell-display-line
2279 (nth idlwave-shell-calling-stack-index stack) nil 2268 (nth idlwave-shell-calling-stack-index stack) nil
2280 (unless idlwave-shell-electric-debug-mode 'no-debug)) 2269 (unless idlwave-shell-electric-debug-mode 'no-debug))
2281 (message (or message 2270 (message (or message
2282 (format "In routine %s (stack level %d)" 2271 (format "In routine %s (stack level %d)"
2283 idlwave-shell-calling-stack-routine 2272 idlwave-shell-calling-stack-routine
2284 (- idlwave-shell-calling-stack-index)))))) 2273 (- idlwave-shell-calling-stack-index))))))
@@ -2309,7 +2298,7 @@ used. Does nothing if the resulting frame is nil."
2309(defun idlwave-shell-pc-frame () 2298(defun idlwave-shell-pc-frame ()
2310 "Returns the frame for IDL execution." 2299 "Returns the frame for IDL execution."
2311 (and idlwave-shell-halt-frame 2300 (and idlwave-shell-halt-frame
2312 (list (nth 0 idlwave-shell-halt-frame) 2301 (list (nth 0 idlwave-shell-halt-frame)
2313 (nth 1 idlwave-shell-halt-frame) 2302 (nth 1 idlwave-shell-halt-frame)
2314 (nth 2 idlwave-shell-halt-frame)))) 2303 (nth 2 idlwave-shell-halt-frame))))
2315 2304
@@ -2327,7 +2316,7 @@ column in the line. If NO-DEBUG is non-nil, do *not* toggle the electric
2327debug mode." 2316debug mode."
2328 (if (not frame) 2317 (if (not frame)
2329 ;; Remove stop-line overlay from old position 2318 ;; Remove stop-line overlay from old position
2330 (progn 2319 (progn
2331 (setq overlay-arrow-string nil) 2320 (setq overlay-arrow-string nil)
2332 (setq idlwave-shell-mode-line-info nil) 2321 (setq idlwave-shell-mode-line-info nil)
2333 (setq idlwave-shell-is-stopped nil) 2322 (setq idlwave-shell-is-stopped nil)
@@ -2344,10 +2333,10 @@ debug mode."
2344;;; 2333;;;
2345;;; buffer : the buffer to display a line in. 2334;;; buffer : the buffer to display a line in.
2346;;; select-shell: current buffer is the shell. 2335;;; select-shell: current buffer is the shell.
2347;;; 2336;;;
2348 (setq idlwave-shell-mode-line-info 2337 (setq idlwave-shell-mode-line-info
2349 (if (nth 2 frame) 2338 (if (nth 2 frame)
2350 (format "[%d:%s]" 2339 (format "[%d:%s]"
2351 (- idlwave-shell-calling-stack-index) 2340 (- idlwave-shell-calling-stack-index)
2352 (nth 2 frame)))) 2341 (nth 2 frame))))
2353 (let* ((buffer (idlwave-find-file-noselect (car frame) 'shell)) 2342 (let* ((buffer (idlwave-find-file-noselect (car frame) 'shell))
@@ -2371,7 +2360,7 @@ debug mode."
2371 (forward-line 0) 2360 (forward-line 0)
2372 (setq pos (point)) 2361 (setq pos (point))
2373 (setq idlwave-shell-is-stopped t) 2362 (setq idlwave-shell-is-stopped t)
2374 2363
2375 (if idlwave-shell-stop-line-overlay 2364 (if idlwave-shell-stop-line-overlay
2376 ;; Move overlay 2365 ;; Move overlay
2377 (move-overlay idlwave-shell-stop-line-overlay 2366 (move-overlay idlwave-shell-stop-line-overlay
@@ -2393,12 +2382,12 @@ debug mode."
2393 ;; If we have the column of the error, move the cursor there. 2382 ;; If we have the column of the error, move the cursor there.
2394 (if col (move-to-column col)) 2383 (if col (move-to-column col))
2395 (setq pos (point)) 2384 (setq pos (point))
2396 2385
2397 ;; Enter electric debug mode, if not prohibited and not in 2386 ;; Enter electric debug mode, if not prohibited and not in
2398 ;; it already 2387 ;; it already
2399 (when (and (or 2388 (when (and (or
2400 (eq idlwave-shell-automatic-electric-debug t) 2389 (eq idlwave-shell-automatic-electric-debug t)
2401 (and 2390 (and
2402 (eq idlwave-shell-automatic-electric-debug 'breakpoint) 2391 (eq idlwave-shell-automatic-electric-debug 'breakpoint)
2403 (not (eq idlwave-shell-current-state 'error)))) 2392 (not (eq idlwave-shell-current-state 'error))))
2404 (not no-debug) 2393 (not no-debug)
@@ -2406,14 +2395,14 @@ debug mode."
2406 (not idlwave-shell-electric-debug-mode)) 2395 (not idlwave-shell-electric-debug-mode))
2407 (idlwave-shell-electric-debug-mode) 2396 (idlwave-shell-electric-debug-mode)
2408 (setq electric t))) 2397 (setq electric t)))
2409 2398
2410 ;; Make sure pos is really displayed in the window. 2399 ;; Make sure pos is really displayed in the window.
2411 (set-window-point window pos) 2400 (set-window-point window pos)
2412 2401
2413 ;; If we came from the shell, go back there. Otherwise select 2402 ;; If we came from the shell, go back there. Otherwise select
2414 ;; the window where the error is displayed. 2403 ;; the window where the error is displayed.
2415 (if (or (and idlwave-shell-electric-zap-to-file electric) 2404 (if (or (and idlwave-shell-electric-zap-to-file electric)
2416 (and (equal (buffer-name) (idlwave-shell-buffer)) 2405 (and (equal (buffer-name) (idlwave-shell-buffer))
2417 (not select-shell))) 2406 (not select-shell)))
2418 (select-window window)))))) 2407 (select-window window))))))
2419 2408
@@ -2423,23 +2412,24 @@ debug mode."
2423 (interactive "p") 2412 (interactive "p")
2424 (or (not arg) (< arg 1) 2413 (or (not arg) (< arg 1)
2425 (setq arg 1)) 2414 (setq arg 1))
2426 (idlwave-shell-send-command 2415 (idlwave-shell-send-command
2427 (concat ".s " (if (integerp arg) (int-to-string arg) arg)) 2416 (concat ".s " (if (integerp arg) (int-to-string arg) arg))
2428 nil (if (idlwave-shell-hide-p 'debug) 'mostly) nil t)) 2417 nil (if (idlwave-shell-hide-p 'debug) 'mostly) nil t))
2429 2418
2430(defun idlwave-shell-stepover (arg) 2419(defun idlwave-shell-stepover (arg)
2431 "Stepover one source line. 2420 "Stepover one source line.
2432If given prefix argument ARG, step ARG source lines. 2421If given prefix argument ARG, step ARG source lines.
2433Uses IDL's stepover executive command which does not enter called functions." 2422Uses IDL's stepover executive command which does not enter called functions."
2434 (interactive "p") 2423 (interactive "p")
2435 (or (not arg) (< arg 1) 2424 (or (not arg) (< arg 1)
2436 (setq arg 1)) 2425 (setq arg 1))
2437 (idlwave-shell-send-command 2426 (idlwave-shell-send-command
2438 (concat ".so " (if (integerp arg) (int-to-string arg) arg)) 2427 (concat ".so " (if (integerp arg) (int-to-string arg) arg))
2439 nil (if (idlwave-shell-hide-p 'debug) 'mostly) nil t)) 2428 nil (if (idlwave-shell-hide-p 'debug) 'mostly) nil t))
2440 2429
2441(defun idlwave-shell-break-here (&optional count cmd condition no-show) 2430(defun idlwave-shell-break-here (&optional count cmd condition disabled
2442 "Set breakpoint at current line. 2431 no-show)
2432 "Set breakpoint at current line.
2443 2433
2444If Count is nil then an ordinary breakpoint is set. We treat a count 2434If Count is nil then an ordinary breakpoint is set. We treat a count
2445of 1 as a temporary breakpoint using the ONCE keyword. Counts greater 2435of 1 as a temporary breakpoint using the ONCE keyword. Counts greater
@@ -2447,17 +2437,17 @@ than 1 use the IDL AFTER=count keyword to break only after reaching
2447the statement count times. 2437the statement count times.
2448 2438
2449Optional argument CMD is a list or function to evaluate upon reaching 2439Optional argument CMD is a list or function to evaluate upon reaching
2450the breakpoint." 2440the breakpoint. CONDITION is a break condition, and DISABLED, if
2451 2441non-nil disables the breakpoint"
2452 (interactive "P") 2442 (interactive "P")
2453 (when (listp count) 2443 (when (listp count)
2454 (if (equal (car count) 4) 2444 (if (equal (car count) 4)
2455 (setq condition (read-string "Break Condition: "))) 2445 (setq condition (read-string "Break Condition: ")))
2456 (setq count nil)) 2446 (setq count nil))
2457 (idlwave-shell-set-bp 2447 (idlwave-shell-set-bp
2458 ;; Create breakpoint 2448 ;; Create breakpoint
2459 (idlwave-shell-bp (idlwave-shell-current-frame) 2449 (idlwave-shell-bp (idlwave-shell-current-frame)
2460 (list count cmd condition nil) 2450 (list count cmd condition disabled)
2461 (idlwave-shell-current-module)) 2451 (idlwave-shell-current-module))
2462 no-show)) 2452 no-show))
2463 2453
@@ -2467,14 +2457,14 @@ This is run on `idlwave-shell-post-command-hook'.
2467Offers to recompile the procedure if we failed. This usually fixes 2457Offers to recompile the procedure if we failed. This usually fixes
2468the problem with not being able to set the breakpoint." 2458the problem with not being able to set the breakpoint."
2469 ;; Scan for message 2459 ;; Scan for message
2470 (if (and idlwave-shell-command-output 2460 (if idlwave-shell-command-output
2471 (string-match "% BREAKPOINT: *Unable to find code" 2461 (cond
2472 idlwave-shell-command-output)) 2462 ((string-match "% BREAKPOINT: *Unable to find code"
2473 ;; Offer to recompile 2463 idlwave-shell-command-output)
2474 (progn 2464 ;; Offer to recompile
2475 (if (progn 2465 (if (progn
2476 (beep) 2466 (beep)
2477 (y-or-n-p 2467 (y-or-n-p
2478 (concat "Okay to recompile file " 2468 (concat "Okay to recompile file "
2479 (idlwave-shell-bp-get bp 'file) " "))) 2469 (idlwave-shell-bp-get bp 'file) " ")))
2480 ;; Recompile 2470 ;; Recompile
@@ -2482,17 +2472,21 @@ the problem with not being able to set the breakpoint."
2482 ;; Clean up before retrying 2472 ;; Clean up before retrying
2483 (idlwave-shell-command-failure) 2473 (idlwave-shell-command-failure)
2484 (idlwave-shell-send-command 2474 (idlwave-shell-send-command
2485 (concat ".run " (idlwave-shell-bp-get bp 'file)) nil 2475 (concat ".run " (idlwave-shell-bp-get bp 'file)) nil
2486 (if (idlwave-shell-hide-p 'run) 'mostly) nil t) 2476 (if (idlwave-shell-hide-p 'run) 'mostly) nil t)
2487 ;; Try setting breakpoint again 2477 ;; Try setting breakpoint again
2488 (idlwave-shell-set-bp bp)) 2478 (idlwave-shell-set-bp bp))
2489 (beep) 2479 (beep)
2490 (message "Unable to set breakpoint.") 2480 (message "Unable to set breakpoint.")
2491 (idlwave-shell-command-failure) 2481 (idlwave-shell-command-failure))
2492 ) 2482 nil)
2493 ;; return non-nil if no error found 2483
2494 nil) 2484 ((string-match "% Syntax error" idlwave-shell-command-output)
2495 'okay)) 2485 (message "Syntax error in condition.")
2486 (idlwave-shell-command-failure)
2487 nil)
2488
2489 (t 'okay))))
2496 2490
2497(defun idlwave-shell-command-failure () 2491(defun idlwave-shell-command-failure ()
2498 "Do any necessary clean up when an IDL command fails. 2492 "Do any necessary clean up when an IDL command fails.
@@ -2506,9 +2500,9 @@ breakpoint can not be set."
2506(defun idlwave-shell-cont (&optional no-show) 2500(defun idlwave-shell-cont (&optional no-show)
2507 "Continue executing." 2501 "Continue executing."
2508 (interactive) 2502 (interactive)
2509 (idlwave-shell-send-command ".c" (unless no-show 2503 (idlwave-shell-send-command ".c" (unless no-show
2510 '(idlwave-shell-redisplay 'hide)) 2504 '(idlwave-shell-redisplay 'hide))
2511 (if (idlwave-shell-hide-p 'debug) 'mostly) 2505 (if (idlwave-shell-hide-p 'debug) 'mostly)
2512 nil t)) 2506 nil t))
2513 2507
2514(defun idlwave-shell-go () 2508(defun idlwave-shell-go ()
@@ -2589,7 +2583,7 @@ at a breakpoint."
2589 ((eq force 'enable) (setq disabled t))) 2583 ((eq force 'enable) (setq disabled t)))
2590 (when bp 2584 (when bp
2591 (setf (nth 3 (cdr (cdr bp))) (not disabled)) 2585 (setf (nth 3 (cdr (cdr bp))) (not disabled))
2592 (idlwave-shell-send-command 2586 (idlwave-shell-send-command
2593 (concat "breakpoint," 2587 (concat "breakpoint,"
2594 (if disabled "/enable," "/disable,") 2588 (if disabled "/enable," "/disable,")
2595 (int-to-string (idlwave-shell-bp-get bp))) 2589 (int-to-string (idlwave-shell-bp-get bp)))
@@ -2603,18 +2597,18 @@ If ENABLE is non-nil, enable them instead."
2603 (while bpl 2597 (while bpl
2604 (setq disabled (idlwave-shell-bp-get (car bpl) 'disabled)) 2598 (setq disabled (idlwave-shell-bp-get (car bpl) 'disabled))
2605 (when (idlwave-xor (not disabled) (eq enable 'enable)) 2599 (when (idlwave-xor (not disabled) (eq enable 'enable))
2606 (idlwave-shell-toggle-enable-current-bp 2600 (idlwave-shell-toggle-enable-current-bp
2607 (car bpl) (if (eq enable 'enable) 'enable 'disable) no-update) 2601 (car bpl) (if (eq enable 'enable) 'enable 'disable) no-update)
2608 (push (car bpl) modified)) 2602 (push (car bpl) modified))
2609 (setq bpl (cdr bpl))) 2603 (setq bpl (cdr bpl)))
2610 (unless no-update (idlwave-shell-bp-query)) 2604 (unless no-update (idlwave-shell-bp-query))
2611 modified)) 2605 modified))
2612 2606
2613(defun idlwave-shell-to-here () 2607(defun idlwave-shell-to-here ()
2614 "Set a breakpoint with count 1 then continue." 2608 "Set a breakpoint with count 1 then continue."
2615 (interactive) 2609 (interactive)
2616 (let ((disabled (idlwave-shell-enable-all-bp 'disable 'no-update))) 2610 (let ((disabled (idlwave-shell-enable-all-bp 'disable 'no-update)))
2617 (idlwave-shell-break-here 1 nil nil 'no-show) 2611 (idlwave-shell-break-here 1 nil nil nil 'no-show)
2618 (idlwave-shell-cont 'no-show) 2612 (idlwave-shell-cont 'no-show)
2619 (idlwave-shell-enable-all-bp 'enable 'no-update disabled)) 2613 (idlwave-shell-enable-all-bp 'enable 'no-update disabled))
2620 (idlwave-shell-redisplay)) ; sync up everything at the end 2614 (idlwave-shell-redisplay)) ; sync up everything at the end
@@ -2631,23 +2625,19 @@ The command looks for an identifier near point and sets a breakpoint
2631for the first line of the corresponding module. If MODULE is `t', set 2625for the first line of the corresponding module. If MODULE is `t', set
2632in the current routine." 2626in the current routine."
2633 (interactive) 2627 (interactive)
2634 (let (module) 2628 (let ((module (idlwave-fix-module-if-obj_new (idlwave-what-module))))
2635 (save-excursion 2629 (if module
2636 (skip-chars-backward "a-zA-Z0-9_$") 2630 (progn
2637 (if (looking-at idlwave-identifier) 2631 (setq module (idlwave-make-full-name (nth 2 module) (car module)))
2638 (setq module (match-string 0)) 2632 (idlwave-shell-module-source-query module)
2639 (error "No identifier at point"))) 2633 (idlwave-shell-set-bp-in-module module))
2640 (idlwave-shell-send-command 2634 (error "No identifier at point"))))
2641 idlwave-shell-sources-query 2635
2642 `(progn
2643 (idlwave-shell-sources-filter)
2644 (idlwave-shell-set-bp-in-module ,module))
2645 'hide)))
2646 2636
2647(defun idlwave-shell-set-bp-in-module (module) 2637(defun idlwave-shell-set-bp-in-module (module)
2648 "Set breakpoint in module. Assumes that `idlwave-shell-sources-alist' 2638 "Set breakpoint in module. Assumes that `idlwave-shell-sources-alist'
2649contains an entry for that module." 2639contains an entry for that module."
2650 (let ((source-file (car-safe 2640 (let ((source-file (car-safe
2651 (cdr-safe 2641 (cdr-safe
2652 (assoc (upcase module) 2642 (assoc (upcase module)
2653 idlwave-shell-sources-alist)))) 2643 idlwave-shell-sources-alist))))
@@ -2666,7 +2656,7 @@ contains an entry for that module."
2666 (save-excursion 2656 (save-excursion
2667 (goto-char (point-min)) 2657 (goto-char (point-min))
2668 (let ((case-fold-search t)) 2658 (let ((case-fold-search t))
2669 (if (re-search-forward 2659 (if (re-search-forward
2670 (concat "^[ \t]*\\(pro\\|function\\)[ \t]+" 2660 (concat "^[ \t]*\\(pro\\|function\\)[ \t]+"
2671 (downcase module) 2661 (downcase module)
2672 "[ \t\n,]") nil t) 2662 "[ \t\n,]") nil t)
@@ -2708,7 +2698,7 @@ Sets a breakpoint with count 1 at end of block, then continues."
2708 "Attempt to run until this procedure exits. 2698 "Attempt to run until this procedure exits.
2709Runs to the last statement and then steps 1 statement. Use the .out command." 2699Runs to the last statement and then steps 1 statement. Use the .out command."
2710 (interactive) 2700 (interactive)
2711 (idlwave-shell-send-command ".o" nil 2701 (idlwave-shell-send-command ".o" nil
2712 (if (idlwave-shell-hide-p 'debug) 'mostly) 2702 (if (idlwave-shell-hide-p 'debug) 'mostly)
2713 nil t)) 2703 nil t))
2714 2704
@@ -2755,7 +2745,7 @@ Runs to the last statement and then steps 1 statement. Use the .out command."
2755 (interactive "e") 2745 (interactive "e")
2756 (let ((transient-mark-mode t) 2746 (let ((transient-mark-mode t)
2757 (zmacs-regions t) 2747 (zmacs-regions t)
2758 (tracker (if (featurep 'xemacs) 2748 (tracker (if (featurep 'xemacs)
2759 (if (fboundp 'default-mouse-track-event-is-with-button) 2749 (if (fboundp 'default-mouse-track-event-is-with-button)
2760 'idlwave-xemacs-hack-mouse-track 2750 'idlwave-xemacs-hack-mouse-track
2761 'mouse-track) 2751 'mouse-track)
@@ -2773,7 +2763,7 @@ Runs to the last statement and then steps 1 statement. Use the .out command."
2773 (let ((oldfunc (symbol-function 'default-mouse-track-event-is-with-button))) 2763 (let ((oldfunc (symbol-function 'default-mouse-track-event-is-with-button)))
2774 (unwind-protect 2764 (unwind-protect
2775 (progn 2765 (progn
2776 (fset 'default-mouse-track-event-is-with-button 2766 (fset 'default-mouse-track-event-is-with-button
2777 'idlwave-default-mouse-track-event-is-with-button) 2767 'idlwave-default-mouse-track-event-is-with-button)
2778 (mouse-track event)) 2768 (mouse-track event))
2779 (fset 'default-mouse-track-event-is-with-button oldfunc)))) 2769 (fset 'default-mouse-track-event-is-with-button oldfunc))))
@@ -2805,7 +2795,7 @@ Runs to the last statement and then steps 1 statement. Use the .out command."
2805(defvar idlwave-shell-examine-completion-list nil) 2795(defvar idlwave-shell-examine-completion-list nil)
2806 2796
2807(defun idlwave-shell-print (arg &optional help ev complete-help-type) 2797(defun idlwave-shell-print (arg &optional help ev complete-help-type)
2808 "Print current expression. 2798 "Print current expression.
2809 2799
2810With HELP non-nil, show help on expression. If HELP is a string, 2800With HELP non-nil, show help on expression. If HELP is a string,
2811the expression will be put in place of ___, e.g.: 2801the expression will be put in place of ___, e.g.:
@@ -2838,11 +2828,11 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
2838 (save-excursion 2828 (save-excursion
2839 (let* ((process (get-buffer-process (current-buffer))) 2829 (let* ((process (get-buffer-process (current-buffer)))
2840 (process-mark (if process (process-mark process))) 2830 (process-mark (if process (process-mark process)))
2841 (stack-label 2831 (stack-label
2842 (if (and (integerp idlwave-shell-calling-stack-index) 2832 (if (and (integerp idlwave-shell-calling-stack-index)
2843 (> idlwave-shell-calling-stack-index 0)) 2833 (> idlwave-shell-calling-stack-index 0))
2844 (format " [-%d:%s]" 2834 (format " [-%d:%s]"
2845 idlwave-shell-calling-stack-index 2835 idlwave-shell-calling-stack-index
2846 idlwave-shell-calling-stack-routine))) 2836 idlwave-shell-calling-stack-routine)))
2847 expr beg end cmd examine-hook) 2837 expr beg end cmd examine-hook)
2848 (cond 2838 (cond
@@ -2872,7 +2862,7 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
2872 ;; an array 2862 ;; an array
2873 (forward-sexp)) 2863 (forward-sexp))
2874 (setq end (point))))) 2864 (setq end (point)))))
2875 2865
2876 ;; Get expression, but first move the begin mark if a 2866 ;; Get expression, but first move the begin mark if a
2877 ;; process-mark is inside the region, to keep the overlay from 2867 ;; process-mark is inside the region, to keep the overlay from
2878 ;; wandering in the Shell. 2868 ;; wandering in the Shell.
@@ -2883,61 +2873,61 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
2883 2873
2884 ;; Show the overlay(s) and attach any necessary hooks and filters 2874 ;; Show the overlay(s) and attach any necessary hooks and filters
2885 (when (and beg end idlwave-shell-expression-overlay) 2875 (when (and beg end idlwave-shell-expression-overlay)
2886 (move-overlay idlwave-shell-expression-overlay beg end 2876 (move-overlay idlwave-shell-expression-overlay beg end
2887 (current-buffer)) 2877 (current-buffer))
2888 (add-hook 'pre-command-hook 2878 (add-hook 'pre-command-hook
2889 'idlwave-shell-delete-expression-overlay)) 2879 'idlwave-shell-delete-expression-overlay))
2890 (setq examine-hook 2880 (setq examine-hook
2891 (if idlwave-shell-separate-examine-output 2881 (if idlwave-shell-separate-examine-output
2892 'idlwave-shell-examine-display 2882 'idlwave-shell-examine-display
2893 'idlwave-shell-examine-highlight)) 2883 'idlwave-shell-examine-highlight))
2894 (add-hook 'pre-command-hook 2884 (add-hook 'pre-command-hook
2895 'idlwave-shell-delete-output-overlay) 2885 'idlwave-shell-delete-output-overlay)
2896 2886
2897 ;; Remove empty or comment-only lines 2887 ;; Remove empty or comment-only lines
2898 (while (string-match "\n[ \t]*\\(;.*\\)?\r*\n" expr) 2888 (while (string-match "\n[ \t]*\\(;.*\\)?\r*\n" expr)
2899 (setq expr (replace-match "\n" t t expr))) 2889 (setq expr (replace-match "\n" t t expr)))
2900 ;; Concatenate continuation lines 2890 ;; Concatenate continuation lines
2901 (while (string-match "[ \t]*\\$.*\\(;.*\\)?\\(\n[ \t]*\\|$\\)" expr) 2891 (while (string-match "[ \t]*\\$[ \t]*\\(;.*\\)?\\(\n[ \t]*\\|$\\)" expr)
2902 (setq expr (replace-match "" t t expr))) 2892 (setq expr (replace-match "" t t expr)))
2903 ;; Remove final newline 2893 ;; Remove final newline
2904 (if (string-match "\n[ \t\r]*\\'" expr) 2894 (if (string-match "\n[ \t\r]*\\'" expr)
2905 (setq expr (replace-match "" t t expr))) 2895 (setq expr (replace-match "" t t expr)))
2906 2896
2907 (catch 'exit 2897 (catch 'exit
2908 ;; Pop-up or complete on the examine selection list, if appropriate 2898 ;; Pop-up or complete on the examine selection list, if appropriate
2909 (if (or 2899 (if (or
2910 complete-help-type 2900 complete-help-type
2911 (and ev idlwave-shell-examine-alist) 2901 (and ev idlwave-shell-examine-alist)
2912 (consp help)) 2902 (consp help))
2913 (let ((help-cons 2903 (let ((help-cons
2914 (if (consp help) help 2904 (if (consp help) help
2915 (assoc 2905 (assoc
2916 ;; A cons from either a pop-up or mini-buffer completion 2906 ;; A cons from either a pop-up or mini-buffer completion
2917 (if complete-help-type 2907 (if complete-help-type
2918 (idlwave-one-key-select 'idlwave-shell-examine-alist 2908 (idlwave-one-key-select 'idlwave-shell-examine-alist
2919 "Examine with: " 1.5) 2909 "Examine with: " 1.5)
2920;; (idlwave-completing-read 2910;; (idlwave-completing-read
2921;; "Examine with: " 2911;; "Examine with: "
2922;; idlwave-shell-examine-alist nil nil nil 2912;; idlwave-shell-examine-alist nil nil nil
2923;; 'idlwave-shell-examine-completion-list 2913;; 'idlwave-shell-examine-completion-list
2924;; "Print") 2914;; "Print")
2925 (idlwave-popup-select 2915 (idlwave-popup-select
2926 ev 2916 ev
2927 (mapcar 'car idlwave-shell-examine-alist) 2917 (mapcar 'car idlwave-shell-examine-alist)
2928 "Examine with")) 2918 "Examine with"))
2929 idlwave-shell-examine-alist)))) 2919 idlwave-shell-examine-alist))))
2930 (setq help (cdr help-cons)) 2920 (setq help (cdr help-cons))
2931 (if (null help) (throw 'exit nil)) 2921 (if (null help) (throw 'exit nil))
2932 (if idlwave-shell-separate-examine-output 2922 (if idlwave-shell-separate-examine-output
2933 (setq idlwave-shell-examine-label 2923 (setq idlwave-shell-examine-label
2934 (concat 2924 (concat
2935 (format "==>%s<==\n%s:" expr (car help-cons)) 2925 (format "==>%s<==\n%s:" expr (car help-cons))
2936 stack-label "\n")))) 2926 stack-label "\n"))))
2937 ;; The regular help label (no popups, cons cells, etc.) 2927 ;; The regular help label (no popups, cons cells, etc.)
2938 (setq idlwave-shell-examine-label 2928 (setq idlwave-shell-examine-label
2939 (concat 2929 (concat
2940 (format "==>%s<==\n%s:" expr 2930 (format "==>%s<==\n%s:" expr
2941 (cond ((null help) "print") 2931 (cond ((null help) "print")
2942 ((stringp help) help) 2932 ((stringp help) help)
2943 (t (symbol-name help)))) 2933 (t (symbol-name help))))
@@ -2950,9 +2940,9 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
2950 idlwave-shell-calling-stack-index))) 2940 idlwave-shell-calling-stack-index)))
2951 (setq cmd (idlwave-shell-help-statement help expr)) 2941 (setq cmd (idlwave-shell-help-statement help expr))
2952 ;;(idlwave-shell-recenter-shell-window) 2942 ;;(idlwave-shell-recenter-shell-window)
2953 (idlwave-shell-send-command 2943 (idlwave-shell-send-command
2954 cmd 2944 cmd
2955 examine-hook 2945 examine-hook
2956 (if idlwave-shell-separate-examine-output 'hide)))))) 2946 (if idlwave-shell-separate-examine-output 'hide))))))
2957 2947
2958(defvar idlwave-shell-examine-window-alist nil 2948(defvar idlwave-shell-examine-window-alist nil
@@ -2979,9 +2969,9 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
2979 (let* ((end (or 2969 (let* ((end (or
2980 (re-search-backward idlwave-shell-prompt-pattern nil t) 2970 (re-search-backward idlwave-shell-prompt-pattern nil t)
2981 (point-max))) 2971 (point-max)))
2982 (beg (progn 2972 (beg (progn
2983 (goto-char 2973 (goto-char
2984 (or (progn (if (re-search-backward 2974 (or (progn (if (re-search-backward
2985 idlwave-shell-prompt-pattern nil t) 2975 idlwave-shell-prompt-pattern nil t)
2986 (match-end 0))) 2976 (match-end 0)))
2987 (point-min))) 2977 (point-min)))
@@ -2998,21 +2988,21 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
2998 (setq buffer-read-only t) 2988 (setq buffer-read-only t)
2999 (move-overlay idlwave-shell-output-overlay cur-beg cur-end 2989 (move-overlay idlwave-shell-output-overlay cur-beg cur-end
3000 (current-buffer)) 2990 (current-buffer))
3001 2991
3002 ;; Look for the examine buffer in all windows. If one is 2992 ;; Look for the examine buffer in all windows. If one is
3003 ;; found in a frame all by itself, use that, otherwise, switch 2993 ;; found in a frame all by itself, use that, otherwise, switch
3004 ;; to or create an examine window in this frame, and resize if 2994 ;; to or create an examine window in this frame, and resize if
3005 ;; it's a newly created window 2995 ;; it's a newly created window
3006 (let* ((winlist (get-buffer-window-list "*Examine*" nil 'visible))) 2996 (let* ((winlist (get-buffer-window-list "*Examine*" nil 'visible)))
3007 (setq win (idlwave-display-buffer 2997 (setq win (idlwave-display-buffer
3008 "*Examine*" 2998 "*Examine*"
3009 nil 2999 nil
3010 (let ((list winlist) thiswin) 3000 (let ((list winlist) thiswin)
3011 (catch 'exit 3001 (catch 'exit
3012 (save-selected-window 3002 (save-selected-window
3013 (while (setq thiswin (pop list)) 3003 (while (setq thiswin (pop list))
3014 (select-window thiswin) 3004 (select-window thiswin)
3015 (if (one-window-p) 3005 (if (one-window-p)
3016 (throw 'exit (window-frame thiswin))))))))) 3006 (throw 'exit (window-frame thiswin)))))))))
3017 (set-window-start win (point-min)) ; Ensure the point is visible. 3007 (set-window-start win (point-min)) ; Ensure the point is visible.
3018 (save-selected-window 3008 (save-selected-window
@@ -3033,7 +3023,7 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
3033 ;; And add the new value. 3023 ;; And add the new value.
3034 (if (setq elt (assoc win idlwave-shell-examine-window-alist)) 3024 (if (setq elt (assoc win idlwave-shell-examine-window-alist))
3035 (setcdr elt (window-height)) 3025 (setcdr elt (window-height))
3036 (add-to-list 'idlwave-shell-examine-window-alist 3026 (add-to-list 'idlwave-shell-examine-window-alist
3037 (cons win (window-height))))))))) 3027 (cons win (window-height)))))))))
3038 ;; Recenter for maximum output, after widened 3028 ;; Recenter for maximum output, after widened
3039 (save-selected-window 3029 (save-selected-window
@@ -3051,7 +3041,7 @@ idlw-shell-examine-alist via mini-buffer shortcut key."
3051 3041
3052(defun idlwave-shell-examine-display-clear () 3042(defun idlwave-shell-examine-display-clear ()
3053 (interactive) 3043 (interactive)
3054 (save-excursion 3044 (save-excursion
3055 (let ((buf (get-buffer "*Examine*"))) 3045 (let ((buf (get-buffer "*Examine*")))
3056 (when (bufferp buf) 3046 (when (bufferp buf)
3057 (set-buffer buf) 3047 (set-buffer buf)
@@ -3072,36 +3062,58 @@ routine_names, there is no guarantee that this will work with future
3072versions of IDL." 3062versions of IDL."
3073 (let ((fetch (- 0 level)) 3063 (let ((fetch (- 0 level))
3074 (start 0) 3064 (start 0)
3075 var rnvar pre post) 3065 var fetch-start fetch-end pre post)
3076 3066
3077 ;; FIXME: In the following we try to find the variables in expression 3067 ;; FIXME: In the following we try to find the variables in expression
3078 ;; This is quite empirical - I don't know in what situations this will 3068 ;; This is quite empirical - I don't know in what situations this will
3079 ;; break. We will look for identifiers and exclude cases where we 3069 ;; break. We will look for identifiers and exclude cases where we
3080 ;; know it is not a variable. To distinguish array references from 3070 ;; know it is not a variable. To distinguish array references from
3081 ;; function calls, we require that arrays use [] instead of () 3071 ;; function calls, we require that arrays use [] instead of ()
3082 3072
3083 (while (string-match 3073 (while (string-match
3084 "\\(\\`\\|[^a-zA-Z0-9$_][ \t]*\\)\\([a-zA-Z][a-zA-Z0-9$_]*\\)\\([ \t]*[^a-zA-Z0-9$_]\\|\\'\\)" expr start) 3074 "\\(\\`\\|[^a-zA-Z0-9$_][ \t]*\\)\\([a-zA-Z][a-zA-Z0-9$_]*\\)\\([ \t]*[^a-zA-Z0-9$_]\\|\\'\\)" expr start)
3085 (setq var (match-string 2 expr) 3075 (setq var (match-string 2 expr)
3086 start (match-beginning 2) 3076 start (match-end 2)
3087 pre (substring expr 0 (match-beginning 2)) 3077 pre (substring expr 0 (match-beginning 2))
3088 post (substring expr (match-end 2))) 3078 post (substring expr (match-end 2)))
3089 (cond 3079 (cond
3090 ;; Exclude identifiers which are not variables 3080 ((or
3091 ((string-match ",[ \t]*/\\'" pre)) ;; a `/' KEYWORD 3081 ;; Exclude identifiers which are not variables
3092 ((and (string-match "[,(][ \t]*\\'" pre) 3082 (string-match ",[ \t$\n]*/\\'" pre) ;; a `/' KEYWORD
3093 (string-match "\\`[ \t]*=" post))) ;; a `=' KEYWORD 3083 (and (string-match "[,(][ \t\n]*\\'" pre)
3094 ((string-match "\\`(" post)) ;; a function 3084 (string-match "\\`[ \t]*=" post)) ;; a `=' KEYWORD
3095 ((string-match "->[ \t]*\\'" pre)) ;; a method 3085 (string-match "\\`(" post) ;; a function
3096 ((string-match "\\.\\'" pre)) ;; structure member 3086 (string-match "->[ \t]*\\'" pre) ;; a method
3087 (string-match "\\.\\'" pre))) ;; structure member
3088
3089 ;; Skip over strings
3097 ((and (string-match "\\([\"\']\\)[^\1]*$" pre) 3090 ((and (string-match "\\([\"\']\\)[^\1]*$" pre)
3098 (string-match (concat "^[^" (match-string 1 pre) "]*" 3091 (string-match (concat "^[^" (match-string 1 pre) "]*"
3099 (match-string 1 pre)) post))) 3092 (match-string 1 pre)) post))
3100 (t ;; seems to be a variable - replace its name in the 3093 (setq start (+ start (match-end 0))))
3101 ;; expression with the fetch. 3094
3102 (setq rnvar (format "(routine_names('%s',fetch=%d))" var fetch) 3095
3103 expr (concat pre rnvar post) 3096 ;; seems to be a variable - delimit its name
3104 start (+ start (length rnvar)))))) 3097 (t
3098 (put-text-property start (- start (length var)) 'fetch t expr))))
3099
3100 (setq start 0)
3101 (while (setq fetch-start
3102 (next-single-property-change start 'fetch expr))
3103 (if (get-text-property start 'fetch expr) ; it's on in range
3104 (setq fetch-end fetch-start ;it's off in range
3105 fetch-start start)
3106 (setq fetch-end (next-single-property-change fetch-start 'fetch expr)))
3107 (unless fetch-end (setq fetch-end (length expr)))
3108 (remove-text-properties fetch-start fetch-end '(fetch) expr)
3109 (setq expr (concat (substring expr 0 fetch-start)
3110 (format "(routine_names('%s',fetch=%d))"
3111 (substring expr fetch-start fetch-end)
3112 fetch)
3113 (substring expr fetch-end)))
3114 (setq start fetch-end))
3115 (if (get-text-property 0 'fetch expr) ; Full expression, left over
3116 (setq expr (format "(routine_names('%s',fetch=%d))" expr fetch)))
3105 expr)) 3117 expr))
3106 3118
3107 3119
@@ -3113,13 +3125,13 @@ to insert expression in place of the marker ___, e.g.: print,
3113size(___,/DIMENSIONS)" 3125size(___,/DIMENSIONS)"
3114 (cond 3126 (cond
3115 ((null help) (concat "print, " expr)) 3127 ((null help) (concat "print, " expr))
3116 ((stringp help) 3128 ((stringp help)
3117 (if (string-match "\\(^\\|[^_]\\)\\(___\\)\\([^_]\\|$\\)" help) 3129 (if (string-match "\\(^\\|[^_]\\)\\(___\\)\\([^_]\\|$\\)" help)
3118 (concat (substring help 0 (match-beginning 2)) 3130 (concat (substring help 0 (match-beginning 2))
3119 expr 3131 expr
3120 (substring help (match-end 2))))) 3132 (substring help (match-end 2)))))
3121 (t (concat "help, " expr)))) 3133 (t (concat "help, " expr))))
3122 3134
3123 3135
3124(defun idlwave-shell-examine-highlight () 3136(defun idlwave-shell-examine-highlight ()
3125 "Highlight the most recent IDL output." 3137 "Highlight the most recent IDL output."
@@ -3127,7 +3139,7 @@ size(___,/DIMENSIONS)"
3127 (process (get-buffer-process buffer)) 3139 (process (get-buffer-process buffer))
3128 (process-mark (if process (process-mark process))) 3140 (process-mark (if process (process-mark process)))
3129 output-begin output-end) 3141 output-begin output-end)
3130 (save-excursion 3142 (save-excursion
3131 (set-buffer buffer) 3143 (set-buffer buffer)
3132 (goto-char process-mark) 3144 (goto-char process-mark)
3133 (beginning-of-line) 3145 (beginning-of-line)
@@ -3135,12 +3147,12 @@ size(___,/DIMENSIONS)"
3135 (re-search-backward idlwave-shell-prompt-pattern nil t) 3147 (re-search-backward idlwave-shell-prompt-pattern nil t)
3136 (beginning-of-line 2) 3148 (beginning-of-line 2)
3137 (setq output-begin (point))) 3149 (setq output-begin (point)))
3138 3150
3139 ;; First make sure the shell window is visible 3151 ;; First make sure the shell window is visible
3140 (idlwave-display-buffer (idlwave-shell-buffer) 3152 (idlwave-display-buffer (idlwave-shell-buffer)
3141 nil (idlwave-shell-shell-frame)) 3153 nil (idlwave-shell-shell-frame))
3142 (if (and idlwave-shell-output-overlay process-mark) 3154 (if (and idlwave-shell-output-overlay process-mark)
3143 (move-overlay idlwave-shell-output-overlay 3155 (move-overlay idlwave-shell-output-overlay
3144 output-begin output-end buffer)))) 3156 output-begin output-end buffer))))
3145 3157
3146(defun idlwave-shell-delete-output-overlay () 3158(defun idlwave-shell-delete-output-overlay ()
@@ -3151,7 +3163,7 @@ size(___,/DIMENSIONS)"
3151 (delete-overlay idlwave-shell-output-overlay)) 3163 (delete-overlay idlwave-shell-output-overlay))
3152 (error nil)) 3164 (error nil))
3153 (remove-hook 'pre-command-hook 'idlwave-shell-delete-output-overlay))) 3165 (remove-hook 'pre-command-hook 'idlwave-shell-delete-output-overlay)))
3154 3166
3155(defun idlwave-shell-delete-expression-overlay () 3167(defun idlwave-shell-delete-expression-overlay ()
3156 (unless (or (eq this-command 'idlwave-shell-mouse-nop) 3168 (unless (or (eq this-command 'idlwave-shell-mouse-nop)
3157 (eq this-command 'handle-switch-frame)) 3169 (eq this-command 'handle-switch-frame))
@@ -3180,7 +3192,7 @@ contains four items:
3180count - number of times to execute breakpoint. When count reaches 0 3192count - number of times to execute breakpoint. When count reaches 0
3181 the breakpoint is cleared and removed from the alist. 3193 the breakpoint is cleared and removed from the alist.
3182 3194
3183command - command to execute when breakpoint is reached, either a 3195command - command to execute when breakpoint is reached, either a
3184 lisp function to be called with `funcall' with no arguments or a 3196 lisp function to be called with `funcall' with no arguments or a
3185 list to be evaluated with `eval'. 3197 list to be evaluated with `eval'.
3186 3198
@@ -3213,11 +3225,11 @@ If there is a prefix argument, display IDL process."
3213 (insert "\nend\n")) 3225 (insert "\nend\n"))
3214 (save-buffer 0))) 3226 (save-buffer 0)))
3215 (idlwave-shell-send-command (concat ".run " idlwave-shell-temp-pro-file) 3227 (idlwave-shell-send-command (concat ".run " idlwave-shell-temp-pro-file)
3216 nil 3228 nil
3217 (if (idlwave-shell-hide-p 'run) 'mostly) 3229 (if (idlwave-shell-hide-p 'run) 'mostly)
3218 nil t) 3230 nil t)
3219 (if n 3231 (if n
3220 (idlwave-display-buffer (idlwave-shell-buffer) 3232 (idlwave-display-buffer (idlwave-shell-buffer)
3221 nil (idlwave-shell-shell-frame)))) 3233 nil (idlwave-shell-shell-frame))))
3222 3234
3223(defun idlwave-shell-evaluate-region (beg end &optional n) 3235(defun idlwave-shell-evaluate-region (beg end &optional n)
@@ -3228,7 +3240,7 @@ Does not work for a region with multiline blocks - use
3228 (interactive "r\nP") 3240 (interactive "r\nP")
3229 (idlwave-shell-send-command (buffer-substring beg end)) 3241 (idlwave-shell-send-command (buffer-substring beg end))
3230 (if n 3242 (if n
3231 (idlwave-display-buffer (idlwave-shell-buffer) 3243 (idlwave-display-buffer (idlwave-shell-buffer)
3232 nil (idlwave-shell-shell-frame)))) 3244 nil (idlwave-shell-shell-frame))))
3233 3245
3234(defun idlwave-shell-delete-temp-files () 3246(defun idlwave-shell-delete-temp-files ()
@@ -3283,7 +3295,7 @@ Queries IDL using the string in `idlwave-shell-bp-query'."
3283 'hide)) 3295 'hide))
3284 3296
3285(defun idlwave-shell-bp-get (bp &optional item) 3297(defun idlwave-shell-bp-get (bp &optional item)
3286 "Get a value for a breakpoint. 3298 "Get a value for a breakpoint.
3287BP has the form of elements in idlwave-shell-bp-alist. Optional 3299BP has the form of elements in idlwave-shell-bp-alist. Optional
3288second arg ITEM is the particular value to retrieve. ITEM can be 3300second arg ITEM is the particular value to retrieve. ITEM can be
3289'file, 'line, 'index, 'module, 'count, 'cmd, 'condition, 'disabled or 3301'file, 'line, 'index, 'module, 'count, 'cmd, 'condition, 'disabled or
@@ -3318,8 +3330,8 @@ breakpoint overlays."
3318 ;; Searching the breakpoints 3330 ;; Searching the breakpoints
3319 ;; In IDL 5.5, the breakpoint reporting format changed. 3331 ;; In IDL 5.5, the breakpoint reporting format changed.
3320 (bp-re54 "^[ \t]*\\([0-9]+\\)[ \t]+\\(\\S-+\\)?[ \t]+\\([0-9]+\\)[ \t]+\\(\\S-+\\)") 3332 (bp-re54 "^[ \t]*\\([0-9]+\\)[ \t]+\\(\\S-+\\)?[ \t]+\\([0-9]+\\)[ \t]+\\(\\S-+\\)")
3321 (bp-re55 3333 (bp-re55
3322 (concat 3334 (concat
3323 "^\\s-*\\([0-9]+\\)" ; 1 index 3335 "^\\s-*\\([0-9]+\\)" ; 1 index
3324 "\\s-+\\([0-9]+\\)" ; 2 line number 3336 "\\s-+\\([0-9]+\\)" ; 2 line number
3325 "\\s-+\\(Uncompiled\\|" ; 3-6 either uncompiled or routine name 3337 "\\s-+\\(Uncompiled\\|" ; 3-6 either uncompiled or routine name
@@ -3334,11 +3346,11 @@ breakpoint overlays."
3334 bp-re indmap) 3346 bp-re indmap)
3335 (setq idlwave-shell-bp-alist (list nil)) 3347 (setq idlwave-shell-bp-alist (list nil))
3336 ;; Search for either header type, and set the correct regexp 3348 ;; Search for either header type, and set the correct regexp
3337 (when (or 3349 (when (or
3338 (if (re-search-forward "^\\s-*Index.*\n\\s-*-" nil t) 3350 (if (re-search-forward "^\\s-*Index.*\n\\s-*-" nil t)
3339 (setq bp-re bp-re54 ; versions <= 5.4 3351 (setq bp-re bp-re54 ; versions <= 5.4
3340 indmap '(1 2 3 4))) ;index module line file 3352 indmap '(1 2 3 4))) ;index module line file
3341 (if (re-search-forward 3353 (if (re-search-forward
3342 "^\\s-*Index\\s-*Line\\s-*Attributes\\s-*File" nil t) 3354 "^\\s-*Index\\s-*Line\\s-*Attributes\\s-*File" nil t)
3343 (setq bp-re bp-re55 ; versions >= 5.5 3355 (setq bp-re bp-re55 ; versions >= 5.5
3344 indmap '(1 6 2 16)))) ; index module line file 3356 indmap '(1 6 2 16)))) ; index module line file
@@ -3349,12 +3361,12 @@ breakpoint overlays."
3349 line (string-to-number (match-string (nth 2 indmap))) 3361 line (string-to-number (match-string (nth 2 indmap)))
3350 file (idlwave-shell-file-name (match-string (nth 3 indmap)))) 3362 file (idlwave-shell-file-name (match-string (nth 3 indmap))))
3351 (if (eq bp-re bp-re55) 3363 (if (eq bp-re bp-re55)
3352 (setq count (if (match-string 10) 1 3364 (setq count (if (match-string 10) 1
3353 (if (match-string 8) 3365 (if (match-string 8)
3354 (string-to-number (match-string 8)))) 3366 (string-to-number (match-string 8))))
3355 condition (match-string 13) 3367 condition (match-string 13)
3356 disabled (not (null (match-string 15))))) 3368 disabled (not (null (match-string 15)))))
3357 3369
3358 ;; Add the breakpoint info to the list 3370 ;; Add the breakpoint info to the list
3359 (nconc idlwave-shell-bp-alist 3371 (nconc idlwave-shell-bp-alist
3360 (list (cons (list file line) 3372 (list (cons (list file line)
@@ -3364,7 +3376,7 @@ breakpoint overlays."
3364 count nil condition disabled)))))) 3376 count nil condition disabled))))))
3365 (setq idlwave-shell-bp-alist (cdr idlwave-shell-bp-alist)) 3377 (setq idlwave-shell-bp-alist (cdr idlwave-shell-bp-alist))
3366 ;; Update breakpoint data 3378 ;; Update breakpoint data
3367 (if (eq bp-re bp-re54) 3379 (if (eq bp-re bp-re54)
3368 (mapcar 'idlwave-shell-update-bp old-bp-alist) 3380 (mapcar 'idlwave-shell-update-bp old-bp-alist)
3369 (mapcar 'idlwave-shell-update-bp-command-only old-bp-alist)))) 3381 (mapcar 'idlwave-shell-update-bp-command-only old-bp-alist))))
3370 ;; Update the breakpoint overlays 3382 ;; Update the breakpoint overlays
@@ -3379,8 +3391,8 @@ breakpoint overlays."
3379 "Update BP data in breakpoint list. 3391 "Update BP data in breakpoint list.
3380If BP frame is in `idlwave-shell-bp-alist' updates the breakpoint data." 3392If BP frame is in `idlwave-shell-bp-alist' updates the breakpoint data."
3381 (let ((match (assoc (car bp) idlwave-shell-bp-alist))) 3393 (let ((match (assoc (car bp) idlwave-shell-bp-alist)))
3382 (if match 3394 (if match
3383 (if command-only 3395 (if command-only
3384 (setf (nth 1 (cdr (cdr match))) (nth 1 (cdr (cdr match)))) 3396 (setf (nth 1 (cdr (cdr match))) (nth 1 (cdr (cdr match))))
3385 (setcdr (cdr match) (cdr (cdr bp))))))) 3397 (setcdr (cdr match) (cdr (cdr bp)))))))
3386 3398
@@ -3405,42 +3417,31 @@ Otherwise return the filename in bp."
3405 (let* 3417 (let*
3406 ((bp-file (idlwave-shell-bp-get bp 'file)) 3418 ((bp-file (idlwave-shell-bp-get bp 'file))
3407 (bp-module (idlwave-shell-bp-get bp 'module)) 3419 (bp-module (idlwave-shell-bp-get bp 'module))
3408 (internal-file-list 3420 (internal-file-list
3409 (cdr (assoc bp-module idlwave-shell-sources-alist)))) 3421 (if bp-module
3422 (cdr (assoc bp-module idlwave-shell-sources-alist)))))
3410 (if (and internal-file-list 3423 (if (and internal-file-list
3411 (equal bp-file (nth 0 internal-file-list))) 3424 (equal bp-file (nth 0 internal-file-list)))
3412 (nth 1 internal-file-list) 3425 (nth 1 internal-file-list)
3413 bp-file))) 3426 bp-file)))
3414 3427
3415(defun idlwave-shell-set-bp (bp &optional no-show) 3428(defun idlwave-shell-set-bp (bp &optional no-show)
3416 "Try to set a breakpoint BP. 3429 "Try to set a breakpoint BP.
3417The breakpoint will be placed at the beginning of the statement on the 3430The breakpoint will be placed at the beginning of the statement on the
3418line specified by BP or at the next IDL statement if that line is not 3431line specified by BP or at the next IDL statement if that line is not
3419a statement. Determines IDL's internal representation for the 3432a statement. Determines IDL's internal representation for the
3420breakpoint, which may have occurred at a different line than 3433breakpoint, which may have occurred at a different line than
3421specified. If NO-SHOW is non-nil, don't do any updating." 3434specified. If NO-SHOW is non-nil, don't do any updating."
3422 ;; Get and save the old breakpoints 3435 ;; Get and save the old breakpoints
3423 (idlwave-shell-send-command 3436 (idlwave-shell-send-command
3424 idlwave-shell-bp-query 3437 idlwave-shell-bp-query
3425 `(progn 3438 `(progn
3426 (idlwave-shell-filter-bp (quote ,no-show)) 3439 (idlwave-shell-filter-bp (quote ,no-show))
3427 (setq idlwave-shell-old-bp idlwave-shell-bp-alist)) 3440 (setq idlwave-shell-old-bp idlwave-shell-bp-alist))
3428 'hide) 3441 'hide)
3429 ;; Get sources for IDL compiled procedures followed by setting
3430 ;; breakpoint.
3431 (idlwave-shell-send-command
3432 idlwave-shell-sources-query
3433 `(progn
3434 (idlwave-shell-sources-filter)
3435 (idlwave-shell-set-bp2 (quote ,bp) (quote ,no-show)))
3436 'hide))
3437 3442
3438(defun idlwave-shell-set-bp2 (bp &optional no-show) 3443 ;; Get sources for this routine in the sources list
3439 "Use results of breakpoint and sources query to set bp. 3444 (idlwave-shell-module-source-query (idlwave-shell-bp-get bp 'module))
3440Use the count argument with IDLs breakpoint command.
3441We treat a count of 1 as a temporary breakpoint.
3442Counts greater than 1 use the IDL AFTER=count keyword to break
3443only after reaching the statement count times."
3444 (let* 3445 (let*
3445 ((arg (idlwave-shell-bp-get bp 'count)) 3446 ((arg (idlwave-shell-bp-get bp 'count))
3446 (key (cond 3447 (key (cond
@@ -3450,32 +3451,35 @@ only after reaching the statement count times."
3450 ((> arg 1) 3451 ((> arg 1)
3451 (format ",after=%d" arg)))) 3452 (format ",after=%d" arg))))
3452 (condition (idlwave-shell-bp-get bp 'condition)) 3453 (condition (idlwave-shell-bp-get bp 'condition))
3453 (key (concat key 3454 (disabled (idlwave-shell-bp-get bp 'disabled))
3455 (key (concat key
3454 (if condition (concat ",CONDITION=\"" condition "\"")))) 3456 (if condition (concat ",CONDITION=\"" condition "\""))))
3457 (key (concat key (if disabled ",/DISABLE")))
3455 (line (idlwave-shell-bp-get bp 'line))) 3458 (line (idlwave-shell-bp-get bp 'line)))
3456 (idlwave-shell-send-command 3459 (idlwave-shell-send-command
3457 (concat "breakpoint,'" 3460 (concat "breakpoint,'"
3458 (idlwave-shell-sources-bp bp) "'," 3461 (idlwave-shell-sources-bp bp) "',"
3459 (if (integerp line) (setq line (int-to-string line))) 3462 (if (integerp line) (setq line (int-to-string line)))
3460 key) 3463 key)
3461 ;; Check for failure and look for breakpoint in IDL's list 3464 ;; Check for failure and adjust breakpoint to match IDL's list
3462 `(progn 3465 `(progn
3463 (if (idlwave-shell-set-bp-check (quote ,bp)) 3466 (if (idlwave-shell-set-bp-check (quote ,bp))
3464 (idlwave-shell-set-bp3 (quote ,bp) (quote ,no-show)))) 3467 (idlwave-shell-set-bp-adjust (quote ,bp) (quote ,no-show))))
3465 ;; hide output? 3468 ;; hide output?
3466 (idlwave-shell-hide-p 'breakpoint) 3469 (idlwave-shell-hide-p 'breakpoint)
3467 'preempt t))) 3470 'preempt t)))
3468 3471
3469(defun idlwave-shell-set-bp3 (bp &optional no-show) 3472(defun idlwave-shell-set-bp-adjust (bp &optional no-show)
3470 "Find the breakpoint in IDL's internal list of breakpoints." 3473 "Find the breakpoint in IDL's internal list of breakpoints."
3471 (idlwave-shell-send-command idlwave-shell-bp-query 3474 (idlwave-shell-send-command
3472 `(progn 3475 idlwave-shell-bp-query
3473 (idlwave-shell-filter-bp (quote ,no-show)) 3476 `(progn
3474 (idlwave-shell-new-bp (quote ,bp)) 3477 (idlwave-shell-filter-bp 'no-show)
3475 (unless (quote ,no-show) 3478 (idlwave-shell-new-bp (quote ,bp))
3476 (idlwave-shell-update-bp-overlays))) 3479 (unless (quote ,no-show)
3477 'hide 3480 (idlwave-shell-update-bp-overlays)))
3478 'preempt)) 3481 'hide
3482 'preempt))
3479 3483
3480(defun idlwave-shell-find-bp (frame) 3484(defun idlwave-shell-find-bp (frame)
3481 "Return breakpoint from `idlwave-shell-bp-alist' for frame. 3485 "Return breakpoint from `idlwave-shell-bp-alist' for frame.
@@ -3526,10 +3530,14 @@ considered the new breakpoint if the file name of frame matches."
3526 "Alist of overlays marking breakpoints") 3530 "Alist of overlays marking breakpoints")
3527(defvar idlwave-shell-bp-glyph) 3531(defvar idlwave-shell-bp-glyph)
3528 3532
3533(defvar idlwave-shell-debug-line-map (make-sparse-keymap))
3534(define-key idlwave-shell-debug-line-map
3535 (if (featurep 'xemacs) [button3] [mouse-3])
3536 'idlwave-shell-mouse-active-bp)
3537
3529(defun idlwave-shell-update-bp-overlays () 3538(defun idlwave-shell-update-bp-overlays ()
3530 "Update the overlays which mark breakpoints in the source code. 3539 "Update the overlays which mark breakpoints in the source code.
3531Existing overlays are recycled, in order to minimize consumption." 3540Existing overlays are recycled, in order to minimize consumption."
3532 ;(message "Updating Overlays")
3533 (when idlwave-shell-mark-breakpoints 3541 (when idlwave-shell-mark-breakpoints
3534 (let ((ov-alist (copy-alist idlwave-shell-bp-overlays)) 3542 (let ((ov-alist (copy-alist idlwave-shell-bp-overlays))
3535 (bp-list idlwave-shell-bp-alist) 3543 (bp-list idlwave-shell-bp-alist)
@@ -3538,14 +3546,14 @@ Existing overlays are recycled, in order to minimize consumption."
3538 ov ov-list bp buf old-buffers win) 3546 ov ov-list bp buf old-buffers win)
3539 3547
3540 ;; Delete the old overlays from their buffers 3548 ;; Delete the old overlays from their buffers
3541 (if ov-alist 3549 (if ov-alist
3542 (while (setq ov-list (pop ov-alist)) 3550 (while (setq ov-list (pop ov-alist))
3543 (while (setq ov (pop (cdr ov-list))) 3551 (while (setq ov (pop (cdr ov-list)))
3544 (add-to-list 'old-buffers (overlay-buffer ov)) 3552 (add-to-list 'old-buffers (overlay-buffer ov))
3545 (delete-overlay ov)))) 3553 (delete-overlay ov))))
3546 3554
3547 (setq ov-alist idlwave-shell-bp-overlays 3555 (setq ov-alist idlwave-shell-bp-overlays
3548 idlwave-shell-bp-overlays 3556 idlwave-shell-bp-overlays
3549 (if idlwave-shell-bp-glyph 3557 (if idlwave-shell-bp-glyph
3550 (mapcar 'list (mapcar 'car idlwave-shell-bp-glyph)) 3558 (mapcar 'list (mapcar 'car idlwave-shell-bp-glyph))
3551 (list (list 'bp)))) 3559 (list (list 'bp))))
@@ -3569,16 +3577,23 @@ Existing overlays are recycled, in order to minimize consumption."
3569 (t 'bp-n))) 3577 (t 'bp-n)))
3570 (t 'bp)) 3578 (t 'bp))
3571 'bp)) 3579 'bp))
3572 (help-list 3580 (help-list
3573 (delq nil 3581 (delq nil
3574 (list 3582 (list
3575 (if count 3583 (if count
3576 (concat "n=" (int-to-string count))) 3584 (concat "after:" (int-to-string count)))
3577 (if condition 3585 (if condition
3578 (concat "condition: " condition)) 3586 (concat "condition:" condition))
3579 (if disabled "disabled")))) 3587 (if disabled "disabled"))))
3580 (help-text (if help-list 3588 (help-text (concat
3581 (mapconcat 'identity help-list ","))) 3589 "BP "
3590 (int-to-string (idlwave-shell-bp-get bp))
3591 (if help-list
3592 (concat
3593 " - "
3594 (mapconcat 'identity help-list ", ")))
3595 (if (and (not count) (not condition))
3596 " (use mouse-3 for breakpoint actions)")))
3582 (full-type (if disabled 3597 (full-type (if disabled
3583 (intern (concat (symbol-name type) 3598 (intern (concat (symbol-name type)
3584 "-disabled")) 3599 "-disabled"))
@@ -3586,9 +3601,10 @@ Existing overlays are recycled, in order to minimize consumption."
3586 (ov-existing (assq full-type ov-alist)) 3601 (ov-existing (assq full-type ov-alist))
3587 (ov (or (and (cdr ov-existing) 3602 (ov (or (and (cdr ov-existing)
3588 (pop (cdr ov-existing))) 3603 (pop (cdr ov-existing)))
3589 (idlwave-shell-make-new-bp-overlay 3604 (idlwave-shell-make-new-bp-overlay type disabled)))
3590 type disabled help-text)))
3591 match) 3605 match)
3606 (if idlwave-shell-breakpoint-popup-menu
3607 (overlay-put ov 'help-echo help-text))
3592 (move-overlay ov beg end) 3608 (move-overlay ov beg end)
3593 (if (setq match (assq full-type idlwave-shell-bp-overlays)) 3609 (if (setq match (assq full-type idlwave-shell-bp-overlays))
3594 (push ov (cdr match)) 3610 (push ov (cdr match))
@@ -3596,7 +3612,7 @@ Existing overlays are recycled, in order to minimize consumption."
3596 (list (list full-type ov))))) 3612 (list (list full-type ov)))))
3597 ;; Take care of margins if using a glyph 3613 ;; Take care of margins if using a glyph
3598 (when use-glyph 3614 (when use-glyph
3599 (if old-buffers 3615 (if old-buffers
3600 (setq old-buffers (delq (current-buffer) old-buffers))) 3616 (setq old-buffers (delq (current-buffer) old-buffers)))
3601 (if (fboundp 'set-specifier) ;; XEmacs 3617 (if (fboundp 'set-specifier) ;; XEmacs
3602 (set-specifier left-margin-width (cons (current-buffer) 2)) 3618 (set-specifier left-margin-width (cons (current-buffer) 2))
@@ -3612,29 +3628,31 @@ Existing overlays are recycled, in order to minimize consumption."
3612 (if (setq win (get-buffer-window buf t)) 3628 (if (setq win (get-buffer-window buf t))
3613 (set-window-buffer win buf)))))))) 3629 (set-window-buffer win buf))))))))
3614 3630
3615 3631(defun idlwave-shell-make-new-bp-overlay (&optional type disabled)
3616(defun idlwave-shell-make-new-bp-overlay (&optional type disabled help) 3632 "Make a new overlay for highlighting breakpoints.
3617 "Make a new overlay for highlighting breakpoints.
3618 3633
3619This stuff is strongly dependant upon the version of Emacs. If TYPE 3634This stuff is strongly dependant upon the version of Emacs. If TYPE
3620is passed, make an overlay of that type ('bp or 'bp-cond, currently 3635is passed, make an overlay of that type ('bp or 'bp-cond, currently
3621only for glyphs). If HELP is set, use it to make a tooltip with that 3636only for glyphs)."
3622text popup."
3623 (let ((ov (make-overlay 1 1)) 3637 (let ((ov (make-overlay 1 1))
3624 (use-glyph (and (memq idlwave-shell-mark-breakpoints '(t glyph)) 3638 (use-glyph (and (memq idlwave-shell-mark-breakpoints '(t glyph))
3625 idlwave-shell-bp-glyph)) 3639 idlwave-shell-bp-glyph))
3626 (type (or type 'bp)) 3640 (type (or type 'bp))
3627 (face (if disabled 3641 (face (if disabled
3628 idlwave-shell-disabled-breakpoint-face 3642 idlwave-shell-disabled-breakpoint-face
3629 idlwave-shell-breakpoint-face))) 3643 idlwave-shell-breakpoint-face)))
3630 (if (featurep 'xemacs) 3644 (if (featurep 'xemacs)
3631 ;; This is XEmacs 3645 ;; This is XEmacs
3632 (progn 3646 (progn
3633 (cond 3647 (when idlwave-shell-breakpoint-popup-menu
3648 (set-extent-property ov 'mouse-face 'highlight)
3649 (set-extent-property ov 'keymap idlwave-shell-debug-line-map))
3650
3651 (cond
3634 ;; tty's cannot display glyphs 3652 ;; tty's cannot display glyphs
3635 ((eq (console-type) 'tty) 3653 ((eq (console-type) 'tty)
3636 (set-extent-property ov 'face face)) 3654 (set-extent-property ov 'face face))
3637 3655
3638 ;; use the glyph 3656 ;; use the glyph
3639 (use-glyph 3657 (use-glyph
3640 (let ((glyph (cdr (assq type idlwave-shell-bp-glyph)))) 3658 (let ((glyph (cdr (assq type idlwave-shell-bp-glyph))))
@@ -3650,22 +3668,23 @@ text popup."
3650 (t nil)) 3668 (t nil))
3651 (set-extent-priority ov -1)) ; make stop line face prevail 3669 (set-extent-priority ov -1)) ; make stop line face prevail
3652 ;; This is Emacs 3670 ;; This is Emacs
3671 (when idlwave-shell-breakpoint-popup-menu
3672 (overlay-put ov 'mouse-face 'highlight)
3673 (overlay-put ov 'keymap idlwave-shell-debug-line-map))
3653 (cond 3674 (cond
3654 (window-system 3675 (window-system
3655 (if use-glyph 3676 (if use-glyph
3656 (let ((image-props (cdr (assq type idlwave-shell-bp-glyph))) 3677 (let ((image-props (cdr (assq type idlwave-shell-bp-glyph)))
3657 string) 3678 string)
3658 3679
3659 (if disabled (setq image-props 3680 (if disabled (setq image-props
3660 (append image-props 3681 (append image-props
3661 (list :conversion 'disabled)))) 3682 (list :conversion 'disabled))))
3662 (setq string 3683 (setq string
3663 (propertize "@" 3684 (propertize "@"
3664 'display 3685 'display
3665 (list (list 'margin 'left-margin) 3686 (list (list 'margin 'left-margin)
3666 image-props) 3687 image-props)))
3667 'mouse-face 'highlight
3668 'help-echo help))
3669 (overlay-put ov 'before-string string)) 3688 (overlay-put ov 'before-string string))
3670 ;; just the face 3689 ;; just the face
3671 (overlay-put ov 'face face))) 3690 (overlay-put ov 'face face)))
@@ -3678,6 +3697,54 @@ text popup."
3678 (t nil))) 3697 (t nil)))
3679 ov)) 3698 ov))
3680 3699
3700(defun idlwave-shell-mouse-active-bp (ev)
3701 "Does right-click mouse action on breakpoint lines."
3702 (interactive "e")
3703 (if ev (mouse-set-point ev))
3704 (let ((bp (idlwave-shell-find-bp (idlwave-shell-current-frame)))
3705 index condition count select cmd disabled)
3706 (unless bp
3707 (error "Breakpoint not found"))
3708 (setq index (int-to-string (idlwave-shell-bp-get bp))
3709 condition (idlwave-shell-bp-get bp 'condition)
3710 cmd (idlwave-shell-bp-get bp 'cmd)
3711 count (idlwave-shell-bp-get bp 'count)
3712 disabled (idlwave-shell-bp-get bp 'disabled))
3713 (setq select (idlwave-popup-select
3714 ev
3715 (delq nil
3716 (list (if disabled "Enable" "Disable")
3717 "Clear"
3718 "Clear All"
3719 (if condition "Remove Condition" "Add Condition")
3720 (if condition "Change Condition")
3721 (if count "Remove Repeat Count"
3722 "Add Repeat Count")
3723 (if count "Change Repeat Count")))
3724 (concat "BreakPoint " index)))
3725 (if select
3726 (cond
3727 ((string-equal select "Clear All")
3728 (idlwave-shell-clear-all-bp))
3729 ((string-equal select "Clear")
3730 (idlwave-shell-clear-current-bp))
3731 ((string-match "Condition" select)
3732 (idlwave-shell-break-here count cmd
3733 (if (or (not condition)
3734 (string-match "Change" select))
3735 (read-string "Break Condition: "))
3736 disabled))
3737 ((string-match "Count" select)
3738 (idlwave-shell-break-here (if (or (not count)
3739 (string-match "Change" select))
3740 (string-to-number
3741 (read-string "Break After Count: ")))
3742 cmd condition disabled))
3743 ((string-match "able$" select)
3744 (idlwave-shell-toggle-enable-current-bp))
3745 (t
3746 (message "Unimplemented: %s" select))))))
3747
3681(defun idlwave-shell-edit-default-command-line (arg) 3748(defun idlwave-shell-edit-default-command-line (arg)
3682 "Edit the current execute command." 3749 "Edit the current execute command."
3683 (interactive "P") 3750 (interactive "P")
@@ -3689,14 +3756,14 @@ text popup."
3689Also with prefix arg, ask for the command. You can also use the command 3756Also with prefix arg, ask for the command. You can also use the command
3690`idlwave-shell-edit-default-command-line' to edit the line." 3757`idlwave-shell-edit-default-command-line' to edit the line."
3691 (interactive "P") 3758 (interactive "P")
3692 (cond 3759 (cond
3693 ((equal arg '(16)) 3760 ((equal arg '(16))
3694 (setq idlwave-shell-command-line-to-execute nil)) 3761 (setq idlwave-shell-command-line-to-execute nil))
3695 ((equal arg '(4)) 3762 ((equal arg '(4))
3696 (setq idlwave-shell-command-line-to-execute 3763 (setq idlwave-shell-command-line-to-execute
3697 (read-string "IDL> " idlwave-shell-command-line-to-execute)))) 3764 (read-string "IDL> " idlwave-shell-command-line-to-execute))))
3698 (idlwave-shell-reset 'hidden) 3765 (idlwave-shell-reset 'hidden)
3699 (idlwave-shell-send-command 3766 (idlwave-shell-send-command
3700 (or idlwave-shell-command-line-to-execute 3767 (or idlwave-shell-command-line-to-execute
3701 (with-current-buffer (idlwave-shell-buffer) 3768 (with-current-buffer (idlwave-shell-buffer)
3702 (ring-ref comint-input-ring 0))) 3769 (ring-ref comint-input-ring 0)))
@@ -3706,7 +3773,7 @@ Also with prefix arg, ask for the command. You can also use the command
3706 "Save file and run it in IDL. 3773 "Save file and run it in IDL.
3707Runs `save-buffer' and sends a '.RUN' command for the associated file to IDL. 3774Runs `save-buffer' and sends a '.RUN' command for the associated file to IDL.
3708When called from the shell buffer, re-run the file which was last handled by 3775When called from the shell buffer, re-run the file which was last handled by
3709one of the save-and-.. commands." 3776one of the save-and-.. commands."
3710 (interactive) 3777 (interactive)
3711 (idlwave-shell-save-and-action 'run)) 3778 (idlwave-shell-save-and-action 'run))
3712 3779
@@ -3722,7 +3789,7 @@ one of the save-and-.. commands."
3722 "Save file and batch it in IDL. 3789 "Save file and batch it in IDL.
3723Runs `save-buffer' and sends a '@file' command for the associated file to IDL. 3790Runs `save-buffer' and sends a '@file' command for the associated file to IDL.
3724When called from the shell buffer, re-batch the file which was last handled by 3791When called from the shell buffer, re-batch the file which was last handled by
3725one of the save-and-.. commands." 3792one of the save-and-.. commands."
3726 (interactive) 3793 (interactive)
3727 (idlwave-shell-save-and-action 'batch)) 3794 (idlwave-shell-save-and-action 'batch))
3728 3795
@@ -3762,7 +3829,7 @@ handled by this command."
3762 'idlwave-shell-maybe-update-routine-info 3829 'idlwave-shell-maybe-update-routine-info
3763 (if (idlwave-shell-hide-p 'run) 'mostly) nil t) 3830 (if (idlwave-shell-hide-p 'run) 'mostly) nil t)
3764 (idlwave-shell-bp-query)) 3831 (idlwave-shell-bp-query))
3765 (let ((msg (format "No such file %s" 3832 (let ((msg (format "No such file %s"
3766 idlwave-shell-last-save-and-action-file))) 3833 idlwave-shell-last-save-and-action-file)))
3767 (setq idlwave-shell-last-save-and-action-file nil) 3834 (setq idlwave-shell-last-save-and-action-file nil)
3768 (error msg)))) 3835 (error msg))))
@@ -3785,17 +3852,42 @@ Elements of the alist have the form:
3785 3852
3786 (module name . (source-file-truename idlwave-internal-filename)).") 3853 (module name . (source-file-truename idlwave-internal-filename)).")
3787 3854
3855(defun idlwave-shell-module-source-query (module)
3856 "Determine the source file for a given module."
3857 (if module
3858 (idlwave-shell-send-command
3859 (format "print,(routine_info('%s',/SOURCE)).PATH" module)
3860 `(idlwave-shell-module-source-filter ,module)
3861 'hide)))
3862
3863(defun idlwave-shell-module-source-filter (module)
3864 "Get module source, and update idlwave-shell-sources-alist."
3865 (let ((old (assoc (upcase module) idlwave-shell-sources-alist))
3866 filename)
3867 (if (string-match "\.PATH *[\n\r]\\([^\r\n]+\\)[\n\r]"
3868 idlwave-shell-command-output)
3869 (setq filename (substring idlwave-shell-command-output
3870 (match-beginning 1) (match-end 1)))
3871 (error "No file matching module found."))
3872 (if old
3873 (setcdr old (list (idlwave-shell-file-name filename) filename))
3874 (setq idlwave-shell-sources-alist
3875 (append idlwave-shell-sources-alist
3876 (list (cons (upcase module)
3877 (list (idlwave-shell-file-name filename)
3878 filename))))))))
3879
3788(defun idlwave-shell-sources-query () 3880(defun idlwave-shell-sources-query ()
3789 "Determine source files for IDL compiled procedures. 3881 "Determine source files for all IDL compiled procedures.
3790Queries IDL using the string in `idlwave-shell-sources-query'." 3882Queries IDL using the string in `idlwave-shell-sources-query'."
3791' (interactive) 3883 (interactive)
3792 (idlwave-shell-send-command idlwave-shell-sources-query 3884 (idlwave-shell-send-command idlwave-shell-sources-query
3793 'idlwave-shell-sources-filter 3885 'idlwave-shell-sources-filter
3794 'hide)) 3886 'hide))
3795 3887
3796(defun idlwave-shell-sources-filter () 3888(defun idlwave-shell-sources-filter ()
3797 "Get source files from `idlwave-shell-sources-query' output. 3889 "Get source files from `idlwave-shell-sources-query' output.
3798Create `idlwave-shell-sources-alist' consisting of 3890Create `idlwave-shell-sources-alist' consisting of
3799list elements of the form: 3891list elements of the form:
3800 (module name . (source-file-truename idlwave-internal-filename))." 3892 (module name . (source-file-truename idlwave-internal-filename))."
3801 (save-excursion 3893 (save-excursion
@@ -3880,7 +3972,7 @@ list elements of the form:
3880 (list 3972 (list
3881 (save-match-data 3973 (save-match-data
3882 (idlwave-shell-file-name 3974 (idlwave-shell-file-name
3883 (buffer-substring (match-beginning 1 ) 3975 (buffer-substring (match-beginning 1 )
3884 (match-end 1)))) 3976 (match-end 1))))
3885 (string-to-number 3977 (string-to-number
3886 (buffer-substring (match-beginning 2) 3978 (buffer-substring (match-beginning 2)
@@ -3947,13 +4039,13 @@ Otherwise, just expand the file name."
3947 4039
3948;; The mouse bindings for PRINT and HELP 4040;; The mouse bindings for PRINT and HELP
3949(idlwave-shell-define-key-both 4041(idlwave-shell-define-key-both
3950 (if (featurep 'xemacs) 4042 (if (featurep 'xemacs)
3951 [(shift button2)] 4043 [(shift button2)]
3952 [(shift down-mouse-2)]) 4044 [(shift down-mouse-2)])
3953 'idlwave-shell-mouse-print) 4045 'idlwave-shell-mouse-print)
3954(idlwave-shell-define-key-both 4046(idlwave-shell-define-key-both
3955 (if (featurep 'xemacs) 4047 (if (featurep 'xemacs)
3956 [(control meta button2)] 4048 [(control meta button2)]
3957 [(control meta down-mouse-2)]) 4049 [(control meta down-mouse-2)])
3958 'idlwave-shell-mouse-help) 4050 'idlwave-shell-mouse-help)
3959(idlwave-shell-define-key-both 4051(idlwave-shell-define-key-both
@@ -3962,14 +4054,14 @@ Otherwise, just expand the file name."
3962 [(control shift down-mouse-2)]) 4054 [(control shift down-mouse-2)])
3963 'idlwave-shell-examine-select) 4055 'idlwave-shell-examine-select)
3964;; Add this one from the idlwave-mode-map 4056;; Add this one from the idlwave-mode-map
3965(define-key idlwave-shell-mode-map 4057(define-key idlwave-shell-mode-map
3966 (if (featurep 'xemacs) 4058 (if (featurep 'xemacs)
3967 [(shift button3)] 4059 [(shift button3)]
3968 [(shift mouse-3)]) 4060 [(shift mouse-3)])
3969 'idlwave-mouse-context-help) 4061 'idlwave-mouse-context-help)
3970 4062
3971;; For Emacs, we need to turn off the button release events. 4063;; For Emacs, we need to turn off the button release events.
3972(defun idlwave-shell-mouse-nop (event) 4064(defun idlwave-shell-mouse-nop (event)
3973 (interactive "e")) 4065 (interactive "e"))
3974(unless (featurep 'xemacs) 4066(unless (featurep 'xemacs)
3975 (idlwave-shell-define-key-both 4067 (idlwave-shell-define-key-both
@@ -3979,7 +4071,7 @@ Otherwise, just expand the file name."
3979 (idlwave-shell-define-key-both 4071 (idlwave-shell-define-key-both
3980 [(control meta mouse-2)] 'idlwave-shell-mouse-nop)) 4072 [(control meta mouse-2)] 'idlwave-shell-mouse-nop))
3981 4073
3982 4074
3983;; The following set of bindings is used to bind the debugging keys. 4075;; The following set of bindings is used to bind the debugging keys.
3984;; If `idlwave-shell-activate-prefix-keybindings' is non-nil, the 4076;; If `idlwave-shell-activate-prefix-keybindings' is non-nil, the
3985;; first key in the list gets bound the C-c C-d prefix map. If 4077;; first key in the list gets bound the C-c C-d prefix map. If
@@ -3988,10 +4080,10 @@ Otherwise, just expand the file name."
3988;; `idlwave-mode-map' and `idlwave-shell-mode-map'. The next list 4080;; `idlwave-mode-map' and `idlwave-shell-mode-map'. The next list
3989;; item, if non-nil, means to bind this as a single key in the 4081;; item, if non-nil, means to bind this as a single key in the
3990;; electric-debug-mode-map. 4082;; electric-debug-mode-map.
3991;; 4083;;
3992;; [C-c C-d]-binding debug-modifier-key command bind-electric-debug buf-only 4084;; [C-c C-d]-binding debug-modifier-key command bind-electric-debug buf-only
3993;; Used keys: abcdef hijklmnopqrstuvwxyz 4085;; Used keys: abcdef hijklmnopqrstuvwxyz
3994;; Unused keys: g 4086;; Unused keys: g
3995(let* ((specs 4087(let* ((specs
3996 '(([(control ?b)] ?b idlwave-shell-break-here t t) 4088 '(([(control ?b)] ?b idlwave-shell-break-here t t)
3997 ([(control ?i)] ?i idlwave-shell-break-in t t) 4089 ([(control ?i)] ?i idlwave-shell-break-in t t)
@@ -4041,10 +4133,10 @@ Otherwise, just expand the file name."
4041 electric (nth 3 s) 4133 electric (nth 3 s)
4042 only-buffer (nth 4 s) 4134 only-buffer (nth 4 s)
4043 cannotshift (and shift (char-valid-p c2) (eq c2 (upcase c2)))) 4135 cannotshift (and shift (char-valid-p c2) (eq c2 (upcase c2))))
4044 4136
4045 ;; The regular prefix keymap. 4137 ;; The regular prefix keymap.
4046 (when (and idlwave-shell-activate-prefix-keybindings k1) 4138 (when (and idlwave-shell-activate-prefix-keybindings k1)
4047 (unless only-buffer 4139 (unless only-buffer
4048 (define-key idlwave-shell-mode-prefix-map k1 cmd)) 4140 (define-key idlwave-shell-mode-prefix-map k1 cmd))
4049 (define-key idlwave-mode-prefix-map k1 cmd)) 4141 (define-key idlwave-mode-prefix-map k1 cmd))
4050 ;; The debug modifier map 4142 ;; The debug modifier map
@@ -4058,24 +4150,24 @@ Otherwise, just expand the file name."
4058 (unless only-buffer (define-key idlwave-shell-mode-map k2 cmd)))) 4150 (unless only-buffer (define-key idlwave-shell-mode-map k2 cmd))))
4059 ;; The electric debug single-keystroke map 4151 ;; The electric debug single-keystroke map
4060 (if (and electric (char-or-string-p c2)) 4152 (if (and electric (char-or-string-p c2))
4061 (define-key idlwave-shell-electric-debug-mode-map (char-to-string c2) 4153 (define-key idlwave-shell-electric-debug-mode-map (char-to-string c2)
4062 cmd)))) 4154 cmd))))
4063 4155
4064;; A few extras in the electric debug map 4156;; A few extras in the electric debug map
4065(define-key idlwave-shell-electric-debug-mode-map " " 'idlwave-shell-step) 4157(define-key idlwave-shell-electric-debug-mode-map " " 'idlwave-shell-step)
4066(define-key idlwave-shell-electric-debug-mode-map "+" 'idlwave-shell-stack-up) 4158(define-key idlwave-shell-electric-debug-mode-map "+" 'idlwave-shell-stack-up)
4067(define-key idlwave-shell-electric-debug-mode-map "=" 'idlwave-shell-stack-up) 4159(define-key idlwave-shell-electric-debug-mode-map "=" 'idlwave-shell-stack-up)
4068(define-key idlwave-shell-electric-debug-mode-map "-" 4160(define-key idlwave-shell-electric-debug-mode-map "-"
4069 'idlwave-shell-stack-down) 4161 'idlwave-shell-stack-down)
4070(define-key idlwave-shell-electric-debug-mode-map "_" 4162(define-key idlwave-shell-electric-debug-mode-map "_"
4071 'idlwave-shell-stack-down) 4163 'idlwave-shell-stack-down)
4072(define-key idlwave-shell-electric-debug-mode-map "q" 'idlwave-shell-retall) 4164(define-key idlwave-shell-electric-debug-mode-map "q" 'idlwave-shell-retall)
4073(define-key idlwave-shell-electric-debug-mode-map "t" 4165(define-key idlwave-shell-electric-debug-mode-map "t"
4074 '(lambda () (interactive) (idlwave-shell-send-command "help,/TRACE"))) 4166 '(lambda () (interactive) (idlwave-shell-send-command "help,/TRACE")))
4075(define-key idlwave-shell-electric-debug-mode-map [(control ??)] 4167(define-key idlwave-shell-electric-debug-mode-map [(control ??)]
4076 'idlwave-shell-electric-debug-help) 4168 'idlwave-shell-electric-debug-help)
4077(define-key idlwave-shell-electric-debug-mode-map "x" 4169(define-key idlwave-shell-electric-debug-mode-map "x"
4078 '(lambda (arg) (interactive "P") 4170 '(lambda (arg) (interactive "P")
4079 (idlwave-shell-print arg nil nil t))) 4171 (idlwave-shell-print arg nil nil t)))
4080 4172
4081 4173
@@ -4096,12 +4188,12 @@ Otherwise, just expand the file name."
4096 (setq idlwave-shell-suppress-electric-debug nil)) 4188 (setq idlwave-shell-suppress-electric-debug nil))
4097 (idlwave-shell-electric-debug-mode)) 4189 (idlwave-shell-electric-debug-mode))
4098 4190
4099(defvar idlwave-shell-electric-debug-read-only) 4191(defvar idlwave-shell-electric-debug-read-only)
4100(defvar idlwave-shell-electric-debug-buffers nil) 4192(defvar idlwave-shell-electric-debug-buffers nil)
4101 4193
4102(easy-mmode-define-minor-mode idlwave-shell-electric-debug-mode 4194(easy-mmode-define-minor-mode idlwave-shell-electric-debug-mode
4103 "Toggle Electric Debug mode. 4195 "Toggle Electric Debug mode.
4104With no argument, this command toggles the mode. 4196With no argument, this command toggles the mode.
4105Non-null prefix argument turns on the mode. 4197Non-null prefix argument turns on the mode.
4106Null prefix argument turns off the mode. 4198Null prefix argument turns off the mode.
4107 4199
@@ -4111,7 +4203,7 @@ nil
4111" *Debugging*" 4203" *Debugging*"
4112idlwave-shell-electric-debug-mode-map) 4204idlwave-shell-electric-debug-mode-map)
4113 4205
4114(add-hook 4206(add-hook
4115 'idlwave-shell-electric-debug-mode-on-hook 4207 'idlwave-shell-electric-debug-mode-on-hook
4116 (lambda () 4208 (lambda ()
4117 (set (make-local-variable 'idlwave-shell-electric-debug-read-only) 4209 (set (make-local-variable 'idlwave-shell-electric-debug-read-only)
@@ -4119,13 +4211,13 @@ idlwave-shell-electric-debug-mode-map)
4119 (setq buffer-read-only t) 4211 (setq buffer-read-only t)
4120 (add-to-list 'idlwave-shell-electric-debug-buffers (current-buffer)) 4212 (add-to-list 'idlwave-shell-electric-debug-buffers (current-buffer))
4121 (if idlwave-shell-stop-line-overlay 4213 (if idlwave-shell-stop-line-overlay
4122 (overlay-put idlwave-shell-stop-line-overlay 'face 4214 (overlay-put idlwave-shell-stop-line-overlay 'face
4123 idlwave-shell-electric-stop-line-face)) 4215 idlwave-shell-electric-stop-line-face))
4124 (if (facep 'fringe) 4216 (if (facep 'fringe)
4125 (set-face-foreground 'fringe idlwave-shell-electric-stop-color 4217 (set-face-foreground 'fringe idlwave-shell-electric-stop-color
4126 (selected-frame))))) 4218 (selected-frame)))))
4127 4219
4128(add-hook 4220(add-hook
4129 'idlwave-shell-electric-debug-mode-off-hook 4221 'idlwave-shell-electric-debug-mode-off-hook
4130 (lambda () 4222 (lambda ()
4131 ;; Return to previous read-only state 4223 ;; Return to previous read-only state
@@ -4134,7 +4226,7 @@ idlwave-shell-electric-debug-mode-map)
4134 (setq idlwave-shell-electric-debug-buffers 4226 (setq idlwave-shell-electric-debug-buffers
4135 (delq (current-buffer) idlwave-shell-electric-debug-buffers)) 4227 (delq (current-buffer) idlwave-shell-electric-debug-buffers))
4136 (if idlwave-shell-stop-line-overlay 4228 (if idlwave-shell-stop-line-overlay
4137 (overlay-put idlwave-shell-stop-line-overlay 'face 4229 (overlay-put idlwave-shell-stop-line-overlay 'face
4138 idlwave-shell-stop-line-face) 4230 idlwave-shell-stop-line-face)
4139 (if (facep 'fringe) 4231 (if (facep 'fringe)
4140 (set-face-foreground 'fringe (face-foreground 'default)))))) 4232 (set-face-foreground 'fringe (face-foreground 'default))))))
@@ -4148,6 +4240,7 @@ idlwave-shell-electric-debug-mode-map)
4148 (force-mode-line-update)) 4240 (force-mode-line-update))
4149 4241
4150;; Turn it off in all relevant buffers 4242;; Turn it off in all relevant buffers
4243(defvar idlwave-shell-electric-debug-buffers nil)
4151(defun idlwave-shell-electric-debug-all-off () 4244(defun idlwave-shell-electric-debug-all-off ()
4152 (setq idlwave-shell-suppress-electric-debug nil) 4245 (setq idlwave-shell-suppress-electric-debug nil)
4153 (let ((buffers idlwave-shell-electric-debug-buffers) 4246 (let ((buffers idlwave-shell-electric-debug-buffers)
@@ -4165,7 +4258,7 @@ idlwave-shell-electric-debug-mode-map)
4165;; Show the help text 4258;; Show the help text
4166(defun idlwave-shell-electric-debug-help () 4259(defun idlwave-shell-electric-debug-help ()
4167 (interactive) 4260 (interactive)
4168 (with-output-to-temp-buffer "*IDLWAVE Electric Debug Help*" 4261 (with-output-to-temp-buffer "*IDLWAVE Electric Debug Help*"
4169 (princ idlwave-shell-electric-debug-help)) 4262 (princ idlwave-shell-electric-debug-help))
4170 (let* ((current-window (selected-window)) 4263 (let* ((current-window (selected-window))
4171 (window (get-buffer-window "*IDLWAVE Electric Debug Help*")) 4264 (window (get-buffer-window "*IDLWAVE Electric Debug Help*"))
@@ -4180,7 +4273,7 @@ idlwave-shell-electric-debug-mode-map)
4180 `("Debug" 4273 `("Debug"
4181 ["Electric Debug Mode" 4274 ["Electric Debug Mode"
4182 idlwave-shell-electric-debug-mode 4275 idlwave-shell-electric-debug-mode
4183 :style toggle :selected idlwave-shell-electric-debug-mode 4276 :style toggle :selected idlwave-shell-electric-debug-mode
4184 :included (eq major-mode 'idlwave-mode) :keys "C-c C-d C-v"] 4277 :included (eq major-mode 'idlwave-mode) :keys "C-c C-d C-v"]
4185 "--" 4278 "--"
4186 ("Compile & Run" 4279 ("Compile & Run"
@@ -4196,15 +4289,15 @@ idlwave-shell-electric-debug-mode-map)
4196 "--" 4289 "--"
4197 ["Goto Next Error" idlwave-shell-goto-next-error t] 4290 ["Goto Next Error" idlwave-shell-goto-next-error t]
4198 "--" 4291 "--"
4199 ["Compile and Run Region" idlwave-shell-run-region 4292 ["Compile and Run Region" idlwave-shell-run-region
4200 (eq major-mode 'idlwave-mode)] 4293 (eq major-mode 'idlwave-mode)]
4201 ["Evaluate Region" idlwave-shell-evaluate-region 4294 ["Evaluate Region" idlwave-shell-evaluate-region
4202 (eq major-mode 'idlwave-mode)] 4295 (eq major-mode 'idlwave-mode)]
4203 "--" 4296 "--"
4204 ["Execute Default Cmd" idlwave-shell-execute-default-command-line t] 4297 ["Execute Default Cmd" idlwave-shell-execute-default-command-line t]
4205 ["Edit Default Cmd" idlwave-shell-edit-default-command-line t]) 4298 ["Edit Default Cmd" idlwave-shell-edit-default-command-line t])
4206 ("Breakpoints" 4299 ("Breakpoints"
4207 ["Set Breakpoint" idlwave-shell-break-here 4300 ["Set Breakpoint" idlwave-shell-break-here
4208 :keys "C-c C-d C-c" :active (eq major-mode 'idlwave-mode)] 4301 :keys "C-c C-d C-c" :active (eq major-mode 'idlwave-mode)]
4209 ("Set Special Breakpoint" 4302 ("Set Special Breakpoint"
4210 ["Set After Count Breakpoint" 4303 ["Set After Count Breakpoint"
@@ -4215,16 +4308,16 @@ idlwave-shell-electric-debug-mode-map)
4215 ["Set Condition Breakpoint" 4308 ["Set Condition Breakpoint"
4216 (idlwave-shell-break-here '(4)) 4309 (idlwave-shell-break-here '(4))
4217 :active (eq major-mode 'idlwave-mode)]) 4310 :active (eq major-mode 'idlwave-mode)])
4218 ["Break in Module" idlwave-shell-break-in 4311 ["Break in Module" idlwave-shell-break-in
4219 :keys "C-c C-d C-i" :active (eq major-mode 'idlwave-mode)] 4312 :keys "C-c C-d C-i" :active (eq major-mode 'idlwave-mode)]
4220 ["Break in this Module" idlwave-shell-break-this-module 4313 ["Break in this Module" idlwave-shell-break-this-module
4221 :keys "C-c C-d C-j" :active (eq major-mode 'idlwave-mode)] 4314 :keys "C-c C-d C-j" :active (eq major-mode 'idlwave-mode)]
4222 ["Clear Breakpoint" idlwave-shell-clear-current-bp t] 4315 ["Clear Breakpoint" idlwave-shell-clear-current-bp t]
4223 ["Clear All Breakpoints" idlwave-shell-clear-all-bp t] 4316 ["Clear All Breakpoints" idlwave-shell-clear-all-bp t]
4224 ["Disable/Enable Breakpoint" idlwave-shell-toggle-enable-current-bp t] 4317 ["Disable/Enable Breakpoint" idlwave-shell-toggle-enable-current-bp t]
4225 ["Goto Previous Breakpoint" idlwave-shell-goto-previous-bp 4318 ["Goto Previous Breakpoint" idlwave-shell-goto-previous-bp
4226 :keys "C-c C-d [" :active (eq major-mode 'idlwave-mode)] 4319 :keys "C-c C-d [" :active (eq major-mode 'idlwave-mode)]
4227 ["Goto Next Breakpoint" idlwave-shell-goto-next-bp 4320 ["Goto Next Breakpoint" idlwave-shell-goto-next-bp
4228 :keys "C-c C-d ]" :active (eq major-mode 'idlwave-mode)] 4321 :keys "C-c C-d ]" :active (eq major-mode 'idlwave-mode)]
4229 ["List All Breakpoints" idlwave-shell-list-all-bp t] 4322 ["List All Breakpoints" idlwave-shell-list-all-bp t]
4230 ["Resync Breakpoints" idlwave-shell-bp-query t]) 4323 ["Resync Breakpoints" idlwave-shell-bp-query t])
@@ -4256,38 +4349,38 @@ idlwave-shell-electric-debug-mode-map)
4256 ["Redisplay and Sync" idlwave-shell-redisplay t]) 4349 ["Redisplay and Sync" idlwave-shell-redisplay t])
4257 ("Show Commands" 4350 ("Show Commands"
4258 ["Everything" (if (eq idlwave-shell-show-commands 'everything) 4351 ["Everything" (if (eq idlwave-shell-show-commands 'everything)
4259 (progn 4352 (progn
4260 (setq idlwave-shell-show-commands 4353 (setq idlwave-shell-show-commands
4261 (get 'idlwave-shell-show-commands 'last-val)) 4354 (get 'idlwave-shell-show-commands 'last-val))
4262 (put 'idlwave-shell-show-commands 'last-val nil)) 4355 (put 'idlwave-shell-show-commands 'last-val nil))
4263 (put 'idlwave-shell-show-commands 'last-val 4356 (put 'idlwave-shell-show-commands 'last-val
4264 idlwave-shell-show-commands) 4357 idlwave-shell-show-commands)
4265 (setq idlwave-shell-show-commands 'everything)) 4358 (setq idlwave-shell-show-commands 'everything))
4266 :style toggle :selected (and (not (listp idlwave-shell-show-commands)) 4359 :style toggle :selected (and (not (listp idlwave-shell-show-commands))
4267 (eq idlwave-shell-show-commands 4360 (eq idlwave-shell-show-commands
4268 'everything))] 4361 'everything))]
4269 "--" 4362 "--"
4270 ["Compiling Commands" (idlwave-shell-add-or-remove-show 'run) 4363 ["Compiling Commands" (idlwave-shell-add-or-remove-show 'run)
4271 :style toggle 4364 :style toggle
4272 :selected (not (idlwave-shell-hide-p 4365 :selected (not (idlwave-shell-hide-p
4273 'run 4366 'run
4274 (get 'idlwave-shell-show-commands 'last-val))) 4367 (get 'idlwave-shell-show-commands 'last-val)))
4275 :active (not (eq idlwave-shell-show-commands 'everything))] 4368 :active (not (eq idlwave-shell-show-commands 'everything))]
4276 ["Breakpoint Commands" (idlwave-shell-add-or-remove-show 'breakpoint) 4369 ["Breakpoint Commands" (idlwave-shell-add-or-remove-show 'breakpoint)
4277 :style toggle 4370 :style toggle
4278 :selected (not (idlwave-shell-hide-p 4371 :selected (not (idlwave-shell-hide-p
4279 'breakpoint 4372 'breakpoint
4280 (get 'idlwave-shell-show-commands 'last-val))) 4373 (get 'idlwave-shell-show-commands 'last-val)))
4281 :active (not (eq idlwave-shell-show-commands 'everything))] 4374 :active (not (eq idlwave-shell-show-commands 'everything))]
4282 ["Debug Commands" (idlwave-shell-add-or-remove-show 'debug) 4375 ["Debug Commands" (idlwave-shell-add-or-remove-show 'debug)
4283 :style toggle 4376 :style toggle
4284 :selected (not (idlwave-shell-hide-p 4377 :selected (not (idlwave-shell-hide-p
4285 'debug 4378 'debug
4286 (get 'idlwave-shell-show-commands 'last-val))) 4379 (get 'idlwave-shell-show-commands 'last-val)))
4287 :active (not (eq idlwave-shell-show-commands 'everything))] 4380 :active (not (eq idlwave-shell-show-commands 'everything))]
4288 ["Miscellaneous Commands" (idlwave-shell-add-or-remove-show 'misc) 4381 ["Miscellaneous Commands" (idlwave-shell-add-or-remove-show 'misc)
4289 :style toggle 4382 :style toggle
4290 :selected (not (idlwave-shell-hide-p 4383 :selected (not (idlwave-shell-hide-p
4291 'misc 4384 'misc
4292 (get 'idlwave-shell-show-commands 'last-val))) 4385 (get 'idlwave-shell-show-commands 'last-val)))
4293 :active (not (eq idlwave-shell-show-commands 'everything))]) 4386 :active (not (eq idlwave-shell-show-commands 'everything))])
@@ -4301,7 +4394,7 @@ idlwave-shell-electric-debug-mode-map)
4301 :style toggle :selected idlwave-shell-use-input-mode-magic]) 4394 :style toggle :selected idlwave-shell-use-input-mode-magic])
4302 "--" 4395 "--"
4303 ["Update Working Dir" idlwave-shell-resync-dirs t] 4396 ["Update Working Dir" idlwave-shell-resync-dirs t]
4304 ["Save Path Info" 4397 ["Save Path Info"
4305 (idlwave-shell-send-command idlwave-shell-path-query 4398 (idlwave-shell-send-command idlwave-shell-path-query
4306 'idlwave-shell-get-path-info 4399 'idlwave-shell-get-path-info
4307 'hide) 4400 'hide)
@@ -4313,7 +4406,7 @@ idlwave-shell-electric-debug-mode-map)
4313 4406
4314(if (or (featurep 'easymenu) (load "easymenu" t)) 4407(if (or (featurep 'easymenu) (load "easymenu" t))
4315 (progn 4408 (progn
4316 (easy-menu-define 4409 (easy-menu-define
4317 idlwave-mode-debug-menu idlwave-mode-map "IDL debugging menus" 4410 idlwave-mode-debug-menu idlwave-mode-map "IDL debugging menus"
4318 idlwave-shell-menu-def) 4411 idlwave-shell-menu-def)
4319 (easy-menu-define 4412 (easy-menu-define
@@ -4333,7 +4426,7 @@ idlwave-shell-electric-debug-mode-map)
4333(defvar idlwave-shell-bp-glyph nil 4426(defvar idlwave-shell-bp-glyph nil
4334 "The glyphs to mark breakpoint lines in the source code.") 4427 "The glyphs to mark breakpoint lines in the source code.")
4335 4428
4336(let ((image-alist 4429(let ((image-alist
4337 '((bp . "/* XPM */ 4430 '((bp . "/* XPM */
4338static char * file[] = { 4431static char * file[] = {
4339\"14 12 3 1\", 4432\"14 12 3 1\",
@@ -4466,7 +4559,7 @@ static char * file[] = {
4466\" .XXXX. \", 4559\" .XXXX. \",
4467\" .... \", 4560\" .... \",
4468\" \"};"))) im-cons im) 4561\" \"};"))) im-cons im)
4469 4562
4470 (while (setq im-cons (pop image-alist)) 4563 (while (setq im-cons (pop image-alist))
4471 (setq im (cond ((and (featurep 'xemacs) 4564 (setq im (cond ((and (featurep 'xemacs)
4472 (featurep 'xpm)) 4565 (featurep 'xpm))
@@ -4479,7 +4572,7 @@ static char * file[] = {
4479 ((and (not (featurep 'xemacs)) 4572 ((and (not (featurep 'xemacs))
4480 (fboundp 'image-type-available-p) 4573 (fboundp 'image-type-available-p)
4481 (image-type-available-p 'xpm)) 4574 (image-type-available-p 'xpm))
4482 (list 'image :type 'xpm :data (cdr im-cons) 4575 (list 'image :type 'xpm :data (cdr im-cons)
4483 :ascent 'center)) 4576 :ascent 'center))
4484 (t nil))) 4577 (t nil)))
4485 (if im (push (cons (car im-cons) im) idlwave-shell-bp-glyph)))) 4578 (if im (push (cons (car im-cons) im) idlwave-shell-bp-glyph))))
@@ -4489,7 +4582,7 @@ static char * file[] = {
4489 4582
4490;;; Load the toolbar when wanted by the user. 4583;;; Load the toolbar when wanted by the user.
4491 4584
4492(autoload 'idlwave-toolbar-toggle "idlw-toolbar" 4585(autoload 'idlwave-toolbar-toggle "idlw-toolbar"
4493 "Toggle the IDLWAVE toolbar") 4586 "Toggle the IDLWAVE toolbar")
4494(autoload 'idlwave-toolbar-add-everywhere "idlw-toolbar" 4587(autoload 'idlwave-toolbar-add-everywhere "idlw-toolbar"
4495 "Add IDLWAVE toolbar") 4588 "Add IDLWAVE toolbar")
diff --git a/lisp/progmodes/idlw-toolbar.el b/lisp/progmodes/idlw-toolbar.el
index 48d1a24a091..dfd8c50529f 100644
--- a/lisp/progmodes/idlw-toolbar.el
+++ b/lisp/progmodes/idlw-toolbar.el
@@ -1,9 +1,9 @@
1;;; idlw-toolbar.el --- a debugging toolbar for IDLWAVE 1;;; idlw-toolbar.el --- a debugging toolbar for IDLWAVE
2;; Copyright (c) 1999, 2000, 2001,2002 Free Software Foundation 2;; Copyright (c) 1999, 2000, 2001,2002,2004 Free Software Foundation
3 3
4;; Author: Carsten Dominik <dominik@astro.uva.nl> 4;; Author: Carsten Dominik <dominik@astro.uva.nl>
5;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu> 5;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
6;; Version: 5.5 6;; Version: 5.7_22
7;; Keywords: processes 7;; Keywords: processes
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index 273c3296180..902646bd81b 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -1,12 +1,12 @@
1;; idlwave.el --- IDL editing mode for GNU Emacs 1;; idlwave.el --- IDL editing mode for GNU Emacs
2;; Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005 2;; Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005
3;; Free Software Foundation 3;; Free Software Foundation
4 4
5;; Authors: J.D. Smith <jdsmith@as.arizona.edu> 5;; Authors: J.D. Smith <jdsmith@as.arizona.edu>
6;; Carsten Dominik <dominik@science.uva.nl> 6;; Carsten Dominik <dominik@science.uva.nl>
7;; Chris Chase <chase@att.com> 7;; Chris Chase <chase@att.com>
8;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu> 8;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
9;; Version: 5.5 9;; Version: 5.7_22
10;; Keywords: languages 10;; Keywords: languages
11 11
12;; This file is part of GNU Emacs. 12;; This file is part of GNU Emacs.
@@ -28,6 +28,8 @@
28 28
29;;; Commentary: 29;;; Commentary:
30 30
31;; IDLWAVE enables feature-rich development and interaction with IDL.
32
31;; In the remotely distant past, based on pascal.el, though bears 33;; In the remotely distant past, based on pascal.el, though bears
32;; little resemblance to it now. 34;; little resemblance to it now.
33;; 35;;
@@ -70,7 +72,7 @@
70;; of the documentation is available from the maintainers webpage (see 72;; of the documentation is available from the maintainers webpage (see
71;; SOURCE). 73;; SOURCE).
72;; 74;;
73;; 75;;
74;; ACKNOWLEDGMENTS 76;; ACKNOWLEDGMENTS
75;; =============== 77;; ===============
76;; 78;;
@@ -111,7 +113,7 @@
111;; IDLWAVE support for the IDL-derived PV-WAVE CL language of Visual 113;; IDLWAVE support for the IDL-derived PV-WAVE CL language of Visual
112;; Numerics, Inc. is growing less and less complete as the two 114;; Numerics, Inc. is growing less and less complete as the two
113;; languages grow increasingly apart. The mode probably shouldn't 115;; languages grow increasingly apart. The mode probably shouldn't
114;; even have "WAVE" in it's title, but it's catchy, and was required 116;; even have "WAVE" in its title, but it's catchy, and was required
115;; to avoid conflict with the CORBA idl.el mode. Caveat WAVEor. 117;; to avoid conflict with the CORBA idl.el mode. Caveat WAVEor.
116;; 118;;
117;; Moving the point backwards in conjunction with abbrev expansion 119;; Moving the point backwards in conjunction with abbrev expansion
@@ -120,7 +122,7 @@
120;; up inserting the character that expanded the abbrev after moving 122;; up inserting the character that expanded the abbrev after moving
121;; point backward, e.g., "\cl" expanded with a space becomes 123;; point backward, e.g., "\cl" expanded with a space becomes
122;; "LONG( )" with point before the close paren. This is solved by 124;; "LONG( )" with point before the close paren. This is solved by
123;; using a temporary function in `post-command-hook' - not pretty, 125;; using a temporary function in `post-command-hook' - not pretty,
124;; but it works. 126;; but it works.
125;; 127;;
126;; Tabs and spaces are treated equally as whitespace when filling a 128;; Tabs and spaces are treated equally as whitespace when filling a
@@ -159,6 +161,11 @@
159(unless (fboundp 'char-valid-p) 161(unless (fboundp 'char-valid-p)
160 (defalias 'char-valid-p 'characterp)) 162 (defalias 'char-valid-p 'characterp))
161 163
164(if (not (fboundp 'cancel-timer))
165 (condition-case nil
166 (require 'timer)
167 (error nil)))
168
162(eval-and-compile 169(eval-and-compile
163 ;; Kludge to allow `defcustom' for Emacs 19. 170 ;; Kludge to allow `defcustom' for Emacs 19.
164 (condition-case () (require 'custom) (error nil)) 171 (condition-case () (require 'custom) (error nil))
@@ -166,13 +173,13 @@
166 nil ;; We've got what we needed 173 nil ;; We've got what we needed
167 ;; We have the old or no custom-library, hack around it! 174 ;; We have the old or no custom-library, hack around it!
168 (defmacro defgroup (&rest args) nil) 175 (defmacro defgroup (&rest args) nil)
169 (defmacro defcustom (var value doc &rest args) 176 (defmacro defcustom (var value doc &rest args)
170 `(defvar ,var ,value ,doc)))) 177 `(defvar ,var ,value ,doc))))
171 178
172(defgroup idlwave nil 179(defgroup idlwave nil
173 "Major mode for editing IDL .pro files" 180 "Major mode for editing IDL .pro files"
174 :tag "IDLWAVE" 181 :tag "IDLWAVE"
175 :link '(url-link :tag "Home Page" 182 :link '(url-link :tag "Home Page"
176 "http://idlwave.org") 183 "http://idlwave.org")
177 :link '(emacs-commentary-link :tag "Commentary in idlw-shell.el" 184 :link '(emacs-commentary-link :tag "Commentary in idlw-shell.el"
178 "idlw-shell.el") 185 "idlw-shell.el")
@@ -286,8 +293,8 @@ extends to the end of the match for the regular expression."
286 293
287(defcustom idlwave-auto-fill-split-string t 294(defcustom idlwave-auto-fill-split-string t
288 "*If non-nil then auto fill will split strings with the IDL `+' operator. 295 "*If non-nil then auto fill will split strings with the IDL `+' operator.
289When the line end falls within a string, string concatenation with the 296When the line end falls within a string, string concatenation with the
290'+' operator will be used to distribute a long string over lines. 297'+' operator will be used to distribute a long string over lines.
291If nil and a string is split then a terminal beep and warning are issued. 298If nil and a string is split then a terminal beep and warning are issued.
292 299
293This variable is ignored when `idlwave-fill-comment-line-only' is 300This variable is ignored when `idlwave-fill-comment-line-only' is
@@ -351,7 +358,7 @@ usually a good idea.."
351Initializing the routine info can take long, in particular if a large 358Initializing the routine info can take long, in particular if a large
352library catalog is involved. When Emacs is idle for more than the number 359library catalog is involved. When Emacs is idle for more than the number
353of seconds specified by this variable, it starts the initialization. 360of seconds specified by this variable, it starts the initialization.
354The process is split into five steps, in order to keep possible work 361The process is split into five steps, in order to keep possible work
355interruption as short as possible. If one of the steps finishes, and no 362interruption as short as possible. If one of the steps finishes, and no
356user input has arrived in the mean time, initialization proceeds immediately 363user input has arrived in the mean time, initialization proceeds immediately
357to the next step. 364to the next step.
@@ -403,7 +410,7 @@ t All available
403 (const :tag "When saving a buffer" save-buffer) 410 (const :tag "When saving a buffer" save-buffer)
404 (const :tag "After a buffer was killed" kill-buffer) 411 (const :tag "After a buffer was killed" kill-buffer)
405 (const :tag "After a buffer was compiled successfully, update shell info" compile-buffer)))) 412 (const :tag "After a buffer was compiled successfully, update shell info" compile-buffer))))
406 413
407(defcustom idlwave-rinfo-max-source-lines 5 414(defcustom idlwave-rinfo-max-source-lines 5
408 "*Maximum number of source files displayed in the Routine Info window. 415 "*Maximum number of source files displayed in the Routine Info window.
409When an integer, it is the maximum number of source files displayed. 416When an integer, it is the maximum number of source files displayed.
@@ -436,7 +443,7 @@ value of `!DIR'. See also `idlwave-library-path'."
436 :group 'idlwave-routine-info 443 :group 'idlwave-routine-info
437 :type 'directory) 444 :type 'directory)
438 445
439(defcustom idlwave-config-directory 446(defcustom idlwave-config-directory
440 (convert-standard-filename "~/.idlwave") 447 (convert-standard-filename "~/.idlwave")
441 "*Directory for configuration files and user-library catalog." 448 "*Directory for configuration files and user-library catalog."
442 :group 'idlwave-routine-info 449 :group 'idlwave-routine-info
@@ -451,7 +458,7 @@ value of `!DIR'. See also `idlwave-library-path'."
451(defcustom idlwave-special-lib-alist nil 458(defcustom idlwave-special-lib-alist nil
452 "Alist of regular expressions matching special library directories. 459 "Alist of regular expressions matching special library directories.
453When listing routine source locations, IDLWAVE gives a short hint where 460When listing routine source locations, IDLWAVE gives a short hint where
454the file defining the routine is located. By default it lists `SystemLib' 461the file defining the routine is located. By default it lists `SystemLib'
455for routines in the system library `!DIR/lib' and `Library' for anything 462for routines in the system library `!DIR/lib' and `Library' for anything
456else. This variable can define additional types. The car of each entry 463else. This variable can define additional types. The car of each entry
457is a regular expression matching the file name (they normally will match 464is a regular expression matching the file name (they normally will match
@@ -462,7 +469,7 @@ chars are allowed."
462 (cons regexp string))) 469 (cons regexp string)))
463 470
464(defcustom idlwave-auto-write-paths t 471(defcustom idlwave-auto-write-paths t
465 "Write out path (!PATH) and system directory (!DIR) info automatically. 472 "Write out path (!PATH) and system directory (!DIR) info automatically.
466Path info is needed to locate library catalog files. If non-nil, 473Path info is needed to locate library catalog files. If non-nil,
467whenever the path-list changes as a result of shell-query, etc., it is 474whenever the path-list changes as a result of shell-query, etc., it is
468written to file. Otherwise, the menu option \"Write Paths\" can be 475written to file. Otherwise, the menu option \"Write Paths\" can be
@@ -493,7 +500,7 @@ used to force a write."
493This variable determines the case (UPPER/lower/Capitalized...) of 500This variable determines the case (UPPER/lower/Capitalized...) of
494words inserted into the buffer by completion. The preferred case can 501words inserted into the buffer by completion. The preferred case can
495be specified separately for routine names, keywords, classes and 502be specified separately for routine names, keywords, classes and
496methods. 503methods.
497This alist should therefore have entries for `routine' (normal 504This alist should therefore have entries for `routine' (normal
498functions and procedures, i.e. non-methods), `keyword', `class', and 505functions and procedures, i.e. non-methods), `keyword', `class', and
499`method'. Plausible values are 506`method'. Plausible values are
@@ -580,7 +587,7 @@ certain methods this assumption is almost always true. The methods
580for which to assume this can be set here." 587for which to assume this can be set here."
581 :group 'idlwave-routine-info 588 :group 'idlwave-routine-info
582 :type '(repeat (regexp :tag "Match method:"))) 589 :type '(repeat (regexp :tag "Match method:")))
583 590
584 591
585(defcustom idlwave-completion-show-classes 1 592(defcustom idlwave-completion-show-classes 1
586 "*Number of classes to show when completing object methods and keywords. 593 "*Number of classes to show when completing object methods and keywords.
@@ -645,7 +652,7 @@ should contain at least two elements: (method-default . VALUE) and
645specify if the class should be found during method and keyword 652specify if the class should be found during method and keyword
646completion, respectively. 653completion, respectively.
647 654
648The alist may have additional entries specifying exceptions from the 655The alist may have additional entries specifying exceptions from the
649keyword completion rule for specific methods, like INIT or 656keyword completion rule for specific methods, like INIT or
650GETPROPERTY. In order to turn on class specification for the INIT 657GETPROPERTY. In order to turn on class specification for the INIT
651method, add an entry (\"INIT\" . t). The method name must be ALL-CAPS." 658method, add an entry (\"INIT\" . t). The method name must be ALL-CAPS."
@@ -669,7 +676,7 @@ particular object method call. This happens during the commands
669value of the variable `idlwave-query-class'. 676value of the variable `idlwave-query-class'.
670 677
671When you specify a class, this information can be stored as a text 678When you specify a class, this information can be stored as a text
672property on the `->' arrow in the source code, so that during the same 679property on the `->' arrow in the source code, so that during the same
673editing session, IDLWAVE will not have to ask again. When this 680editing session, IDLWAVE will not have to ask again. When this
674variable is non-nil, IDLWAVE will store and reuse the class information. 681variable is non-nil, IDLWAVE will store and reuse the class information.
675The class stored can be checked and removed with `\\[idlwave-routine-info]' 682The class stored can be checked and removed with `\\[idlwave-routine-info]'
@@ -1049,7 +1056,7 @@ IDL process is made."
1049 :group 'idlwave-misc 1056 :group 'idlwave-misc
1050 :type 'boolean) 1057 :type 'boolean)
1051 1058
1052(defcustom idlwave-default-font-lock-items 1059(defcustom idlwave-default-font-lock-items
1053 '(pros-and-functions batch-files idlwave-idl-keywords label goto 1060 '(pros-and-functions batch-files idlwave-idl-keywords label goto
1054 common-blocks class-arrows) 1061 common-blocks class-arrows)
1055 "Items which should be fontified on the default fontification level 2. 1062 "Items which should be fontified on the default fontification level 2.
@@ -1111,25 +1118,25 @@ As a user, you should not set this to t.")
1111;;; and Carsten Dominik... 1118;;; and Carsten Dominik...
1112 1119
1113;; The following are the reserved words in IDL. Maybe we should 1120;; The following are the reserved words in IDL. Maybe we should
1114;; highlight some more stuff as well? 1121;; highlight some more stuff as well?
1115;; Procedure declarations. Fontify keyword plus procedure name. 1122;; Procedure declarations. Fontify keyword plus procedure name.
1116(defvar idlwave-idl-keywords 1123(defvar idlwave-idl-keywords
1117 ;; To update this regexp, update the list of keywords and 1124 ;; To update this regexp, update the list of keywords and
1118 ;; evaluate the form. 1125 ;; evaluate the form.
1119 ;; (insert 1126 ;; (insert
1120 ;; (prin1-to-string 1127 ;; (prin1-to-string
1121 ;; (concat 1128 ;; (concat
1122 ;; "\\<\\(" 1129 ;; "\\<\\("
1123 ;; (regexp-opt 1130 ;; (regexp-opt
1124 ;; '("||" "&&" "and" "or" "xor" "not" 1131 ;; '("||" "&&" "and" "or" "xor" "not"
1125 ;; "eq" "ge" "gt" "le" "lt" "ne" 1132 ;; "eq" "ge" "gt" "le" "lt" "ne"
1126 ;; "for" "do" "endfor" 1133 ;; "for" "do" "endfor"
1127 ;; "if" "then" "endif" "else" "endelse" 1134 ;; "if" "then" "endif" "else" "endelse"
1128 ;; "case" "of" "endcase" 1135 ;; "case" "of" "endcase"
1129 ;; "switch" "break" "continue" "endswitch" 1136 ;; "switch" "break" "continue" "endswitch"
1130 ;; "begin" "end" 1137 ;; "begin" "end"
1131 ;; "repeat" "until" "endrep" 1138 ;; "repeat" "until" "endrep"
1132 ;; "while" "endwhile" 1139 ;; "while" "endwhile"
1133 ;; "goto" "return" 1140 ;; "goto" "return"
1134 ;; "inherits" "mod" 1141 ;; "inherits" "mod"
1135 ;; "compile_opt" "forward_function" 1142 ;; "compile_opt" "forward_function"
@@ -1152,7 +1159,7 @@ As a user, you should not set this to t.")
1152 (2 font-lock-reference-face nil t) ; block name 1159 (2 font-lock-reference-face nil t) ; block name
1153 (font-lock-match-c++-style-declaration-item-and-skip-to-next 1160 (font-lock-match-c++-style-declaration-item-and-skip-to-next
1154 ;; Start with point after block name and comma 1161 ;; Start with point after block name and comma
1155 (goto-char (match-end 0)) ; needed for XEmacs, could be nil 1162 (goto-char (match-end 0)) ; needed for XEmacs, could be nil
1156 nil 1163 nil
1157 (1 font-lock-variable-name-face) ; variable names 1164 (1 font-lock-variable-name-face) ; variable names
1158 ))) 1165 )))
@@ -1207,7 +1214,7 @@ As a user, you should not set this to t.")
1207 ;; All operators (not used because too noisy) 1214 ;; All operators (not used because too noisy)
1208 (all-operators 1215 (all-operators
1209 '("[-*^#+<>/]" (0 font-lock-keyword-face))) 1216 '("[-*^#+<>/]" (0 font-lock-keyword-face)))
1210 1217
1211 ;; Arrows with text property `idlwave-class' 1218 ;; Arrows with text property `idlwave-class'
1212 (class-arrows 1219 (class-arrows
1213 '(idlwave-match-class-arrows (0 idlwave-class-arrow-face)))) 1220 '(idlwave-match-class-arrows (0 idlwave-class-arrow-face))))
@@ -1244,14 +1251,14 @@ As a user, you should not set this to t.")
1244 1251
1245(defvar idlwave-font-lock-defaults 1252(defvar idlwave-font-lock-defaults
1246 '((idlwave-font-lock-keywords 1253 '((idlwave-font-lock-keywords
1247 idlwave-font-lock-keywords-1 1254 idlwave-font-lock-keywords-1
1248 idlwave-font-lock-keywords-2 1255 idlwave-font-lock-keywords-2
1249 idlwave-font-lock-keywords-3) 1256 idlwave-font-lock-keywords-3)
1250 nil t 1257 nil t
1251 ((?$ . "w") (?_ . "w") (?. . "w") (?| . "w") (?& . "w")) 1258 ((?$ . "w") (?_ . "w") (?. . "w") (?| . "w") (?& . "w"))
1252 beginning-of-line)) 1259 beginning-of-line))
1253 1260
1254(put 'idlwave-mode 'font-lock-defaults 1261(put 'idlwave-mode 'font-lock-defaults
1255 idlwave-font-lock-defaults) ; XEmacs 1262 idlwave-font-lock-defaults) ; XEmacs
1256 1263
1257(defconst idlwave-comment-line-start-skip "^[ \t]*;" 1264(defconst idlwave-comment-line-start-skip "^[ \t]*;"
@@ -1259,7 +1266,7 @@ As a user, you should not set this to t.")
1259That is the _beginning_ of a line containing a comment delimiter `;' preceded 1266That is the _beginning_ of a line containing a comment delimiter `;' preceded
1260only by whitespace.") 1267only by whitespace.")
1261 1268
1262(defconst idlwave-begin-block-reg 1269(defconst idlwave-begin-block-reg
1263 "\\<\\(pro\\|function\\|begin\\|case\\|switch\\)\\>" 1270 "\\<\\(pro\\|function\\|begin\\|case\\|switch\\)\\>"
1264 "Regular expression to find the beginning of a block. The case does 1271 "Regular expression to find the beginning of a block. The case does
1265not matter. The search skips matches in comments.") 1272not matter. The search skips matches in comments.")
@@ -1336,17 +1343,17 @@ blocks starting with a BEGIN statement. The matches must have associations
1336 '(goto . ("goto\\>" nil)) 1343 '(goto . ("goto\\>" nil))
1337 '(case . ("case\\>" nil)) 1344 '(case . ("case\\>" nil))
1338 '(switch . ("switch\\>" nil)) 1345 '(switch . ("switch\\>" nil))
1339 (cons 'call (list (concat "\\(" idlwave-variable "\\) *= *" 1346 (cons 'call (list (concat "\\(" idlwave-variable "\\) *= *"
1340 "\\(" idlwave-method-call "\\s *\\)?" 1347 "\\(" idlwave-method-call "\\s *\\)?"
1341 idlwave-identifier 1348 idlwave-identifier
1342 "\\s *(") nil)) 1349 "\\s *(") nil))
1343 (cons 'call (list (concat 1350 (cons 'call (list (concat
1344 "\\(" idlwave-method-call "\\s *\\)?" 1351 "\\(" idlwave-method-call "\\s *\\)?"
1345 idlwave-identifier 1352 idlwave-identifier
1346 "\\( *\\($\\|\\$\\)\\|\\s *,\\)") nil)) 1353 "\\( *\\($\\|\\$\\)\\|\\s *,\\)") nil))
1347 (cons 'assign (list (concat 1354 (cons 'assign (list (concat
1348 "\\(" idlwave-variable "\\) *=") nil))) 1355 "\\(" idlwave-variable "\\) *=") nil)))
1349 1356
1350 "Associated list of statement matching regular expressions. 1357 "Associated list of statement matching regular expressions.
1351Each regular expression matches the start of an IDL statement. The 1358Each regular expression matches the start of an IDL statement. The
1352first element of each association is a symbol giving the statement 1359first element of each association is a symbol giving the statement
@@ -1369,7 +1376,7 @@ the leftover unidentified statements containing an equal sign." )
1369;; Note that this is documented in the v18 manuals as being a string 1376;; Note that this is documented in the v18 manuals as being a string
1370;; of length one rather than a single character. 1377;; of length one rather than a single character.
1371;; The code in this file accepts either format for compatibility. 1378;; The code in this file accepts either format for compatibility.
1372(defvar idlwave-comment-indent-char ?\ 1379(defvar idlwave-comment-indent-char ?\
1373 "Character to be inserted for IDL comment indentation. 1380 "Character to be inserted for IDL comment indentation.
1374Normally a space.") 1381Normally a space.")
1375 1382
@@ -1377,7 +1384,7 @@ Normally a space.")
1377 "Character which is inserted as a last character on previous line by 1384 "Character which is inserted as a last character on previous line by
1378 \\[idlwave-split-line] to begin a continuation line. Normally $.") 1385 \\[idlwave-split-line] to begin a continuation line. Normally $.")
1379 1386
1380(defconst idlwave-mode-version "5.5") 1387(defconst idlwave-mode-version "5.7_22")
1381 1388
1382(defmacro idlwave-keyword-abbrev (&rest args) 1389(defmacro idlwave-keyword-abbrev (&rest args)
1383 "Creates a function for abbrev hooks to call `idlwave-check-abbrev' with args." 1390 "Creates a function for abbrev hooks to call `idlwave-check-abbrev' with args."
@@ -1484,12 +1491,13 @@ Capitalize system variables - action only
1484 ;; Add action 1491 ;; Add action
1485 (let* ((table (if select 'idlwave-indent-action-table 1492 (let* ((table (if select 'idlwave-indent-action-table
1486 'idlwave-indent-expand-table)) 1493 'idlwave-indent-expand-table))
1487 (cell (assoc key (eval table)))) 1494 (table-key (regexp-quote key))
1495 (cell (assoc table-key (eval table))))
1488 (if cell 1496 (if cell
1489 ;; Replace action command 1497 ;; Replace action command
1490 (setcdr cell cmd) 1498 (setcdr cell cmd)
1491 ;; New action 1499 ;; New action
1492 (set table (append (eval table) (list (cons key cmd))))))) 1500 (set table (append (eval table) (list (cons table-key cmd)))))))
1493 ;; Make key binding for action 1501 ;; Make key binding for action
1494 (if (or (and (null select) (= (length key) 1)) 1502 (if (or (and (null select) (= (length key) 1))
1495 (equal select 'noaction) 1503 (equal select 'noaction)
@@ -1516,7 +1524,7 @@ Capitalize system variables - action only
1516(define-key idlwave-mode-map "\C-c{" 'idlwave-beginning-of-block) 1524(define-key idlwave-mode-map "\C-c{" 'idlwave-beginning-of-block)
1517(define-key idlwave-mode-map "\C-c}" 'idlwave-end-of-block) 1525(define-key idlwave-mode-map "\C-c}" 'idlwave-end-of-block)
1518(define-key idlwave-mode-map "\C-c]" 'idlwave-close-block) 1526(define-key idlwave-mode-map "\C-c]" 'idlwave-close-block)
1519(define-key idlwave-mode-map "\M-\C-h" 'idlwave-mark-subprogram) 1527(define-key idlwave-mode-map [(meta control h)] 'idlwave-mark-subprogram)
1520(define-key idlwave-mode-map "\M-\C-n" 'idlwave-forward-block) 1528(define-key idlwave-mode-map "\M-\C-n" 'idlwave-forward-block)
1521(define-key idlwave-mode-map "\M-\C-p" 'idlwave-backward-block) 1529(define-key idlwave-mode-map "\M-\C-p" 'idlwave-backward-block)
1522(define-key idlwave-mode-map "\M-\C-d" 'idlwave-down-block) 1530(define-key idlwave-mode-map "\M-\C-d" 'idlwave-down-block)
@@ -1540,15 +1548,15 @@ Capitalize system variables - action only
1540 (not (equal idlwave-shell-debug-modifiers '()))) 1548 (not (equal idlwave-shell-debug-modifiers '())))
1541 ;; Bind the debug commands also with the special modifiers. 1549 ;; Bind the debug commands also with the special modifiers.
1542 (let ((shift (memq 'shift idlwave-shell-debug-modifiers)) 1550 (let ((shift (memq 'shift idlwave-shell-debug-modifiers))
1543 (mods-noshift (delq 'shift 1551 (mods-noshift (delq 'shift
1544 (copy-sequence idlwave-shell-debug-modifiers)))) 1552 (copy-sequence idlwave-shell-debug-modifiers))))
1545 (define-key idlwave-mode-map 1553 (define-key idlwave-mode-map
1546 (vector (append mods-noshift (list (if shift ?C ?c)))) 1554 (vector (append mods-noshift (list (if shift ?C ?c))))
1547 'idlwave-shell-save-and-run) 1555 'idlwave-shell-save-and-run)
1548 (define-key idlwave-mode-map 1556 (define-key idlwave-mode-map
1549 (vector (append mods-noshift (list (if shift ?B ?b)))) 1557 (vector (append mods-noshift (list (if shift ?B ?b))))
1550 'idlwave-shell-break-here) 1558 'idlwave-shell-break-here)
1551 (define-key idlwave-mode-map 1559 (define-key idlwave-mode-map
1552 (vector (append mods-noshift (list (if shift ?E ?e)))) 1560 (vector (append mods-noshift (list (if shift ?E ?e))))
1553 'idlwave-shell-run-region))) 1561 'idlwave-shell-run-region)))
1554(define-key idlwave-mode-map "\C-c\C-d\C-c" 'idlwave-shell-save-and-run) 1562(define-key idlwave-mode-map "\C-c\C-d\C-c" 'idlwave-shell-save-and-run)
@@ -1575,6 +1583,7 @@ Capitalize system variables - action only
1575(autoload 'idlwave-shell-run-region "idlw-shell" 1583(autoload 'idlwave-shell-run-region "idlw-shell"
1576 "Compile and run the region." t) 1584 "Compile and run the region." t)
1577(define-key idlwave-mode-map "\C-c\C-v" 'idlwave-find-module) 1585(define-key idlwave-mode-map "\C-c\C-v" 'idlwave-find-module)
1586(define-key idlwave-mode-map "\C-c\C-t" 'idlwave-find-module-this-file)
1578(define-key idlwave-mode-map "\C-c?" 'idlwave-routine-info) 1587(define-key idlwave-mode-map "\C-c?" 'idlwave-routine-info)
1579(define-key idlwave-mode-map "\M-?" 'idlwave-context-help) 1588(define-key idlwave-mode-map "\M-?" 'idlwave-context-help)
1580(define-key idlwave-mode-map [(control meta ?\?)] 'idlwave-online-help) 1589(define-key idlwave-mode-map [(control meta ?\?)] 'idlwave-online-help)
@@ -1584,7 +1593,7 @@ Capitalize system variables - action only
1584(define-key idlwave-mode-map "\M-\C-i" 'idlwave-complete) 1593(define-key idlwave-mode-map "\M-\C-i" 'idlwave-complete)
1585(define-key idlwave-mode-map "\C-c\C-i" 'idlwave-update-routine-info) 1594(define-key idlwave-mode-map "\C-c\C-i" 'idlwave-update-routine-info)
1586(define-key idlwave-mode-map "\C-c=" 'idlwave-resolve) 1595(define-key idlwave-mode-map "\C-c=" 'idlwave-resolve)
1587(define-key idlwave-mode-map 1596(define-key idlwave-mode-map
1588 (if (featurep 'xemacs) [(shift button3)] [(shift mouse-3)]) 1597 (if (featurep 'xemacs) [(shift button3)] [(shift mouse-3)])
1589 'idlwave-mouse-context-help) 1598 'idlwave-mouse-context-help)
1590 1599
@@ -1595,7 +1604,7 @@ Capitalize system variables - action only
1595; (lambda (char) 0))) 1604; (lambda (char) 0)))
1596(idlwave-action-and-binding "<" '(idlwave-surround -1 -1)) 1605(idlwave-action-and-binding "<" '(idlwave-surround -1 -1))
1597;; Binding works for both > and ->, by changing the length of the token. 1606;; Binding works for both > and ->, by changing the length of the token.
1598(idlwave-action-and-binding ">" '(idlwave-surround -1 -1 '(?-) 1 1607(idlwave-action-and-binding ">" '(idlwave-surround -1 -1 '(?-) 1
1599 'idlwave-gtr-pad-hook)) 1608 'idlwave-gtr-pad-hook))
1600(idlwave-action-and-binding "->" '(idlwave-surround -1 -1 nil 2) t) 1609(idlwave-action-and-binding "->" '(idlwave-surround -1 -1 nil 2) t)
1601(idlwave-action-and-binding "," '(idlwave-surround 0 -1)) 1610(idlwave-action-and-binding "," '(idlwave-surround 0 -1))
@@ -1629,7 +1638,7 @@ idlwave-mode-abbrev-table unless TABLE is non-nil."
1629 (error (apply 'define-abbrev args))))) 1638 (error (apply 'define-abbrev args)))))
1630 1639
1631(condition-case nil 1640(condition-case nil
1632 (modify-syntax-entry (string-to-char idlwave-abbrev-start-char) 1641 (modify-syntax-entry (string-to-char idlwave-abbrev-start-char)
1633 "w" idlwave-mode-syntax-table) 1642 "w" idlwave-mode-syntax-table)
1634 (error nil)) 1643 (error nil))
1635 1644
@@ -1702,6 +1711,8 @@ idlwave-mode-abbrev-table unless TABLE is non-nil."
1702(idlwave-define-abbrev "s" "size()" (idlwave-keyword-abbrev 1)) 1711(idlwave-define-abbrev "s" "size()" (idlwave-keyword-abbrev 1))
1703(idlwave-define-abbrev "wi" "widget_info()" (idlwave-keyword-abbrev 1)) 1712(idlwave-define-abbrev "wi" "widget_info()" (idlwave-keyword-abbrev 1))
1704(idlwave-define-abbrev "wc" "widget_control," (idlwave-keyword-abbrev 0)) 1713(idlwave-define-abbrev "wc" "widget_control," (idlwave-keyword-abbrev 0))
1714(idlwave-define-abbrev "pv" "ptr_valid()" (idlwave-keyword-abbrev 1))
1715(idlwave-define-abbrev "ipv" "if ptr_valid() then" (idlwave-keyword-abbrev 6))
1705 1716
1706;; This section is reserved words only. (From IDL user manual) 1717;; This section is reserved words only. (From IDL user manual)
1707;; 1718;;
@@ -1751,12 +1762,12 @@ idlwave-mode-abbrev-table unless TABLE is non-nil."
1751(defvar imenu-extract-index-name-function) 1762(defvar imenu-extract-index-name-function)
1752(defvar imenu-prev-index-position-function) 1763(defvar imenu-prev-index-position-function)
1753;; defined later - so just make the compiler hush 1764;; defined later - so just make the compiler hush
1754(defvar idlwave-mode-menu) 1765(defvar idlwave-mode-menu)
1755(defvar idlwave-mode-debug-menu) 1766(defvar idlwave-mode-debug-menu)
1756 1767
1757;;;###autoload 1768;;;###autoload
1758(defun idlwave-mode () 1769(defun idlwave-mode ()
1759 "Major mode for editing IDL source files (version 5.5). 1770 "Major mode for editing IDL source files (version 5.7_22).
1760 1771
1761The main features of this mode are 1772The main features of this mode are
1762 1773
@@ -1836,7 +1847,7 @@ The main features of this mode are
1836 \\i IF statement template 1847 \\i IF statement template
1837 \\elif IF-ELSE statement template 1848 \\elif IF-ELSE statement template
1838 \\b BEGIN 1849 \\b BEGIN
1839 1850
1840 For a full list, use \\[idlwave-list-abbrevs]. Some templates also 1851 For a full list, use \\[idlwave-list-abbrevs]. Some templates also
1841 have direct keybindings - see the list of keybindings below. 1852 have direct keybindings - see the list of keybindings below.
1842 1853
@@ -1878,26 +1889,26 @@ The main features of this mode are
1878 1889
1879 (interactive) 1890 (interactive)
1880 (kill-all-local-variables) 1891 (kill-all-local-variables)
1881 1892
1882 (if idlwave-startup-message 1893 (if idlwave-startup-message
1883 (message "Emacs IDLWAVE mode version %s." idlwave-mode-version)) 1894 (message "Emacs IDLWAVE mode version %s." idlwave-mode-version))
1884 (setq idlwave-startup-message nil) 1895 (setq idlwave-startup-message nil)
1885 1896
1886 (setq local-abbrev-table idlwave-mode-abbrev-table) 1897 (setq local-abbrev-table idlwave-mode-abbrev-table)
1887 (set-syntax-table idlwave-mode-syntax-table) 1898 (set-syntax-table idlwave-mode-syntax-table)
1888 1899
1889 (set (make-local-variable 'indent-line-function) 'idlwave-indent-and-action) 1900 (set (make-local-variable 'indent-line-function) 'idlwave-indent-and-action)
1890 1901
1891 (make-local-variable idlwave-comment-indent-function) 1902 (make-local-variable idlwave-comment-indent-function)
1892 (set idlwave-comment-indent-function 'idlwave-comment-hook) 1903 (set idlwave-comment-indent-function 'idlwave-comment-hook)
1893 1904
1894 (set (make-local-variable 'comment-start-skip) ";+[ \t]*") 1905 (set (make-local-variable 'comment-start-skip) ";+[ \t]*")
1895 (set (make-local-variable 'comment-start) ";") 1906 (set (make-local-variable 'comment-start) ";")
1896 (set (make-local-variable 'require-final-newline) mode-require-final-newline) 1907 (set (make-local-variable 'require-final-newline) mode-require-final-newline)
1897 (set (make-local-variable 'abbrev-all-caps) t) 1908 (set (make-local-variable 'abbrev-all-caps) t)
1898 (set (make-local-variable 'indent-tabs-mode) nil) 1909 (set (make-local-variable 'indent-tabs-mode) nil)
1899 (set (make-local-variable 'completion-ignore-case) t) 1910 (set (make-local-variable 'completion-ignore-case) t)
1900 1911
1901 (use-local-map idlwave-mode-map) 1912 (use-local-map idlwave-mode-map)
1902 1913
1903 (when (featurep 'easymenu) 1914 (when (featurep 'easymenu)
@@ -1907,11 +1918,11 @@ The main features of this mode are
1907 (setq mode-name "IDLWAVE") 1918 (setq mode-name "IDLWAVE")
1908 (setq major-mode 'idlwave-mode) 1919 (setq major-mode 'idlwave-mode)
1909 (setq abbrev-mode t) 1920 (setq abbrev-mode t)
1910 1921
1911 (set (make-local-variable idlwave-fill-function) 'idlwave-auto-fill) 1922 (set (make-local-variable idlwave-fill-function) 'idlwave-auto-fill)
1912 (setq comment-end "") 1923 (setq comment-end "")
1913 (set (make-local-variable 'comment-multi-line) nil) 1924 (set (make-local-variable 'comment-multi-line) nil)
1914 (set (make-local-variable 'paragraph-separate) 1925 (set (make-local-variable 'paragraph-separate)
1915 "[ \t\f]*$\\|[ \t]*;+[ \t]*$\\|;+[+=-_*]+$") 1926 "[ \t\f]*$\\|[ \t]*;+[ \t]*$\\|;+[+=-_*]+$")
1916 (set (make-local-variable 'paragraph-start) "[ \t\f]\\|[ \t]*;+[ \t]") 1927 (set (make-local-variable 'paragraph-start) "[ \t\f]\\|[ \t]*;+[ \t]")
1917 (set (make-local-variable 'paragraph-ignore-fill-prefix) nil) 1928 (set (make-local-variable 'paragraph-ignore-fill-prefix) nil)
@@ -1920,7 +1931,7 @@ The main features of this mode are
1920 ;; Set tag table list to use IDLTAGS as file name. 1931 ;; Set tag table list to use IDLTAGS as file name.
1921 (if (boundp 'tag-table-alist) 1932 (if (boundp 'tag-table-alist)
1922 (add-to-list 'tag-table-alist '("\\.pro$" . "IDLTAGS"))) 1933 (add-to-list 'tag-table-alist '("\\.pro$" . "IDLTAGS")))
1923 1934
1924 ;; Font-lock additions - originally Phil Williams, then Ulrik Dickow 1935 ;; Font-lock additions - originally Phil Williams, then Ulrik Dickow
1925 ;; Following line is for Emacs - XEmacs uses the corresponding property 1936 ;; Following line is for Emacs - XEmacs uses the corresponding property
1926 ;; on the `idlwave-mode' symbol. 1937 ;; on the `idlwave-mode' symbol.
@@ -1935,15 +1946,10 @@ The main features of this mode are
1935 'idlwave-prev-index-position) 1946 'idlwave-prev-index-position)
1936 1947
1937 ;; Make a local post-command-hook and add our hook to it 1948 ;; Make a local post-command-hook and add our hook to it
1938 ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility
1939 (make-local-hook 'post-command-hook)
1940 (add-hook 'post-command-hook 'idlwave-command-hook nil 'local) 1949 (add-hook 'post-command-hook 'idlwave-command-hook nil 'local)
1941 1950
1942 ;; Make local hooks for buffer updates 1951 ;; Make local hooks for buffer updates
1943 ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility
1944 (make-local-hook 'kill-buffer-hook)
1945 (add-hook 'kill-buffer-hook 'idlwave-kill-buffer-update nil 'local) 1952 (add-hook 'kill-buffer-hook 'idlwave-kill-buffer-update nil 'local)
1946 (make-local-hook 'after-save-hook)
1947 (add-hook 'after-save-hook 'idlwave-save-buffer-update nil 'local) 1953 (add-hook 'after-save-hook 'idlwave-save-buffer-update nil 'local)
1948 (add-hook 'after-save-hook 'idlwave-revoke-license-to-kill nil 'local) 1954 (add-hook 'after-save-hook 'idlwave-revoke-license-to-kill nil 'local)
1949 1955
@@ -1961,18 +1967,18 @@ The main features of this mode are
1961 (unless idlwave-setup-done 1967 (unless idlwave-setup-done
1962 (if (not (file-directory-p idlwave-config-directory)) 1968 (if (not (file-directory-p idlwave-config-directory))
1963 (make-directory idlwave-config-directory)) 1969 (make-directory idlwave-config-directory))
1964 (setq idlwave-user-catalog-file (expand-file-name 1970 (setq idlwave-user-catalog-file (expand-file-name
1965 idlwave-user-catalog-file 1971 idlwave-user-catalog-file
1966 idlwave-config-directory) 1972 idlwave-config-directory)
1967 idlwave-path-file (expand-file-name 1973 idlwave-path-file (expand-file-name
1968 idlwave-path-file 1974 idlwave-path-file
1969 idlwave-config-directory)) 1975 idlwave-config-directory))
1970 (idlwave-read-paths) ; we may need these early 1976 (idlwave-read-paths) ; we may need these early
1971 (setq idlwave-setup-done t))) 1977 (setq idlwave-setup-done t)))
1972 1978
1973;; 1979;;
1974;; Code Formatting ---------------------------------------------------- 1980;; Code Formatting ----------------------------------------------------
1975;; 1981;;
1976 1982
1977(defun idlwave-push-mark (&rest rest) 1983(defun idlwave-push-mark (&rest rest)
1978 "Push mark for compatibility with Emacs 18/19." 1984 "Push mark for compatibility with Emacs 18/19."
@@ -2121,7 +2127,7 @@ Also checks if the correct end statement has been used."
2121 (if (> end-pos eol-pos) 2127 (if (> end-pos eol-pos)
2122 (setq end-pos pos)) 2128 (setq end-pos pos))
2123 (goto-char end-pos) 2129 (goto-char end-pos)
2124 (setq end (buffer-substring 2130 (setq end (buffer-substring
2125 (progn 2131 (progn
2126 (skip-chars-backward "a-zA-Z") 2132 (skip-chars-backward "a-zA-Z")
2127 (point)) 2133 (point))
@@ -2143,7 +2149,7 @@ Also checks if the correct end statement has been used."
2143 (sit-for 1)) 2149 (sit-for 1))
2144 (t 2150 (t
2145 (beep) 2151 (beep)
2146 (message "Warning: Shouldn't this be \"%s\" instead of \"%s\"?" 2152 (message "Warning: Shouldn't this be \"%s\" instead of \"%s\"?"
2147 end1 end) 2153 end1 end)
2148 (sit-for 1)))))))) 2154 (sit-for 1))))))))
2149 ;;(delete-char 1)) 2155 ;;(delete-char 1))
@@ -2155,8 +2161,8 @@ Also checks if the correct end statement has been used."
2155 ((looking-at "pro\\|case\\|switch\\|function\\>") 2161 ((looking-at "pro\\|case\\|switch\\|function\\>")
2156 (assoc (downcase (match-string 0)) idlwave-block-matches)) 2162 (assoc (downcase (match-string 0)) idlwave-block-matches))
2157 ((looking-at "begin\\>") 2163 ((looking-at "begin\\>")
2158 (let ((limit (save-excursion 2164 (let ((limit (save-excursion
2159 (idlwave-beginning-of-statement) 2165 (idlwave-beginning-of-statement)
2160 (point)))) 2166 (point))))
2161 (cond 2167 (cond
2162 ((re-search-backward ":[ \t]*\\=" limit t) 2168 ((re-search-backward ":[ \t]*\\=" limit t)
@@ -2184,9 +2190,9 @@ Also checks if the correct end statement has been used."
2184 (insert "end") 2190 (insert "end")
2185 (idlwave-show-begin))) 2191 (idlwave-show-begin)))
2186 2192
2187(defun idlwave-gtr-pad-hook (char) 2193(defun idlwave-gtr-pad-hook (char)
2188 "Let the > symbol expand around -> if present. The new token length 2194 "Let the > symbol expand around -> if present. The new token length
2189is returned." 2195is returned."
2190 2) 2196 2)
2191 2197
2192(defun idlwave-surround (&optional before after escape-chars length ec-hook) 2198(defun idlwave-surround (&optional before after escape-chars length ec-hook)
@@ -2216,8 +2222,8 @@ return value."
2216 (let* ((length (or length 1)) ; establish a default for LENGTH 2222 (let* ((length (or length 1)) ; establish a default for LENGTH
2217 (prev-char (char-after (- (point) (1+ length))))) 2223 (prev-char (char-after (- (point) (1+ length)))))
2218 (when (or (not (memq prev-char escape-chars)) 2224 (when (or (not (memq prev-char escape-chars))
2219 (and (fboundp ec-hook) 2225 (and (fboundp ec-hook)
2220 (setq length 2226 (setq length
2221 (save-excursion (funcall ec-hook prev-char))))) 2227 (save-excursion (funcall ec-hook prev-char)))))
2222 (backward-char length) 2228 (backward-char length)
2223 (save-restriction 2229 (save-restriction
@@ -2439,7 +2445,7 @@ Returns non-nil if successfull."
2439 (let ((eos (save-excursion 2445 (let ((eos (save-excursion
2440 (idlwave-block-jump-out -1 'nomark) 2446 (idlwave-block-jump-out -1 'nomark)
2441 (point)))) 2447 (point))))
2442 (if (setq status (idlwave-find-key 2448 (if (setq status (idlwave-find-key
2443 idlwave-end-block-reg -1 'nomark eos)) 2449 idlwave-end-block-reg -1 'nomark eos))
2444 (idlwave-beginning-of-statement) 2450 (idlwave-beginning-of-statement)
2445 (message "No nested block before beginning of containing block."))) 2451 (message "No nested block before beginning of containing block.")))
@@ -2447,7 +2453,7 @@ Returns non-nil if successfull."
2447 (let ((eos (save-excursion 2453 (let ((eos (save-excursion
2448 (idlwave-block-jump-out 1 'nomark) 2454 (idlwave-block-jump-out 1 'nomark)
2449 (point)))) 2455 (point))))
2450 (if (setq status (idlwave-find-key 2456 (if (setq status (idlwave-find-key
2451 idlwave-begin-block-reg 1 'nomark eos)) 2457 idlwave-begin-block-reg 1 'nomark eos))
2452 (idlwave-end-of-statement) 2458 (idlwave-end-of-statement)
2453 (message "No nested block before end of containing block.")))) 2459 (message "No nested block before end of containing block."))))
@@ -2461,7 +2467,7 @@ The marks are pushed."
2461 (here (point))) 2467 (here (point)))
2462 (goto-char (point-max)) 2468 (goto-char (point-max))
2463 (if (re-search-backward idlwave-doclib-start nil t) 2469 (if (re-search-backward idlwave-doclib-start nil t)
2464 (progn 2470 (progn
2465 (setq beg (progn (beginning-of-line) (point))) 2471 (setq beg (progn (beginning-of-line) (point)))
2466 (if (re-search-forward idlwave-doclib-end nil t) 2472 (if (re-search-forward idlwave-doclib-end nil t)
2467 (progn 2473 (progn
@@ -2495,7 +2501,7 @@ actual statement."
2495 ((eq major-mode 'idlwave-shell-mode) 2501 ((eq major-mode 'idlwave-shell-mode)
2496 (if (re-search-backward idlwave-shell-prompt-pattern nil t) 2502 (if (re-search-backward idlwave-shell-prompt-pattern nil t)
2497 (goto-char (match-end 0)))) 2503 (goto-char (match-end 0))))
2498 (t 2504 (t
2499 (if (save-excursion (forward-line -1) (idlwave-is-continuation-line)) 2505 (if (save-excursion (forward-line -1) (idlwave-is-continuation-line))
2500 (idlwave-previous-statement) 2506 (idlwave-previous-statement)
2501 (beginning-of-line))))) 2507 (beginning-of-line)))))
@@ -2572,7 +2578,7 @@ If not in a statement just moves to end of line. Returns position."
2572 (let ((save-point (point))) 2578 (let ((save-point (point)))
2573 (when (re-search-forward ".*&" lim t) 2579 (when (re-search-forward ".*&" lim t)
2574 (goto-char (match-end 0)) 2580 (goto-char (match-end 0))
2575 (if (idlwave-quoted) 2581 (if (idlwave-quoted)
2576 (goto-char save-point) 2582 (goto-char save-point)
2577 (if (eq (char-after (- (point) 2)) ?&) (goto-char save-point)))) 2583 (if (eq (char-after (- (point) 2)) ?&) (goto-char save-point))))
2578 (point))) 2584 (point)))
@@ -2589,7 +2595,7 @@ If there is no label point is not moved and nil is returned."
2589 ;; - not in parenthesis (like a[0:3]) 2595 ;; - not in parenthesis (like a[0:3])
2590 ;; - not followed by another ":" in explicit class, ala a->b::c 2596 ;; - not followed by another ":" in explicit class, ala a->b::c
2591 ;; As many in this mode, this function is heuristic and not an exact 2597 ;; As many in this mode, this function is heuristic and not an exact
2592 ;; parser. 2598 ;; parser.
2593 (let* ((start (point)) 2599 (let* ((start (point))
2594 (eos (save-excursion (idlwave-end-of-statement) (point))) 2600 (eos (save-excursion (idlwave-end-of-statement) (point)))
2595 (end (idlwave-find-key ":" 1 'nomark eos))) 2601 (end (idlwave-find-key ":" 1 'nomark eos)))
@@ -2666,7 +2672,7 @@ equal sign will be surrounded by BEFORE and AFTER blanks. If
2666`idlwave-pad-keyword' is t then keyword assignment is treated just 2672`idlwave-pad-keyword' is t then keyword assignment is treated just
2667like assignment statements. When nil, spaces are removed for keyword 2673like assignment statements. When nil, spaces are removed for keyword
2668assignment. Any other value keeps the current space around the `='. 2674assignment. Any other value keeps the current space around the `='.
2669Limits in for loops are treated as keyword assignment. 2675Limits in for loops are treated as keyword assignment.
2670 2676
2671Starting with IDL 6.0, a number of op= assignments are available. 2677Starting with IDL 6.0, a number of op= assignments are available.
2672Since ambiguities of the form: 2678Since ambiguities of the form:
@@ -2681,25 +2687,25 @@ operators, such as ##=, ^=, etc., will be pre-padded.
2681 2687
2682See `idlwave-surround'." 2688See `idlwave-surround'."
2683 (if idlwave-surround-by-blank 2689 (if idlwave-surround-by-blank
2684 (let 2690 (let
2685 ((non-an-ops "\\(##\\|\\*\\|\\+\\|-\\|/\\|<\\|>\\|\\^\\)\\=") 2691 ((non-an-ops "\\(##\\|\\*\\|\\+\\|-\\|/\\|<\\|>\\|\\^\\)\\=")
2686 (an-ops 2692 (an-ops
2687 "\\s-\\(AND\\|EQ\\|GE\\|GT\\|LE\\|LT\\|MOD\\|NE\\|OR\\|XOR\\)\\=") 2693 "\\s-\\(AND\\|EQ\\|GE\\|GT\\|LE\\|LT\\|MOD\\|NE\\|OR\\|XOR\\)\\=")
2688 (len 1)) 2694 (len 1))
2689 2695
2690 (save-excursion 2696 (save-excursion
2691 (let ((case-fold-search t)) 2697 (let ((case-fold-search t))
2692 (backward-char) 2698 (backward-char)
2693 (if (or 2699 (if (or
2694 (re-search-backward non-an-ops nil t) 2700 (re-search-backward non-an-ops nil t)
2695 ;; Why doesn't ##? work for both? 2701 ;; Why doesn't ##? work for both?
2696 (re-search-backward "\\(#\\)\\=" nil t)) 2702 (re-search-backward "\\(#\\)\\=" nil t))
2697 (setq len (1+ (length (match-string 1)))) 2703 (setq len (1+ (length (match-string 1))))
2698 (when (re-search-backward an-ops nil t) 2704 (when (re-search-backward an-ops nil t)
2699 (setq begin nil) ; won't modify begin 2705 ;(setq begin nil) ; won't modify begin
2700 (setq len (1+ (length (match-string 1)))))))) 2706 (setq len (1+ (length (match-string 1))))))))
2701 2707
2702 (if (eq t idlwave-pad-keyword) 2708 (if (eq t idlwave-pad-keyword)
2703 ;; Everything gets padded equally 2709 ;; Everything gets padded equally
2704 (idlwave-surround before after nil len) 2710 (idlwave-surround before after nil len)
2705 ;; Treating keywords/for variables specially... 2711 ;; Treating keywords/for variables specially...
@@ -2710,22 +2716,22 @@ See `idlwave-surround'."
2710 (skip-chars-backward "= \t") 2716 (skip-chars-backward "= \t")
2711 (nth 2 (idlwave-where))))) 2717 (nth 2 (idlwave-where)))))
2712 (cond ((or (memq what '(function-keyword procedure-keyword)) 2718 (cond ((or (memq what '(function-keyword procedure-keyword))
2713 (memq (caar st) '(for pdef))) 2719 (memq (caar st) '(for pdef)))
2714 (cond 2720 (cond
2715 ((null idlwave-pad-keyword) 2721 ((null idlwave-pad-keyword)
2716 (idlwave-surround 0 0) 2722 (idlwave-surround 0 0)
2717 ) ; remove space 2723 ) ; remove space
2718 (t))) ; leave any spaces alone 2724 (t))) ; leave any spaces alone
2719 (t (idlwave-surround before after nil len)))))))) 2725 (t (idlwave-surround before after nil len))))))))
2720 2726
2721 2727
2722(defun idlwave-indent-and-action (&optional arg) 2728(defun idlwave-indent-and-action (&optional arg)
2723 "Call `idlwave-indent-line' and do expand actions. 2729 "Call `idlwave-indent-line' and do expand actions.
2724With prefix ARG non-nil, indent the entire sub-statement." 2730With prefix ARG non-nil, indent the entire sub-statement."
2725 (interactive "p") 2731 (interactive "p")
2726 (save-excursion 2732 (save-excursion
2727 (if (and idlwave-expand-generic-end 2733 (if (and idlwave-expand-generic-end
2728 (re-search-backward "\\<\\(end\\)\\s-*\\=" 2734 (re-search-backward "\\<\\(end\\)\\s-*\\="
2729 (max 0 (- (point) 10)) t) 2735 (max 0 (- (point) 10)) t)
2730 (looking-at "\\(end\\)\\([ \n\t]\\|\\'\\)")) 2736 (looking-at "\\(end\\)\\([ \n\t]\\|\\'\\)"))
2731 (progn (goto-char (match-end 1)) 2737 (progn (goto-char (match-end 1))
@@ -2735,7 +2741,7 @@ With prefix ARG non-nil, indent the entire sub-statement."
2735 (when (and (not arg) current-prefix-arg) 2741 (when (and (not arg) current-prefix-arg)
2736 (setq arg current-prefix-arg) 2742 (setq arg current-prefix-arg)
2737 (setq current-prefix-arg nil)) 2743 (setq current-prefix-arg nil))
2738 (if arg 2744 (if arg
2739 (idlwave-indent-statement) 2745 (idlwave-indent-statement)
2740 (idlwave-indent-line t))) 2746 (idlwave-indent-line t)))
2741 2747
@@ -2868,7 +2874,7 @@ Inserts spaces before markers at point."
2868 (save-excursion 2874 (save-excursion
2869 (cond 2875 (cond
2870 ;; Beginning of file 2876 ;; Beginning of file
2871 ((prog1 2877 ((prog1
2872 (idlwave-previous-statement) 2878 (idlwave-previous-statement)
2873 (setq beg-prev-pos (point))) 2879 (setq beg-prev-pos (point)))
2874 0) 2880 0)
@@ -2878,7 +2884,7 @@ Inserts spaces before markers at point."
2878 idlwave-main-block-indent)) 2884 idlwave-main-block-indent))
2879 ;; Begin block 2885 ;; Begin block
2880 ((idlwave-look-at idlwave-begin-block-reg t) 2886 ((idlwave-look-at idlwave-begin-block-reg t)
2881 (+ (idlwave-min-current-statement-indent) 2887 (+ (idlwave-min-current-statement-indent)
2882 idlwave-block-indent)) 2888 idlwave-block-indent))
2883 ;; End Block 2889 ;; End Block
2884 ((idlwave-look-at idlwave-end-block-reg t) 2890 ((idlwave-look-at idlwave-end-block-reg t)
@@ -2889,7 +2895,7 @@ Inserts spaces before markers at point."
2889 (idlwave-min-current-statement-indent))) 2895 (idlwave-min-current-statement-indent)))
2890 ;; idlwave-end-offset 2896 ;; idlwave-end-offset
2891 ;; idlwave-block-indent)) 2897 ;; idlwave-block-indent))
2892 2898
2893 ;; Default to current indent 2899 ;; Default to current indent
2894 ((idlwave-current-statement-indent)))))) 2900 ((idlwave-current-statement-indent))))))
2895 ;; adjust the indentation based on the current statement 2901 ;; adjust the indentation based on the current statement
@@ -2905,7 +2911,7 @@ Inserts spaces before markers at point."
2905 2911
2906(defun idlwave-calculate-paren-indent (beg-reg end-reg close-exp) 2912(defun idlwave-calculate-paren-indent (beg-reg end-reg close-exp)
2907 "Calculate the continuation indent inside a paren group. 2913 "Calculate the continuation indent inside a paren group.
2908Returns a cons-cell with (open . indent), where open is the 2914Returns a cons-cell with (open . indent), where open is the
2909location of the open paren" 2915location of the open paren"
2910 (let ((open (nth 1 (parse-partial-sexp beg-reg end-reg)))) 2916 (let ((open (nth 1 (parse-partial-sexp beg-reg end-reg))))
2911 ;; Found an innermost open paren. 2917 ;; Found an innermost open paren.
@@ -2946,24 +2952,24 @@ groupings, are treated separately."
2946 (end-reg (progn (beginning-of-line) (point))) 2952 (end-reg (progn (beginning-of-line) (point)))
2947 (beg-last-statement (save-excursion (idlwave-previous-statement) 2953 (beg-last-statement (save-excursion (idlwave-previous-statement)
2948 (point))) 2954 (point)))
2949 (beg-reg (progn (idlwave-start-of-substatement 'pre) 2955 (beg-reg (progn (idlwave-start-of-substatement 'pre)
2950 (if (eq (line-beginning-position) end-reg) 2956 (if (eq (line-beginning-position) end-reg)
2951 (goto-char beg-last-statement) 2957 (goto-char beg-last-statement)
2952 (point)))) 2958 (point))))
2953 (basic-indent (+ (idlwave-min-current-statement-indent end-reg) 2959 (basic-indent (+ (idlwave-min-current-statement-indent end-reg)
2954 idlwave-continuation-indent)) 2960 idlwave-continuation-indent))
2955 fancy-nonparen-indent fancy-paren-indent) 2961 fancy-nonparen-indent fancy-paren-indent)
2956 (cond 2962 (cond
2957 ;; Align then with its matching if, etc. 2963 ;; Align then with its matching if, etc.
2958 ((let ((matchers '(("\\<if\\>" . "[ \t]*then") 2964 ((let ((matchers '(("\\<if\\>" . "[ \t]*then")
2959 ("\\<\\(if\\|end\\(if\\)?\\)\\>" . "[ \t]*else") 2965 ("\\<\\(if\\|end\\(if\\)?\\)\\>" . "[ \t]*else")
2960 ("\\<\\(for\\|while\\)\\>" . "[ \t]*do") 2966 ("\\<\\(for\\|while\\)\\>" . "[ \t]*do")
2961 ("\\<\\(repeat\\|end\\(rep\\)?\\)\\>" . 2967 ("\\<\\(repeat\\|end\\(rep\\)?\\)\\>" .
2962 "[ \t]*until") 2968 "[ \t]*until")
2963 ("\\<case\\>" . "[ \t]*of"))) 2969 ("\\<case\\>" . "[ \t]*of")))
2964 match cont-re) 2970 match cont-re)
2965 (goto-char end-reg) 2971 (goto-char end-reg)
2966 (and 2972 (and
2967 (setq cont-re 2973 (setq cont-re
2968 (catch 'exit 2974 (catch 'exit
2969 (while (setq match (car matchers)) 2975 (while (setq match (car matchers))
@@ -2972,7 +2978,7 @@ groupings, are treated separately."
2972 (setq matchers (cdr matchers))))) 2978 (setq matchers (cdr matchers)))))
2973 (idlwave-find-key cont-re -1 'nomark beg-last-statement))) 2979 (idlwave-find-key cont-re -1 'nomark beg-last-statement)))
2974 (if (looking-at "end") ;; that one's special 2980 (if (looking-at "end") ;; that one's special
2975 (- (idlwave-current-indent) 2981 (- (idlwave-current-indent)
2976 (+ idlwave-block-indent idlwave-end-offset)) 2982 (+ idlwave-block-indent idlwave-end-offset))
2977 (idlwave-current-indent))) 2983 (idlwave-current-indent)))
2978 2984
@@ -2998,7 +3004,7 @@ groupings, are treated separately."
2998 (let* ((end-reg end-reg) 3004 (let* ((end-reg end-reg)
2999 (close-exp (progn 3005 (close-exp (progn
3000 (goto-char end-reg) 3006 (goto-char end-reg)
3001 (skip-chars-forward " \t") 3007 (skip-chars-forward " \t")
3002 (looking-at "\\s)"))) 3008 (looking-at "\\s)")))
3003 indent-cons) 3009 indent-cons)
3004 (catch 'loop 3010 (catch 'loop
@@ -3032,12 +3038,12 @@ groupings, are treated separately."
3032 (if (save-match-data (looking-at "[ \t$]*\\(;.*\\)?$")) 3038 (if (save-match-data (looking-at "[ \t$]*\\(;.*\\)?$"))
3033 nil 3039 nil
3034 (current-column))) 3040 (current-column)))
3035 3041
3036 ;; Continued assignment (with =): 3042 ;; Continued assignment (with =):
3037 ((catch 'assign ; 3043 ((catch 'assign ;
3038 (while (looking-at "[^=\n\r]*\\(=\\)[ \t]*") 3044 (while (looking-at "[^=\n\r]*\\(=\\)[ \t]*")
3039 (goto-char (match-end 0)) 3045 (goto-char (match-end 0))
3040 (if (null (idlwave-what-function beg-reg)) 3046 (if (null (idlwave-what-function beg-reg))
3041 (throw 'assign t)))) 3047 (throw 'assign t))))
3042 (unless (or 3048 (unless (or
3043 (idlwave-in-quote) 3049 (idlwave-in-quote)
@@ -3099,7 +3105,7 @@ possibility of unbalanced blocks."
3099 (let* ((here (point)) 3105 (let* ((here (point))
3100 (case-fold-search t) 3106 (case-fold-search t)
3101 (limit (if (>= dir 0) (point-max) (point-min))) 3107 (limit (if (>= dir 0) (point-max) (point-min)))
3102 (block-limit (if (>= dir 0) 3108 (block-limit (if (>= dir 0)
3103 idlwave-begin-block-reg 3109 idlwave-begin-block-reg
3104 idlwave-end-block-reg)) 3110 idlwave-end-block-reg))
3105 found 3111 found
@@ -3110,7 +3116,7 @@ possibility of unbalanced blocks."
3110 (idlwave-find-key 3116 (idlwave-find-key
3111 idlwave-begin-unit-reg dir t limit) 3117 idlwave-begin-unit-reg dir t limit)
3112 (end-of-line) 3118 (end-of-line)
3113 (idlwave-find-key 3119 (idlwave-find-key
3114 idlwave-end-unit-reg dir t limit))) 3120 idlwave-end-unit-reg dir t limit)))
3115 limit))) 3121 limit)))
3116 (if (>= dir 0) (end-of-line)) ;Make sure we are in current block 3122 (if (>= dir 0) (end-of-line)) ;Make sure we are in current block
@@ -3135,7 +3141,7 @@ possibility of unbalanced blocks."
3135 (or (null end-reg) (< (point) end-reg))) 3141 (or (null end-reg) (< (point) end-reg)))
3136 (unless comm-or-empty (setq min (min min (idlwave-current-indent))))) 3142 (unless comm-or-empty (setq min (min min (idlwave-current-indent)))))
3137 (if (or comm-or-empty (and end-reg (>= (point) end-reg))) 3143 (if (or comm-or-empty (and end-reg (>= (point) end-reg)))
3138 min 3144 min
3139 (min min (idlwave-current-indent)))))) 3145 (min min (idlwave-current-indent))))))
3140 3146
3141(defun idlwave-current-statement-indent (&optional last-line) 3147(defun idlwave-current-statement-indent (&optional last-line)
@@ -3161,10 +3167,10 @@ Skips any whitespace. Returns 0 if the end-of-line follows the whitespace."
3161Blank or comment-only lines following regular continuation lines (with 3167Blank or comment-only lines following regular continuation lines (with
3162`$') count as continuations too." 3168`$') count as continuations too."
3163 (save-excursion 3169 (save-excursion
3164 (or 3170 (or
3165 (idlwave-look-at "\\<\\$") 3171 (idlwave-look-at "\\<\\$")
3166 (catch 'loop 3172 (catch 'loop
3167 (while (and (looking-at "^[ \t]*\\(;.*\\)?$") 3173 (while (and (looking-at "^[ \t]*\\(;.*\\)?$")
3168 (eq (forward-line -1) 0)) 3174 (eq (forward-line -1) 0))
3169 (if (idlwave-look-at "\\<\\$") (throw 'loop t))))))) 3175 (if (idlwave-look-at "\\<\\$") (throw 'loop t)))))))
3170 3176
@@ -3262,7 +3268,7 @@ ignored."
3262 (beginning-of-line) (point)) 3268 (beginning-of-line) (point))
3263 (point)))) 3269 (point))))
3264 "[^;]")) 3270 "[^;]"))
3265 3271
3266 ;; Mark the beginning and end of the paragraph 3272 ;; Mark the beginning and end of the paragraph
3267 (goto-char bcl) 3273 (goto-char bcl)
3268 (while (and (looking-at fill-prefix-reg) 3274 (while (and (looking-at fill-prefix-reg)
@@ -3326,7 +3332,7 @@ ignored."
3326 (insert (make-string diff ?\ )))) 3332 (insert (make-string diff ?\ ))))
3327 (forward-line -1)) 3333 (forward-line -1))
3328 ) 3334 )
3329 3335
3330 ;; No hang. Instead find minimum indentation of paragraph 3336 ;; No hang. Instead find minimum indentation of paragraph
3331 ;; after first line. 3337 ;; after first line.
3332 ;; For the following while statement, since START is at the 3338 ;; For the following while statement, since START is at the
@@ -3358,7 +3364,7 @@ ignored."
3358 t) 3364 t)
3359 (current-column)) 3365 (current-column))
3360 indent)) 3366 indent))
3361 3367
3362 ;; try to keep point at its original place 3368 ;; try to keep point at its original place
3363 (goto-char here) 3369 (goto-char here)
3364 3370
@@ -3407,7 +3413,7 @@ If not found returns nil."
3407 (current-column))))) 3413 (current-column)))))
3408 3414
3409(defun idlwave-auto-fill () 3415(defun idlwave-auto-fill ()
3410 "Called to break lines in auto fill mode. 3416 "Called to break lines in auto fill mode.
3411Only fills non-comment lines if `idlwave-fill-comment-line-only' is 3417Only fills non-comment lines if `idlwave-fill-comment-line-only' is
3412non-nil. Places a continuation character at the end of the line if 3418non-nil. Places a continuation character at the end of the line if
3413not in a comment. Splits strings with IDL concatenation operator `+' 3419not in a comment. Splits strings with IDL concatenation operator `+'
@@ -3558,7 +3564,7 @@ is non-nil."
3558 (insert (current-time-string)) 3564 (insert (current-time-string))
3559 (insert ", " (user-full-name)) 3565 (insert ", " (user-full-name))
3560 (if (boundp 'user-mail-address) 3566 (if (boundp 'user-mail-address)
3561 (insert " <" user-mail-address ">") 3567 (insert " <" user-mail-address ">")
3562 (insert " <" (user-login-name) "@" (system-name) ">")) 3568 (insert " <" (user-login-name) "@" (system-name) ">"))
3563 ;; Remove extra spaces from line 3569 ;; Remove extra spaces from line
3564 (idlwave-fill-paragraph) 3570 (idlwave-fill-paragraph)
@@ -3584,7 +3590,7 @@ location on mark ring so that the user can return to previous point."
3584 (setq end (match-end 0))) 3590 (setq end (match-end 0)))
3585 (progn 3591 (progn
3586 (goto-char beg) 3592 (goto-char beg)
3587 (if (re-search-forward 3593 (if (re-search-forward
3588 (concat idlwave-doc-modifications-keyword ":") 3594 (concat idlwave-doc-modifications-keyword ":")
3589 end t) 3595 end t)
3590 (end-of-line) 3596 (end-of-line)
@@ -3682,7 +3688,7 @@ constants - a double quote followed by an octal digit."
3682 (not (idlwave-in-quote)) 3688 (not (idlwave-in-quote))
3683 (save-excursion 3689 (save-excursion
3684 (forward-char) 3690 (forward-char)
3685 (re-search-backward (concat "\\(" idlwave-idl-keywords 3691 (re-search-backward (concat "\\(" idlwave-idl-keywords
3686 "\\|[[(*+-/=,^><]\\)\\s-*\\*") limit t))))) 3692 "\\|[[(*+-/=,^><]\\)\\s-*\\*") limit t)))))
3687 3693
3688 3694
@@ -3728,7 +3734,7 @@ unless the optional second argument NOINDENT is non-nil."
3728 (indent-region beg end nil)) 3734 (indent-region beg end nil))
3729 (if (stringp prompt) 3735 (if (stringp prompt)
3730 (message prompt))))) 3736 (message prompt)))))
3731 3737
3732(defun idlwave-rw-case (string) 3738(defun idlwave-rw-case (string)
3733 "Make STRING have the case required by `idlwave-reserved-word-upcase'." 3739 "Make STRING have the case required by `idlwave-reserved-word-upcase'."
3734 (if idlwave-reserved-word-upcase 3740 (if idlwave-reserved-word-upcase
@@ -3746,7 +3752,7 @@ unless the optional second argument NOINDENT is non-nil."
3746(defun idlwave-case () 3752(defun idlwave-case ()
3747 "Build skeleton IDL case statement." 3753 "Build skeleton IDL case statement."
3748 (interactive) 3754 (interactive)
3749 (idlwave-template 3755 (idlwave-template
3750 (idlwave-rw-case "case") 3756 (idlwave-rw-case "case")
3751 (idlwave-rw-case " of\n\nendcase") 3757 (idlwave-rw-case " of\n\nendcase")
3752 "Selector expression")) 3758 "Selector expression"))
@@ -3754,7 +3760,7 @@ unless the optional second argument NOINDENT is non-nil."
3754(defun idlwave-switch () 3760(defun idlwave-switch ()
3755 "Build skeleton IDL switch statement." 3761 "Build skeleton IDL switch statement."
3756 (interactive) 3762 (interactive)
3757 (idlwave-template 3763 (idlwave-template
3758 (idlwave-rw-case "switch") 3764 (idlwave-rw-case "switch")
3759 (idlwave-rw-case " of\n\nendswitch") 3765 (idlwave-rw-case " of\n\nendswitch")
3760 "Selector expression")) 3766 "Selector expression"))
@@ -3762,7 +3768,7 @@ unless the optional second argument NOINDENT is non-nil."
3762(defun idlwave-for () 3768(defun idlwave-for ()
3763 "Build skeleton for loop statment." 3769 "Build skeleton for loop statment."
3764 (interactive) 3770 (interactive)
3765 (idlwave-template 3771 (idlwave-template
3766 (idlwave-rw-case "for") 3772 (idlwave-rw-case "for")
3767 (idlwave-rw-case " do begin\n\nendfor") 3773 (idlwave-rw-case " do begin\n\nendfor")
3768 "Loop expression")) 3774 "Loop expression"))
@@ -3777,14 +3783,14 @@ unless the optional second argument NOINDENT is non-nil."
3777 3783
3778(defun idlwave-procedure () 3784(defun idlwave-procedure ()
3779 (interactive) 3785 (interactive)
3780 (idlwave-template 3786 (idlwave-template
3781 (idlwave-rw-case "pro") 3787 (idlwave-rw-case "pro")
3782 (idlwave-rw-case "\n\nreturn\nend") 3788 (idlwave-rw-case "\n\nreturn\nend")
3783 "Procedure name")) 3789 "Procedure name"))
3784 3790
3785(defun idlwave-function () 3791(defun idlwave-function ()
3786 (interactive) 3792 (interactive)
3787 (idlwave-template 3793 (idlwave-template
3788 (idlwave-rw-case "function") 3794 (idlwave-rw-case "function")
3789 (idlwave-rw-case "\n\nreturn\nend") 3795 (idlwave-rw-case "\n\nreturn\nend")
3790 "Function name")) 3796 "Function name"))
@@ -3798,7 +3804,7 @@ unless the optional second argument NOINDENT is non-nil."
3798 3804
3799(defun idlwave-while () 3805(defun idlwave-while ()
3800 (interactive) 3806 (interactive)
3801 (idlwave-template 3807 (idlwave-template
3802 (idlwave-rw-case "while") 3808 (idlwave-rw-case "while")
3803 (idlwave-rw-case " do begin\n\nendwhile") 3809 (idlwave-rw-case " do begin\n\nendwhile")
3804 "Entry condition")) 3810 "Entry condition"))
@@ -3877,8 +3883,8 @@ Buffer containing unsaved changes require confirmation before they are killed."
3877(defun idlwave-count-outlawed-buffers (tag) 3883(defun idlwave-count-outlawed-buffers (tag)
3878 "How many outlawed buffers have tag TAG?" 3884 "How many outlawed buffers have tag TAG?"
3879 (length (delq nil 3885 (length (delq nil
3880 (mapcar 3886 (mapcar
3881 (lambda (x) (eq (cdr x) tag)) 3887 (lambda (x) (eq (cdr x) tag))
3882 idlwave-outlawed-buffers)))) 3888 idlwave-outlawed-buffers))))
3883 3889
3884(defun idlwave-do-kill-autoloaded-buffers (&rest reasons) 3890(defun idlwave-do-kill-autoloaded-buffers (&rest reasons)
@@ -3892,9 +3898,9 @@ Buffer containing unsaved changes require confirmation before they are killed."
3892 (memq (cdr entry) reasons)) 3898 (memq (cdr entry) reasons))
3893 (kill-buffer (car entry)) 3899 (kill-buffer (car entry))
3894 (incf cnt) 3900 (incf cnt)
3895 (setq idlwave-outlawed-buffers 3901 (setq idlwave-outlawed-buffers
3896 (delq entry idlwave-outlawed-buffers))) 3902 (delq entry idlwave-outlawed-buffers)))
3897 (setq idlwave-outlawed-buffers 3903 (setq idlwave-outlawed-buffers
3898 (delq entry idlwave-outlawed-buffers)))) 3904 (delq entry idlwave-outlawed-buffers))))
3899 (message "%d buffer%s killed" cnt (if (= cnt 1) "" "s")))) 3905 (message "%d buffer%s killed" cnt (if (= cnt 1) "" "s"))))
3900 3906
@@ -3906,7 +3912,7 @@ Intended for `after-save-hook'."
3906 (entry (assq buf idlwave-outlawed-buffers))) 3912 (entry (assq buf idlwave-outlawed-buffers)))
3907 ;; Revoke license 3913 ;; Revoke license
3908 (if entry 3914 (if entry
3909 (setq idlwave-outlawed-buffers 3915 (setq idlwave-outlawed-buffers
3910 (delq entry idlwave-outlawed-buffers))) 3916 (delq entry idlwave-outlawed-buffers)))
3911 ;; Remove this function from the hook. 3917 ;; Remove this function from the hook.
3912 (remove-hook 'after-save-hook 'idlwave-revoke-license-to-kill 'local))) 3918 (remove-hook 'after-save-hook 'idlwave-revoke-license-to-kill 'local)))
@@ -3925,7 +3931,7 @@ Intended for `after-save-hook'."
3925(defun idlwave-expand-lib-file-name (file) 3931(defun idlwave-expand-lib-file-name (file)
3926 ;; Find FILE on the scanned lib path and return a buffer visiting it 3932 ;; Find FILE on the scanned lib path and return a buffer visiting it
3927 ;; This is for, e.g., finding source with no user catalog 3933 ;; This is for, e.g., finding source with no user catalog
3928 (cond 3934 (cond
3929 ((null file) nil) 3935 ((null file) nil)
3930 ((file-name-absolute-p file) file) 3936 ((file-name-absolute-p file) file)
3931 (t (idlwave-locate-lib-file file)))) 3937 (t (idlwave-locate-lib-file file))))
@@ -3940,7 +3946,7 @@ you specify /."
3940 (interactive) 3946 (interactive)
3941 (let (directory directories cmd append status numdirs dir getsubdirs 3947 (let (directory directories cmd append status numdirs dir getsubdirs
3942 buffer save_buffer files numfiles item errbuf) 3948 buffer save_buffer files numfiles item errbuf)
3943 3949
3944 ;; 3950 ;;
3945 ;; Read list of directories 3951 ;; Read list of directories
3946 (setq directory (read-string "Tag Directories: " ".")) 3952 (setq directory (read-string "Tag Directories: " "."))
@@ -3992,7 +3998,7 @@ you specify /."
3992 (message (concat "Tagging " item "...")) 3998 (message (concat "Tagging " item "..."))
3993 (setq errbuf (get-buffer-create "*idltags-error*")) 3999 (setq errbuf (get-buffer-create "*idltags-error*"))
3994 (setq status (+ status 4000 (setq status (+ status
3995 (if (eq 0 (call-process 4001 (if (eq 0 (call-process
3996 "sh" nil errbuf nil "-c" 4002 "sh" nil errbuf nil "-c"
3997 (concat cmd append item))) 4003 (concat cmd append item)))
3998 0 4004 0
@@ -4006,13 +4012,13 @@ you specify /."
4006 (setq numfiles (1+ numfiles)) 4012 (setq numfiles (1+ numfiles))
4007 (setq item (nth numfiles files)) 4013 (setq item (nth numfiles files))
4008 ))) 4014 )))
4009 4015
4010 (setq numdirs (1+ numdirs)) 4016 (setq numdirs (1+ numdirs))
4011 (setq dir (nth numdirs directories))) 4017 (setq dir (nth numdirs directories)))
4012 (progn 4018 (progn
4013 (setq numdirs (1+ numdirs)) 4019 (setq numdirs (1+ numdirs))
4014 (setq dir (nth numdirs directories))))) 4020 (setq dir (nth numdirs directories)))))
4015 4021
4016 (setq errbuf (get-buffer-create "*idltags-error*")) 4022 (setq errbuf (get-buffer-create "*idltags-error*"))
4017 (if (= status 0) 4023 (if (= status 0)
4018 (kill-buffer errbuf)) 4024 (kill-buffer errbuf))
@@ -4088,7 +4094,7 @@ blank lines."
4088 ;; Make sure the hash functions are accessible. 4094 ;; Make sure the hash functions are accessible.
4089 (if (or (not (fboundp 'gethash)) 4095 (if (or (not (fboundp 'gethash))
4090 (not (fboundp 'puthash))) 4096 (not (fboundp 'puthash)))
4091 (progn 4097 (progn
4092 (require 'cl) 4098 (require 'cl)
4093 (or (fboundp 'puthash) 4099 (or (fboundp 'puthash)
4094 (defalias 'puthash 'cl-puthash)))) 4100 (defalias 'puthash 'cl-puthash))))
@@ -4107,7 +4113,7 @@ blank lines."
4107 ;; Reset the system & library hash 4113 ;; Reset the system & library hash
4108 (loop for entry in entries 4114 (loop for entry in entries
4109 for var = (car entry) for size = (nth 1 entry) 4115 for var = (car entry) for size = (nth 1 entry)
4110 do (setcdr (symbol-value var) 4116 do (setcdr (symbol-value var)
4111 (make-hash-table ':size size ':test 'equal))) 4117 (make-hash-table ':size size ':test 'equal)))
4112 (setq idlwave-sint-dirs nil 4118 (setq idlwave-sint-dirs nil
4113 idlwave-sint-libnames nil)) 4119 idlwave-sint-libnames nil))
@@ -4117,7 +4123,7 @@ blank lines."
4117 ;; Reset the buffer & shell hash 4123 ;; Reset the buffer & shell hash
4118 (loop for entry in entries 4124 (loop for entry in entries
4119 for var = (car entry) for size = (nth 1 entry) 4125 for var = (car entry) for size = (nth 1 entry)
4120 do (setcar (symbol-value var) 4126 do (setcar (symbol-value var)
4121 (make-hash-table ':size size ':test 'equal)))))) 4127 (make-hash-table ':size size ':test 'equal))))))
4122 4128
4123(defun idlwave-sintern-routine-or-method (name &optional class set) 4129(defun idlwave-sintern-routine-or-method (name &optional class set)
@@ -4204,11 +4210,11 @@ If DEFAULT-DIR is passed, it is used as the base of the directory"
4204 (setq class (idlwave-sintern-class class set)) 4210 (setq class (idlwave-sintern-class class set))
4205 (setq name (idlwave-sintern-method name set))) 4211 (setq name (idlwave-sintern-method name set)))
4206 (setq name (idlwave-sintern-routine name set))) 4212 (setq name (idlwave-sintern-routine name set)))
4207 4213
4208 ;; The source 4214 ;; The source
4209 (let ((source-type (car source)) 4215 (let ((source-type (car source))
4210 (source-file (nth 1 source)) 4216 (source-file (nth 1 source))
4211 (source-dir (if default-dir 4217 (source-dir (if default-dir
4212 (file-name-as-directory default-dir) 4218 (file-name-as-directory default-dir)
4213 (nth 2 source))) 4219 (nth 2 source)))
4214 (source-lib (nth 3 source))) 4220 (source-lib (nth 3 source)))
@@ -4217,7 +4223,7 @@ If DEFAULT-DIR is passed, it is used as the base of the directory"
4217 (if (stringp source-lib) 4223 (if (stringp source-lib)
4218 (setq source-lib (idlwave-sintern-libname source-lib set))) 4224 (setq source-lib (idlwave-sintern-libname source-lib set)))
4219 (setq source (list source-type source-file source-dir source-lib))) 4225 (setq source (list source-type source-file source-dir source-lib)))
4220 4226
4221 ;; The keywords 4227 ;; The keywords
4222 (setq kwds (mapcar (lambda (x) 4228 (setq kwds (mapcar (lambda (x)
4223 (idlwave-sintern-keyword-list x set)) 4229 (idlwave-sintern-keyword-list x set))
@@ -4267,7 +4273,9 @@ This defines the function `idlwave-sintern-TAG' and the variable
4267(defvar idlwave-user-catalog-routines nil 4273(defvar idlwave-user-catalog-routines nil
4268 "Holds the procedure routine-info from the user scan.") 4274 "Holds the procedure routine-info from the user scan.")
4269(defvar idlwave-library-catalog-routines nil 4275(defvar idlwave-library-catalog-routines nil
4270 "Holds the procedure routine-info from the library catalog files.") 4276 "Holds the procedure routine-info from the .idlwave_catalog library files.")
4277(defvar idlwave-library-catalog-libname nil
4278 "Name of library catalog loaded from .idlwave_catalog files.")
4271(defvar idlwave-path-alist nil 4279(defvar idlwave-path-alist nil
4272 "Alist with !PATH directories and zero or more flags if the dir has 4280 "Alist with !PATH directories and zero or more flags if the dir has
4273been scanned in a user catalog ('user) or discovered in a library 4281been scanned in a user catalog ('user) or discovered in a library
@@ -4355,10 +4363,10 @@ will re-read the catalog."
4355 "-l" (expand-file-name "~/.emacs") 4363 "-l" (expand-file-name "~/.emacs")
4356 "-l" "idlwave" 4364 "-l" "idlwave"
4357 "-f" "idlwave-rescan-catalog-directories")) 4365 "-f" "idlwave-rescan-catalog-directories"))
4358 (process (apply 'start-process "idlcat" 4366 (process (apply 'start-process "idlcat"
4359 nil emacs args))) 4367 nil emacs args)))
4360 (setq idlwave-catalog-process process) 4368 (setq idlwave-catalog-process process)
4361 (set-process-sentinel 4369 (set-process-sentinel
4362 process 4370 process
4363 (lambda (pro why) 4371 (lambda (pro why)
4364 (when (string-match "finished" why) 4372 (when (string-match "finished" why)
@@ -4384,6 +4392,8 @@ will re-read the catalog."
4384 4392
4385 4393
4386(defvar idlwave-load-rinfo-idle-timer) 4394(defvar idlwave-load-rinfo-idle-timer)
4395(defvar idlwave-shell-path-query)
4396
4387(defun idlwave-update-routine-info (&optional arg no-concatenate) 4397(defun idlwave-update-routine-info (&optional arg no-concatenate)
4388 "Update the internal routine-info lists. 4398 "Update the internal routine-info lists.
4389These lists are used by `idlwave-routine-info' (\\[idlwave-routine-info]) 4399These lists are used by `idlwave-routine-info' (\\[idlwave-routine-info])
@@ -4431,7 +4441,7 @@ information updated immediately, leave NO-CONCATENATE nil."
4431 ;; The override-idle means, even if the idle timer has done some 4441 ;; The override-idle means, even if the idle timer has done some
4432 ;; preparing work, load and renormalize everything anyway. 4442 ;; preparing work, load and renormalize everything anyway.
4433 (override-idle (or arg idlwave-buffer-case-takes-precedence))) 4443 (override-idle (or arg idlwave-buffer-case-takes-precedence)))
4434 4444
4435 (setq idlwave-buffer-routines nil 4445 (setq idlwave-buffer-routines nil
4436 idlwave-compiled-routines nil 4446 idlwave-compiled-routines nil
4437 idlwave-unresolved-routines nil) 4447 idlwave-unresolved-routines nil)
@@ -4442,7 +4452,7 @@ information updated immediately, leave NO-CONCATENATE nil."
4442 (idlwave-reset-sintern (cond (load t) 4452 (idlwave-reset-sintern (cond (load t)
4443 ((null idlwave-system-routines) t) 4453 ((null idlwave-system-routines) t)
4444 (t 'bufsh)))) 4454 (t 'bufsh))))
4445 4455
4446 (if idlwave-buffer-case-takes-precedence 4456 (if idlwave-buffer-case-takes-precedence
4447 ;; We can safely scan the buffer stuff first 4457 ;; We can safely scan the buffer stuff first
4448 (progn 4458 (progn
@@ -4457,9 +4467,9 @@ information updated immediately, leave NO-CONCATENATE nil."
4457 (idlwave-shell-is-running))) 4467 (idlwave-shell-is-running)))
4458 (ask-shell (and shell-is-running 4468 (ask-shell (and shell-is-running
4459 idlwave-query-shell-for-routine-info))) 4469 idlwave-query-shell-for-routine-info)))
4460 4470
4461 ;; Load the library catalogs again, first re-scanning the path 4471 ;; Load the library catalogs again, first re-scanning the path
4462 (when arg 4472 (when arg
4463 (if shell-is-running 4473 (if shell-is-running
4464 (idlwave-shell-send-command idlwave-shell-path-query 4474 (idlwave-shell-send-command idlwave-shell-path-query
4465 '(progn 4475 '(progn
@@ -4479,7 +4489,7 @@ information updated immediately, leave NO-CONCATENATE nil."
4479 ;; Therefore, we do a concatenation now, even though 4489 ;; Therefore, we do a concatenation now, even though
4480 ;; the shell might do it again. 4490 ;; the shell might do it again.
4481 (idlwave-concatenate-rinfo-lists nil 'run-hooks)) 4491 (idlwave-concatenate-rinfo-lists nil 'run-hooks))
4482 4492
4483 (when ask-shell 4493 (when ask-shell
4484 ;; Ask the shell about the routines it knows of. 4494 ;; Ask the shell about the routines it knows of.
4485 (message "Querying the shell") 4495 (message "Querying the shell")
@@ -4508,6 +4518,8 @@ information updated immediately, leave NO-CONCATENATE nil."
4508 nil 'idlwave-load-rinfo-next-step))) 4518 nil 'idlwave-load-rinfo-next-step)))
4509 (error nil)))) 4519 (error nil))))
4510 4520
4521(defvar idlwave-library-routines nil "Obsolete variable.")
4522
4511(defun idlwave-load-rinfo-next-step () 4523(defun idlwave-load-rinfo-next-step ()
4512 (let ((inhibit-quit t) 4524 (let ((inhibit-quit t)
4513 (arr idlwave-load-rinfo-steps-done)) 4525 (arr idlwave-load-rinfo-steps-done))
@@ -4541,7 +4553,7 @@ information updated immediately, leave NO-CONCATENATE nil."
4541 (progn 4553 (progn
4542 (setq idlwave-library-routines nil) 4554 (setq idlwave-library-routines nil)
4543 (ding) 4555 (ding)
4544 (message "Outdated user catalog: %s... recreate" 4556 (message "Outdated user catalog: %s... recreate"
4545 idlwave-user-catalog-file)) 4557 idlwave-user-catalog-file))
4546 (message "Loading user catalog in idle time...done")) 4558 (message "Loading user catalog in idle time...done"))
4547 (aset arr 2 t) 4559 (aset arr 2 t)
@@ -4549,15 +4561,15 @@ information updated immediately, leave NO-CONCATENATE nil."
4549 (when (not (aref arr 3)) 4561 (when (not (aref arr 3))
4550 (when idlwave-user-catalog-routines 4562 (when idlwave-user-catalog-routines
4551 (message "Normalizing user catalog routines in idle time...") 4563 (message "Normalizing user catalog routines in idle time...")
4552 (setq idlwave-user-catalog-routines 4564 (setq idlwave-user-catalog-routines
4553 (idlwave-sintern-rinfo-list 4565 (idlwave-sintern-rinfo-list
4554 idlwave-user-catalog-routines 'sys)) 4566 idlwave-user-catalog-routines 'sys))
4555 (message 4567 (message
4556 "Normalizing user catalog routines in idle time...done")) 4568 "Normalizing user catalog routines in idle time...done"))
4557 (aset arr 3 t) 4569 (aset arr 3 t)
4558 (throw 'exit t)) 4570 (throw 'exit t))
4559 (when (not (aref arr 4)) 4571 (when (not (aref arr 4))
4560 (idlwave-scan-library-catalogs 4572 (idlwave-scan-library-catalogs
4561 "Loading and normalizing library catalogs in idle time...") 4573 "Loading and normalizing library catalogs in idle time...")
4562 (aset arr 4 t) 4574 (aset arr 4 t)
4563 (throw 'exit t)) 4575 (throw 'exit t))
@@ -4598,8 +4610,8 @@ information updated immediately, leave NO-CONCATENATE nil."
4598 (setq idlwave-true-path-alist nil) 4610 (setq idlwave-true-path-alist nil)
4599 (when (or force (not (aref idlwave-load-rinfo-steps-done 3))) 4611 (when (or force (not (aref idlwave-load-rinfo-steps-done 3)))
4600 (message "Normalizing user catalog routines...") 4612 (message "Normalizing user catalog routines...")
4601 (setq idlwave-user-catalog-routines 4613 (setq idlwave-user-catalog-routines
4602 (idlwave-sintern-rinfo-list 4614 (idlwave-sintern-rinfo-list
4603 idlwave-user-catalog-routines 'sys)) 4615 idlwave-user-catalog-routines 'sys))
4604 (message "Normalizing user catalog routines...done"))) 4616 (message "Normalizing user catalog routines...done")))
4605 (when (or force (not (aref idlwave-load-rinfo-steps-done 4))) 4617 (when (or force (not (aref idlwave-load-rinfo-steps-done 4)))
@@ -4610,11 +4622,11 @@ information updated immediately, leave NO-CONCATENATE nil."
4610 4622
4611(defun idlwave-update-buffer-routine-info () 4623(defun idlwave-update-buffer-routine-info ()
4612 (let (res) 4624 (let (res)
4613 (cond 4625 (cond
4614 ((eq idlwave-scan-all-buffers-for-routine-info t) 4626 ((eq idlwave-scan-all-buffers-for-routine-info t)
4615 ;; Scan all buffers, current buffer last 4627 ;; Scan all buffers, current buffer last
4616 (message "Scanning all buffers...") 4628 (message "Scanning all buffers...")
4617 (setq res (idlwave-get-routine-info-from-buffers 4629 (setq res (idlwave-get-routine-info-from-buffers
4618 (reverse (buffer-list))))) 4630 (reverse (buffer-list)))))
4619 ((null idlwave-scan-all-buffers-for-routine-info) 4631 ((null idlwave-scan-all-buffers-for-routine-info)
4620 ;; Don't scan any buffers 4632 ;; Don't scan any buffers
@@ -4627,12 +4639,12 @@ information updated immediately, leave NO-CONCATENATE nil."
4627 (setq res (idlwave-get-routine-info-from-buffers 4639 (setq res (idlwave-get-routine-info-from-buffers
4628 (list (current-buffer)))))))) 4640 (list (current-buffer))))))))
4629 ;; Put the result into the correct variable 4641 ;; Put the result into the correct variable
4630 (setq idlwave-buffer-routines 4642 (setq idlwave-buffer-routines
4631 (idlwave-sintern-rinfo-list res 'set)))) 4643 (idlwave-sintern-rinfo-list res 'set))))
4632 4644
4633(defun idlwave-concatenate-rinfo-lists (&optional quiet run-hook) 4645(defun idlwave-concatenate-rinfo-lists (&optional quiet run-hook)
4634 "Put the different sources for routine information together." 4646 "Put the different sources for routine information together."
4635 ;; The sequence here is important because earlier definitions shadow 4647 ;; The sequence here is important because earlier definitions shadow
4636 ;; later ones. We assume that if things in the buffers are newer 4648 ;; later ones. We assume that if things in the buffers are newer
4637 ;; then in the shell of the system, they are meant to be different. 4649 ;; then in the shell of the system, they are meant to be different.
4638 (setcdr idlwave-last-system-routine-info-cons-cell 4650 (setcdr idlwave-last-system-routine-info-cons-cell
@@ -4644,7 +4656,7 @@ information updated immediately, leave NO-CONCATENATE nil."
4644 4656
4645 ;; Give a message with information about the number of routines we have. 4657 ;; Give a message with information about the number of routines we have.
4646 (unless quiet 4658 (unless quiet
4647 (message 4659 (message
4648 "Routines Found: buffer(%d) compiled(%d) library(%d) user(%d) system(%d)" 4660 "Routines Found: buffer(%d) compiled(%d) library(%d) user(%d) system(%d)"
4649 (length idlwave-buffer-routines) 4661 (length idlwave-buffer-routines)
4650 (length idlwave-compiled-routines) 4662 (length idlwave-compiled-routines)
@@ -4662,7 +4674,7 @@ information updated immediately, leave NO-CONCATENATE nil."
4662 (when (and (setq class (nth 2 x)) 4674 (when (and (setq class (nth 2 x))
4663 (not (assq class idlwave-class-alist))) 4675 (not (assq class idlwave-class-alist)))
4664 (push (list class) idlwave-class-alist))) 4676 (push (list class) idlwave-class-alist)))
4665 idlwave-class-alist))) 4677 idlwave-class-alist)))
4666 4678
4667;; Three functions for the hooks 4679;; Three functions for the hooks
4668(defun idlwave-save-buffer-update () 4680(defun idlwave-save-buffer-update ()
@@ -4695,7 +4707,7 @@ information updated immediately, leave NO-CONCATENATE nil."
4695 4707
4696(defun idlwave-replace-buffer-routine-info (file new) 4708(defun idlwave-replace-buffer-routine-info (file new)
4697 "Cut the part from FILE out of `idlwave-buffer-routines' and add NEW." 4709 "Cut the part from FILE out of `idlwave-buffer-routines' and add NEW."
4698 (let ((list idlwave-buffer-routines) 4710 (let ((list idlwave-buffer-routines)
4699 found) 4711 found)
4700 (while list 4712 (while list
4701 ;; The following test uses eq to make sure it works correctly 4713 ;; The following test uses eq to make sure it works correctly
@@ -4706,7 +4718,7 @@ information updated immediately, leave NO-CONCATENATE nil."
4706 (setcar list nil) 4718 (setcar list nil)
4707 (setq found t)) 4719 (setq found t))
4708 (if found 4720 (if found
4709 ;; End of that section reached. Jump. 4721 ;; End of that section reached. Jump.
4710 (setq list nil))) 4722 (setq list nil)))
4711 (setq list (cdr list))) 4723 (setq list (cdr list)))
4712 (setq idlwave-buffer-routines 4724 (setq idlwave-buffer-routines
@@ -4738,11 +4750,11 @@ information updated immediately, leave NO-CONCATENATE nil."
4738 (save-restriction 4750 (save-restriction
4739 (widen) 4751 (widen)
4740 (goto-char (point-min)) 4752 (goto-char (point-min))
4741 (while (re-search-forward 4753 (while (re-search-forward
4742 "^[ \t]*\\(pro\\|function\\)[ \t]" nil t) 4754 "^[ \t]*\\(pro\\|function\\)[ \t]" nil t)
4743 (setq string (buffer-substring-no-properties 4755 (setq string (buffer-substring-no-properties
4744 (match-beginning 0) 4756 (match-beginning 0)
4745 (progn 4757 (progn
4746 (idlwave-end-of-statement) 4758 (idlwave-end-of-statement)
4747 (point)))) 4759 (point))))
4748 (setq entry (idlwave-parse-definition string)) 4760 (setq entry (idlwave-parse-definition string))
@@ -4780,7 +4792,7 @@ information updated immediately, leave NO-CONCATENATE nil."
4780 (push (match-string 1 string) args))) 4792 (push (match-string 1 string) args)))
4781 ;; Normalize and sort. 4793 ;; Normalize and sort.
4782 (setq args (nreverse args)) 4794 (setq args (nreverse args))
4783 (setq keywords (sort keywords (lambda (a b) 4795 (setq keywords (sort keywords (lambda (a b)
4784 (string< (downcase a) (downcase b))))) 4796 (string< (downcase a) (downcase b)))))
4785 ;; Make and return the entry 4797 ;; Make and return the entry
4786 ;; We don't know which argument are optional, so this information 4798 ;; We don't know which argument are optional, so this information
@@ -4790,7 +4802,7 @@ information updated immediately, leave NO-CONCATENATE nil."
4790 class 4802 class
4791 (cond ((not (boundp 'idlwave-scanning-lib)) 4803 (cond ((not (boundp 'idlwave-scanning-lib))
4792 (list 'buffer (buffer-file-name))) 4804 (list 'buffer (buffer-file-name)))
4793; ((string= (downcase 4805; ((string= (downcase
4794; (file-name-sans-extension 4806; (file-name-sans-extension
4795; (file-name-nondirectory (buffer-file-name)))) 4807; (file-name-nondirectory (buffer-file-name))))
4796; (downcase name)) 4808; (downcase name))
@@ -4798,7 +4810,7 @@ information updated immediately, leave NO-CONCATENATE nil."
4798; (t (cons 'lib (file-name-nondirectory (buffer-file-name)))) 4810; (t (cons 'lib (file-name-nondirectory (buffer-file-name))))
4799 (t (list 'user (file-name-nondirectory (buffer-file-name)) 4811 (t (list 'user (file-name-nondirectory (buffer-file-name))
4800 idlwave-scanning-lib-dir "UserLib"))) 4812 idlwave-scanning-lib-dir "UserLib")))
4801 (concat 4813 (concat
4802 (if (string= type "function") "Result = " "") 4814 (if (string= type "function") "Result = " "")
4803 (if class "Obj ->[%s::]" "") 4815 (if class "Obj ->[%s::]" "")
4804 "%s" 4816 "%s"
@@ -4816,12 +4828,15 @@ information updated immediately, leave NO-CONCATENATE nil."
4816 4828
4817(defun idlwave-sys-dir () 4829(defun idlwave-sys-dir ()
4818 "Return the syslib directory, or a dummy that never matches." 4830 "Return the syslib directory, or a dummy that never matches."
4819 (if (string= idlwave-system-directory "") 4831 (cond
4820 "@@@@@@@@" 4832 ((and idlwave-system-directory
4821 idlwave-system-directory)) 4833 (not (string= idlwave-system-directory "")))
4834 idlwave-system-directory)
4835 ((getenv "IDL_DIR"))
4836 (t "@@@@@@@@")))
4837
4822 4838
4823 4839
4824(defvar idlwave-shell-path-query)
4825(defun idlwave-create-user-catalog-file (&optional arg) 4840(defun idlwave-create-user-catalog-file (&optional arg)
4826 "Scan all files on selected dirs of IDL search path for routine information. 4841 "Scan all files on selected dirs of IDL search path for routine information.
4827 4842
@@ -4842,10 +4857,10 @@ time - so no widget will pop up."
4842 (> (length idlwave-user-catalog-file) 0) 4857 (> (length idlwave-user-catalog-file) 0)
4843 (file-accessible-directory-p 4858 (file-accessible-directory-p
4844 (file-name-directory idlwave-user-catalog-file)) 4859 (file-name-directory idlwave-user-catalog-file))
4845 (not (string= "" (file-name-nondirectory 4860 (not (string= "" (file-name-nondirectory
4846 idlwave-user-catalog-file)))) 4861 idlwave-user-catalog-file))))
4847 (error "`idlwave-user-catalog-file' does not point to a file in an accessible directory")) 4862 (error "`idlwave-user-catalog-file' does not point to a file in an accessible directory"))
4848 4863
4849 (cond 4864 (cond
4850 ;; Rescan the known directories 4865 ;; Rescan the known directories
4851 ((and arg idlwave-path-alist 4866 ((and arg idlwave-path-alist
@@ -4855,13 +4870,13 @@ time - so no widget will pop up."
4855 ;; Expand the directories from library-path and run the widget 4870 ;; Expand the directories from library-path and run the widget
4856 (idlwave-library-path 4871 (idlwave-library-path
4857 (idlwave-display-user-catalog-widget 4872 (idlwave-display-user-catalog-widget
4858 (if idlwave-true-path-alist 4873 (if idlwave-true-path-alist
4859 ;; Propagate any flags on the existing path-alist 4874 ;; Propagate any flags on the existing path-alist
4860 (mapcar (lambda (x) 4875 (mapcar (lambda (x)
4861 (let ((path-entry (assoc (file-truename x) 4876 (let ((path-entry (assoc (file-truename x)
4862 idlwave-true-path-alist))) 4877 idlwave-true-path-alist)))
4863 (if path-entry 4878 (if path-entry
4864 (cons x (cdr path-entry)) 4879 (cons x (cdr path-entry))
4865 (list x)))) 4880 (list x))))
4866 (idlwave-expand-path idlwave-library-path)) 4881 (idlwave-expand-path idlwave-library-path))
4867 (mapcar 'list (idlwave-expand-path idlwave-library-path))))) 4882 (mapcar 'list (idlwave-expand-path idlwave-library-path)))))
@@ -4886,7 +4901,7 @@ time - so no widget will pop up."
4886 (idlwave-scan-library-catalogs "Locating library catalogs..." 'no-load) 4901 (idlwave-scan-library-catalogs "Locating library catalogs..." 'no-load)
4887 (idlwave-display-user-catalog-widget idlwave-path-alist))) 4902 (idlwave-display-user-catalog-widget idlwave-path-alist)))
4888 4903
4889(defconst idlwave-user-catalog-widget-help-string 4904(defconst idlwave-user-catalog-widget-help-string
4890 "This is the front-end to the creation of the IDLWAVE user catalog. 4905 "This is the front-end to the creation of the IDLWAVE user catalog.
4891Please select the directories on IDL's search path from which you 4906Please select the directories on IDL's search path from which you
4892would like to extract routine information, to be stored in the file: 4907would like to extract routine information, to be stored in the file:
@@ -4921,7 +4936,7 @@ directories and save the routine info.
4921 (make-local-variable 'idlwave-widget) 4936 (make-local-variable 'idlwave-widget)
4922 (widget-insert (format idlwave-user-catalog-widget-help-string 4937 (widget-insert (format idlwave-user-catalog-widget-help-string
4923 idlwave-user-catalog-file)) 4938 idlwave-user-catalog-file))
4924 4939
4925 (widget-create 'push-button 4940 (widget-create 'push-button
4926 :notify 'idlwave-widget-scan-user-lib-files 4941 :notify 'idlwave-widget-scan-user-lib-files
4927 "Scan & Save") 4942 "Scan & Save")
@@ -4931,7 +4946,7 @@ directories and save the routine info.
4931 "Delete File") 4946 "Delete File")
4932 (widget-insert " ") 4947 (widget-insert " ")
4933 (widget-create 'push-button 4948 (widget-create 'push-button
4934 :notify 4949 :notify
4935 '(lambda (&rest ignore) 4950 '(lambda (&rest ignore)
4936 (let ((path-list (widget-get idlwave-widget :path-dirs))) 4951 (let ((path-list (widget-get idlwave-widget :path-dirs)))
4937 (mapcar (lambda (x) 4952 (mapcar (lambda (x)
@@ -4942,7 +4957,7 @@ directories and save the routine info.
4942 "Select All Non-Lib") 4957 "Select All Non-Lib")
4943 (widget-insert " ") 4958 (widget-insert " ")
4944 (widget-create 'push-button 4959 (widget-create 'push-button
4945 :notify 4960 :notify
4946 '(lambda (&rest ignore) 4961 '(lambda (&rest ignore)
4947 (let ((path-list (widget-get idlwave-widget :path-dirs))) 4962 (let ((path-list (widget-get idlwave-widget :path-dirs)))
4948 (mapcar (lambda (x) 4963 (mapcar (lambda (x)
@@ -4958,18 +4973,18 @@ directories and save the routine info.
4958 (widget-insert "\n\n") 4973 (widget-insert "\n\n")
4959 4974
4960 (widget-insert "Select Directories: \n") 4975 (widget-insert "Select Directories: \n")
4961 4976
4962 (setq idlwave-widget 4977 (setq idlwave-widget
4963 (apply 'widget-create 4978 (apply 'widget-create
4964 'checklist 4979 'checklist
4965 :value (delq nil (mapcar (lambda (x) 4980 :value (delq nil (mapcar (lambda (x)
4966 (if (memq 'user (cdr x)) 4981 (if (memq 'user (cdr x))
4967 (car x))) 4982 (car x)))
4968 dirs-list)) 4983 dirs-list))
4969 :greedy t 4984 :greedy t
4970 :tag "List of directories" 4985 :tag "List of directories"
4971 (mapcar (lambda (x) 4986 (mapcar (lambda (x)
4972 (list 'item 4987 (list 'item
4973 (if (memq 'lib (cdr x)) 4988 (if (memq 'lib (cdr x))
4974 (concat "[LIB] " (car x) ) 4989 (concat "[LIB] " (car x) )
4975 (car x)))) dirs-list))) 4990 (car x)))) dirs-list)))
@@ -4979,7 +4994,7 @@ directories and save the routine info.
4979 (widget-setup) 4994 (widget-setup)
4980 (goto-char (point-min)) 4995 (goto-char (point-min))
4981 (delete-other-windows)) 4996 (delete-other-windows))
4982 4997
4983(defun idlwave-delete-user-catalog-file (&rest ignore) 4998(defun idlwave-delete-user-catalog-file (&rest ignore)
4984 (if (yes-or-no-p 4999 (if (yes-or-no-p
4985 (format "Delete file %s " idlwave-user-catalog-file)) 5000 (format "Delete file %s " idlwave-user-catalog-file))
@@ -4995,7 +5010,7 @@ directories and save the routine info.
4995 (this-path-alist path-alist) 5010 (this-path-alist path-alist)
4996 dir-entry) 5011 dir-entry)
4997 (while (setq dir-entry (pop this-path-alist)) 5012 (while (setq dir-entry (pop this-path-alist))
4998 (if (member 5013 (if (member
4999 (if (memq 'lib (cdr dir-entry)) 5014 (if (memq 'lib (cdr dir-entry))
5000 (concat "[LIB] " (car dir-entry)) 5015 (concat "[LIB] " (car dir-entry))
5001 (car dir-entry)) 5016 (car dir-entry))
@@ -5092,7 +5107,7 @@ directories and save the routine info.
5092 ;; Define the variable which knows the value of "!DIR" 5107 ;; Define the variable which knows the value of "!DIR"
5093 (insert (format "\n(setq idlwave-system-directory \"%s\")\n" 5108 (insert (format "\n(setq idlwave-system-directory \"%s\")\n"
5094 idlwave-system-directory)) 5109 idlwave-system-directory))
5095 5110
5096 ;; Define the variable which contains a list of all scanned directories 5111 ;; Define the variable which contains a list of all scanned directories
5097 (insert "\n(setq idlwave-path-alist\n '(") 5112 (insert "\n(setq idlwave-path-alist\n '(")
5098 (let ((standard-output (current-buffer))) 5113 (let ((standard-output (current-buffer)))
@@ -5132,7 +5147,7 @@ directories and save the routine info.
5132 (when (file-directory-p dir) 5147 (when (file-directory-p dir)
5133 (setq files (nreverse (directory-files dir t "[^.]"))) 5148 (setq files (nreverse (directory-files dir t "[^.]")))
5134 (while (setq file (pop files)) 5149 (while (setq file (pop files))
5135 (if (file-directory-p file) 5150 (if (file-directory-p file)
5136 (push (file-name-as-directory file) path))) 5151 (push (file-name-as-directory file) path)))
5137 (push dir path1))) 5152 (push dir path1)))
5138 path1)) 5153 path1))
@@ -5140,8 +5155,11 @@ directories and save the routine info.
5140 5155
5141;;----- Scanning the library catalogs ------------------ 5156;;----- Scanning the library catalogs ------------------
5142 5157
5158
5159
5160
5143(defun idlwave-scan-library-catalogs (&optional message-base no-load) 5161(defun idlwave-scan-library-catalogs (&optional message-base no-load)
5144 "Scan for library catalog files (.idlwave_catalog) and ingest. 5162 "Scan for library catalog files (.idlwave_catalog) and ingest.
5145 5163
5146All directories on `idlwave-path-alist' (or `idlwave-library-path' 5164All directories on `idlwave-path-alist' (or `idlwave-library-path'
5147instead, if present) are searched. Print MESSAGE-BASE along with the 5165instead, if present) are searched. Print MESSAGE-BASE along with the
@@ -5149,7 +5167,7 @@ libraries being loaded, if passed, and skip loading/normalizing if
5149NO-LOAD is non-nil. The variable `idlwave-use-library-catalogs' can 5167NO-LOAD is non-nil. The variable `idlwave-use-library-catalogs' can
5150be set to nil to disable library catalog scanning." 5168be set to nil to disable library catalog scanning."
5151 (when idlwave-use-library-catalogs 5169 (when idlwave-use-library-catalogs
5152 (let ((dirs 5170 (let ((dirs
5153 (if idlwave-library-path 5171 (if idlwave-library-path
5154 (idlwave-expand-path idlwave-library-path) 5172 (idlwave-expand-path idlwave-library-path)
5155 (mapcar 'car idlwave-path-alist))) 5173 (mapcar 'car idlwave-path-alist)))
@@ -5158,7 +5176,7 @@ be set to nil to disable library catalog scanning."
5158 (if message-base (message message-base)) 5176 (if message-base (message message-base))
5159 (while (setq dir (pop dirs)) 5177 (while (setq dir (pop dirs))
5160 (catch 'continue 5178 (catch 'continue
5161 (when (file-readable-p 5179 (when (file-readable-p
5162 (setq catalog (expand-file-name ".idlwave_catalog" dir))) 5180 (setq catalog (expand-file-name ".idlwave_catalog" dir)))
5163 (unless no-load 5181 (unless no-load
5164 (setq idlwave-library-catalog-routines nil) 5182 (setq idlwave-library-catalog-routines nil)
@@ -5166,20 +5184,20 @@ be set to nil to disable library catalog scanning."
5166 (condition-case nil 5184 (condition-case nil
5167 (load catalog t t t) 5185 (load catalog t t t)
5168 (error (throw 'continue t))) 5186 (error (throw 'continue t)))
5169 (when (and 5187 (when (and
5170 message-base 5188 message-base
5171 (not (string= idlwave-library-catalog-libname 5189 (not (string= idlwave-library-catalog-libname
5172 old-libname))) 5190 old-libname)))
5173 (message (concat message-base 5191 (message (concat message-base
5174 idlwave-library-catalog-libname)) 5192 idlwave-library-catalog-libname))
5175 (setq old-libname idlwave-library-catalog-libname)) 5193 (setq old-libname idlwave-library-catalog-libname))
5176 (when idlwave-library-catalog-routines 5194 (when idlwave-library-catalog-routines
5177 (setq all-routines 5195 (setq all-routines
5178 (append 5196 (append
5179 (idlwave-sintern-rinfo-list 5197 (idlwave-sintern-rinfo-list
5180 idlwave-library-catalog-routines 'sys dir) 5198 idlwave-library-catalog-routines 'sys dir)
5181 all-routines)))) 5199 all-routines))))
5182 5200
5183 ;; Add a 'lib flag if on path-alist 5201 ;; Add a 'lib flag if on path-alist
5184 (when (and idlwave-path-alist 5202 (when (and idlwave-path-alist
5185 (setq dir-entry (assoc dir idlwave-path-alist))) 5203 (setq dir-entry (assoc dir idlwave-path-alist)))
@@ -5190,17 +5208,17 @@ be set to nil to disable library catalog scanning."
5190;;----- Communicating with the Shell ------------------- 5208;;----- Communicating with the Shell -------------------
5191 5209
5192;; First, here is the idl program which can be used to query IDL for 5210;; First, here is the idl program which can be used to query IDL for
5193;; defined routines. 5211;; defined routines.
5194(defconst idlwave-routine-info.pro 5212(defconst idlwave-routine-info.pro
5195 " 5213 "
5196;; START OF IDLWAVE SUPPORT ROUTINES 5214;; START OF IDLWAVE SUPPORT ROUTINES
5197pro idlwave_print_info_entry,name,func=func,separator=sep 5215pro idlwave_print_info_entry,name,func=func,separator=sep
5198 ;; See if it's an object method 5216 ;; See if it's an object method
5199 if name eq '' then return 5217 if name eq '' then return
5200 func = keyword_set(func) 5218 func = keyword_set(func)
5201 methsep = strpos(name,'::') 5219 methsep = strpos(name,'::')
5202 meth = methsep ne -1 5220 meth = methsep ne -1
5203 5221
5204 ;; Get routine info 5222 ;; Get routine info
5205 pars = routine_info(name,/parameters,functions=func) 5223 pars = routine_info(name,/parameters,functions=func)
5206 source = routine_info(name,/source,functions=func) 5224 source = routine_info(name,/source,functions=func)
@@ -5208,12 +5226,12 @@ pro idlwave_print_info_entry,name,func=func,separator=sep
5208 nkw = pars.num_kw_args 5226 nkw = pars.num_kw_args
5209 if nargs gt 0 then args = pars.args 5227 if nargs gt 0 then args = pars.args
5210 if nkw gt 0 then kwargs = pars.kw_args 5228 if nkw gt 0 then kwargs = pars.kw_args
5211 5229
5212 ;; Trim the class, and make the name 5230 ;; Trim the class, and make the name
5213 if meth then begin 5231 if meth then begin
5214 class = strmid(name,0,methsep) 5232 class = strmid(name,0,methsep)
5215 name = strmid(name,methsep+2,strlen(name)-1) 5233 name = strmid(name,methsep+2,strlen(name)-1)
5216 if nargs gt 0 then begin 5234 if nargs gt 0 then begin
5217 ;; remove the self argument 5235 ;; remove the self argument
5218 wh = where(args ne 'SELF',nargs) 5236 wh = where(args ne 'SELF',nargs)
5219 if nargs gt 0 then args = args[wh] 5237 if nargs gt 0 then args = args[wh]
@@ -5222,7 +5240,7 @@ pro idlwave_print_info_entry,name,func=func,separator=sep
5222 ;; No class, just a normal routine. 5240 ;; No class, just a normal routine.
5223 class = \"\" 5241 class = \"\"
5224 endelse 5242 endelse
5225 5243
5226 ;; Calling sequence 5244 ;; Calling sequence
5227 cs = \"\" 5245 cs = \"\"
5228 if func then cs = 'Result = ' 5246 if func then cs = 'Result = '
@@ -5243,9 +5261,9 @@ pro idlwave_print_info_entry,name,func=func,separator=sep
5243 kwstring = kwstring + ' ' + kwargs[j] 5261 kwstring = kwstring + ' ' + kwargs[j]
5244 endfor 5262 endfor
5245 endif 5263 endif
5246 5264
5247 ret=(['IDLWAVE-PRO','IDLWAVE-FUN'])[func] 5265 ret=(['IDLWAVE-PRO','IDLWAVE-FUN'])[func]
5248 5266
5249 print,ret + ': ' + name + sep + class + sep + source[0].path $ 5267 print,ret + ': ' + name + sep + class + sep + source[0].path $
5250 + sep + cs + sep + kwstring 5268 + sep + cs + sep + kwstring
5251end 5269end
@@ -5285,7 +5303,7 @@ pro idlwave_get_class_tags, class
5285 if res then print,'IDLWAVE-CLASS-TAGS: '+class+' '+strjoin(tags,' ',/single) 5303 if res then print,'IDLWAVE-CLASS-TAGS: '+class+' '+strjoin(tags,' ',/single)
5286end 5304end
5287;; END OF IDLWAVE SUPPORT ROUTINES 5305;; END OF IDLWAVE SUPPORT ROUTINES
5288" 5306"
5289 "The idl programs to get info from the shell.") 5307 "The idl programs to get info from the shell.")
5290 5308
5291(defvar idlwave-idlwave_routine_info-compiled nil 5309(defvar idlwave-idlwave_routine_info-compiled nil
@@ -5308,12 +5326,12 @@ end
5308 (erase-buffer) 5326 (erase-buffer)
5309 (insert idlwave-routine-info.pro) 5327 (insert idlwave-routine-info.pro)
5310 (save-buffer 0)) 5328 (save-buffer 0))
5311 (idlwave-shell-send-command 5329 (idlwave-shell-send-command
5312 (concat ".run " idlwave-shell-temp-pro-file) 5330 (concat ".run " idlwave-shell-temp-pro-file)
5313 nil 'hide wait) 5331 nil 'hide wait)
5314; (message "SENDING SAVE") ; ???????????????????????? 5332; (message "SENDING SAVE") ; ????????????????????????
5315 (idlwave-shell-send-command 5333 (idlwave-shell-send-command
5316 (format "save,'idlwave_routine_info','idlwave_print_info_entry','idlwave_get_class_tags','idlwave_get_sysvars',FILE='%s',/ROUTINES" 5334 (format "save,'idlwave_routine_info','idlwave_print_info_entry','idlwave_get_class_tags','idlwave_get_sysvars',FILE='%s',/ROUTINES"
5317 (idlwave-shell-temp-file 'rinfo)) 5335 (idlwave-shell-temp-file 'rinfo))
5318 nil 'hide wait)) 5336 nil 'hide wait))
5319 5337
@@ -5396,7 +5414,7 @@ When we force a method or a method keyword, CLASS can specify the class."
5396 (completion-regexp-list 5414 (completion-regexp-list
5397 (if (equal arg '(16)) 5415 (if (equal arg '(16))
5398 (list (read-string (concat "Completion Regexp: ")))))) 5416 (list (read-string (concat "Completion Regexp: "))))))
5399 5417
5400 (if (and module (string-match "::" module)) 5418 (if (and module (string-match "::" module))
5401 (setq class (substring module 0 (match-beginning 0)) 5419 (setq class (substring module 0 (match-beginning 0))
5402 module (substring module (match-end 0)))) 5420 module (substring module (match-end 0))))
@@ -5417,7 +5435,7 @@ When we force a method or a method keyword, CLASS can specify the class."
5417 ;; Check for any special completion functions 5435 ;; Check for any special completion functions
5418 ((and idlwave-complete-special 5436 ((and idlwave-complete-special
5419 (idlwave-call-special idlwave-complete-special))) 5437 (idlwave-call-special idlwave-complete-special)))
5420 5438
5421 ((null what) 5439 ((null what)
5422 (error "Nothing to complete here")) 5440 (error "Nothing to complete here"))
5423 5441
@@ -5434,7 +5452,7 @@ When we force a method or a method keyword, CLASS can specify the class."
5434 (idlwave-all-class-inherits class-selector))) 5452 (idlwave-all-class-inherits class-selector)))
5435 (isa (concat "procedure" (if class-selector "-method" ""))) 5453 (isa (concat "procedure" (if class-selector "-method" "")))
5436 (type-selector 'pro)) 5454 (type-selector 'pro))
5437 (setq idlwave-completion-help-info 5455 (setq idlwave-completion-help-info
5438 (list 'routine nil type-selector class-selector nil super-classes)) 5456 (list 'routine nil type-selector class-selector nil super-classes))
5439 (idlwave-complete-in-buffer 5457 (idlwave-complete-in-buffer
5440 'procedure (if class-selector 'method 'routine) 5458 'procedure (if class-selector 'method 'routine)
@@ -5442,8 +5460,8 @@ When we force a method or a method keyword, CLASS can specify the class."
5442 (format "Select a %s name%s" 5460 (format "Select a %s name%s"
5443 isa 5461 isa
5444 (if class-selector 5462 (if class-selector
5445 (format " (class is %s)" 5463 (format " (class is %s)"
5446 (if (eq class-selector t) 5464 (if (eq class-selector t)
5447 "unknown" class-selector)) 5465 "unknown" class-selector))
5448 "")) 5466 ""))
5449 isa 5467 isa
@@ -5457,7 +5475,7 @@ When we force a method or a method keyword, CLASS can specify the class."
5457 (idlwave-all-class-inherits class-selector))) 5475 (idlwave-all-class-inherits class-selector)))
5458 (isa (concat "function" (if class-selector "-method" ""))) 5476 (isa (concat "function" (if class-selector "-method" "")))
5459 (type-selector 'fun)) 5477 (type-selector 'fun))
5460 (setq idlwave-completion-help-info 5478 (setq idlwave-completion-help-info
5461 (list 'routine nil type-selector class-selector nil super-classes)) 5479 (list 'routine nil type-selector class-selector nil super-classes))
5462 (idlwave-complete-in-buffer 5480 (idlwave-complete-in-buffer
5463 'function (if class-selector 'method 'routine) 5481 'function (if class-selector 'method 'routine)
@@ -5465,7 +5483,7 @@ When we force a method or a method keyword, CLASS can specify the class."
5465 (format "Select a %s name%s" 5483 (format "Select a %s name%s"
5466 isa 5484 isa
5467 (if class-selector 5485 (if class-selector
5468 (format " (class is %s)" 5486 (format " (class is %s)"
5469 (if (eq class-selector t) 5487 (if (eq class-selector t)
5470 "unknown" class-selector)) 5488 "unknown" class-selector))
5471 "")) 5489 ""))
@@ -5488,21 +5506,23 @@ When we force a method or a method keyword, CLASS can specify the class."
5488 (isa (format "procedure%s-keyword" (if class "-method" ""))) 5506 (isa (format "procedure%s-keyword" (if class "-method" "")))
5489 (entry (idlwave-best-rinfo-assq 5507 (entry (idlwave-best-rinfo-assq
5490 name 'pro class (idlwave-routines))) 5508 name 'pro class (idlwave-routines)))
5509 (system (if entry (eq (car (nth 3 entry)) 'system)))
5491 (list (idlwave-entry-keywords entry 'do-link))) 5510 (list (idlwave-entry-keywords entry 'do-link)))
5492 (unless (or entry (eq class t)) 5511 (unless (or entry (eq class t))
5493 (error "Nothing known about procedure %s" 5512 (error "Nothing known about procedure %s"
5494 (idlwave-make-full-name class name))) 5513 (idlwave-make-full-name class name)))
5495 (setq list (idlwave-fix-keywords name 'pro class list super-classes)) 5514 (setq list (idlwave-fix-keywords name 'pro class list
5515 super-classes system))
5496 (unless list (error "No keywords available for procedure %s" 5516 (unless list (error "No keywords available for procedure %s"
5497 (idlwave-make-full-name class name))) 5517 (idlwave-make-full-name class name)))
5498 (setq idlwave-completion-help-info 5518 (setq idlwave-completion-help-info
5499 (list 'keyword name type-selector class-selector entry super-classes)) 5519 (list 'keyword name type-selector class-selector entry super-classes))
5500 (idlwave-complete-in-buffer 5520 (idlwave-complete-in-buffer
5501 'keyword 'keyword list nil 5521 'keyword 'keyword list nil
5502 (format "Select keyword for procedure %s%s" 5522 (format "Select keyword for procedure %s%s"
5503 (idlwave-make-full-name class name) 5523 (idlwave-make-full-name class name)
5504 (if (or (member '("_EXTRA") list) 5524 (if (or (member '("_EXTRA") list)
5505 (member '("_REF_EXTRA") list)) 5525 (member '("_REF_EXTRA") list))
5506 " (note _EXTRA)" "")) 5526 " (note _EXTRA)" ""))
5507 isa 5527 isa
5508 'idlwave-attach-keyword-classes))) 5528 'idlwave-attach-keyword-classes)))
@@ -5519,12 +5539,14 @@ When we force a method or a method keyword, CLASS can specify the class."
5519 (isa (format "function%s-keyword" (if class "-method" ""))) 5539 (isa (format "function%s-keyword" (if class "-method" "")))
5520 (entry (idlwave-best-rinfo-assq 5540 (entry (idlwave-best-rinfo-assq
5521 name 'fun class (idlwave-routines))) 5541 name 'fun class (idlwave-routines)))
5542 (system (if entry (eq (car (nth 3 entry)) 'system)))
5522 (list (idlwave-entry-keywords entry 'do-link)) 5543 (list (idlwave-entry-keywords entry 'do-link))
5523 msg-name) 5544 msg-name)
5524 (unless (or entry (eq class t)) 5545 (unless (or entry (eq class t))
5525 (error "Nothing known about function %s" 5546 (error "Nothing known about function %s"
5526 (idlwave-make-full-name class name))) 5547 (idlwave-make-full-name class name)))
5527 (setq list (idlwave-fix-keywords name 'fun class list super-classes)) 5548 (setq list (idlwave-fix-keywords name 'fun class list
5549 super-classes system))
5528 ;; OBJ_NEW: Messages mention the proper Init method 5550 ;; OBJ_NEW: Messages mention the proper Init method
5529 (setq msg-name (if (and (null class) 5551 (setq msg-name (if (and (null class)
5530 (string= (upcase name) "OBJ_NEW")) 5552 (string= (upcase name) "OBJ_NEW"))
@@ -5532,14 +5554,14 @@ When we force a method or a method keyword, CLASS can specify the class."
5532 "::Init (via OBJ_NEW)") 5554 "::Init (via OBJ_NEW)")
5533 (idlwave-make-full-name class name))) 5555 (idlwave-make-full-name class name)))
5534 (unless list (error "No keywords available for function %s" 5556 (unless list (error "No keywords available for function %s"
5535 msg-name)) 5557 msg-name))
5536 (setq idlwave-completion-help-info 5558 (setq idlwave-completion-help-info
5537 (list 'keyword name type-selector class-selector nil super-classes)) 5559 (list 'keyword name type-selector class-selector nil super-classes))
5538 (idlwave-complete-in-buffer 5560 (idlwave-complete-in-buffer
5539 'keyword 'keyword list nil 5561 'keyword 'keyword list nil
5540 (format "Select keyword for function %s%s" msg-name 5562 (format "Select keyword for function %s%s" msg-name
5541 (if (or (member '("_EXTRA") list) 5563 (if (or (member '("_EXTRA") list)
5542 (member '("_REF_EXTRA") list)) 5564 (member '("_REF_EXTRA") list))
5543 " (note _EXTRA)" "")) 5565 " (note _EXTRA)" ""))
5544 isa 5566 isa
5545 'idlwave-attach-keyword-classes))) 5567 'idlwave-attach-keyword-classes)))
@@ -5577,10 +5599,10 @@ other completions will be tried.")
5577 ("class"))) 5599 ("class")))
5578 (module (idlwave-sintern-routine-or-method module class)) 5600 (module (idlwave-sintern-routine-or-method module class))
5579 (class (idlwave-sintern-class class)) 5601 (class (idlwave-sintern-class class))
5580 (what (cond 5602 (what (cond
5581 ((equal what 0) 5603 ((equal what 0)
5582 (setq what 5604 (setq what
5583 (intern (completing-read 5605 (intern (completing-read
5584 "Complete what? " what-list nil t)))) 5606 "Complete what? " what-list nil t))))
5585 ((integerp what) 5607 ((integerp what)
5586 (setq what (intern (car (nth (1- what) what-list))))) 5608 (setq what (intern (car (nth (1- what) what-list)))))
@@ -5602,7 +5624,7 @@ other completions will be tried.")
5602 (super-classes nil) 5624 (super-classes nil)
5603 (type-selector 'pro) 5625 (type-selector 'pro)
5604 (pro (or module 5626 (pro (or module
5605 (idlwave-completing-read 5627 (idlwave-completing-read
5606 "Procedure: " (idlwave-routines) 'idlwave-selector)))) 5628 "Procedure: " (idlwave-routines) 'idlwave-selector))))
5607 (setq pro (idlwave-sintern-routine pro)) 5629 (setq pro (idlwave-sintern-routine pro))
5608 (list nil-list nil-list 'procedure-keyword 5630 (list nil-list nil-list 'procedure-keyword
@@ -5616,7 +5638,7 @@ other completions will be tried.")
5616 (super-classes nil) 5638 (super-classes nil)
5617 (type-selector 'fun) 5639 (type-selector 'fun)
5618 (func (or module 5640 (func (or module
5619 (idlwave-completing-read 5641 (idlwave-completing-read
5620 "Function: " (idlwave-routines) 'idlwave-selector)))) 5642 "Function: " (idlwave-routines) 'idlwave-selector))))
5621 (setq func (idlwave-sintern-routine func)) 5643 (setq func (idlwave-sintern-routine func))
5622 (list nil-list nil-list 'function-keyword 5644 (list nil-list nil-list 'function-keyword
@@ -5656,7 +5678,7 @@ other completions will be tried.")
5656 5678
5657 ((eq what 'class) 5679 ((eq what 'class)
5658 (list nil-list nil-list 'class nil-list nil)) 5680 (list nil-list nil-list 'class nil-list nil))
5659 5681
5660 (t (error "Invalid value for WHAT"))))) 5682 (t (error "Invalid value for WHAT")))))
5661 5683
5662(defun idlwave-completing-read (&rest args) 5684(defun idlwave-completing-read (&rest args)
@@ -5679,7 +5701,7 @@ other completions will be tried.")
5679 (stringp idlwave-shell-default-directory) 5701 (stringp idlwave-shell-default-directory)
5680 (file-directory-p idlwave-shell-default-directory)) 5702 (file-directory-p idlwave-shell-default-directory))
5681 idlwave-shell-default-directory 5703 idlwave-shell-default-directory
5682 default-directory))) 5704 default-directory)))
5683 (comint-dynamic-complete-filename))) 5705 (comint-dynamic-complete-filename)))
5684 5706
5685(defun idlwave-make-full-name (class name) 5707(defun idlwave-make-full-name (class name)
@@ -5688,7 +5710,7 @@ other completions will be tried.")
5688 5710
5689(defun idlwave-rinfo-assoc (name type class list) 5711(defun idlwave-rinfo-assoc (name type class list)
5690 "Like `idlwave-rinfo-assq', but sintern strings first." 5712 "Like `idlwave-rinfo-assq', but sintern strings first."
5691 (idlwave-rinfo-assq 5713 (idlwave-rinfo-assq
5692 (idlwave-sintern-routine-or-method name class) 5714 (idlwave-sintern-routine-or-method name class)
5693 type (idlwave-sintern-class class) list)) 5715 type (idlwave-sintern-class class) list))
5694 5716
@@ -5712,7 +5734,7 @@ other completions will be tried.")
5712 (setq classes nil))) 5734 (setq classes nil)))
5713 rtn)) 5735 rtn))
5714 5736
5715(defun idlwave-best-rinfo-assq (name type class list &optional with-file 5737(defun idlwave-best-rinfo-assq (name type class list &optional with-file
5716 keep-system) 5738 keep-system)
5717 "Like `idlwave-rinfo-assq', but get all twins and sort, then return first. 5739 "Like `idlwave-rinfo-assq', but get all twins and sort, then return first.
5718If WITH-FILE is passed, find the best rinfo entry with a file 5740If WITH-FILE is passed, find the best rinfo entry with a file
@@ -5737,7 +5759,7 @@ syslib files."
5737 twins))))) 5759 twins)))))
5738 (car twins))) 5760 (car twins)))
5739 5761
5740(defun idlwave-best-rinfo-assoc (name type class list &optional with-file 5762(defun idlwave-best-rinfo-assoc (name type class list &optional with-file
5741 keep-system) 5763 keep-system)
5742 "Like `idlwave-best-rinfo-assq', but sintern strings first." 5764 "Like `idlwave-best-rinfo-assq', but sintern strings first."
5743 (idlwave-best-rinfo-assq 5765 (idlwave-best-rinfo-assq
@@ -5828,7 +5850,7 @@ INFO is as returned by idlwave-what-function or -procedure."
5828Must accept two arguments: `apos' and `info'") 5850Must accept two arguments: `apos' and `info'")
5829 5851
5830(defun idlwave-determine-class (info type) 5852(defun idlwave-determine-class (info type)
5831 ;; Determine the class of a routine call. 5853 ;; Determine the class of a routine call.
5832 ;; INFO is the `cw-list' structure as returned by idlwave-where. 5854 ;; INFO is the `cw-list' structure as returned by idlwave-where.
5833 ;; The second element in this structure is the class. When nil, we 5855 ;; The second element in this structure is the class. When nil, we
5834 ;; return nil. When t, try to get the class from text properties at 5856 ;; return nil. When t, try to get the class from text properties at
@@ -5848,7 +5870,7 @@ Must accept two arguments: `apos' and `info'")
5848 (dassoc (cdr dassoc)) 5870 (dassoc (cdr dassoc))
5849 (t t))) 5871 (t t)))
5850 (arrow (and apos (string= (buffer-substring apos (+ 2 apos)) "->"))) 5872 (arrow (and apos (string= (buffer-substring apos (+ 2 apos)) "->")))
5851 (is-self 5873 (is-self
5852 (and arrow 5874 (and arrow
5853 (save-excursion (goto-char apos) 5875 (save-excursion (goto-char apos)
5854 (forward-word -1) 5876 (forward-word -1)
@@ -5869,19 +5891,19 @@ Must accept two arguments: `apos' and `info'")
5869 (setq class (or (nth 2 (idlwave-current-routine)) class))) 5891 (setq class (or (nth 2 (idlwave-current-routine)) class)))
5870 5892
5871 ;; Before prompting, try any special class determination routines 5893 ;; Before prompting, try any special class determination routines
5872 (when (and (eq t class) 5894 (when (and (eq t class)
5873 idlwave-determine-class-special 5895 idlwave-determine-class-special
5874 (not force-query)) 5896 (not force-query))
5875 (setq special-class 5897 (setq special-class
5876 (idlwave-call-special idlwave-determine-class-special apos)) 5898 (idlwave-call-special idlwave-determine-class-special apos))
5877 (if special-class 5899 (if special-class
5878 (setq class (idlwave-sintern-class special-class) 5900 (setq class (idlwave-sintern-class special-class)
5879 store idlwave-store-inquired-class))) 5901 store idlwave-store-inquired-class)))
5880 5902
5881 ;; Prompt for a class, if we need to 5903 ;; Prompt for a class, if we need to
5882 (when (and (eq class t) 5904 (when (and (eq class t)
5883 (or force-query query)) 5905 (or force-query query))
5884 (setq class-alist 5906 (setq class-alist
5885 (mapcar 'list (idlwave-all-method-classes (car info) type))) 5907 (mapcar 'list (idlwave-all-method-classes (car info) type)))
5886 (setq class 5908 (setq class
5887 (idlwave-sintern-class 5909 (idlwave-sintern-class
@@ -5890,9 +5912,9 @@ Must accept two arguments: `apos' and `info'")
5890 (error "No classes available with method %s" (car info))) 5912 (error "No classes available with method %s" (car info)))
5891 ((and (= (length class-alist) 1) (not force-query)) 5913 ((and (= (length class-alist) 1) (not force-query))
5892 (car (car class-alist))) 5914 (car (car class-alist)))
5893 (t 5915 (t
5894 (setq store idlwave-store-inquired-class) 5916 (setq store idlwave-store-inquired-class)
5895 (idlwave-completing-read 5917 (idlwave-completing-read
5896 (format "Class%s: " (if (stringp (car info)) 5918 (format "Class%s: " (if (stringp (car info))
5897 (format " for %s method %s" 5919 (format " for %s method %s"
5898 type (car info)) 5920 type (car info))
@@ -5904,9 +5926,9 @@ Must accept two arguments: `apos' and `info'")
5904 ;; We have a real class here 5926 ;; We have a real class here
5905 (when (and store arrow) 5927 (when (and store arrow)
5906 (condition-case () 5928 (condition-case ()
5907 (add-text-properties 5929 (add-text-properties
5908 apos (+ apos 2) 5930 apos (+ apos 2)
5909 `(idlwave-class ,class face ,idlwave-class-arrow-face 5931 `(idlwave-class ,class face ,idlwave-class-arrow-face
5910 rear-nonsticky t)) 5932 rear-nonsticky t))
5911 (error nil))) 5933 (error nil)))
5912 (setf (nth 2 info) class)) 5934 (setf (nth 2 info) class))
@@ -5934,14 +5956,14 @@ Must accept two arguments: `apos' and `info'")
5934 5956
5935 5957
5936(defun idlwave-where () 5958(defun idlwave-where ()
5937 "Find out where we are. 5959 "Find out where we are.
5938The return value is a list with the following stuff: 5960The return value is a list with the following stuff:
5939\(PRO-LIST FUNC-LIST COMPLETE-WHAT CW-LIST LAST-CHAR) 5961\(PRO-LIST FUNC-LIST COMPLETE-WHAT CW-LIST LAST-CHAR)
5940 5962
5941PRO-LIST (PRO POINT CLASS ARROW) 5963PRO-LIST (PRO POINT CLASS ARROW)
5942FUNC-LIST (FUNC POINT CLASS ARROW) 5964FUNC-LIST (FUNC POINT CLASS ARROW)
5943COMPLETE-WHAT a symbol indicating what kind of completion makes sense here 5965COMPLETE-WHAT a symbol indicating what kind of completion makes sense here
5944CW-LIST (PRO-OR-FUNC POINT CLASS ARROW) Like PRO-LIST, for what can 5966CW-LIST (PRO-OR-FUNC POINT CLASS ARROW) Like PRO-LIST, for what can
5945 be completed here. 5967 be completed here.
5946LAST-CHAR last relevant character before point (non-white non-comment, 5968LAST-CHAR last relevant character before point (non-white non-comment,
5947 not part of current identifier or leading slash). 5969 not part of current identifier or leading slash).
@@ -5953,7 +5975,7 @@ POINT: Where is this
5953CLASS: What class has the routine (nil=no, t=is method, but class unknown) 5975CLASS: What class has the routine (nil=no, t=is method, but class unknown)
5954ARROW: Location of the arrow" 5976ARROW: Location of the arrow"
5955 (idlwave-routines) 5977 (idlwave-routines)
5956 (let* (;(bos (save-excursion (idlwave-beginning-of-statement) (point))) 5978 (let* (;(bos (save-excursion (idlwave-beginning-of-statement) (point)))
5957 (bos (save-excursion (idlwave-start-of-substatement 'pre) (point))) 5979 (bos (save-excursion (idlwave-start-of-substatement 'pre) (point)))
5958 (func-entry (idlwave-what-function bos)) 5980 (func-entry (idlwave-what-function bos))
5959 (func (car func-entry)) 5981 (func (car func-entry))
@@ -5975,8 +5997,8 @@ ARROW: Location of the arrow"
5975 ((string-match "\\`[ \t]*\\(pro\\|function\\)[ \t]+[a-zA-Z0-9_]*\\'" 5997 ((string-match "\\`[ \t]*\\(pro\\|function\\)[ \t]+[a-zA-Z0-9_]*\\'"
5976 match-string) 5998 match-string)
5977 (setq cw 'class)) 5999 (setq cw 'class))
5978 ((string-match 6000 ((string-match
5979 "\\`[ \t]*\\([a-zA-Z][a-zA-Z0-9$_]*\\)?\\'" 6001 "\\`[ \t]*\\([a-zA-Z][a-zA-Z0-9$_]*\\)?\\'"
5980 (if (> pro-point 0) 6002 (if (> pro-point 0)
5981 (buffer-substring pro-point (point)) 6003 (buffer-substring pro-point (point))
5982 match-string)) 6004 match-string))
@@ -5987,11 +6009,11 @@ ARROW: Location of the arrow"
5987 nil) 6009 nil)
5988 ((string-match "OBJ_NEW([ \t]*['\"]\\([a-zA-Z0-9$_]*\\)?\\'" 6010 ((string-match "OBJ_NEW([ \t]*['\"]\\([a-zA-Z0-9$_]*\\)?\\'"
5989 match-string) 6011 match-string)
5990 (setq cw 'class)) 6012 (setq cw 'class))
5991 ((string-match "\\<inherits\\s-+\\([a-zA-Z0-9$_]*\\)?\\'" 6013 ((string-match "\\<inherits\\s-+\\([a-zA-Z0-9$_]*\\)?\\'"
5992 match-string) 6014 match-string)
5993 (setq cw 'class)) 6015 (setq cw 'class))
5994 ((and func 6016 ((and func
5995 (> func-point pro-point) 6017 (> func-point pro-point)
5996 (= func-level 1) 6018 (= func-level 1)
5997 (memq last-char '(?\( ?,))) 6019 (memq last-char '(?\( ?,)))
@@ -6037,7 +6059,7 @@ ARROW: Location of the arrow"
6037 ;; searches to this point. 6059 ;; searches to this point.
6038 6060
6039 (catch 'exit 6061 (catch 'exit
6040 (let (pos 6062 (let (pos
6041 func-point 6063 func-point
6042 (cnt 0) 6064 (cnt 0)
6043 func arrow-start class) 6065 func arrow-start class)
@@ -6052,18 +6074,18 @@ ARROW: Location of the arrow"
6052 (setq pos (point)) 6074 (setq pos (point))
6053 (incf cnt) 6075 (incf cnt)
6054 (when (and (= (following-char) ?\() 6076 (when (and (= (following-char) ?\()
6055 (re-search-backward 6077 (re-search-backward
6056 "\\(::\\|\\<\\)\\([a-zA-Z][a-zA-Z0-9$_]*\\)[ \t]*\\=" 6078 "\\(::\\|\\<\\)\\([a-zA-Z][a-zA-Z0-9$_]*\\)[ \t]*\\="
6057 bound t)) 6079 bound t))
6058 (setq func (match-string 2) 6080 (setq func (match-string 2)
6059 func-point (goto-char (match-beginning 2)) 6081 func-point (goto-char (match-beginning 2))
6060 pos func-point) 6082 pos func-point)
6061 (if (re-search-backward 6083 (if (re-search-backward
6062 "->[ \t]*\\(\\([a-zA-Z][a-zA-Z0-9$_]*\\)::\\)?\\=" bound t) 6084 "->[ \t]*\\(\\([a-zA-Z][a-zA-Z0-9$_]*\\)::\\)?\\=" bound t)
6063 (setq arrow-start (copy-marker (match-beginning 0)) 6085 (setq arrow-start (copy-marker (match-beginning 0))
6064 class (or (match-string 2) t))) 6086 class (or (match-string 2) t)))
6065 (throw 6087 (throw
6066 'exit 6088 'exit
6067 (list 6089 (list
6068 (idlwave-sintern-routine-or-method func class) 6090 (idlwave-sintern-routine-or-method func class)
6069 (idlwave-sintern-class class) 6091 (idlwave-sintern-class class)
@@ -6079,18 +6101,18 @@ ARROW: Location of the arrow"
6079 ;; searches to this point. 6101 ;; searches to this point.
6080 (let ((pos (point)) pro-point 6102 (let ((pos (point)) pro-point
6081 pro class arrow-start string) 6103 pro class arrow-start string)
6082 (save-excursion 6104 (save-excursion
6083 ;;(idlwave-beginning-of-statement) 6105 ;;(idlwave-beginning-of-statement)
6084 (idlwave-start-of-substatement 'pre) 6106 (idlwave-start-of-substatement 'pre)
6085 (setq string (buffer-substring (point) pos)) 6107 (setq string (buffer-substring (point) pos))
6086 (if (string-match 6108 (if (string-match
6087 "\\`[ \t]*\\([a-zA-Z][a-zA-Z0-9$_]*\\)[ \t]*\\(,\\|\\'\\)" string) 6109 "\\`[ \t]*\\([a-zA-Z][a-zA-Z0-9$_]*\\)[ \t]*\\(,\\|\\'\\)" string)
6088 (setq pro (match-string 1 string) 6110 (setq pro (match-string 1 string)
6089 pro-point (+ (point) (match-beginning 1))) 6111 pro-point (+ (point) (match-beginning 1)))
6090 (if (and (idlwave-skip-object) 6112 (if (and (idlwave-skip-object)
6091 (setq string (buffer-substring (point) pos)) 6113 (setq string (buffer-substring (point) pos))
6092 (string-match 6114 (string-match
6093 "\\`[ \t]*\\(->\\)[ \t]*\\(\\([a-zA-Z][a-zA-Z0-9$_]*\\)::\\)?\\([a-zA-Z][a-zA-Z0-9$_]*\\)?[ \t]*\\(,\\|\\(\\$\\s *\\(;.*\\)?\\)?$\\)" 6115 "\\`[ \t]*\\(->\\)[ \t]*\\(\\([a-zA-Z][a-zA-Z0-9$_]*\\)::\\)?\\([a-zA-Z][a-zA-Z0-9$_]*\\)?[ \t]*\\(,\\|\\(\\$\\s *\\(;.*\\)?\\)?$\\)"
6094 string)) 6116 string))
6095 (setq pro (if (match-beginning 4) 6117 (setq pro (if (match-beginning 4)
6096 (match-string 4 string)) 6118 (match-string 4 string))
@@ -6134,7 +6156,7 @@ ARROW: Location of the arrow"
6134 (throw 'exit nil)))) 6156 (throw 'exit nil))))
6135 (goto-char pos) 6157 (goto-char pos)
6136 nil))) 6158 nil)))
6137 6159
6138(defun idlwave-last-valid-char () 6160(defun idlwave-last-valid-char ()
6139 "Return the last character before point which is not white or a comment 6161 "Return the last character before point which is not white or a comment
6140and also not part of the current identifier. Since we do this in 6162and also not part of the current identifier. Since we do this in
@@ -6155,7 +6177,7 @@ This function is not general, can only be used for completion stuff."
6155 ((memq (preceding-char) '(?\; ?\$)) (throw 'exit nil)) 6177 ((memq (preceding-char) '(?\; ?\$)) (throw 'exit nil))
6156 ((eq (preceding-char) ?\n) 6178 ((eq (preceding-char) ?\n)
6157 (beginning-of-line 0) 6179 (beginning-of-line 0)
6158 (if (looking-at "\\([^;\n]*\\)\\$[ \t]*\\(;[^\n]*\\)?\n") 6180 (if (looking-at "\\([^\n]*\\)\\$[ \t]*\\(;[^\n]*\\)?\n")
6159 ;; continuation line 6181 ;; continuation line
6160 (goto-char (match-end 1)) 6182 (goto-char (match-end 1))
6161 (throw 'exit nil))) 6183 (throw 'exit nil)))
@@ -6224,23 +6246,23 @@ accumulate information on matching completions."
6224 ((or (eq completion t) 6246 ((or (eq completion t)
6225 (and (= 1 (length (setq all-completions 6247 (and (= 1 (length (setq all-completions
6226 (idlwave-uniquify 6248 (idlwave-uniquify
6227 (all-completions part list 6249 (all-completions part list
6228 (or special-selector 6250 (or special-selector
6229 selector)))))) 6251 selector))))))
6230 (equal dpart dcompletion))) 6252 (equal dpart dcompletion)))
6231 ;; This is already complete 6253 ;; This is already complete
6232 (idlwave-after-successful-completion type slash beg) 6254 (idlwave-after-successful-completion type slash beg)
6233 (message "%s is already the complete %s" part isa) 6255 (message "%s is already the complete %s" part isa)
6234 nil) 6256 nil)
6235 (t 6257 (t
6236 ;; We cannot add something - offer a list. 6258 ;; We cannot add something - offer a list.
6237 (message "Making completion list...") 6259 (message "Making completion list...")
6238 6260
6239 (unless idlwave-completion-help-links ; already set somewhere? 6261 (unless idlwave-completion-help-links ; already set somewhere?
6240 (mapcar (lambda (x) ; Pass link prop through to highlight-linked 6262 (mapcar (lambda (x) ; Pass link prop through to highlight-linked
6241 (let ((link (get-text-property 0 'link (car x)))) 6263 (let ((link (get-text-property 0 'link (car x))))
6242 (if link 6264 (if link
6243 (push (cons (car x) link) 6265 (push (cons (car x) link)
6244 idlwave-completion-help-links)))) 6266 idlwave-completion-help-links))))
6245 list)) 6267 list))
6246 (let* ((list all-completions) 6268 (let* ((list all-completions)
@@ -6250,7 +6272,7 @@ accumulate information on matching completions."
6250; (completion-fixup-function ; Emacs 6272; (completion-fixup-function ; Emacs
6251; (lambda () (and (eq (preceding-char) ?>) 6273; (lambda () (and (eq (preceding-char) ?>)
6252; (re-search-backward " <" beg t))))) 6274; (re-search-backward " <" beg t)))))
6253 6275
6254 (setq list (sort list (lambda (a b) 6276 (setq list (sort list (lambda (a b)
6255 (string< (downcase a) (downcase b))))) 6277 (string< (downcase a) (downcase b)))))
6256 (if prepare-display-function 6278 (if prepare-display-function
@@ -6260,7 +6282,7 @@ accumulate information on matching completions."
6260 idlwave-complete-empty-string-as-lower-case) 6282 idlwave-complete-empty-string-as-lower-case)
6261 (not idlwave-completion-force-default-case)) 6283 (not idlwave-completion-force-default-case))
6262 (setq list (mapcar (lambda (x) 6284 (setq list (mapcar (lambda (x)
6263 (if (listp x) 6285 (if (listp x)
6264 (setcar x (downcase (car x))) 6286 (setcar x (downcase (car x)))
6265 (setq x (downcase x))) 6287 (setq x (downcase x)))
6266 x) 6288 x)
@@ -6280,19 +6302,19 @@ accumulate information on matching completions."
6280 (re-search-backward "\\<\\(pro\\|function\\)[ \t]+\\=" 6302 (re-search-backward "\\<\\(pro\\|function\\)[ \t]+\\="
6281 (- (point) 15) t) 6303 (- (point) 15) t)
6282 (goto-char (point-min)) 6304 (goto-char (point-min))
6283 (re-search-forward 6305 (re-search-forward
6284 "^[ \t]*\\(pro\\|function\\)[ \t]+\\([a-zA-Z0-9_]+::\\)" nil t)))) 6306 "^[ \t]*\\(pro\\|function\\)[ \t]+\\([a-zA-Z0-9_]+::\\)" nil t))))
6285 ;; Yank the full class specification 6307 ;; Yank the full class specification
6286 (insert (match-string 2)) 6308 (insert (match-string 2))
6287 ;; Do the completion, using list gathered from `idlwave-routines' 6309 ;; Do the completion, using list gathered from `idlwave-routines'
6288 (idlwave-complete-in-buffer 6310 (idlwave-complete-in-buffer
6289 'class 'class (idlwave-class-alist) nil 6311 'class 'class (idlwave-class-alist) nil
6290 "Select a class" "class" 6312 "Select a class" "class"
6291 '(lambda (list) ;; Push it to help-links if system help available 6313 '(lambda (list) ;; Push it to help-links if system help available
6292 (mapcar (lambda (x) 6314 (mapcar (lambda (x)
6293 (let* ((entry (idlwave-class-info x)) 6315 (let* ((entry (idlwave-class-info x))
6294 (link (nth 1 (assq 'link entry)))) 6316 (link (nth 1 (assq 'link entry))))
6295 (if link (push (cons x link) 6317 (if link (push (cons x link)
6296 idlwave-completion-help-links)) 6318 idlwave-completion-help-links))
6297 x)) 6319 x))
6298 list))))) 6320 list)))))
@@ -6304,7 +6326,7 @@ accumulate information on matching completions."
6304 ;; SHOW-CLASSES is the value of `idlwave-completion-show-classes'. 6326 ;; SHOW-CLASSES is the value of `idlwave-completion-show-classes'.
6305 (if (or (null show-classes) ; don't want to see classes 6327 (if (or (null show-classes) ; don't want to see classes
6306 (null class-selector) ; not a method call 6328 (null class-selector) ; not a method call
6307 (and 6329 (and
6308 (stringp class-selector) ; the class is already known 6330 (stringp class-selector) ; the class is already known
6309 (not super-classes))) ; no possibilities for inheritance 6331 (not super-classes))) ; no possibilities for inheritance
6310 ;; In these cases, we do not have to do anything 6332 ;; In these cases, we do not have to do anything
@@ -6319,13 +6341,13 @@ accumulate information on matching completions."
6319 (max (abs show-classes)) 6341 (max (abs show-classes))
6320 (lmax (if do-dots (apply 'max (mapcar 'length list)))) 6342 (lmax (if do-dots (apply 'max (mapcar 'length list))))
6321 classes nclasses class-info space) 6343 classes nclasses class-info space)
6322 (mapcar 6344 (mapcar
6323 (lambda (x) 6345 (lambda (x)
6324 ;; get the classes 6346 ;; get the classes
6325 (if (eq type 'class-tag) 6347 (if (eq type 'class-tag)
6326 ;; Just one class for tags 6348 ;; Just one class for tags
6327 (setq classes 6349 (setq classes
6328 (list 6350 (list
6329 (idlwave-class-or-superclass-with-tag class-selector x))) 6351 (idlwave-class-or-superclass-with-tag class-selector x)))
6330 ;; Multiple classes for method or method-keyword 6352 ;; Multiple classes for method or method-keyword
6331 (setq classes 6353 (setq classes
@@ -6334,7 +6356,7 @@ accumulate information on matching completions."
6334 method-selector x type-selector) 6356 method-selector x type-selector)
6335 (idlwave-all-method-classes x type-selector))) 6357 (idlwave-all-method-classes x type-selector)))
6336 (if inherit 6358 (if inherit
6337 (setq classes 6359 (setq classes
6338 (delq nil 6360 (delq nil
6339 (mapcar (lambda (x) (if (memq x inherit) x nil)) 6361 (mapcar (lambda (x) (if (memq x inherit) x nil))
6340 classes))))) 6362 classes)))))
@@ -6371,7 +6393,7 @@ accumulate information on matching completions."
6371(defun idlwave-attach-class-tag-classes (list) 6393(defun idlwave-attach-class-tag-classes (list)
6372 ;; Call idlwave-attach-classes with class structure tags 6394 ;; Call idlwave-attach-classes with class structure tags
6373 (idlwave-attach-classes list 'class-tag idlwave-completion-show-classes)) 6395 (idlwave-attach-classes list 'class-tag idlwave-completion-show-classes))
6374 6396
6375 6397
6376;;---------------------------------------------------------------------- 6398;;----------------------------------------------------------------------
6377;;---------------------------------------------------------------------- 6399;;----------------------------------------------------------------------
@@ -6392,7 +6414,7 @@ sort the list before displaying"
6392 ((= 1 (length list)) 6414 ((= 1 (length list))
6393 (setq rtn (car list))) 6415 (setq rtn (car list)))
6394 ((featurep 'xemacs) 6416 ((featurep 'xemacs)
6395 (if sort (setq list (sort list (lambda (a b) 6417 (if sort (setq list (sort list (lambda (a b)
6396 (string< (upcase a) (upcase b)))))) 6418 (string< (upcase a) (upcase b))))))
6397 (setq menu 6419 (setq menu
6398 (append (list title) 6420 (append (list title)
@@ -6403,7 +6425,7 @@ sort the list before displaying"
6403 (setq resp (get-popup-menu-response menu)) 6425 (setq resp (get-popup-menu-response menu))
6404 (funcall (event-function resp) (event-object resp))) 6426 (funcall (event-function resp) (event-object resp)))
6405 (t 6427 (t
6406 (if sort (setq list (sort list (lambda (a b) 6428 (if sort (setq list (sort list (lambda (a b)
6407 (string< (upcase a) (upcase b)))))) 6429 (string< (upcase a) (upcase b))))))
6408 (setq menu (cons title 6430 (setq menu (cons title
6409 (list 6431 (list
@@ -6494,7 +6516,7 @@ sort the list before displaying"
6494 (setq idlwave-before-completion-wconf (current-window-configuration))) 6516 (setq idlwave-before-completion-wconf (current-window-configuration)))
6495 6517
6496 (if (featurep 'xemacs) 6518 (if (featurep 'xemacs)
6497 (idlwave-display-completion-list-xemacs 6519 (idlwave-display-completion-list-xemacs
6498 list) 6520 list)
6499 (idlwave-display-completion-list-emacs list)) 6521 (idlwave-display-completion-list-emacs list))
6500 6522
@@ -6575,7 +6597,7 @@ If these don't exist, a letter in the string is automatically selected."
6575 (mapcar (lambda(x) 6597 (mapcar (lambda(x)
6576 (princ (nth 1 x)) 6598 (princ (nth 1 x))
6577 (princ "\n")) 6599 (princ "\n"))
6578 keys-alist)) 6600 keys-alist))
6579 (setq char (read-char))) 6601 (setq char (read-char)))
6580 (setq char (read-char))) 6602 (setq char (read-char)))
6581 (message nil) 6603 (message nil)
@@ -6695,7 +6717,7 @@ If these don't exist, a letter in the string is automatically selected."
6695(defun idlwave-make-modified-completion-map-emacs (old-map) 6717(defun idlwave-make-modified-completion-map-emacs (old-map)
6696 "Replace `choose-completion' and `mouse-choose-completion' in OLD-MAP." 6718 "Replace `choose-completion' and `mouse-choose-completion' in OLD-MAP."
6697 (let ((new-map (copy-keymap old-map))) 6719 (let ((new-map (copy-keymap old-map)))
6698 (substitute-key-definition 6720 (substitute-key-definition
6699 'choose-completion 'idlwave-choose-completion new-map) 6721 'choose-completion 'idlwave-choose-completion new-map)
6700 (substitute-key-definition 6722 (substitute-key-definition
6701 'mouse-choose-completion 'idlwave-mouse-choose-completion new-map) 6723 'mouse-choose-completion 'idlwave-mouse-choose-completion new-map)
@@ -6721,8 +6743,8 @@ If these don't exist, a letter in the string is automatically selected."
6721;; 6743;;
6722;; - Go again over the documentation how to write a completion 6744;; - Go again over the documentation how to write a completion
6723;; plugin. It is in self.el, but currently still very bad. 6745;; plugin. It is in self.el, but currently still very bad.
6724;; This could be in a separate file in the distribution, or 6746;; This could be in a separate file in the distribution, or
6725;; in an appendix for the manual. 6747;; in an appendix for the manual.
6726 6748
6727(defvar idlwave-struct-skip 6749(defvar idlwave-struct-skip
6728 "[ \t]*\\(\\$.*\n\\(^[ \t]*\\(\\$[ \t]*\\)?\\(;.*\\)?\n\\)*\\)?[ \t]*" 6750 "[ \t]*\\(\\$.*\n\\(^[ \t]*\\(\\$[ \t]*\\)?\\(;.*\\)?\n\\)*\\)?[ \t]*"
@@ -6761,7 +6783,7 @@ Point is expected just before the opening `{' of the struct definition."
6761 (beg (car borders)) 6783 (beg (car borders))
6762 (end (cdr borders)) 6784 (end (cdr borders))
6763 (case-fold-search t)) 6785 (case-fold-search t))
6764 (re-search-forward (concat "\\(^[ \t]*\\|[,{][ \t]*\\)" tag "[ \t]*:") 6786 (re-search-forward (concat "\\(^[ \t]*\\|[,{][ \t]*\\)" tag "[ \t]*:")
6765 end t))) 6787 end t)))
6766 6788
6767(defun idlwave-struct-inherits () 6789(defun idlwave-struct-inherits ()
@@ -6776,7 +6798,7 @@ Point is expected just before the opening `{' of the struct definition."
6776 (goto-char beg) 6798 (goto-char beg)
6777 (save-restriction 6799 (save-restriction
6778 (narrow-to-region beg end) 6800 (narrow-to-region beg end)
6779 (while (re-search-forward 6801 (while (re-search-forward
6780 (concat "[{,]" ;leading comma/brace 6802 (concat "[{,]" ;leading comma/brace
6781 idlwave-struct-skip ; 4 groups 6803 idlwave-struct-skip ; 4 groups
6782 "inherits" ; The INHERITS tag 6804 "inherits" ; The INHERITS tag
@@ -6826,9 +6848,9 @@ backward."
6826 (concat "\\<" (regexp-quote (downcase var)) "\\>" ws) 6848 (concat "\\<" (regexp-quote (downcase var)) "\\>" ws)
6827 "\\(\\)") 6849 "\\(\\)")
6828 "=" ws "\\({\\)" 6850 "=" ws "\\({\\)"
6829 (if name 6851 (if name
6830 (if (stringp name) 6852 (if (stringp name)
6831 (concat ws "\\(\\<" (downcase name) "\\)[^a-zA-Z0-9_$]") 6853 (concat ws "\\(\\<" (downcase name) "\\)[^a-zA-Z0-9_$]")
6832 ;; Just a generic name 6854 ;; Just a generic name
6833 (concat ws "\\<\\([a-zA-Z_0-9$]+\\)" ws ",")) 6855 (concat ws "\\<\\([a-zA-Z_0-9$]+\\)" ws ","))
6834 "")))) 6856 ""))))
@@ -6839,7 +6861,7 @@ backward."
6839 (goto-char (match-beginning 3)) 6861 (goto-char (match-beginning 3))
6840 (match-string-no-properties 5))))) 6862 (match-string-no-properties 5)))))
6841 6863
6842(defvar idlwave-class-info nil) 6864(defvar idlwave-class-info nil)
6843(defvar idlwave-system-class-info nil) ; Gathered from idlw-rinfo 6865(defvar idlwave-system-class-info nil) ; Gathered from idlw-rinfo
6844(defvar idlwave-class-reset nil) ; to reset buffer-local classes 6866(defvar idlwave-class-reset nil) ; to reset buffer-local classes
6845 6867
@@ -6852,13 +6874,13 @@ backward."
6852 (let (list entry) 6874 (let (list entry)
6853 (if idlwave-class-info 6875 (if idlwave-class-info
6854 (if idlwave-class-reset 6876 (if idlwave-class-reset
6855 (setq 6877 (setq
6856 idlwave-class-reset nil 6878 idlwave-class-reset nil
6857 idlwave-class-info ; Remove any visited in a buffer 6879 idlwave-class-info ; Remove any visited in a buffer
6858 (delq nil (mapcar 6880 (delq nil (mapcar
6859 (lambda (x) 6881 (lambda (x)
6860 (let ((filebuf 6882 (let ((filebuf
6861 (idlwave-class-file-or-buffer 6883 (idlwave-class-file-or-buffer
6862 (or (cdr (assq 'found-in x)) (car x))))) 6884 (or (cdr (assq 'found-in x)) (car x)))))
6863 (if (cdr filebuf) 6885 (if (cdr filebuf)
6864 nil 6886 nil
@@ -6896,7 +6918,7 @@ class/struct definition"
6896 (progn 6918 (progn
6897 ;; For everything there 6919 ;; For everything there
6898 (setq end-lim (save-excursion (idlwave-end-of-subprogram) (point))) 6920 (setq end-lim (save-excursion (idlwave-end-of-subprogram) (point)))
6899 (while (setq name 6921 (while (setq name
6900 (idlwave-find-structure-definition nil t end-lim)) 6922 (idlwave-find-structure-definition nil t end-lim))
6901 (funcall all-hook name))) 6923 (funcall all-hook name)))
6902 (idlwave-find-structure-definition nil (or alt-class class)))))) 6924 (idlwave-find-structure-definition nil (or alt-class class))))))
@@ -6934,11 +6956,11 @@ class/struct definition"
6934 (insert-file-contents file)) 6956 (insert-file-contents file))
6935 (save-excursion 6957 (save-excursion
6936 (goto-char 1) 6958 (goto-char 1)
6937 (idlwave-find-class-definition class 6959 (idlwave-find-class-definition class
6938 ;; Scan all of the structures found there 6960 ;; Scan all of the structures found there
6939 (lambda (name) 6961 (lambda (name)
6940 (let* ((this-class (idlwave-sintern-class name)) 6962 (let* ((this-class (idlwave-sintern-class name))
6941 (entry 6963 (entry
6942 (list this-class 6964 (list this-class
6943 (cons 'tags (idlwave-struct-tags)) 6965 (cons 'tags (idlwave-struct-tags))
6944 (cons 'inherits (idlwave-struct-inherits))))) 6966 (cons 'inherits (idlwave-struct-inherits)))))
@@ -6963,7 +6985,7 @@ class/struct definition"
6963 (condition-case err 6985 (condition-case err
6964 (apply 'append (mapcar 'idlwave-class-tags 6986 (apply 'append (mapcar 'idlwave-class-tags
6965 (cons class (idlwave-all-class-inherits class)))) 6987 (cons class (idlwave-all-class-inherits class))))
6966 (error 6988 (error
6967 (idlwave-class-tag-reset) 6989 (idlwave-class-tag-reset)
6968 (error "%s" (error-message-string err))))) 6990 (error "%s" (error-message-string err)))))
6969 6991
@@ -7000,24 +7022,24 @@ The list is cached in `idlwave-class-info' for faster access."
7000 all-inherits)))))) 7022 all-inherits))))))
7001 7023
7002(defun idlwave-entry-keywords (entry &optional record-link) 7024(defun idlwave-entry-keywords (entry &optional record-link)
7003 "Return the flat entry keywords alist from routine-info entry. 7025 "Return the flat entry keywords alist from routine-info entry.
7004If RECORD-LINK is non-nil, the keyword text is copied and a text 7026If RECORD-LINK is non-nil, the keyword text is copied and a text
7005property indicating the link is added." 7027property indicating the link is added."
7006 (let (kwds) 7028 (let (kwds)
7007 (mapcar 7029 (mapcar
7008 (lambda (key-list) 7030 (lambda (key-list)
7009 (let ((file (car key-list))) 7031 (let ((file (car key-list)))
7010 (mapcar (lambda (key-cons) 7032 (mapcar (lambda (key-cons)
7011 (let ((key (car key-cons)) 7033 (let ((key (car key-cons))
7012 (link (cdr key-cons))) 7034 (link (cdr key-cons)))
7013 (when (and record-link file) 7035 (when (and record-link file)
7014 (setq key (copy-sequence key)) 7036 (setq key (copy-sequence key))
7015 (put-text-property 7037 (put-text-property
7016 0 (length key) 7038 0 (length key)
7017 'link 7039 'link
7018 (concat 7040 (concat
7019 file 7041 file
7020 (if link 7042 (if link
7021 (concat idlwave-html-link-sep 7043 (concat idlwave-html-link-sep
7022 (number-to-string link)))) 7044 (number-to-string link))))
7023 key)) 7045 key))
@@ -7030,13 +7052,13 @@ property indicating the link is added."
7030 "Find keyword KEYWORD in entry ENTRY, and return (with link) if set" 7052 "Find keyword KEYWORD in entry ENTRY, and return (with link) if set"
7031 (catch 'exit 7053 (catch 'exit
7032 (mapc 7054 (mapc
7033 (lambda (key-list) 7055 (lambda (key-list)
7034 (let ((file (car key-list)) 7056 (let ((file (car key-list))
7035 (kwd (assoc keyword (cdr key-list)))) 7057 (kwd (assoc keyword (cdr key-list))))
7036 (when kwd 7058 (when kwd
7037 (setq kwd (cons (car kwd) 7059 (setq kwd (cons (car kwd)
7038 (if (and file (cdr kwd)) 7060 (if (and file (cdr kwd))
7039 (concat file 7061 (concat file
7040 idlwave-html-link-sep 7062 idlwave-html-link-sep
7041 (number-to-string (cdr kwd))) 7063 (number-to-string (cdr kwd)))
7042 (cdr kwd)))) 7064 (cdr kwd))))
@@ -7074,14 +7096,14 @@ property indicating the link is added."
7074 ;; Check if we need to update the "current" class 7096 ;; Check if we need to update the "current" class
7075 (if (not (equal class-selector idlwave-current-tags-class)) 7097 (if (not (equal class-selector idlwave-current-tags-class))
7076 (idlwave-prepare-class-tag-completion class-selector)) 7098 (idlwave-prepare-class-tag-completion class-selector))
7077 (setq idlwave-completion-help-info 7099 (setq idlwave-completion-help-info
7078 (list 'idlwave-complete-class-structure-tag-help 7100 (list 'idlwave-complete-class-structure-tag-help
7079 (idlwave-sintern-routine 7101 (idlwave-sintern-routine
7080 (concat class-selector "__define")) 7102 (concat class-selector "__define"))
7081 nil)) 7103 nil))
7082 (let ((idlwave-cpl-bold idlwave-current-native-class-tags)) 7104 (let ((idlwave-cpl-bold idlwave-current-native-class-tags))
7083 (idlwave-complete-in-buffer 7105 (idlwave-complete-in-buffer
7084 'class-tag 'class-tag 7106 'class-tag 'class-tag
7085 idlwave-current-class-tags nil 7107 idlwave-current-class-tags nil
7086 (format "Select a tag of class %s" class-selector) 7108 (format "Select a tag of class %s" class-selector)
7087 "class tag" 7109 "class tag"
@@ -7133,7 +7155,7 @@ Gets set in `idlw-rinfo.el'.")
7133 (skip-chars-backward "[a-zA-Z0-9_$]") 7155 (skip-chars-backward "[a-zA-Z0-9_$]")
7134 (equal (char-before) ?!)) 7156 (equal (char-before) ?!))
7135 (setq idlwave-completion-help-info '(idlwave-complete-sysvar-help)) 7157 (setq idlwave-completion-help-info '(idlwave-complete-sysvar-help))
7136 (idlwave-complete-in-buffer 'sysvar 'sysvar 7158 (idlwave-complete-in-buffer 'sysvar 'sysvar
7137 idlwave-system-variables-alist nil 7159 idlwave-system-variables-alist nil
7138 "Select a system variable" 7160 "Select a system variable"
7139 "system variable") 7161 "system variable")
@@ -7152,13 +7174,14 @@ Gets set in `idlw-rinfo.el'.")
7152 (or tags (error "System variable !%s is not a structure" var)) 7174 (or tags (error "System variable !%s is not a structure" var))
7153 (setq idlwave-completion-help-info 7175 (setq idlwave-completion-help-info
7154 (list 'idlwave-complete-sysvar-tag-help var)) 7176 (list 'idlwave-complete-sysvar-tag-help var))
7155 (idlwave-complete-in-buffer 'sysvartag 'sysvartag 7177 (idlwave-complete-in-buffer 'sysvartag 'sysvartag
7156 tags nil 7178 tags nil
7157 "Select a system variable tag" 7179 "Select a system variable tag"
7158 "system variable tag") 7180 "system variable tag")
7159 t)) ; return t to skip other completions 7181 t)) ; return t to skip other completions
7160 (t nil)))) 7182 (t nil))))
7161 7183
7184(defvar link) ;dynamic
7162(defun idlwave-complete-sysvar-help (mode word) 7185(defun idlwave-complete-sysvar-help (mode word)
7163 (let ((word (or (nth 1 idlwave-completion-help-info) word)) 7186 (let ((word (or (nth 1 idlwave-completion-help-info) word))
7164 (entry (assoc word idlwave-system-variables-alist))) 7187 (entry (assoc word idlwave-system-variables-alist)))
@@ -7179,8 +7202,8 @@ Gets set in `idlw-rinfo.el'.")
7179 ((eq mode 'test) ; we can at least link the main 7202 ((eq mode 'test) ; we can at least link the main
7180 (and (stringp word) entry main)) 7203 (and (stringp word) entry main))
7181 ((eq mode 'set) 7204 ((eq mode 'set)
7182 (if entry 7205 (if entry
7183 (setq link 7206 (setq link
7184 (if (setq target (cdr (assoc word tags))) 7207 (if (setq target (cdr (assoc word tags)))
7185 (idlwave-substitute-link-target main target) 7208 (idlwave-substitute-link-target main target)
7186 main)))) ;; setting dynamic!!! 7209 main)))) ;; setting dynamic!!!
@@ -7198,7 +7221,7 @@ Gets set in `idlw-rinfo.el'.")
7198 7221
7199;; Fake help in the source buffer for class structure tags. 7222;; Fake help in the source buffer for class structure tags.
7200;; KWD AND NAME ARE GLOBAL-VARIABLES HERE. 7223;; KWD AND NAME ARE GLOBAL-VARIABLES HERE.
7201(defvar name) 7224(defvar name)
7202(defvar kwd) 7225(defvar kwd)
7203(defvar idlwave-help-do-class-struct-tag nil) 7226(defvar idlwave-help-do-class-struct-tag nil)
7204(defun idlwave-complete-class-structure-tag-help (mode word) 7227(defun idlwave-complete-class-structure-tag-help (mode word)
@@ -7207,11 +7230,11 @@ Gets set in `idlw-rinfo.el'.")
7207 nil) 7230 nil)
7208 ((eq mode 'set) 7231 ((eq mode 'set)
7209 (let (class-with found-in) 7232 (let (class-with found-in)
7210 (when (setq class-with 7233 (when (setq class-with
7211 (idlwave-class-or-superclass-with-tag 7234 (idlwave-class-or-superclass-with-tag
7212 idlwave-current-tags-class 7235 idlwave-current-tags-class
7213 word)) 7236 word))
7214 (if (assq (idlwave-sintern-class class-with) 7237 (if (assq (idlwave-sintern-class class-with)
7215 idlwave-system-class-info) 7238 idlwave-system-class-info)
7216 (error "No help available for system class tags")) 7239 (error "No help available for system class tags"))
7217 (if (setq found-in (idlwave-class-found-in class-with)) 7240 (if (setq found-in (idlwave-class-found-in class-with))
@@ -7224,7 +7247,7 @@ Gets set in `idlw-rinfo.el'.")
7224(defun idlwave-class-or-superclass-with-tag (class tag) 7247(defun idlwave-class-or-superclass-with-tag (class tag)
7225 "Find and return the CLASS or one of its superclass with the 7248 "Find and return the CLASS or one of its superclass with the
7226associated TAG, if any." 7249associated TAG, if any."
7227 (let ((sclasses (cons class (cdr (assq 'all-inherits 7250 (let ((sclasses (cons class (cdr (assq 'all-inherits
7228 (idlwave-class-info class))))) 7251 (idlwave-class-info class)))))
7229 cl) 7252 cl)
7230 (catch 'exit 7253 (catch 'exit
@@ -7233,7 +7256,7 @@ associated TAG, if any."
7233 (let ((tags (idlwave-class-tags cl))) 7256 (let ((tags (idlwave-class-tags cl)))
7234 (while tags 7257 (while tags
7235 (if (eq t (compare-strings tag 0 nil (car tags) 0 nil t)) 7258 (if (eq t (compare-strings tag 0 nil (car tags) 0 nil t))
7236 (throw 'exit cl)) 7259 (throw 'exit cl))
7237 (setq tags (cdr tags)))))))) 7260 (setq tags (cdr tags))))))))
7238 7261
7239 7262
@@ -7256,8 +7279,8 @@ associated TAG, if any."
7256 (setcar entry (idlwave-sintern-sysvar (car entry) 'set)) 7279 (setcar entry (idlwave-sintern-sysvar (car entry) 'set))
7257 (setq tags (assq 'tags entry)) 7280 (setq tags (assq 'tags entry))
7258 (if tags 7281 (if tags
7259 (setcdr tags 7282 (setcdr tags
7260 (mapcar (lambda (x) 7283 (mapcar (lambda (x)
7261 (cons (idlwave-sintern-sysvartag (car x) 'set) 7284 (cons (idlwave-sintern-sysvartag (car x) 'set)
7262 (cdr x))) 7285 (cdr x)))
7263 (cdr tags))))))) 7286 (cdr tags)))))))
@@ -7274,19 +7297,19 @@ associated TAG, if any."
7274 text start) 7297 text start)
7275 (setq start (match-end 0) 7298 (setq start (match-end 0)
7276 var (match-string 1 text) 7299 var (match-string 1 text)
7277 tags (if (match-end 3) 7300 tags (if (match-end 3)
7278 (idlwave-split-string (match-string 3 text)))) 7301 (idlwave-split-string (match-string 3 text))))
7279 ;; Maintain old links, if present 7302 ;; Maintain old links, if present
7280 (setq old-entry (assq (idlwave-sintern-sysvar var) old)) 7303 (setq old-entry (assq (idlwave-sintern-sysvar var) old))
7281 (setq link (assq 'link old-entry)) 7304 (setq link (assq 'link old-entry))
7282 (setq idlwave-system-variables-alist 7305 (setq idlwave-system-variables-alist
7283 (cons (list var 7306 (cons (list var
7284 (cons 7307 (cons
7285 'tags 7308 'tags
7286 (mapcar (lambda (x) 7309 (mapcar (lambda (x)
7287 (cons x 7310 (cons x
7288 (cdr (assq 7311 (cdr (assq
7289 (idlwave-sintern-sysvartag x) 7312 (idlwave-sintern-sysvartag x)
7290 (cdr (assq 'tags old-entry)))))) 7313 (cdr (assq 'tags old-entry))))))
7291 tags)) link) 7314 tags)) link)
7292 idlwave-system-variables-alist))) 7315 idlwave-system-variables-alist)))
@@ -7308,9 +7331,9 @@ associated TAG, if any."
7308 7331
7309(defun idlwave-uniquify (list) 7332(defun idlwave-uniquify (list)
7310 (let ((ht (make-hash-table :size (length list) :test 'equal))) 7333 (let ((ht (make-hash-table :size (length list) :test 'equal)))
7311 (delq nil 7334 (delq nil
7312 (mapcar (lambda (x) 7335 (mapcar (lambda (x)
7313 (unless (gethash x ht) 7336 (unless (gethash x ht)
7314 (puthash x t ht) 7337 (puthash x t ht)
7315 x)) 7338 x))
7316 list)))) 7339 list))))
@@ -7338,11 +7361,11 @@ Restore the pre-completion window configuration if possible."
7338 nil))) 7361 nil)))
7339 7362
7340 ;; Restore the pre-completion window configuration if this is safe. 7363 ;; Restore the pre-completion window configuration if this is safe.
7341 7364
7342 (if (or (eq verify 'force) ; force 7365 (if (or (eq verify 'force) ; force
7343 (and 7366 (and
7344 (get-buffer-window "*Completions*") ; visible 7367 (get-buffer-window "*Completions*") ; visible
7345 (idlwave-local-value 'idlwave-completion-p 7368 (idlwave-local-value 'idlwave-completion-p
7346 "*Completions*") ; cib-buffer 7369 "*Completions*") ; cib-buffer
7347 (eq (marker-buffer idlwave-completion-mark) 7370 (eq (marker-buffer idlwave-completion-mark)
7348 (current-buffer)) ; buffer OK 7371 (current-buffer)) ; buffer OK
@@ -7440,7 +7463,7 @@ With ARG, enforce query for the class of object methods."
7440 (if (string-match "\\(pro\\|function\\)[ \t]+\\(\\(.*\\)::\\)?\\(.*\\)" 7463 (if (string-match "\\(pro\\|function\\)[ \t]+\\(\\(.*\\)::\\)?\\(.*\\)"
7441 resolve) 7464 resolve)
7442 (setq type (match-string 1 resolve) 7465 (setq type (match-string 1 resolve)
7443 class (if (match-beginning 2) 7466 class (if (match-beginning 2)
7444 (match-string 3 resolve) 7467 (match-string 3 resolve)
7445 nil) 7468 nil)
7446 name (match-string 4 resolve))) 7469 name (match-string 4 resolve)))
@@ -7449,19 +7472,23 @@ With ARG, enforce query for the class of object methods."
7449 7472
7450 (cond 7473 (cond
7451 ((null class) 7474 ((null class)
7452 (idlwave-shell-send-command 7475 (idlwave-shell-send-command
7453 (format "resolve_routine,'%s'%s" (downcase name) kwd) 7476 (format "resolve_routine,'%s'%s" (downcase name) kwd)
7454 'idlwave-update-routine-info 7477 'idlwave-update-routine-info
7455 nil t)) 7478 nil t))
7456 (t 7479 (t
7457 (idlwave-shell-send-command 7480 (idlwave-shell-send-command
7458 (format "resolve_routine,'%s__define'%s" (downcase class) kwd) 7481 (format "resolve_routine,'%s__define'%s" (downcase class) kwd)
7459 (list 'idlwave-shell-send-command 7482 (list 'idlwave-shell-send-command
7460 (format "resolve_routine,'%s__%s'%s" 7483 (format "resolve_routine,'%s__%s'%s"
7461 (downcase class) (downcase name) kwd) 7484 (downcase class) (downcase name) kwd)
7462 '(idlwave-update-routine-info) 7485 '(idlwave-update-routine-info)
7463 nil t)))))) 7486 nil t))))))
7464 7487
7488(defun idlwave-find-module-this-file ()
7489 (interactive)
7490 (idlwave-find-module '(4)))
7491
7465(defun idlwave-find-module (&optional arg) 7492(defun idlwave-find-module (&optional arg)
7466 "Find the source code of an IDL module. 7493 "Find the source code of an IDL module.
7467Works for modules for which IDLWAVE has routine info available. The 7494Works for modules for which IDLWAVE has routine info available. The
@@ -7474,19 +7501,19 @@ force class query for object methods."
7474 (this-buffer (equal arg '(4))) 7501 (this-buffer (equal arg '(4)))
7475 (module (idlwave-fix-module-if-obj_new (idlwave-what-module))) 7502 (module (idlwave-fix-module-if-obj_new (idlwave-what-module)))
7476 (default (if module 7503 (default (if module
7477 (concat (idlwave-make-full-name 7504 (concat (idlwave-make-full-name
7478 (nth 2 module) (car module)) 7505 (nth 2 module) (car module))
7479 (if (eq (nth 1 module) 'pro) "<p>" "<f>")) 7506 (if (eq (nth 1 module) 'pro) "<p>" "<f>"))
7480 "none")) 7507 "none"))
7481 (list 7508 (list
7482 (idlwave-uniquify 7509 (idlwave-uniquify
7483 (delq nil 7510 (delq nil
7484 (mapcar (lambda (x) 7511 (mapcar (lambda (x)
7485 (if (eq 'system (car-safe (nth 3 x))) 7512 (if (eq 'system (car-safe (nth 3 x)))
7486 ;; Take out system routines with no source. 7513 ;; Take out system routines with no source.
7487 nil 7514 nil
7488 (list 7515 (list
7489 (concat (idlwave-make-full-name 7516 (concat (idlwave-make-full-name
7490 (nth 2 x) (car x)) 7517 (nth 2 x) (car x))
7491 (if (eq (nth 1 x) 'pro) "<p>" "<f>"))))) 7518 (if (eq (nth 1 x) 'pro) "<p>" "<f>")))))
7492 (if this-buffer 7519 (if this-buffer
@@ -7515,10 +7542,10 @@ force class query for object methods."
7515 (t t))) 7542 (t t)))
7516 (idlwave-do-find-module name type class nil this-buffer))) 7543 (idlwave-do-find-module name type class nil this-buffer)))
7517 7544
7518(defun idlwave-do-find-module (name type class 7545(defun idlwave-do-find-module (name type class
7519 &optional force-source this-buffer) 7546 &optional force-source this-buffer)
7520 (let ((name1 (idlwave-make-full-name class name)) 7547 (let ((name1 (idlwave-make-full-name class name))
7521 source buf1 entry 7548 source buf1 entry
7522 (buf (current-buffer)) 7549 (buf (current-buffer))
7523 (pos (point)) 7550 (pos (point))
7524 file name2) 7551 file name2)
@@ -7528,11 +7555,11 @@ force class query for object methods."
7528 name2 (if (nth 2 entry) 7555 name2 (if (nth 2 entry)
7529 (idlwave-make-full-name (nth 2 entry) name) 7556 (idlwave-make-full-name (nth 2 entry) name)
7530 name1)) 7557 name1))
7531 (if source 7558 (if source
7532 (setq file (idlwave-routine-source-file source))) 7559 (setq file (idlwave-routine-source-file source)))
7533 (unless file ; Try to find it on the path. 7560 (unless file ; Try to find it on the path.
7534 (setq file 7561 (setq file
7535 (idlwave-expand-lib-file-name 7562 (idlwave-expand-lib-file-name
7536 (if class 7563 (if class
7537 (format "%s__define.pro" (downcase class)) 7564 (format "%s__define.pro" (downcase class))
7538 (format "%s.pro" (downcase name)))))) 7565 (format "%s.pro" (downcase name))))))
@@ -7540,14 +7567,14 @@ force class query for object methods."
7540 ((or (null name) (equal name "")) 7567 ((or (null name) (equal name ""))
7541 (error "Abort")) 7568 (error "Abort"))
7542 ((eq (car source) 'system) 7569 ((eq (car source) 'system)
7543 (error "Source code for system routine %s is not available" 7570 (error "Source code for system routine %s is not available"
7544 name2)) 7571 name2))
7545 ((or (not file) (not (file-regular-p file))) 7572 ((or (not file) (not (file-regular-p file)))
7546 (error "Source code for routine %s is not available" 7573 (error "Source code for routine %s is not available"
7547 name2)) 7574 name2))
7548 (t 7575 (t
7549 (when (not this-buffer) 7576 (when (not this-buffer)
7550 (setq buf1 7577 (setq buf1
7551 (idlwave-find-file-noselect file 'find)) 7578 (idlwave-find-file-noselect file 'find))
7552 (pop-to-buffer buf1 t)) 7579 (pop-to-buffer buf1 t))
7553 (goto-char (point-max)) 7580 (goto-char (point-max))
@@ -7557,7 +7584,7 @@ force class query for object methods."
7557 (cond ((eq type 'fun) "function") 7584 (cond ((eq type 'fun) "function")
7558 ((eq type 'pro) "pro") 7585 ((eq type 'pro) "pro")
7559 (t "\\(pro\\|function\\)")) 7586 (t "\\(pro\\|function\\)"))
7560 "\\>[ \t]+" 7587 "\\>[ \t]+"
7561 (regexp-quote (downcase name2)) 7588 (regexp-quote (downcase name2))
7562 "[^a-zA-Z0-9_$]") 7589 "[^a-zA-Z0-9_$]")
7563 nil t) 7590 nil t)
@@ -7594,17 +7621,17 @@ Used by `idlwave-routine-info' and `idlwave-find-module'."
7594 (cond 7621 (cond
7595 ((and (eq cw 'procedure) 7622 ((and (eq cw 'procedure)
7596 (not (equal this-word ""))) 7623 (not (equal this-word "")))
7597 (setq this-word (idlwave-sintern-routine-or-method 7624 (setq this-word (idlwave-sintern-routine-or-method
7598 this-word (nth 2 (nth 3 where)))) 7625 this-word (nth 2 (nth 3 where))))
7599 (list this-word 'pro 7626 (list this-word 'pro
7600 (idlwave-determine-class 7627 (idlwave-determine-class
7601 (cons this-word (cdr (nth 3 where))) 7628 (cons this-word (cdr (nth 3 where)))
7602 'pro))) 7629 'pro)))
7603 ((and (eq cw 'function) 7630 ((and (eq cw 'function)
7604 (not (equal this-word "")) 7631 (not (equal this-word ""))
7605 (or (eq next-char ?\() ; exclude arrays, vars. 7632 (or (eq next-char ?\() ; exclude arrays, vars.
7606 (looking-at "[a-zA-Z0-9_]*[ \t]*("))) 7633 (looking-at "[a-zA-Z0-9_]*[ \t]*(")))
7607 (setq this-word (idlwave-sintern-routine-or-method 7634 (setq this-word (idlwave-sintern-routine-or-method
7608 this-word (nth 2 (nth 3 where)))) 7635 this-word (nth 2 (nth 3 where))))
7609 (list this-word 'fun 7636 (list this-word 'fun
7610 (idlwave-determine-class 7637 (idlwave-determine-class
@@ -7641,7 +7668,7 @@ Used by `idlwave-routine-info' and `idlwave-find-module'."
7641 class))) 7668 class)))
7642 7669
7643(defun idlwave-fix-module-if-obj_new (module) 7670(defun idlwave-fix-module-if-obj_new (module)
7644 "Check if MODULE points to obj_new. 7671 "Check if MODULE points to obj_new.
7645If yes, and if the cursor is in the keyword region, change to the 7672If yes, and if the cursor is in the keyword region, change to the
7646appropriate Init method." 7673appropriate Init method."
7647 (let* ((name (car module)) 7674 (let* ((name (car module))
@@ -7662,10 +7689,12 @@ appropriate Init method."
7662 (idlwave-sintern-class class))))) 7689 (idlwave-sintern-class class)))))
7663 module)) 7690 module))
7664 7691
7665(defun idlwave-fix-keywords (name type class keywords &optional super-classes) 7692(defun idlwave-fix-keywords (name type class keywords
7693 &optional super-classes system)
7666 "Update a list of keywords. 7694 "Update a list of keywords.
7667Translate OBJ_NEW, adding all super-class keywords, or all keywords 7695Translate OBJ_NEW, adding all super-class keywords, or all keywords
7668from all classes if class equals t." 7696from all classes if class equals t. If SYSTEM is non-nil, don't
7697demand _EXTRA in the keyword list."
7669 (let ((case-fold-search t)) 7698 (let ((case-fold-search t))
7670 7699
7671 ;; If this is the OBJ_NEW function, try to figure out the class and use 7700 ;; If this is the OBJ_NEW function, try to figure out the class and use
@@ -7681,35 +7710,37 @@ from all classes if class equals t."
7681 string) 7710 string)
7682 (setq class (idlwave-sintern-class (match-string 1 string))) 7711 (setq class (idlwave-sintern-class (match-string 1 string)))
7683 (setq idlwave-current-obj_new-class class) 7712 (setq idlwave-current-obj_new-class class)
7684 (setq keywords 7713 (setq keywords
7685 (append keywords 7714 (append keywords
7686 (idlwave-entry-keywords 7715 (idlwave-entry-keywords
7687 (idlwave-rinfo-assq 7716 (idlwave-rinfo-assq
7688 (idlwave-sintern-method "INIT") 7717 (idlwave-sintern-method "INIT")
7689 'fun 7718 'fun
7690 class 7719 class
7691 (idlwave-routines)) 'do-link)))))) 7720 (idlwave-routines)) 'do-link))))))
7692 7721
7693 ;; If the class is `t', combine all keywords of all methods NAME 7722 ;; If the class is `t', combine all keywords of all methods NAME
7694 (when (eq class t) 7723 (when (eq class t)
7695 (mapc (lambda (entry) 7724 (mapc (lambda (entry)
7696 (and 7725 (and
7697 (nth 2 entry) ; non-nil class 7726 (nth 2 entry) ; non-nil class
7698 (eq (nth 1 entry) type) ; correct type 7727 (eq (nth 1 entry) type) ; correct type
7699 (setq keywords 7728 (setq keywords
7700 (append keywords 7729 (append keywords
7701 (idlwave-entry-keywords entry 'do-link))))) 7730 (idlwave-entry-keywords entry 'do-link)))))
7702 (idlwave-all-assq name (idlwave-routines))) 7731 (idlwave-all-assq name (idlwave-routines)))
7703 (setq keywords (idlwave-uniquify keywords))) 7732 (setq keywords (idlwave-uniquify keywords)))
7704 7733
7705 ;; If we have inheritance, add all keywords from superclasses, if 7734 ;; If we have inheritance, add all keywords from superclasses, if
7706 ;; the user indicated that method in `idlwave-keyword-class-inheritance' 7735 ;; the user indicated that method in `idlwave-keyword-class-inheritance'
7707 (when (and 7736 (when (and
7708 super-classes 7737 super-classes
7709 idlwave-keyword-class-inheritance 7738 idlwave-keyword-class-inheritance
7710 (stringp class) 7739 (stringp class)
7711 (or (assq (idlwave-sintern-keyword "_extra") keywords) 7740 (or
7712 (assq (idlwave-sintern-keyword "_ref_extra") keywords)) 7741 system
7742 (assq (idlwave-sintern-keyword "_extra") keywords)
7743 (assq (idlwave-sintern-keyword "_ref_extra") keywords))
7713 ;; Check if one of the keyword-class regexps matches the name 7744 ;; Check if one of the keyword-class regexps matches the name
7714 (let ((regexps idlwave-keyword-class-inheritance) re) 7745 (let ((regexps idlwave-keyword-class-inheritance) re)
7715 (catch 'exit 7746 (catch 'exit
@@ -7724,7 +7755,7 @@ from all classes if class equals t."
7724 (mapcar (lambda (k) (add-to-list 'keywords k)) 7755 (mapcar (lambda (k) (add-to-list 'keywords k))
7725 (idlwave-entry-keywords entry 'do-link)))) 7756 (idlwave-entry-keywords entry 'do-link))))
7726 (setq keywords (idlwave-uniquify keywords))) 7757 (setq keywords (idlwave-uniquify keywords)))
7727 7758
7728 ;; Return the final list 7759 ;; Return the final list
7729 keywords)) 7760 keywords))
7730 7761
@@ -7749,14 +7780,14 @@ If we do not know about MODULE, just return KEYWORD literally."
7749 (assq (idlwave-sintern-keyword "_REF_EXTRA") kwd-alist))) 7780 (assq (idlwave-sintern-keyword "_REF_EXTRA") kwd-alist)))
7750 (completion-ignore-case t) 7781 (completion-ignore-case t)
7751 candidates) 7782 candidates)
7752 (cond ((assq kwd kwd-alist) 7783 (cond ((assq kwd kwd-alist)
7753 kwd) 7784 kwd)
7754 ((setq candidates (all-completions kwd kwd-alist)) 7785 ((setq candidates (all-completions kwd kwd-alist))
7755 (if (= (length candidates) 1) 7786 (if (= (length candidates) 1)
7756 (car candidates) 7787 (car candidates)
7757 candidates)) 7788 candidates))
7758 ((and entry extra) 7789 ((and entry extra)
7759 ;; Inheritance may cause this keyword to be correct 7790 ;; Inheritance may cause this keyword to be correct
7760 keyword) 7791 keyword)
7761 (entry 7792 (entry
7762 ;; We do know the function, which does not have the keyword. 7793 ;; We do know the function, which does not have the keyword.
@@ -7768,13 +7799,13 @@ If we do not know about MODULE, just return KEYWORD literally."
7768 7799
7769(defvar idlwave-rinfo-mouse-map (make-sparse-keymap)) 7800(defvar idlwave-rinfo-mouse-map (make-sparse-keymap))
7770(defvar idlwave-rinfo-map (make-sparse-keymap)) 7801(defvar idlwave-rinfo-map (make-sparse-keymap))
7771(define-key idlwave-rinfo-mouse-map 7802(define-key idlwave-rinfo-mouse-map
7772 (if (featurep 'xemacs) [button2] [mouse-2]) 7803 (if (featurep 'xemacs) [button2] [mouse-2])
7773 'idlwave-mouse-active-rinfo) 7804 'idlwave-mouse-active-rinfo)
7774(define-key idlwave-rinfo-mouse-map 7805(define-key idlwave-rinfo-mouse-map
7775 (if (featurep 'xemacs) [(shift button2)] [(shift mouse-2)]) 7806 (if (featurep 'xemacs) [(shift button2)] [(shift mouse-2)])
7776 'idlwave-mouse-active-rinfo-shift) 7807 'idlwave-mouse-active-rinfo-shift)
7777(define-key idlwave-rinfo-mouse-map 7808(define-key idlwave-rinfo-mouse-map
7778 (if (featurep 'xemacs) [button3] [mouse-3]) 7809 (if (featurep 'xemacs) [button3] [mouse-3])
7779 'idlwave-mouse-active-rinfo-right) 7810 'idlwave-mouse-active-rinfo-right)
7780(define-key idlwave-rinfo-mouse-map " " 'idlwave-active-rinfo-space) 7811(define-key idlwave-rinfo-mouse-map " " 'idlwave-active-rinfo-space)
@@ -7800,7 +7831,7 @@ If we do not know about MODULE, just return KEYWORD literally."
7800 (let* ((initial-class (or initial-class class)) 7831 (let* ((initial-class (or initial-class class))
7801 (entry (or (idlwave-best-rinfo-assq name type class 7832 (entry (or (idlwave-best-rinfo-assq name type class
7802 (idlwave-routines)) 7833 (idlwave-routines))
7803 (idlwave-rinfo-assq name type class 7834 (idlwave-rinfo-assq name type class
7804 idlwave-unresolved-routines))) 7835 idlwave-unresolved-routines)))
7805 (name (or (car entry) name)) 7836 (name (or (car entry) name))
7806 (class (or (nth 2 entry) class)) 7837 (class (or (nth 2 entry) class))
@@ -7825,7 +7856,7 @@ If we do not know about MODULE, just return KEYWORD literally."
7825 (km-prop (if (featurep 'xemacs) 'keymap 'local-map)) 7856 (km-prop (if (featurep 'xemacs) 'keymap 'local-map))
7826 (face 'idlwave-help-link-face) 7857 (face 'idlwave-help-link-face)
7827 beg props win cnt total) 7858 beg props win cnt total)
7828 ;; Fix keywords, but don't add chained super-classes, since these 7859 ;; Fix keywords, but don't add chained super-classes, since these
7829 ;; are shown separately for that super-class 7860 ;; are shown separately for that super-class
7830 (setq keywords (idlwave-fix-keywords name type class keywords)) 7861 (setq keywords (idlwave-fix-keywords name type class keywords))
7831 (cond 7862 (cond
@@ -7867,7 +7898,7 @@ If we do not know about MODULE, just return KEYWORD literally."
7867 km-prop idlwave-rinfo-mouse-map 7898 km-prop idlwave-rinfo-mouse-map
7868 'help-echo help-echo-use 7899 'help-echo help-echo-use
7869 'data (cons 'usage data))) 7900 'data (cons 'usage data)))
7870 (if html-file (setq props (append (list 'face face 'link html-file) 7901 (if html-file (setq props (append (list 'face face 'link html-file)
7871 props))) 7902 props)))
7872 (insert "Usage: ") 7903 (insert "Usage: ")
7873 (setq beg (point)) 7904 (setq beg (point))
@@ -7876,14 +7907,14 @@ If we do not know about MODULE, just return KEYWORD literally."
7876 (format calling-seq name name name name)) 7907 (format calling-seq name name name name))
7877 "\n") 7908 "\n")
7878 (add-text-properties beg (point) props) 7909 (add-text-properties beg (point) props)
7879 7910
7880 (insert "Keywords:") 7911 (insert "Keywords:")
7881 (if (null keywords) 7912 (if (null keywords)
7882 (insert " No keywords accepted.") 7913 (insert " No keywords accepted.")
7883 (setq col 9) 7914 (setq col 9)
7884 (mapcar 7915 (mapcar
7885 (lambda (x) 7916 (lambda (x)
7886 (if (>= (+ col 1 (length (car x))) 7917 (if (>= (+ col 1 (length (car x)))
7887 (window-width)) 7918 (window-width))
7888 (progn 7919 (progn
7889 (insert "\n ") 7920 (insert "\n ")
@@ -7901,7 +7932,7 @@ If we do not know about MODULE, just return KEYWORD literally."
7901 (add-text-properties beg (point) props) 7932 (add-text-properties beg (point) props)
7902 (setq col (+ col 1 (length (car x))))) 7933 (setq col (+ col 1 (length (car x)))))
7903 keywords)) 7934 keywords))
7904 7935
7905 (setq cnt 1 total (length all)) 7936 (setq cnt 1 total (length all))
7906 ;; Here entry is (key file (list of type-conses)) 7937 ;; Here entry is (key file (list of type-conses))
7907 (while (setq entry (pop all)) 7938 (while (setq entry (pop all))
@@ -7914,7 +7945,7 @@ If we do not know about MODULE, just return KEYWORD literally."
7914 (cdr (car (nth 2 entry)))) 7945 (cdr (car (nth 2 entry))))
7915 'data (cons 'source data))) 7946 'data (cons 'source data)))
7916 (idlwave-insert-source-location 7947 (idlwave-insert-source-location
7917 (format "\n%-8s %s" 7948 (format "\n%-8s %s"
7918 (if (equal cnt 1) 7949 (if (equal cnt 1)
7919 (if (> total 1) "Sources:" "Source:") 7950 (if (> total 1) "Sources:" "Source:")
7920 "") 7951 "")
@@ -7923,7 +7954,7 @@ If we do not know about MODULE, just return KEYWORD literally."
7923 (incf cnt) 7954 (incf cnt)
7924 (when (and all (> cnt idlwave-rinfo-max-source-lines)) 7955 (when (and all (> cnt idlwave-rinfo-max-source-lines))
7925 ;; No more source lines, please 7956 ;; No more source lines, please
7926 (insert (format 7957 (insert (format
7927 "\n Source information truncated to %d entries." 7958 "\n Source information truncated to %d entries."
7928 idlwave-rinfo-max-source-lines)) 7959 idlwave-rinfo-max-source-lines))
7929 (setq all nil))) 7960 (setq all nil)))
@@ -7937,7 +7968,7 @@ If we do not know about MODULE, just return KEYWORD literally."
7937 (unwind-protect 7968 (unwind-protect
7938 (progn 7969 (progn
7939 (select-window win) 7970 (select-window win)
7940 (enlarge-window (- (/ (frame-height) 2) 7971 (enlarge-window (- (/ (frame-height) 2)
7941 (window-height))) 7972 (window-height)))
7942 (shrink-window-if-larger-than-buffer)) 7973 (shrink-window-if-larger-than-buffer))
7943 (select-window ww))))))))) 7974 (select-window ww)))))))))
@@ -7974,9 +8005,9 @@ it."
7974 ((and (not file) shell-flag) 8005 ((and (not file) shell-flag)
7975 (insert "Unresolved")) 8006 (insert "Unresolved"))
7976 8007
7977 ((null file) 8008 ((null file)
7978 (insert "ERROR")) 8009 (insert "ERROR"))
7979 8010
7980 ((idlwave-syslib-p file) 8011 ((idlwave-syslib-p file)
7981 (if (string-match "obsolete" (file-name-directory file)) 8012 (if (string-match "obsolete" (file-name-directory file))
7982 (insert "Obsolete ") 8013 (insert "Obsolete ")
@@ -7990,7 +8021,7 @@ it."
7990 ;; Old special syntax: a matching regexp 8021 ;; Old special syntax: a matching regexp
7991 ((setq special (idlwave-special-lib-test file)) 8022 ((setq special (idlwave-special-lib-test file))
7992 (insert (format "%-10s" special))) 8023 (insert (format "%-10s" special)))
7993 8024
7994 ;; Catch-all with file 8025 ;; Catch-all with file
7995 ((idlwave-lib-p file) (insert "Library ")) 8026 ((idlwave-lib-p file) (insert "Library "))
7996 8027
@@ -8005,7 +8036,7 @@ it."
8005 (if shell-flag "S" "-") 8036 (if shell-flag "S" "-")
8006 (if buffer-flag "B" "-") 8037 (if buffer-flag "B" "-")
8007 "] "))) 8038 "] ")))
8008 (when (> ndupl 1) 8039 (when (> ndupl 1)
8009 (setq beg (point)) 8040 (setq beg (point))
8010 (insert (format "(%dx) " ndupl)) 8041 (insert (format "(%dx) " ndupl))
8011 (add-text-properties beg (point) (list 'face 'bold))) 8042 (add-text-properties beg (point) (list 'face 'bold)))
@@ -8029,7 +8060,7 @@ Return the name of the special lib if there is a match."
8029 alist nil))) 8060 alist nil)))
8030 rtn) 8061 rtn)
8031 (t nil)))) 8062 (t nil))))
8032 8063
8033(defun idlwave-mouse-active-rinfo-right (ev) 8064(defun idlwave-mouse-active-rinfo-right (ev)
8034 (interactive "e") 8065 (interactive "e")
8035 (idlwave-mouse-active-rinfo ev 'right)) 8066 (idlwave-mouse-active-rinfo ev 'right))
@@ -8048,7 +8079,8 @@ Optional args RIGHT and SHIFT indicate, if mouse-3 was used, and if SHIFT
8048was pressed." 8079was pressed."
8049 (interactive "e") 8080 (interactive "e")
8050 (if ev (mouse-set-point ev)) 8081 (if ev (mouse-set-point ev))
8051 (let (data id name type class buf bufwin source word initial-class) 8082 (let (data id name type class buf bufwin source link keyword
8083 word initial-class)
8052 (setq data (get-text-property (point) 'data) 8084 (setq data (get-text-property (point) 'data)
8053 source (get-text-property (point) 'source) 8085 source (get-text-property (point) 'source)
8054 keyword (get-text-property (point) 'keyword) 8086 keyword (get-text-property (point) 'keyword)
@@ -8062,9 +8094,9 @@ was pressed."
8062 8094
8063 (cond ((eq id 'class) ; Switch class being displayed 8095 (cond ((eq id 'class) ; Switch class being displayed
8064 (if (window-live-p bufwin) (select-window bufwin)) 8096 (if (window-live-p bufwin) (select-window bufwin))
8065 (idlwave-display-calling-sequence 8097 (idlwave-display-calling-sequence
8066 (idlwave-sintern-method name) 8098 (idlwave-sintern-method name)
8067 type (idlwave-sintern-class word) 8099 type (idlwave-sintern-class word)
8068 initial-class)) 8100 initial-class))
8069 ((eq id 'usage) ; Online help on this routine 8101 ((eq id 'usage) ; Online help on this routine
8070 (idlwave-online-help link name type class)) 8102 (idlwave-online-help link name type class))
@@ -8105,9 +8137,9 @@ was pressed."
8105 (setq bwin (get-buffer-window buffer))) 8137 (setq bwin (get-buffer-window buffer)))
8106 (if (eq (preceding-char) ?/) 8138 (if (eq (preceding-char) ?/)
8107 (insert keyword) 8139 (insert keyword)
8108 (unless (save-excursion 8140 (unless (save-excursion
8109 (re-search-backward 8141 (re-search-backward
8110 "[(,][ \t]*\\(\\$[ \t]*\\(;.*\\)?\n\\)?[ \t]*\\=" 8142 "[(,][ \t]*\\(\\$[ \t]*\\(;.*\\)?\n\\)?[ \t]*\\="
8111 (min (- (point) 100) (point-min)) t)) 8143 (min (- (point) 100) (point-min)) t))
8112 (insert ", ")) 8144 (insert ", "))
8113 (if shift (insert "/")) 8145 (if shift (insert "/"))
@@ -8159,7 +8191,7 @@ the load path in order to find a definition. The output of this
8159command can be used to detect possible name clashes during this process." 8191command can be used to detect possible name clashes during this process."
8160 (idlwave-routines) ; Make sure everything is loaded. 8192 (idlwave-routines) ; Make sure everything is loaded.
8161 (unless (or idlwave-user-catalog-routines idlwave-library-catalog-routines) 8193 (unless (or idlwave-user-catalog-routines idlwave-library-catalog-routines)
8162 (or (y-or-n-p 8194 (or (y-or-n-p
8163 "You don't have any user or library catalogs. Continue anyway? ") 8195 "You don't have any user or library catalogs. Continue anyway? ")
8164 (error "Abort"))) 8196 (error "Abort")))
8165 (let* ((routines (append idlwave-system-routines 8197 (let* ((routines (append idlwave-system-routines
@@ -8172,7 +8204,7 @@ command can be used to detect possible name clashes during this process."
8172 (keymap (make-sparse-keymap)) 8204 (keymap (make-sparse-keymap))
8173 (props (list 'mouse-face 'highlight 8205 (props (list 'mouse-face 'highlight
8174 km-prop keymap 8206 km-prop keymap
8175 'help-echo "Mouse2: Find source")) 8207 'help-echo "Mouse2: Find source"))
8176 (nroutines (length (or special-routines routines))) 8208 (nroutines (length (or special-routines routines)))
8177 (step (/ nroutines 99)) 8209 (step (/ nroutines 99))
8178 (n 0) 8210 (n 0)
@@ -8196,13 +8228,13 @@ command can be used to detect possible name clashes during this process."
8196 (message "Sorting routines...done") 8228 (message "Sorting routines...done")
8197 8229
8198 (define-key keymap (if (featurep 'xemacs) [(button2)] [(mouse-2)]) 8230 (define-key keymap (if (featurep 'xemacs) [(button2)] [(mouse-2)])
8199 (lambda (ev) 8231 (lambda (ev)
8200 (interactive "e") 8232 (interactive "e")
8201 (mouse-set-point ev) 8233 (mouse-set-point ev)
8202 (apply 'idlwave-do-find-module 8234 (apply 'idlwave-do-find-module
8203 (get-text-property (point) 'find-args)))) 8235 (get-text-property (point) 'find-args))))
8204 (define-key keymap [(return)] 8236 (define-key keymap [(return)]
8205 (lambda () 8237 (lambda ()
8206 (interactive) 8238 (interactive)
8207 (apply 'idlwave-do-find-module 8239 (apply 'idlwave-do-find-module
8208 (get-text-property (point) 'find-args)))) 8240 (get-text-property (point) 'find-args))))
@@ -8230,13 +8262,13 @@ command can be used to detect possible name clashes during this process."
8230 (> (idlwave-count-memq 'buffer (nth 2 (car dtwins))) 1)) 8262 (> (idlwave-count-memq 'buffer (nth 2 (car dtwins))) 1))
8231 (incf cnt) 8263 (incf cnt)
8232 (insert (format "\n%s%s" 8264 (insert (format "\n%s%s"
8233 (idlwave-make-full-name (nth 2 routine) 8265 (idlwave-make-full-name (nth 2 routine)
8234 (car routine)) 8266 (car routine))
8235 (if (eq (nth 1 routine) 'fun) "()" ""))) 8267 (if (eq (nth 1 routine) 'fun) "()" "")))
8236 (while (setq twin (pop dtwins)) 8268 (while (setq twin (pop dtwins))
8237 (setq props1 (append (list 'find-args 8269 (setq props1 (append (list 'find-args
8238 (list (nth 0 routine) 8270 (list (nth 0 routine)
8239 (nth 1 routine) 8271 (nth 1 routine)
8240 (nth 2 routine))) 8272 (nth 2 routine)))
8241 props)) 8273 props))
8242 (idlwave-insert-source-location "\n - " twin props1)))) 8274 (idlwave-insert-source-location "\n - " twin props1))))
@@ -8259,7 +8291,7 @@ command can be used to detect possible name clashes during this process."
8259 (or (not (stringp sfile)) 8291 (or (not (stringp sfile))
8260 (not (string-match "\\S-" sfile)))) 8292 (not (string-match "\\S-" sfile))))
8261 (setq stype 'unresolved)) 8293 (setq stype 'unresolved))
8262 (princ (format " %-10s %s\n" 8294 (princ (format " %-10s %s\n"
8263 stype 8295 stype
8264 (if sfile sfile "No source code available"))))) 8296 (if sfile sfile "No source code available")))))
8265 8297
@@ -8278,20 +8310,20 @@ ENTRY will also be returned, as the first item of this list."
8278 (eq type (nth 1 candidate)) 8310 (eq type (nth 1 candidate))
8279 (eq class (nth 2 candidate))) 8311 (eq class (nth 2 candidate)))
8280 (push candidate twins))) 8312 (push candidate twins)))
8281 (if (setq candidate (idlwave-rinfo-assq name type class 8313 (if (setq candidate (idlwave-rinfo-assq name type class
8282 idlwave-unresolved-routines)) 8314 idlwave-unresolved-routines))
8283 (push candidate twins)) 8315 (push candidate twins))
8284 (cons entry (nreverse twins)))) 8316 (cons entry (nreverse twins))))
8285 8317
8286(defun idlwave-study-twins (entries) 8318(defun idlwave-study-twins (entries)
8287 "Return dangerous twins of first entry in ENTRIES. 8319 "Return dangerous twins of first entry in ENTRIES.
8288Dangerous twins are routines with same name, but in different files on 8320Dangerous twins are routines with same name, but in different files on
8289the load path. If a file is in the system library and has an entry in 8321the load path. If a file is in the system library and has an entry in
8290the `idlwave-system-routines' list, we omit the latter as 8322the `idlwave-system-routines' list, we omit the latter as
8291non-dangerous because many IDL routines are implemented as library 8323non-dangerous because many IDL routines are implemented as library
8292routines, and may have been scanned." 8324routines, and may have been scanned."
8293 (let* ((entry (car entries)) 8325 (let* ((entry (car entries))
8294 (name (car entry)) ; 8326 (name (car entry)) ;
8295 (type (nth 1 entry)) ; Must be bound for 8327 (type (nth 1 entry)) ; Must be bound for
8296 (class (nth 2 entry)) ; idlwave-routine-twin-compare 8328 (class (nth 2 entry)) ; idlwave-routine-twin-compare
8297 (cnt 0) 8329 (cnt 0)
@@ -8309,23 +8341,23 @@ routines, and may have been scanned."
8309 (t 'unresolved))) 8341 (t 'unresolved)))
8310 8342
8311 ;; Check for an entry in the system library 8343 ;; Check for an entry in the system library
8312 (if (and file 8344 (if (and file
8313 (not syslibp) 8345 (not syslibp)
8314 (idlwave-syslib-p file)) 8346 (idlwave-syslib-p file))
8315 (setq syslibp t)) 8347 (setq syslibp t))
8316 8348
8317 ;; If there's more than one matching entry for the same file, just 8349 ;; If there's more than one matching entry for the same file, just
8318 ;; append the type-cons to the type list. 8350 ;; append the type-cons to the type list.
8319 (if (setq entry (assoc key alist)) 8351 (if (setq entry (assoc key alist))
8320 (push type-cons (nth 2 entry)) 8352 (push type-cons (nth 2 entry))
8321 (push (list key file (list type-cons)) alist))) 8353 (push (list key file (list type-cons)) alist)))
8322 8354
8323 (setq alist (nreverse alist)) 8355 (setq alist (nreverse alist))
8324 8356
8325 (when syslibp 8357 (when syslibp
8326 ;; File is in system *library* - remove any 'system entry 8358 ;; File is in system *library* - remove any 'system entry
8327 (setq alist (delq (assq 'system alist) alist))) 8359 (setq alist (delq (assq 'system alist) alist)))
8328 8360
8329 ;; If 'system remains and we've scanned the syslib, it's a builtin 8361 ;; If 'system remains and we've scanned the syslib, it's a builtin
8330 ;; (rather than a !DIR/lib/.pro file bundled as source). 8362 ;; (rather than a !DIR/lib/.pro file bundled as source).
8331 (when (and (idlwave-syslib-scanned-p) 8363 (when (and (idlwave-syslib-scanned-p)
@@ -8333,7 +8365,6 @@ routines, and may have been scanned."
8333 (setcar entry 'builtin)) 8365 (setcar entry 'builtin))
8334 (sort alist 'idlwave-routine-twin-compare))) 8366 (sort alist 'idlwave-routine-twin-compare)))
8335 8367
8336(defvar name)
8337(defvar type) 8368(defvar type)
8338(defvar class) 8369(defvar class)
8339(defvar idlwave-sort-prefer-buffer-info t 8370(defvar idlwave-sort-prefer-buffer-info t
@@ -8362,7 +8393,7 @@ compares twins on the basis of their file names and path locations."
8362 ((not (eq type (nth 1 b))) 8393 ((not (eq type (nth 1 b)))
8363 ;; Type decides 8394 ;; Type decides
8364 (< (if (eq type 'fun) 1 0) (if (eq (nth 1 b) 'fun) 1 0))) 8395 (< (if (eq type 'fun) 1 0) (if (eq (nth 1 b) 'fun) 1 0)))
8365 (t 8396 (t
8366 ;; A and B are twins - so the decision is more complicated. 8397 ;; A and B are twins - so the decision is more complicated.
8367 ;; Call twin-compare with the proper arguments. 8398 ;; Call twin-compare with the proper arguments.
8368 (idlwave-routine-entry-compare-twins a b))))) 8399 (idlwave-routine-entry-compare-twins a b)))))
@@ -8414,7 +8445,7 @@ This expects NAME TYPE CLASS to be bound to the right values."
8414 (tpath-alist (idlwave-true-path-alist)) 8445 (tpath-alist (idlwave-true-path-alist))
8415 (apathp (and (stringp akey) 8446 (apathp (and (stringp akey)
8416 (assoc (file-name-directory akey) tpath-alist))) 8447 (assoc (file-name-directory akey) tpath-alist)))
8417 (bpathp (and (stringp bkey) 8448 (bpathp (and (stringp bkey)
8418 (assoc (file-name-directory bkey) tpath-alist))) 8449 (assoc (file-name-directory bkey) tpath-alist)))
8419 ;; How early on search path? High number means early since we 8450 ;; How early on search path? High number means early since we
8420 ;; measure the tail of the path list 8451 ;; measure the tail of the path list
@@ -8450,7 +8481,7 @@ This expects NAME TYPE CLASS to be bound to the right values."
8450 (t nil)))) ; Default 8481 (t nil)))) ; Default
8451 8482
8452(defun idlwave-routine-source-file (source) 8483(defun idlwave-routine-source-file (source)
8453 (if (nth 2 source) 8484 (if (nth 2 source)
8454 (expand-file-name (nth 1 source) (nth 2 source)) 8485 (expand-file-name (nth 1 source) (nth 2 source))
8455 (nth 1 source))) 8486 (nth 1 source)))
8456 8487
@@ -8540,7 +8571,7 @@ Assumes that point is at the beginning of the unit as found by
8540 (forward-sexp 2) 8571 (forward-sexp 2)
8541 (forward-sexp -1) 8572 (forward-sexp -1)
8542 (let ((begin (point))) 8573 (let ((begin (point)))
8543 (re-search-forward 8574 (re-search-forward
8544 "[a-zA-Z_][a-zA-Z0-9$_]+\\(::[a-zA-Z_][a-zA-Z0-9$_]+\\)?") 8575 "[a-zA-Z_][a-zA-Z0-9$_]+\\(::[a-zA-Z_][a-zA-Z0-9$_]+\\)?")
8545 (if (fboundp 'buffer-substring-no-properties) 8576 (if (fboundp 'buffer-substring-no-properties)
8546 (buffer-substring-no-properties begin (point)) 8577 (buffer-substring-no-properties begin (point))
@@ -8580,12 +8611,12 @@ Assumes that point is at the beginning of the unit as found by
8580 (start-process "idldeclient" nil 8611 (start-process "idldeclient" nil
8581 idlwave-shell-explicit-file-name "-c" "-e" 8612 idlwave-shell-explicit-file-name "-c" "-e"
8582 (buffer-file-name) "&")) 8613 (buffer-file-name) "&"))
8583 8614
8584(defun idlwave-launch-idlhelp () 8615(defun idlwave-launch-idlhelp ()
8585 "Start the IDLhelp application." 8616 "Start the IDLhelp application."
8586 (interactive) 8617 (interactive)
8587 (start-process "idlhelp" nil idlwave-help-application)) 8618 (start-process "idlhelp" nil idlwave-help-application))
8588 8619
8589;; Menus - using easymenu.el 8620;; Menus - using easymenu.el
8590(defvar idlwave-mode-menu-def 8621(defvar idlwave-mode-menu-def
8591 `("IDLWAVE" 8622 `("IDLWAVE"
@@ -8672,7 +8703,7 @@ Assumes that point is at the beginning of the unit as found by
8672 ("Customize" 8703 ("Customize"
8673 ["Browse IDLWAVE Group" idlwave-customize t] 8704 ["Browse IDLWAVE Group" idlwave-customize t]
8674 "--" 8705 "--"
8675 ["Build Full Customize Menu" idlwave-create-customize-menu 8706 ["Build Full Customize Menu" idlwave-create-customize-menu
8676 (fboundp 'customize-menu-create)]) 8707 (fboundp 'customize-menu-create)])
8677 ("Documentation" 8708 ("Documentation"
8678 ["Describe Mode" describe-mode t] 8709 ["Describe Mode" describe-mode t]
@@ -8689,22 +8720,22 @@ Assumes that point is at the beginning of the unit as found by
8689 '("Debug" 8720 '("Debug"
8690 ["Start IDL shell" idlwave-shell t] 8721 ["Start IDL shell" idlwave-shell t]
8691 ["Save and .RUN buffer" idlwave-shell-save-and-run 8722 ["Save and .RUN buffer" idlwave-shell-save-and-run
8692 (and (boundp 'idlwave-shell-automatic-start) 8723 (and (boundp 'idlwave-shell-automatic-start)
8693 idlwave-shell-automatic-start)])) 8724 idlwave-shell-automatic-start)]))
8694 8725
8695(if (or (featurep 'easymenu) (load "easymenu" t)) 8726(if (or (featurep 'easymenu) (load "easymenu" t))
8696 (progn 8727 (progn
8697 (easy-menu-define idlwave-mode-menu idlwave-mode-map 8728 (easy-menu-define idlwave-mode-menu idlwave-mode-map
8698 "IDL and WAVE CL editing menu" 8729 "IDL and WAVE CL editing menu"
8699 idlwave-mode-menu-def) 8730 idlwave-mode-menu-def)
8700 (easy-menu-define idlwave-mode-debug-menu idlwave-mode-map 8731 (easy-menu-define idlwave-mode-debug-menu idlwave-mode-map
8701 "IDL and WAVE CL editing menu" 8732 "IDL and WAVE CL editing menu"
8702 idlwave-mode-debug-menu-def))) 8733 idlwave-mode-debug-menu-def)))
8703 8734
8704(defun idlwave-customize () 8735(defun idlwave-customize ()
8705 "Call the customize function with idlwave as argument." 8736 "Call the customize function with idlwave as argument."
8706 (interactive) 8737 (interactive)
8707 ;; Try to load the code for the shell, so that we can customize it 8738 ;; Try to load the code for the shell, so that we can customize it
8708 ;; as well. 8739 ;; as well.
8709 (or (featurep 'idlw-shell) 8740 (or (featurep 'idlw-shell)
8710 (load "idlw-shell" t)) 8741 (load "idlw-shell" t))
@@ -8715,11 +8746,11 @@ Assumes that point is at the beginning of the unit as found by
8715 (interactive) 8746 (interactive)
8716 (if (fboundp 'customize-menu-create) 8747 (if (fboundp 'customize-menu-create)
8717 (progn 8748 (progn
8718 ;; Try to load the code for the shell, so that we can customize it 8749 ;; Try to load the code for the shell, so that we can customize it
8719 ;; as well. 8750 ;; as well.
8720 (or (featurep 'idlw-shell) 8751 (or (featurep 'idlw-shell)
8721 (load "idlw-shell" t)) 8752 (load "idlw-shell" t))
8722 (easy-menu-change 8753 (easy-menu-change
8723 '("IDLWAVE") "Customize" 8754 '("IDLWAVE") "Customize"
8724 `(["Browse IDLWAVE group" idlwave-customize t] 8755 `(["Browse IDLWAVE group" idlwave-customize t]
8725 "--" 8756 "--"
@@ -8767,7 +8798,7 @@ This function was written since `list-abbrevs' looks terrible for IDLWAVE mode."
8767 (let ((table (symbol-value 'idlwave-mode-abbrev-table)) 8798 (let ((table (symbol-value 'idlwave-mode-abbrev-table))
8768 abbrevs 8799 abbrevs
8769 str rpl func fmt (len-str 0) (len-rpl 0)) 8800 str rpl func fmt (len-str 0) (len-rpl 0))
8770 (mapatoms 8801 (mapatoms
8771 (lambda (sym) 8802 (lambda (sym)
8772 (if (symbol-value sym) 8803 (if (symbol-value sym)
8773 (progn 8804 (progn
@@ -8793,7 +8824,7 @@ This function was written since `list-abbrevs' looks terrible for IDLWAVE mode."
8793 (with-output-to-temp-buffer "*Help*" 8824 (with-output-to-temp-buffer "*Help*"
8794 (if arg 8825 (if arg
8795 (progn 8826 (progn
8796 (princ "Abbreviations and Actions in IDLWAVE-Mode\n") 8827 (princ "Abbreviations and Actions in IDLWAVE-Mode\n")
8797 (princ "=========================================\n\n") 8828 (princ "=========================================\n\n")
8798 (princ (format fmt "KEY" "REPLACE" "HOOK")) 8829 (princ (format fmt "KEY" "REPLACE" "HOOK"))
8799 (princ (format fmt "---" "-------" "----"))) 8830 (princ (format fmt "---" "-------" "----")))