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 (Electric 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.