idlwave: Custom Expression Examination

 
 5.6 Custom Expression Examination
 =================================
 
 The variety of possible variable and expression examination commands is
 endless (just look, for instance, at the keyword list to
 ‘widget_info()’).  Rather than attempt to include them all, IDLWAVE
 provides two easy methods to customize your own commands, with a special
 mouse examine command, and two macros for generating your own examine
 key and mouse bindings.
 
    The most powerful and flexible mouse examine command of all is
 available on ‘C-S-mouse-2’.  Just as for all the other mouse examine
 commands, it permits click or drag expression selection, but instead of
 sending hard-coded commands to the shell, it pops-up a customizable
 selection list of examine functions to choose among, configured with the
 ‘idlwave-shell-examine-alist’ variable(1).  This variable is a list of
 key-value pairs (an _alist_ in Emacs parlance), where the key gives a
 name to be shown for the examine command, and the value is the command
 strings itself, in which the text ‘___’ (three underscores) will be
 replaced by the selected expression before being sent to the shell.  An
 example might be key ‘Structure Help’ with value ‘help,___,/STRUCTURE’.
 In that case, you’d be prompted with _Structure Help_, which might send
 something like ‘help,var,/STRUCTURE’ to the shell for output.
 ‘idlwave-shell-examine-alist’ comes configured by default with a large
 list of examine commands, but you can easily customize it to add your
 own.
 
    In addition to configuring the functions available to the pop-up
 mouse command, you can easily create your own customized bindings to
 inspect expressions using the two convenience macros
 ‘idlwave-shell-examine’ and ‘idlwave-shell-mouse-examine’.  These create
 keyboard or mouse-based custom inspections of variables, sharing all the
 same properties of the built-in examine commands.  Both functions take a
 single string argument sharing the syntax of the
 ‘idlwave-shell-examine-alist’ values, e.g.:
 
      (add-hook 'idlwave-shell-mode-hook
                (lambda ()
                  (idlwave-shell-define-key-both [s-down-mouse-2]
                                       (idlwave-shell-mouse-examine
                                        "print, size(___,/DIMENSIONS)"))
                  (idlwave-shell-define-key-both [f9] (idlwave-shell-examine
                                             "print, size(___,/DIMENSIONS)"))
                  (idlwave-shell-define-key-both [f10] (idlwave-shell-examine
                                              "print,size(___,/TNAME)"))
                  (idlwave-shell-define-key-both [f11] (idlwave-shell-examine
                                              "help,___,/STRUCTURE"))))
 
 Now pressing <f9>, or middle-mouse dragging with the <SUPER> key
 depressed, will print the dimensions of the nearby or highlighted
 expression.  Pressing <f10> will give the type string, and <f11> will
 show the contents of a nearby structure.  As you can see, the
 possibilities are only marginally finite.
 
  -- User Option: idlwave-shell-examine-alist
      An alist of examine commands in which the keys name the command and
      are displayed in the selection pop-up, and the values are custom
      IDL examine command strings to send, after all instances of ‘___’
      (three underscores) are replaced by the indicated expression.
 
    ---------- Footnotes ----------
 
    (1) In Electric Debug Mode (SeeElectric Debug Mode), the key ‘x’
 provides a single-character shortcut interface to the same examine
 functions for the expression at point or marked by the region.