+(defcustom idlwave-shell-graphics-window-size '(500 400)
+ "Size of IDL graphics windows popped up by special IDLWAVE command.
+The command is `C-c C-d C-f' and accepts as a prefix the window nr.
+A command like `WINDOW,N,xsize=XX,ysize=YY' is sent to IDL."
+ :group 'idlwave-shell-general-setup
+ :type '(list
+ (integer :tag "x size")
+ (integer :tag "y size")))
+
+;; Commands Sent to Shell... etc.
+(defgroup idlwave-shell-command-setup nil
+ "Setup for command parameters of the Shell interaction for IDLWAVE."
+ :prefix "idlwave-shell"
+ :group 'idlwave)
+
+(defcustom idlwave-shell-initial-commands "!more=0"
+ "Initial commands, separated by newlines, to send to IDL.
+This string is sent to the IDL process by `idlwave-shell-mode' which is
+invoked by `idlwave-shell'."
+ :group 'idlwave-shell-command-setup
+ :type 'string)
+
+(defcustom idlwave-shell-save-command-history t
+ "Non-nil means preserve command history between sessions.
+The file `idlwave-shell-command-history-file' is used to save and restore
+the history."
+ :group 'idlwave-shell-command-setup
+ :type 'boolean)
+
+(defcustom idlwave-shell-command-history-file "~/.idlwhist"
+ "The file in which the command history of the idlwave shell is saved.
+In order to change the size of the history, see the variable
+`comint-input-ring-size'.
+The history is only saved if the variable `idlwave-shell-save-command-history'
+is non-nil."
+ :group 'idlwave-shell-command-setup
+ :type 'file)
+
+(defcustom idlwave-shell-show-commands
+ '(run misc breakpoint)
+ "*A list of command types to show output from in the shell.
+Possibilities are 'run, 'debug, 'breakpoint, and 'misc . Unlisted
+types are not displayed in the shell. The single type 'everything
+causes all the copious shell traffic to be displayed."
+ :group 'idlwave-shell-command-setup
+ :type '(choice
+ (const everything)
+ (set :tag "Checklist" :greedy t
+ (const :tag "All .run and .compile commands" run)
+ (const :tag "All breakpoint commands" breakpoint)
+ (const :tag "All debug and stepping commands" debug)
+ (const :tag "Return, close, etc. commands" misc))))
+
+(defcustom idlwave-shell-examine-alist
+ '(("Print" . "print,___")
+ ("Help" . "help,___")
+ ("Structure Help" . "help,___,/STRUCTURE")
+ ("Dimensions" . "print,size(___,/DIMENSIONS)")
+ ("Type" . "print,size(___,/TNAME)")
+ ("N_Elements" . "print,n_elements(___)")
+ ("All Size Info" . "help,(__IWsz__=size(___,/STRUCTURE)),/STRUCTURE & print,__IWsz__.DIMENSIONS")
+ ("Ptr Valid" . "print,ptr_valid(___)")
+ ("Widget Valid" . "print,widget_info(___,/VALID)")
+ ("Widget Geometry" . "help,widget_info(___,/GEOMETRY)"))
+ "Alist of special examine commands for popup selection.
+The keys are used in the selection popup created by
+`idlwave-shell-examine-select', and the corresponding value is sent as
+a command to the shell, with special sequence `___' replaced by the
+expression being examined."
+ :group 'idlwave-shell-command-setup
+ :type '(repeat
+ (cons
+ (string :tag "Label ")
+ (string :tag "Command"))))
+
+(defvar idlwave-shell-print-expression-function nil
+ "*OBSOLETE VARIABLE, is no longer used.")
+
+(defcustom idlwave-shell-separate-examine-output t
+ "*Non-nil mean, put output of examine commands in their own buffer."
+ :group 'idlwave-shell-command-setup
+ :type 'boolean)
+
+(defcustom idlwave-shell-comint-settings
+ '((comint-scroll-to-bottom-on-input . t)
+ (comint-scroll-to-bottom-on-output . t)
+ (comint-scroll-show-maximum-output . nil))
+
+ "Alist of special settings for the comint variables in the IDLWAVE Shell.
+Each entry is a cons cell with the name of a variable and a value.
+The function `idlwave-shell-mode' will make local variables out of each entry.
+Changes to this variable will only be active when the shell buffer is
+newly created."
+ :group 'idlwave-shell-command-setup
+ :type '(repeat
+ (cons variable sexp)))
+
+(defcustom idlwave-shell-query-for-class t
+ "*Non-nil means query the shell for object class on object completions."
+ :group 'idlwave-shell-command-setup
+ :type 'boolean)