From 5e72c6b20edf9a6ea3316f9d71a4fdda34654381 Mon Sep 17 00:00:00 2001 From: "J.D. Smith" Date: Thu, 18 Jul 2002 18:58:07 +0000 Subject: [PATCH] Updated to IDLWAVE version 4.14. See idlwave.org. --- lisp/progmodes/idlw-rinfo.el | 239 +++--- lisp/progmodes/idlw-shell.el | 916 +++++++++++++++++----- lisp/progmodes/idlw-toolbar.el | 50 +- lisp/progmodes/idlwave.el | 1350 ++++++++++++++++++++++---------- 4 files changed, 1812 insertions(+), 743 deletions(-) diff --git a/lisp/progmodes/idlw-rinfo.el b/lisp/progmodes/idlw-rinfo.el index c22031e49cd..cacafda2106 100644 --- a/lisp/progmodes/idlw-rinfo.el +++ b/lisp/progmodes/idlw-rinfo.el @@ -1,8 +1,10 @@ ;;; idlw-rinfo.el --- Routine Information for IDLWAVE -;; Copyright (c) 1999, 2000 Free Software Foundation +;; Copyright (c) 1999 Carsten Dominik +;; Copyright (c) 1999, 2000, 2001, 2002 Free Software Foundation -;; Author: John-David Smith -;; Version: 4.7 +;; Author: Carsten Dominik +;; Maintainer: J.D. Smith +;; Version: 4.14 ;; Keywords: languages ;; This file is part of GNU Emacs. @@ -29,21 +31,28 @@ ;; information is extracted automatically from the IDL documentation ;; and by talking to IDL. ;; -;; Created by get_rinfo54 on Fri Dec 8 14:06:41 2000 -;; IDL version: 5.4 -;; Number of files scanned: 5 +;; Created by get_rinfo on Wed May 22 16:40:34 2002 +;; IDL version: 5.5 +;; Number of files scanned: 6 ;; 943 syntax entries in file refguide.txt ;; 327 syntax entries in file sdf.txt ;; 0 syntax entries in file datamine.txt ;; 6 syntax entries in file edg.txt ;; 45 syntax entries in file obsolete.txt -;; Number of routines found: 1287 -;; Number of keywords found: 5724 - +;; 38 syntax entries in file whatsnew55.txt +;; Number of routines found: 1324 +;; Number of keywords found: 5958 +;; +;; Fixed up documentation with file: ./help55fixup.txt +;; 93 total fix matches. +; +;; New versions of IDLWAVE, documentation, and more information +;; available from: +;; http://idlwave.org +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Code: - (defconst idlwave-system-routines '( ("ANNOTATE" pro nil (system) "%s" (("COLOR_INDICES") ("DRAWABLE") ("LOAD_FILE") ("TEK_COLORS") ("WINDOW"))) @@ -52,7 +61,7 @@ ("BAR_PLOT" pro nil (system) "%s, Values" (("BACKGROUND") ("BARNAMES") ("BAROFFSET") ("BARSPACE") ("BARWIDTH") ("BASELINES") ("BASERANGE") ("COLORS") ("OUTLINE") ("OVERPLOT") ("ROTATE") ("TITLE") ("XTITLE") ("YTITLE"))) ("BLAS_AXPY" pro nil (system) "%s, Y, A, X [, D1, Loc1 [, D2, Range]]" nil) ("BOX_CURSOR" pro nil (system) "%s, [ X0, Y0, NX, NY]" (("FIXED_SIZE") ("INIT") ("MESSAGE"))) - ("BREAKPOINT" pro nil (system) "%s [, File], Index" (("AFTER") ("CLEAR") ("CONDITION") ("DISABLE") ("ENABLE") ("ONCE") ("SET"))) + ("BREAKPOINT" pro nil (system) "%s [, File], Index" (("AFTER") ("CLEAR") ("CONDITION") ("DISABLE") ("ENABLE") ("ON_RECOMPILE") ("ONCE") ("SET"))) ("BYTEORDER" pro nil (system) "%s, Variable1, ..., Variablen" (("DTOGFLOAT") ("DTOVAX") ("DTOXDR") ("FTOVAX") ("FTOXDR") ("GFLOATTOD") ("HTONL") ("HTONS") ("L64SWAP") ("LSWAP") ("NTOHL") ("NTOHS") ("SSWAP") ("SWAP_IF_BIG_ENDIAN") ("SWAP_IF_LITTLE_ENDIAN") ("VAXTOD") ("VAXTOF") ("XDRTOD") ("XDRTOF"))) ("CALDAT" pro nil (system) "%s, Julian, Month [, Day [, Year [, Hour [, Minute [, Second]]]]]" nil) ("CALENDAR" pro nil (system) "%s [[, Month] , Year]" nil) @@ -83,7 +92,8 @@ ("COLOR_CONVERT" pro nil (system) "%s, I0, I1, I2, O0, O1, O2" (("HLS_RGB") ("HSV_RGB") ("RGB_HLS") ("RGB_HSV"))) ("COMMON" pro nil (system) "%s VOLUME_DATA, A" (("A"))) ("CONSTRAINED_MIN" pro nil (system) "%s, X, Xbnd, Gbnd, Nobj, Gcomp, Inform" (("ESPTOP") ("LIMSER") ("MAXIMIZE") ("NSTOP") ("REPORT") ("TITLE"))) - ("CONTOUR" pro nil (system) "%s, Z [, X, Y]" (("BACKGROUND") ("C_ANNOTATION") ("C_CHARSIZE") ("C_CHARTHICK") ("C_COLORS") ("C_LABELS") ("C_LINESTYLE") ("C_ORIENTATION") ("C_SPACING") ("C_THICK") ("CELL_FILL") ("CHARSIZE") ("CHARTHICK") ("CLIP") ("CLOSED") ("COLOR") ("DATA") ("DEVICE") ("DOWNHILL") ("FILL") ("FOLLOW") ("FONT") ("IRREGULAR") ("LEVELS") ("MAX_VALUE") ("MIN_VALUE") ("NLEVELS") ("NOCLIP") ("NODATA") ("NOERASE") ("NORMAL") ("NSUM") ("OVERPLOT") ("PATH_DATA_COORDS") ("PATH_DOUBLE") ("PATH_FILENAME") ("PATH_INFO") ("PATH_XY") ("POLAR") ("POSITION") ("SUBTITLE") ("T3D") ("THICK") ("TICKLEN") ("TITLE") ("TRIANGULATION") ("XCHARSIZE") ("XGRIDSTYLE") ("XLOG") ("XMARGIN") ("XMINOR") ("XRANGE") ("XSTYLE") ("XTHICK") ("XTICK_GET") ("XTICKFORMAT") ("XTICKINTERVAL") ("XTICKLAYOUT") ("XTICKLEN") ("XTICKNAME") ("XTICKS") ("XTICKUNITS") ("XTICKV") ("XTITLE") ("YCHARSIZE") ("YGRIDSTYLE") ("YLOG") ("YMARGIN") ("YMINOR") ("YNOZERO") ("YRANGE") ("YSTYLE") ("YTHICK") ("YTICK_GET") ("YTICKFORMAT") ("YTICKINTERVAL") ("YTICKLAYOUT") ("YTICKLEN") ("YTICKNAME") ("YTICKS") ("YTICKUNITS") ("YTICKV") ("YTITLE") ("ZAXIS") ("ZCHARSIZE") ("ZGRIDSTYLE") ("ZLOG") ("ZMARGIN") ("ZMINOR") ("ZRANGE") ("ZSTYLE") ("ZTHICK") ("ZTICK_GET") ("ZTICKFORMAT") ("ZTICKINTERVAL") ("ZTICKLAYOUT") ("ZTICKLEN") ("ZTICKNAME") ("ZTICKS") ("ZTICKUNITS") ("ZTICKV") ("ZTITLE") ("ZVALUE"))) + ("CONTOUR" pro nil (system) "%s, Z [, X, Y]" (("BACKGROUND") ("C_ANNOTATION") ("C_CHARSIZE") ("C_CHARTHICK") ("C_COLORS") ("C_LABELS") ("C_LINESTYLE") ("C_ORIENTATION") ("C_SPACING") ("C_THICK") ("CELL_FILL") ("CHARSIZE") ("CHARTHICK") ("CLIP") ("CLOSED") ("COLOR") ("DATA") ("DEVICE") ("DOWNHILL") ("FILL") ("FOLLOW") ("FONT") ("IRREGULAR") ("ISOTROPIC") ("LEVELS") ("MAX_VALUE") ("MIN_VALUE") ("NLEVELS") ("NOCLIP") ("NODATA") ("NOERASE") ("NORMAL") ("NSUM") ("OVERPLOT") ("PATH_DATA_COORDS") ("PATH_DOUBLE") ("PATH_FILENAME") ("PATH_INFO") ("PATH_XY") ("POLAR") ("POSITION") ("SUBTITLE") ("T3D") ("THICK") ("TICKLEN") ("TITLE") ("TRIANGULATION") ("XCHARSIZE") ("XGRIDSTYLE") ("XLOG") ("XMARGIN") ("XMINOR") ("XRANGE") ("XSTYLE") ("XTHICK") ("XTICK_GET") ("XTICKFORMAT") ("XTICKINTERVAL") ("XTICKLAYOUT") ("XTICKLEN") ("XTICKNAME") ("XTICKS") ("XTICKUNITS") ("XTICKV") ("XTITLE") ("YCHARSIZE") ("YGRIDSTYLE") ("YLOG") ("YMARGIN") ("YMINOR") ("YNOZERO") ("YRANGE") ("YSTYLE") ("YTHICK") ("YTICK_GET") ("YTICKFORMAT") ("YTICKINTERVAL") ("YTICKLAYOUT") ("YTICKLEN") ("YTICKNAME") ("YTICKS") ("YTICKUNITS") ("YTICKV") ("YTITLE") ("ZAXIS") ("ZCHARSIZE") ("ZGRIDSTYLE") ("ZLOG") ("ZMARGIN") ("ZMINOR") ("ZRANGE") ("ZSTYLE") ("ZTHICK") ("ZTICK_GET") ("ZTICKFORMAT") ("ZTICKINTERVAL") ("ZTICKLAYOUT") ("ZTICKLEN") ("ZTICKNAME") ("ZTICKS") ("ZTICKUNITS") ("ZTICKV") ("ZTITLE") ("ZVALUE"))) + ("CPU" pro nil (system) "%s" (("TPOOL_MAX_ELTS") ("TPOOL_MIN_ELTS") ("TPOOL_NTHREADS") ("VECTOR_ENABLE"))) ("CREATE_VIEW" pro nil (system) "%s" (("AX") ("AY") ("AZ") ("PERSP") ("RADIANS") ("WINX") ("WINY") ("XMAX") ("XMIN") ("YMAX") ("YMIN") ("ZFAC") ("ZMAX") ("ZMIN") ("ZOOM"))) ("CURSOR" pro nil (system) "%s, X, Y [, Wait]" (("CHANGE") ("DATA") ("DEVICE") ("DOWN") ("NORMAL") ("NOWAIT") ("UP") ("WAIT"))) ("CW_ANIMATE_GETP" pro nil (system) "%s, Widget, Pixmaps" (("KILL_ANYWAY"))) @@ -94,11 +104,13 @@ ("CW_PALETTE_EDITOR_GET" pro nil (system) "%s, WidgetID" (("ALPHA") ("HISTOGRAM"))) ("CW_PALETTE_EDITOR_SET" pro nil (system) "%s, WidgetID" (("ALPHA") ("HISTOGRAM"))) ("DEFINE_KEY" pro nil (system) "%s, Key [, Value]" (("BACK_CHARACTER") ("BACK_WORD") ("CONTROL") ("DELETE_CHARACTER") ("DELETE_CURRENT") ("DELETE_EOL") ("DELETE_LINE") ("DELETE_WORD") ("END_OF_FILE") ("END_OF_LINE") ("ENTER_LINE") ("ESCAPE") ("FORWARD_CHARACTER") ("FORWARD_WORD") ("INSERT_OVERSTRIKE_TOGGLE") ("MATCH_PREVIOUS") ("NEXT_LINE") ("NOECHO") ("PREVIOUS_LINE") ("RECALL") ("REDRAW") ("START_OF_LINE") ("TERMINATE"))) + ("DEFINE_MSGBLK" pro nil (system) "%s, BlockName, ErrorNames, ErrorFormats" (("IGNORE_DUPLICATE") ("PREFIX"))) + ("DEFINE_MSGBLK_FROM_FILE" pro nil (system) "%s, Filename" (("BLOCK") ("IGNORE_DUPLICATE") ("PREFIX") ("VERBOSE"))) ("DEFSYSV" pro nil (system) "%s, Name, Value [, Read_Only]" (("EXISTS"))) ("DELETE_SYMBOL" pro nil (system) "%s, Name" (("TYPE"))) ("DELLOG" pro nil (system) "%s, Lognam" (("TABLE"))) ("DELVAR" pro nil (system) "%s, V1, ..., Vn" nil) - ("DEVICE" pro nil (system) "%s" (("AVANTGARDE") ("AVERAGE_LINES") ("BINARY") ("BITS_PER_PIXEL") ("BKMAN") ("BOLD") ("BOOK") ("BYPASS_TRANSLATION") ("CLOSE") ("CLOSE_DOCUMENT") ("CLOSE_FILE") ("COLOR") ("COLORS") ("COPY") ("COURIER") ("CURSOR_CROSSHAIR") ("CURSOR_IMAGE") ("CURSOR_MASK") ("CURSOR_ORIGINAL") ("CURSOR_STANDARD") ("CURSOR_XY") ("DECOMPOSED") ("DEMI") ("DEPTH") ("DIRECT_COLOR") ("EJECT") ("ENCAPSULATED") ("ENCODING") ("FILENAME") ("FLOYD") ("FONT_INDEX") ("FONT_SIZE") ("GET_CURRENT_FONT") ("GET_DECOMPOSED") ("GET_FONTNAMES") ("GET_FONTNUM") ("GET_GRAPHICS_FUNCTION") ("GET_PAGESIZE") ("GET_SCREEN_SIZE") ("GET_VISUAL_DEPTH") ("GET_VISUAL_NAME") ("GET_WINDOW_POSITION") ("GET_WRITE_MASK") ("GIN_CHARS") ("GLYPH_CACHE") ("HELVETICA") ("INCHES") ("INDEX_COLOR") ("ISOLATIN1") ("ITALIC") ("LANDSCAPE") ("LIGHT") ("MEDIUM") ("NARROW") ("NCAR") ("OBLIQUE") ("OPTIMIZE") ("ORDERED") ("OUTPUT") ("PALATINO") ("PIXELS") ("PLOT_TO") ("PLOTTER_ON_OFF") ("POLYFILL") ("PORTRAIT") ("PRE_DEPTH") ("PRE_XSIZE") ("PRE_YSIZE") ("PREVIEW") ("PRINT_FILE") ("PSEUDO_COLOR") ("RESET_STRING") ("RESOLUTION") ("RETAIN") ("SCALE_FACTOR") ("SCHOOLBOOK") ("SET_CHARACTER_SIZE") ("SET_COLORMAP") ("SET_COLORS") ("SET_FONT") ("SET_GRAPHICS_FUNCTION") ("SET_RESOLUTION") ("SET_STRING") ("SET_TRANSLATION") ("SET_WRITE_MASK") ("STATIC_COLOR") ("STATIC_GRAY") ("SYMBOL") ("TEK4014") ("TEK4100") ("TEXT") ("THRESHOLD") ("TIMES") ("TRANSLATION") ("TRUE_COLOR") ("TT_FONT") ("TTY") ("VT240") ("VT241") ("VT340") ("VT341") ("WINDOW_STATE") ("XOFFSET") ("XON_XOFF") ("XSIZE") ("YOFFSET") ("YSIZE") ("Z_BUFFERING") ("ZAPFCHANCERY") ("ZAPFDINGBATS"))) + ("DEVICE" pro nil (system) "%s" (("AVANTGARDE") ("AVERAGE_LINES") ("BINARY") ("BITS_PER_PIXEL") ("BKMAN") ("BOLD") ("BOOK") ("BYPASS_TRANSLATION") ("CLOSE") ("CLOSE_DOCUMENT") ("CLOSE_FILE") ("COLOR") ("COLORS") ("COPY") ("COURIER") ("CURSOR_CROSSHAIR") ("CURSOR_IMAGE") ("CURSOR_MASK") ("CURSOR_ORIGINAL") ("CURSOR_STANDARD") ("CURSOR_XY") ("DECOMPOSED") ("DEMI") ("DEPTH") ("DIRECT_COLOR") ("EJECT") ("ENCAPSULATED") ("ENCODING") ("FILENAME") ("FLOYD") ("FONT_INDEX") ("FONT_SIZE") ("GET_CURRENT_FONT") ("GET_DECOMPOSED") ("GET_FONTNAMES") ("GET_FONTNUM") ("GET_GRAPHICS_FUNCTION") ("GET_PAGESIZE") ("GET_SCREEN_SIZE") ("GET_VISUAL_DEPTH") ("GET_VISUAL_NAME") ("GET_WINDOW_POSITION") ("GET_WRITE_MASK") ("GIN_CHARS") ("GLYPH_CACHE") ("HELVETICA") ("INCHES") ("INDEX_COLOR") ("ISOLATIN1") ("ITALIC") ("LANDSCAPE") ("LANUAGE_LEVEL") ("LIGHT") ("MEDIUM") ("NARROW") ("NCAR") ("OBLIQUE") ("OPTIMIZE") ("ORDERED") ("OUTPUT") ("PALATINO") ("PIXELS") ("PLOT_TO") ("PLOTTER_ON_OFF") ("POLYFILL") ("PORTRAIT") ("PRE_DEPTH") ("PRE_XSIZE") ("PRE_YSIZE") ("PREVIEW") ("PRINT_FILE") ("PSEUDO_COLOR") ("RESET_STRING") ("RESOLUTION") ("RETAIN") ("SCALE_FACTOR") ("SCHOOLBOOK") ("SET_CHARACTER_SIZE") ("SET_COLORMAP") ("SET_COLORS") ("SET_FONT") ("SET_GRAPHICS_FUNCTION") ("SET_RESOLUTION") ("SET_STRING") ("SET_TRANSLATION") ("SET_WRITE_MASK") ("STATIC_COLOR") ("STATIC_GRAY") ("SYMBOL") ("TEK4014") ("TEK4100") ("TEXT") ("THRESHOLD") ("TIMES") ("TRANSLATION") ("TRUE_COLOR") ("TT_FONT") ("TTY") ("VT240") ("VT241") ("VT340") ("VT341") ("WINDOW_STATE") ("XOFFSET") ("XON_XOFF") ("XSIZE") ("YOFFSET") ("YSIZE") ("Z_BUFFERING") ("ZAPFCHANCERY") ("ZAPFDINGBATS"))) ("DFPMIN" pro nil (system) "%s, X, Gtol, Fmin, Func, Dfunc" (("DOUBLE") ("EPS") ("ITER") ("ITMAX") ("STEPMAX") ("TOLX"))) ("DISSOLVE" pro nil (system) "%s, Image" (("ORDER") ("SIZ") ("WAIT") ("X0") ("Y0"))) ("DLM_LOAD" pro nil (system) "%s, DLMNameStr1 [, DLMNameStr2,..., DLMNameStrn]" nil) @@ -113,9 +125,9 @@ ("ERRPLOT" pro nil (system) "%s, [ X, ] Low, High" (("WIDTH"))) ("EXIT" pro nil (system) "%s" (("NO_CONFIRM") ("STATUS"))) ("EXPAND" pro nil (system) "%s, A, Nx, Ny, Result" (("FILLVAL") ("MAXVAL"))) - ("FILE_CHMOD" pro nil (system) "%s, File [, Mode]" (("A_EXECUTE") ("A_READ") ("A_WRITE") ("G_EXECTUE") ("G_READ") ("G_WRITE") ("O_EXECTUE") ("O_READ") ("O_WRITE") ("SETGID") ("SETUID") ("STICKY_BIT") ("U_EXECTUE") ("U_READ") ("U_WRITE"))) - ("FILE_DELETE" pro nil (system) "%s, File1 [,... FileN]" (("QUIET"))) - ("FILE_MKDIR" pro nil (system) "%s, File1 [,... FileN]" nil) + ("FILE_CHMOD" pro nil (system) "%s, File [, Mode]" (("A_EXECUTE") ("A_READ") ("A_WRITE") ("G_EXECTUE") ("G_READ") ("G_WRITE") ("NOEXPAND_PATH") ("O_EXECTUE") ("O_READ") ("O_WRITE") ("SETGID") ("SETUID") ("STICKY_BIT") ("U_EXECTUE") ("U_READ") ("U_WRITE"))) + ("FILE_DELETE" pro nil (system) "%s, File1 [,... FileN]" (("NOEXPAND_PATH") ("QUIET"))) + ("FILE_MKDIR" pro nil (system) "%s, File1 [,... FileN]" (("NOEXPAND_PATH"))) ("FLICK" pro nil (system) "%s, A, B [, Rate]" nil) ("FLOW3" pro nil (system) "%s, Vx, Vy, Vz" (("ARROWSIZE") ("BLOB") ("LEN") ("NSTEPS") ("NVECS") ("SX") ("SY") ("SZ"))) ("FLUSH" pro nil (system) "%s, Unit1, ..., Unitn" nil) @@ -123,6 +135,7 @@ ("FUNCT" pro nil (system) "%s, X, A, F [, Pder]" nil) ("GAMMA_CT" pro nil (system) "%s, Gamma" (("CURRENT") ("INTENSITY"))) ("GET_LUN" pro nil (system) "%s, Unit" nil) + ("GRID_INPUT" pro nil (system) "%s, X, Y, F, X1, Y1, F1" (("DEGREES") ("DUPLICATES") ("EPSILON") ("EXCLUDE") ("POLAR") ("SPHERE"))) ("H_EQ_CT" pro nil (system) "%s [, Image]" nil) ("H_EQ_INT" pro nil (system) "%s [, Image]" nil) ("HANDLE_FREE" pro nil (system) "%s, ID" nil) @@ -187,6 +200,8 @@ ("HDF_SD_SETEXTFILE" pro nil (system) "%s, SDS_ID, Filename" (("OFFSET"))) ("HDF_SD_SETINFO" pro nil (system) "%s, SDS_ID" (("CALDATA") ("COORDSYS") ("FILL") ("FORMAT") ("LABEL") ("RANGE") ("UNIT"))) ("HDF_UNPACKDATA" pro nil (system) "%s, packeddata, data1 [, data2 [, data3 [, data4 [, data5 [, data6 [, data7 [, data8]]]]]]]" (("HDF_ORDER") ("HDF_TYPE") ("NREC"))) + ("HDF_VD_ATTRINFO" pro nil (system) "%s, VData, FieldID, AttrID, Values" (("COUNT") ("DATA") ("HDF_TYPE") ("NAME") ("TYPE"))) + ("HDF_VD_ATTRSET" pro nil (system) "%s, VData, FieldID, Attr_Name, Values [, Count]" (("BYTE") ("DFNT_CHAR8") ("DFNT_FLOAT32") ("DFNT_FLOAT64") ("DFNT_INT16") ("DFNT_INT32") ("DFNT_INT8") ("DFNT_UCHAR8") ("DFNT_UINT16") ("DFNT_UINT32") ("DFNT_UINT8") ("DOUBLE") ("FLOAT") ("INT") ("LONG") ("SHORT") ("STRING") ("UINT") ("ULONG"))) ("HDF_VD_DETACH" pro nil (system) "%s, VData" nil) ("HDF_VD_FDEFINE" pro nil (system) "%s, VData, Fieldname" (("BYTE") ("DLONG") ("DOUBLE") ("DULONG") ("FLOAT") ("INT") ("LONG") ("ORDER") ("UINT") ("ULONG"))) ("HDF_VD_GET" pro nil (system) "%s, VData" (("CLASS") ("COUNT") ("FIELDS") ("INTERLACE") ("NAME") ("NFIELDS") ("REF") ("SIZE") ("TAG"))) @@ -202,14 +217,16 @@ ("HDF_VG_GETTRS" pro nil (system) "%s, VGroup, Tags, Refs" (("MAXSIZE"))) ("HDF_VG_INSERT" pro nil (system) "%s, VGroup, VData(or Vgroup)" (("POSITION"))) ("HDF_VG_SETINFO" pro nil (system) "%s, VGroup" (("CLASS") ("NAME"))) + ("HEAP_FREE" pro nil (system) "%s, Var" (("OBJ") ("PTR") ("VERBOSE"))) ("HEAP_GC" pro nil (system) "%s" (("OBJ") ("PTR") ("VERBOSE"))) ("HELP" pro nil (system) "%s, Expression1, ..., Expressionn" (("ALL_KEYS") ("BREAKPOINTS") ("BRIEF") ("CALLS") ("DEVICE") ("DLM") ("FILES") ("FULL") ("FUNCTIONS") ("HEAP_VARIABLES") ("KEYS") ("LAST_MESSAGE") ("MEMORY") ("MESSAGES") ("NAMES") ("OBJECTS") ("OUTPUT") ("PROCEDURES") ("RECALL_COMMANDS") ("ROUTINES") ("SOURCE_FILES") ("STRUCTURES") ("SYSTEM_VARIABLES") ("TRACEBACK"))) ("HLS" pro nil (system) "%s, Litlo, Lithi, Satlo, Sathi, Hue, Loops [, Colr]" nil) - ("HOUGH" pro nil (system) "%s Transform: Result = HOUGH( Array)" (("BACKPROJECT") ("DOUBLE") ("DRHO") ("DX") ("DY") ("GRAY") ("NRHO") ("NTHETA") ("NX") ("NY") ("RHO") ("RMIN") ("THETA") ("XMIN") ("YMIN"))) ("HSV" pro nil (system) "%s, Vlo, Vhi, Satlo, Sathi, Hue, Loops [, Colr]" nil) ("IDL_SYSRTN_GENERIC" pro nil (system) "%s IDL_SysRtnGetRealPtr(int is_function, char *name)" nil) ("IMAGE_CONT" pro nil (system) "%s, A" (("ASPECT") ("INTERP") ("WINDOW_SCALE"))) ("IMAGE_STATISTICS" pro nil (system) "%s, Data" (("COUNT") ("DATA_SUM") ("LABELED") ("LUT") ("MASK") ("MAXIMUM") ("MEAN") ("MINIMUM") ("STDDEV") ("SUM_OF_SQUARES") ("VARIANCE") ("VECTOR") ("WEIGHT_SUM") ("WEIGHTED"))) + ("INTERLEAVED" pro nil (system) "%s Result = GRIDDATA( X, F ) Planar Result = GRIDDATA( X, Y, F ) Sphere From Cartesian Coordinates Result = GRIDDATA( X, Y, Z, F)" (("ANISOTROPY") ("DEGREES") ("DELTA") ("DIMENSION") ("EMPTY_SECTORS") ("FAULT_POLYGONS") ("FAULT_XY") ("FUNCTION_TYPE") ("GRID") ("INVERSE_DISTANCE") ("KRIGING") ("LINEAR") ("MAX_PER_SECTOR") ("METHOD") ("MIN_CURVATURE") ("MIN_POINTS") ("MISSING") ("NATURAL_NEIGHBOR") ("NEAREST_NEIGHBOR") ("NEIGHBORHOOD") ("POLYNOMIAL_REGRESSION") ("POWER") ("QUINTIC") ("RADIAL_BASIS_FUNCTION") ("SEARCH_ELLIPSE") ("SECTORS") ("SHEPARDS") ("SMOOTHING") ("SPHERE") ("START") ("TRIANGLES") ("VARIOGRAM") ("XOUT") ("YOUT"))) + ("INTERVAL_VOLUME" pro nil (system) "%s, Data, Value0, Value1, Outverts, Outconn" (("AUXDATA_IN") ("AUXDATA_OUT") ("GEOM_XYZ") ("TETRAHEDRA"))) ("ISOCONTOUR" pro nil (system) "%s, Values, Outverts, Outconn" (("AUXDATA_IN") ("AUXDATA_OUT") ("C_VALUE") ("DOUBLE") ("FILL") ("GEOMX") ("GEOMY") ("GEOMZ") ("LEVEL_VALUES") ("N_LEVELS") ("OUTCONN_INDICES") ("POLYGONS"))) ("ISOSURFACE" pro nil (system) "%s, Data, Value, Outverts, Outconn" (("AUXDATA_IN") ("AUXDATA_OUT") ("GEOM_XYZ") ("TETRAHEDRA"))) ("JOURNAL" pro nil (system) "%s [, Arg]" nil) @@ -236,8 +253,8 @@ ("MAP_GRID" pro nil (system) "%s" (("BOX_AXES") ("CHARSIZE") ("CLIP_TEXT") ("COLOR") ("FILL_HORIZON") ("GLINESTYLE") ("GLINETHICK") ("HORIZON") ("INCREMENT") ("LABEL") ("LATALIGN") ("LATDEL") ("LATLAB") ("LATNAMES") ("LATS") ("LONALIGN") ("LONDEL") ("LONLAB") ("LONNAMES") ("LONS") ("NO_GRID") ("ORIENTATION") ("T3D") ("ZVALUE"))) ("MAP_PROJ_INFO" pro nil (system) "%s [, iproj]" (("AZIMUTHAL") ("CIRCLE") ("CURRENT") ("CYLINDRICAL") ("LL_LIMITS") ("NAME") ("PROJ_NAMES") ("UV_LIMITS") ("UV_RANGE"))) ("MAP_SET" pro nil (system) "%s [, P0lat, P0lon, Rot]" (("ADVANCE") ("AITOFF") ("ALBERS") ("AZIMUTHAL") ("CENTRAL_AZIMUTH") ("CHARSIZE") ("CLIP") ("COLOR") ("CON_COLOR") ("CONIC") ("CONTINENTS") ("CYLINDRICAL") ("E_CONTINENTS") ("E_GRID") ("E_HORIZON") ("ELLIPSOID") ("GLINESTYLE") ("GLINETHICK") ("GNOMIC") ("GOODESHOMOLOSINE") ("GRID") ("HAMMER") ("HIRES") ("HORIZON") ("ISOTROPIC") ("LABEL") ("LAMBERT") ("LATALIGN") ("LATDEL") ("LATLAB") ("LIMIT") ("LONDEL") ("LONLAB") ("MERCATOR") ("MILLER_CYLINDRICAL") ("MLINESTYLE") ("MLINETHICK") ("MOLLEWIDE") ("NAME") ("NOBORDER") ("NOERASE") ("ORTHOGRAPHIC") ("POSITION") ("REVERSE") ("ROBINSON") ("SAT_P") ("SATELLITE") ("SCALE") ("SINUSOIDAL") ("STANDARD_PARALLELS") ("STEREOGRAPHIC") ("T3D") ("TITLE") ("TRANSVERSE_MERCATOR") ("USA") ("XMARGIN") ("YMARGIN") ("ZVALUE"))) - ("MESH_OBJ" pro nil (system) "%s, Type, Vertex_List, Polygon_List, Array1 [, Array2]" (("DEGREES") ("P1") ("P2") ("P3") ("P4") ("P5"))) - ("MESSAGE" pro nil (system) "%s, [Text]" (("CONTINUE") ("INFORMATIONAL") ("IOERROR") ("NONAME") ("NOPREFIX") ("NOPRINT") ("RESET"))) + ("MESH_OBJ" pro nil (system) "%s, Type, Vertex_List, Polygon_List, Array1 [, Array2]" (("CLOSED") ("DEGREES") ("P1") ("P2") ("P3") ("P4") ("P5"))) + ("MESSAGE" pro nil (system) "%s, [Text]" (("BLOCK") ("CONTINUE") ("INFORMATIONAL") ("IOERROR") ("NAME") ("NONAME") ("NOPREFIX") ("NOPRINT") ("RESET"))) ("MK_HTML_HELP" pro nil (system) "%s, Sources, Filename" (("STRICT") ("TITLE") ("VERBOSE"))) ("MODIFYCT" pro nil (system) "%s, Itab, Name, R, G, B" (("FILE"))) ("MPEG_CLOSE" pro nil (system) "%s, mpegID" nil) @@ -262,21 +279,21 @@ ("ON_ERROR" pro nil (system) "%s, N" nil) ("ON_IOERROR" pro nil (system) "%s, Label" nil) ("ONLINE_HELP" pro nil (system) "%s [, Value]" (("BOOK") ("CONTEXT") ("FULL_PATH") ("HTML_HELP") ("QUIT") ("TOPICS"))) - ("OPENR" pro nil (system) "%s, Unit, File [, Record_Length]" (("APPEND") ("BLOCK") ("BUFSIZE") ("COMPRESS") ("DEFAULT") ("DELETE") ("ERROR") ("EXTENDSIZE") ("F77_UNFORMATTED") ("FIXED") ("FORTRAN") ("GET_LUN") ("INITIALSIZE") ("KEYED") ("LIST") ("MACCREATOR") ("MACTYPE") ("MORE") ("NONE") ("PRINT") ("RAWIO") ("SEGMENTED") ("SHARED") ("STDIO") ("STREAM") ("SUBMIT") ("SUPERSEDE") ("SWAP_ENDIAN") ("SWAP_IF_BIG_ENDIAN") ("SWAP_IF_LITTLE_ENDIAN") ("TRUNCATE_ON_CLOSE") ("UDF_BLOCK") ("VARIABLE") ("VAX_FLOAT") ("WIDTH") ("XDR"))) - ("OPENU" pro nil (system) "%s, Unit, File [, Record_Length]" (("APPEND") ("BLOCK") ("BUFSIZE") ("COMPRESS") ("DEFAULT") ("DELETE") ("ERROR") ("EXTENDSIZE") ("F77_UNFORMATTED") ("FIXED") ("FORTRAN") ("GET_LUN") ("INITIALSIZE") ("KEYED") ("LIST") ("MACCREATOR") ("MACTYPE") ("MORE") ("NONE") ("PRINT") ("RAWIO") ("SEGMENTED") ("SHARED") ("STDIO") ("STREAM") ("SUBMIT") ("SUPERSEDE") ("SWAP_ENDIAN") ("SWAP_IF_BIG_ENDIAN") ("SWAP_IF_LITTLE_ENDIAN") ("TRUNCATE_ON_CLOSE") ("UDF_BLOCK") ("VARIABLE") ("VAX_FLOAT") ("WIDTH") ("XDR"))) - ("OPENW" pro nil (system) "%s, Unit, File [, Record_Length]" (("APPEND") ("BLOCK") ("BUFSIZE") ("COMPRESS") ("DEFAULT") ("DELETE") ("ERROR") ("EXTENDSIZE") ("F77_UNFORMATTED") ("FIXED") ("FORTRAN") ("GET_LUN") ("INITIALSIZE") ("KEYED") ("LIST") ("MACCREATOR") ("MACTYPE") ("MORE") ("NONE") ("PRINT") ("RAWIO") ("SEGMENTED") ("SHARED") ("STDIO") ("STREAM") ("SUBMIT") ("SUPERSEDE") ("SWAP_ENDIAN") ("SWAP_IF_BIG_ENDIAN") ("SWAP_IF_LITTLE_ENDIAN") ("TRUNCATE_ON_CLOSE") ("UDF_BLOCK") ("VARIABLE") ("VAX_FLOAT") ("WIDTH") ("XDR"))) + ("OPENR" pro nil (system) "%s, Unit, File [, Record_Length]" (("APPEND") ("BLOCK") ("BUFSIZE") ("COMPRESS") ("DEFAULT") ("DELETE") ("ERROR") ("EXTENDSIZE") ("F77_UNFORMATTED") ("FIXED") ("FORTRAN") ("GET_LUN") ("INITIALSIZE") ("KEYED") ("LIST") ("MACCREATOR") ("MACTYPE") ("MORE") ("NOEXPAND_PATH") ("NONE") ("PRINT") ("RAWIO") ("SEGMENTED") ("SHARED") ("STDIO") ("STREAM") ("SUBMIT") ("SUPERSEDE") ("SWAP_ENDIAN") ("SWAP_IF_BIG_ENDIAN") ("SWAP_IF_LITTLE_ENDIAN") ("TRUNCATE_ON_CLOSE") ("UDF_BLOCK") ("VARIABLE") ("VAX_FLOAT") ("WIDTH") ("XDR"))) + ("OPENU" pro nil (system) "%s, Unit, File [, Record_Length]" (("APPEND") ("BLOCK") ("BUFSIZE") ("COMPRESS") ("DEFAULT") ("DELETE") ("ERROR") ("EXTENDSIZE") ("F77_UNFORMATTED") ("FIXED") ("FORTRAN") ("GET_LUN") ("INITIALSIZE") ("KEYED") ("LIST") ("MACCREATOR") ("MACTYPE") ("MORE") ("NOEXPAND_PATH") ("NONE") ("PRINT") ("RAWIO") ("SEGMENTED") ("SHARED") ("STDIO") ("STREAM") ("SUBMIT") ("SUPERSEDE") ("SWAP_ENDIAN") ("SWAP_IF_BIG_ENDIAN") ("SWAP_IF_LITTLE_ENDIAN") ("TRUNCATE_ON_CLOSE") ("UDF_BLOCK") ("VARIABLE") ("VAX_FLOAT") ("WIDTH") ("XDR"))) + ("OPENW" pro nil (system) "%s, Unit, File [, Record_Length]" (("APPEND") ("BLOCK") ("BUFSIZE") ("COMPRESS") ("DEFAULT") ("DELETE") ("ERROR") ("EXTENDSIZE") ("F77_UNFORMATTED") ("FIXED") ("FORTRAN") ("GET_LUN") ("INITIALSIZE") ("KEYED") ("LIST") ("MACCREATOR") ("MACTYPE") ("MORE") ("NOEXPAND_PATH") ("NONE") ("PRINT") ("RAWIO") ("SEGMENTED") ("SHARED") ("STDIO") ("STREAM") ("SUBMIT") ("SUPERSEDE") ("SWAP_ENDIAN") ("SWAP_IF_BIG_ENDIAN") ("SWAP_IF_LITTLE_ENDIAN") ("TRUNCATE_ON_CLOSE") ("UDF_BLOCK") ("VARIABLE") ("VAX_FLOAT") ("WIDTH") ("XDR"))) ("OPLOT" pro nil (system) "%s, [X,] Y" (("CLIP") ("COLOR") ("LINESTYLE") ("MAX_VALUE") ("MIN_VALUE") ("NOCLIP") ("NSUM") ("POLAR") ("PSYM") ("SYMSIZE") ("T3D") ("THICK") ("ZVALUE"))) ("OPLOTERR" pro nil (system) "%s, [ X ,] Y , Err [, Psym]" nil) ("PARTICLE_TRACE" pro nil (system) "%s, Data, Seeds, Verts, Conn [, Normals]" (("ANISOTROPY") ("INTEGRATION") ("MAX_ITERATIONS") ("MAX_STEPSIZE") ("SEED_NORMAL") ("TOLERANCE") ("UNIFORM"))) - ("PLOT" pro nil (system) "%s, [X,] Y" (("BACKGROUND") ("CHARSIZE") ("CHARTHICK") ("CLIP") ("COLOR") ("DATA") ("DEVICE") ("FONT") ("LINESTYLE") ("MAX_VALUE") ("MIN_VALUE") ("NOCLIP") ("NODATA") ("NOERASE") ("NORMAL") ("NSUM") ("POLAR") ("POSITION") ("PSYM") ("SUBTITLE") ("SYMSIZE") ("T3D") ("THICK") ("TICKLEN") ("TITLE") ("XCHARSIZE") ("XGRIDSTYLE") ("XLOG") ("XMARGIN") ("XMINOR") ("XRANGE") ("XSTYLE") ("XTHICK") ("XTICK_GET") ("XTICKFORMAT") ("XTICKINTERVAL") ("XTICKLAYOUT") ("XTICKLEN") ("XTICKNAME") ("XTICKS") ("XTICKUNITS") ("XTICKV") ("XTITLE") ("YCHARSIZE") ("YGRIDSTYLE") ("YLOG") ("YMARGIN") ("YMINOR") ("YNOZERO") ("YRANGE") ("YSTYLE") ("YTHICK") ("YTICK_GET") ("YTICKFORMAT") ("YTICKINTERVAL") ("YTICKLAYOUT") ("YTICKLEN") ("YTICKNAME") ("YTICKS") ("YTICKUNITS") ("YTICKV") ("YTITLE") ("ZCHARSIZE") ("ZGRIDSTYLE") ("ZMARGIN") ("ZMINOR") ("ZRANGE") ("ZSTYLE") ("ZTHICK") ("ZTICK_GET") ("ZTICKFORMAT") ("ZTICKINTERVAL") ("ZTICKLAYOUT") ("ZTICKLEN") ("ZTICKNAME") ("ZTICKS") ("ZTICKUNITS") ("ZTICKV") ("ZTITLE") ("ZVALUE"))) - ("PLOT_3DBOX" pro nil (system) "%s, X, Y, Z" (("AX") ("AZ") ("BACKGROUND") ("CHARSIZE") ("CHARTHICK") ("CLIP") ("COLOR") ("DATA") ("DEVICE") ("GRIDSTYLE") ("LINESTYLE") ("MAX_VALUE") ("MIN_VALUE") ("NOCLIP") ("NODATA") ("NOERASE") ("NORMAL") ("NSUM") ("POLAR") ("POSITION") ("PSYM") ("SOLID_WALLS") ("SUBTITLE") ("T3D") ("THICK") ("TICKLEN") ("TITLE") ("XCHARSIZE") ("XGRIDSTYLE") ("XLOG") ("XMARGIN") ("XMINOR") ("XRANGE") ("XSTYLE") ("XTHICK") ("XTICKFORMAT") ("XTICKINTERVAL") ("XTICKLAYOUT") ("XTICKLEN") ("XTICKNAME") ("XTICKS") ("XTICKUNITS") ("XTICKV") ("XTITLE") ("XY_PLANE") ("XYSTYLE") ("XZ_PLANE") ("XZSTYLE") ("YCHARSIZE") ("YGRIDSTYLE") ("YLOG") ("YMARGIN") ("YMINOR") ("YNOZERO") ("YRANGE") ("YSTYLE") ("YTHICK") ("YTICKFORMAT") ("YTICKINTERVAL") ("YTICKLAYOUT") ("YTICKLEN") ("YTICKNAME") ("YTICKS") ("YTICKUNITS") ("YTICKV") ("YTITLE") ("YZ_PLANE") ("YZSTYLE") ("ZAXIS") ("ZCHARSIZE") ("ZGRIDSTYLE") ("ZMARGIN") ("ZMINOR") ("ZRANGE") ("ZSTYLE") ("ZTHICK") ("ZTICKFORMAT") ("ZTICKINTERVAL") ("ZTICKLAYOUT") ("ZTICKLEN") ("ZTICKNAME") ("ZTICKS") ("ZTICKUNITS") ("ZTICKV") ("ZTITLE"))) + ("PLOT" pro nil (system) "%s, [X,] Y" (("BACKGROUND") ("CHARSIZE") ("CHARTHICK") ("CLIP") ("COLOR") ("DATA") ("DEVICE") ("FONT") ("ISOTROPIC") ("LINESTYLE") ("MAX_VALUE") ("MIN_VALUE") ("NOCLIP") ("NODATA") ("NOERASE") ("NORMAL") ("NSUM") ("POLAR") ("POSITION") ("PSYM") ("SUBTITLE") ("SYMSIZE") ("T3D") ("THICK") ("TICKLEN") ("TITLE") ("XCHARSIZE") ("XGRIDSTYLE") ("XLOG") ("XMARGIN") ("XMINOR") ("XRANGE") ("XSTYLE") ("XTHICK") ("XTICK_GET") ("XTICKFORMAT") ("XTICKINTERVAL") ("XTICKLAYOUT") ("XTICKLEN") ("XTICKNAME") ("XTICKS") ("XTICKUNITS") ("XTICKV") ("XTITLE") ("YCHARSIZE") ("YGRIDSTYLE") ("YLOG") ("YMARGIN") ("YMINOR") ("YNOZERO") ("YRANGE") ("YSTYLE") ("YTHICK") ("YTICK_GET") ("YTICKFORMAT") ("YTICKINTERVAL") ("YTICKLAYOUT") ("YTICKLEN") ("YTICKNAME") ("YTICKS") ("YTICKUNITS") ("YTICKV") ("YTITLE") ("ZCHARSIZE") ("ZGRIDSTYLE") ("ZMARGIN") ("ZMINOR") ("ZRANGE") ("ZSTYLE") ("ZTHICK") ("ZTICK_GET") ("ZTICKFORMAT") ("ZTICKINTERVAL") ("ZTICKLAYOUT") ("ZTICKLEN") ("ZTICKNAME") ("ZTICKS") ("ZTICKUNITS") ("ZTICKV") ("ZTITLE") ("ZVALUE"))) + ("PLOT_3DBOX" pro nil (system) "%s, X, Y, Z" (("AX") ("AZ") ("BACKGROUND") ("CHARSIZE") ("CHARTHICK") ("CLIP") ("COLOR") ("DATA") ("DEVICE") ("GRIDSTYLE") ("ISOTROPIC") ("LINESTYLE") ("MAX_VALUE") ("MIN_VALUE") ("NOCLIP") ("NODATA") ("NOERASE") ("NORMAL") ("NSUM") ("POLAR") ("POSITION") ("PSYM") ("SOLID_WALLS") ("SUBTITLE") ("T3D") ("THICK") ("TICKLEN") ("TITLE") ("XCHARSIZE") ("XGRIDSTYLE") ("XLOG") ("XMARGIN") ("XMINOR") ("XRANGE") ("XSTYLE") ("XTHICK") ("XTICKFORMAT") ("XTICKINTERVAL") ("XTICKLAYOUT") ("XTICKLEN") ("XTICKNAME") ("XTICKS") ("XTICKUNITS") ("XTICKV") ("XTITLE") ("XY_PLANE") ("XYSTYLE") ("XZ_PLANE") ("XZSTYLE") ("YCHARSIZE") ("YGRIDSTYLE") ("YLOG") ("YMARGIN") ("YMINOR") ("YNOZERO") ("YRANGE") ("YSTYLE") ("YTHICK") ("YTICKFORMAT") ("YTICKINTERVAL") ("YTICKLAYOUT") ("YTICKLEN") ("YTICKNAME") ("YTICKS") ("YTICKUNITS") ("YTICKV") ("YTITLE") ("YZ_PLANE") ("YZSTYLE") ("ZAXIS") ("ZCHARSIZE") ("ZGRIDSTYLE") ("ZMARGIN") ("ZMINOR") ("ZRANGE") ("ZSTYLE") ("ZTHICK") ("ZTICKFORMAT") ("ZTICKINTERVAL") ("ZTICKLAYOUT") ("ZTICKLEN") ("ZTICKNAME") ("ZTICKS") ("ZTICKUNITS") ("ZTICKV") ("ZTITLE"))) ("PLOT_FIELD" pro nil (system) "%s, U, V" (("ASPECT") ("LENGTH") ("N") ("TITLE"))) ("PLOTERR" pro nil (system) "%s, [ X ,] Y , Err" (("PSYM") ("TYPE"))) ("PLOTS" pro nil (system) "%s, X [, Y [, Z]]" (("CLIP") ("COLOR") ("CONTINUE") ("DATA") ("DEVICE") ("LINESTYLE") ("NOCLIP") ("NORMAL") ("PSYM") ("SYMSIZE") ("T3D") ("THICK") ("Z"))) ("POINT_LUN" pro nil (system) "%s, Unit, Position" nil) ("POLAR_CONTOUR" pro nil (system) "%s, Z, Theta, R" (("C_ANNOTATION") ("C_CHARSIZE") ("C_CHARTHICK") ("C_COLORS") ("C_LINESTYLE") ("C_ORIENTATION") ("C_SPACING") ("C_THICK") ("CLOSED") ("FILL") ("IRREGULAR") ("LEVELS") ("MAX_VALUE") ("MIN_VALUE") ("NLEVELS") ("OVERPLOT") ("PATH_DATA_COORDS") ("SHOW_TRIANGULATION") ("TRIANGULATION") ("XLOG") ("YLOG") ("ZAXIS"))) ("POLYFILL" pro nil (system) "%s, X [, Y [, Z]]" (("CLIP") ("COLOR") ("DATA") ("DEVICE") ("IMAGE_COORD") ("IMAGE_INTERP") ("LINE_FILL") ("LINESTYLE") ("NOCLIP") ("NORMAL") ("ORIENTATION") ("PATTERN") ("SPACING") ("T3D") ("THICK") ("TRANSPARENT") ("Z"))) - ("POLYWARP" pro nil (system) "%s, Xi, Yi, Xo, Yo, Degree, Kx, Ky" nil) + ("POLYWARP" pro nil (system) "%s, Xi, Yi, Xo, Yo, Degree, Kx, Ky" (("DOUBLE") ("STATUS"))) ("POPD" pro nil (system) "%s" nil) ("POWELL" pro nil (system) "%s, P, Xi, Ftol, Fmin, Func" (("DOUBLE") ("ITER") ("ITMAX"))) ("PRINT" pro nil (system) "%s [, Expr1, ..., Exprn]" (("AM_PM") ("DAYS_OF_WEEK") ("FORMAT") ("MONTHS") ("REWRITE") ("STDIO_NON_FINITE"))) @@ -289,7 +306,7 @@ ("PSEUDO" pro nil (system) "%s, Litlo, Lithi, Satlo, Sathi, Hue, Loops [, Colr]" nil) ("PTR_FREE" pro nil (system) "%s, P1, ... ..., Pn" nil) ("PUSHD" pro nil (system) "%s, Dir" nil) - ("RADON" pro nil (system) "%s Transform: Result = RADON( Array)" (("BACKPROJECT") ("DOUBLE") ("DRHO") ("DX") ("DY") ("GRAY") ("LINEAR") ("NRHO") ("NTHETA") ("NX") ("NY") ("RHO") ("RMIN") ("THETA") ("XMIN") ("YMIN"))) + ("QHULL" pro nil (system) "%s, V, Tr or, QHULL, V0 , V1, [, V2 ... [, V6] ] , Tr" (("BOUNDS") ("CONNECTIVITY") ("DELAUNAY") ("SPHERE") ("VDIAGRAM") ("VNORMALS") ("VVERTICES"))) ("RDPIX" pro nil (system) "%s, Image [, X0, Y0]" nil) ("READ" pro nil (system) "%s, [Prompt,] Var1, ..., Varn" (("AM_PM") ("DAYS_OF_WEEK") ("FORMAT") ("KEY_ID") ("KEY_MATCH") ("KEY_VALUE") ("MONTHS") ("PROMPT"))) ("READ_INTERFILE" pro nil (system) "%s, File, Data" nil) @@ -338,7 +355,7 @@ ("STRPUT" pro nil (system) "%s, Destination, Source [, Position]" nil) ("STRUCT_ASSIGN" pro nil (system) "%s, Source, Destination" (("NOZERO") ("VERBOSE"))) ("STRUCT_HIDE" pro nil (system) "%s, Arg1 [, Arg2, ..., Argn]" nil) - ("SURFACE" pro nil (system) "%s, Z [, X, Y]" (("AX") ("AZ") ("BACKGROUND") ("BOTTOM") ("CHARSIZE") ("CHARTHICK") ("CLIP") ("COLOR") ("DATA") ("DEVICE") ("FONT") ("HORIZONTAL") ("LEGO") ("LINESTYLE") ("LOWER_ONLY") ("MAX_VALUE") ("MIN_VALUE") ("NOCLIP") ("NODATA") ("NOERASE") ("NORMAL") ("NSUM") ("POLAR") ("POSITION") ("SAVE") ("SHADES") ("SKIRT") ("SUBTITLE") ("T3D") ("THICK") ("TICKLEN") ("TITLE") ("UPPER_ONLY") ("XCHARSIZE") ("XGRIDSTYLE") ("XLOG") ("XMARGIN") ("XMINOR") ("XRANGE") ("XSTYLE") ("XTHICK") ("XTICK_GET") ("XTICKFORMAT") ("XTICKINTERVAL") ("XTICKLAYOUT") ("XTICKLEN") ("XTICKNAME") ("XTICKS") ("XTICKUNITS") ("XTICKV") ("XTITLE") ("YCHARSIZE") ("YGRIDSTYLE") ("YLOG") ("YMARGIN") ("YMINOR") ("YNOZERO") ("YRANGE") ("YSTYLE") ("YTHICK") ("YTICK_GET") ("YTICKFORMAT") ("YTICKINTERVAL") ("YTICKLAYOUT") ("YTICKLEN") ("YTICKNAME") ("YTICKS") ("YTICKUNITS") ("YTICKV") ("YTITLE") ("ZAXIS") ("ZCHARSIZE") ("ZGRIDSTYLE") ("ZLOG") ("ZMARGIN") ("ZMINOR") ("ZRANGE") ("ZSTYLE") ("ZTHICK") ("ZTICK_GET") ("ZTICKFORMAT") ("ZTICKINTERVAL") ("ZTICKLAYOUT") ("ZTICKLEN") ("ZTICKNAME") ("ZTICKS") ("ZTICKUNITS") ("ZTICKV") ("ZTITLE") ("ZVALUE"))) + ("SURFACE" pro nil (system) "%s, Z [, X, Y]" (("AX") ("AZ") ("BACKGROUND") ("BOTTOM") ("CHARSIZE") ("CHARTHICK") ("CLIP") ("COLOR") ("DATA") ("DEVICE") ("FONT") ("HORIZONTAL") ("ISOTROPIC") ("LEGO") ("LINESTYLE") ("LOWER_ONLY") ("MAX_VALUE") ("MIN_VALUE") ("NOCLIP") ("NODATA") ("NOERASE") ("NORMAL") ("NSUM") ("POLAR") ("POSITION") ("SAVE") ("SHADES") ("SKIRT") ("SUBTITLE") ("T3D") ("THICK") ("TICKLEN") ("TITLE") ("UPPER_ONLY") ("XCHARSIZE") ("XGRIDSTYLE") ("XLOG") ("XMARGIN") ("XMINOR") ("XRANGE") ("XSTYLE") ("XTHICK") ("XTICK_GET") ("XTICKFORMAT") ("XTICKINTERVAL") ("XTICKLAYOUT") ("XTICKLEN") ("XTICKNAME") ("XTICKS") ("XTICKUNITS") ("XTICKV") ("XTITLE") ("YCHARSIZE") ("YGRIDSTYLE") ("YLOG") ("YMARGIN") ("YMINOR") ("YNOZERO") ("YRANGE") ("YSTYLE") ("YTHICK") ("YTICK_GET") ("YTICKFORMAT") ("YTICKINTERVAL") ("YTICKLAYOUT") ("YTICKLEN") ("YTICKNAME") ("YTICKS") ("YTICKUNITS") ("YTICKV") ("YTITLE") ("ZAXIS") ("ZCHARSIZE") ("ZGRIDSTYLE") ("ZLOG") ("ZMARGIN") ("ZMINOR") ("ZRANGE") ("ZSTYLE") ("ZTHICK") ("ZTICK_GET") ("ZTICKFORMAT") ("ZTICKINTERVAL") ("ZTICKLAYOUT") ("ZTICKLEN") ("ZTICKNAME") ("ZTICKS") ("ZTICKUNITS") ("ZTICKV") ("ZTITLE") ("ZVALUE"))) ("SURFR" pro nil (system) "%s" (("AX") ("AZ"))) ("SVDC" pro nil (system) "%s, A, W, U, V" (("COLUMN") ("DOUBLE") ("ITMAX"))) ("T3D" pro nil (system) "%s [, Array]" (("MATRIX") ("OBLIQUE") ("PERSPECTIVE") ("RESET") ("ROTATE") ("SCALE") ("TRANSLATE") ("XYEXCH") ("XZEXCH") ("YZEXCH"))) @@ -366,7 +383,8 @@ ("WEOF" pro nil (system) "%s, Unit" nil) ("WF_DRAW" pro nil (system) "%s, X, Y" (("COLD") ("COLOR") ("CONVERGENCE") ("DATA") ("DEVICE") ("FRONT_TYPE") ("INTERVAL") ("NORMAL") ("OCCLUDED") ("PSYM") ("STATIONARY") ("SYM_HT") ("SYM_LEN") ("THICK") ("WARM"))) ("WIDED" pro nil (system) "%s" nil) - ("WIDGET_CONTROL" pro nil (system) "%s [, Widget_ID]" (("ALIGNMENT") ("ALL_TABLE_EVENTS") ("ALL_TEXT_EVENTS") ("AM_PM") ("APPEND") ("BAD_ID") ("BITMAP") ("CANCEL_BUTTON") ("CLEAR_EVENTS") ("COLUMN_LABELS") ("COLUMN_WIDTHS") ("DAYS_OF_WEEK") ("DEFAULT_BUTTON") ("DEFAULT_FONT") ("DELAY_DESTROY") ("DELETE_COLUMNS") ("DELETE_ROWS") ("DESTROY") ("DRAW_BUTTON_EVENTS") ("DRAW_EXPOSE_EVENTS") ("DRAW_MOTION_EVENTS") ("DRAW_VIEWPORT_EVENTS") ("DRAW_XSIZE") ("DRAW_YSIZE") ("DYNAMIC_RESIZE") ("EDIT_CELL") ("EDITABLE") ("EVENT_FUNC") ("EVENT_PRO") ("FORMAT") ("FUNC_GET_VALUE") ("GET_DRAW_VIEW") ("GET_UVALUE") ("GET_VALUE") ("GROUP_LEADER") ("HOURGLASS") ("ICONIFY") ("INPUT_FOCUS") ("INSERT_COLUMNS") ("INSERT_ROWS") ("KBRD_FOCUS_EVENTS") ("KILL_NOTIFY") ("MAP") ("MONTHS") ("NO_COPY") ("NO_NEWLINE") ("NOTIFY_REALIZE") ("PRO_SET_VALUE") ("REALIZE") ("RESET") ("ROW_HEIGHTS") ("ROW_LABELS") ("SCR_XSIZE") ("SCR_YSIZE") ("SEND_EVENT") ("SENSITIVE") ("SET_BUTTON") ("SET_DRAW_VIEW") ("SET_DROPLIST_SELECT") ("SET_LIST_SELECT") ("SET_LIST_TOP") ("SET_SLIDER_MAX") ("SET_SLIDER_MIN") ("SET_TABLE_SELECT") ("SET_TABLE_VIEW") ("SET_TEXT_SELECT") ("SET_TEXT_TOP_LINE") ("SET_UNAME") ("SET_UVALUE") ("SET_VALUE") ("SHOW") ("TABLE_XSIZE") ("TABLE_YSIZE") ("TIMER") ("TLB_GET_OFFSET") ("TLB_GET_SIZE") ("TLB_KILL_REQUEST_EVENTS") ("TLB_SET_TITLE") ("TLB_SET_XOFFSET") ("TLB_SET_YOFFSET") ("TRACKING_EVENTS") ("UNITS") ("UPDATE") ("USE_TABLE_SELECT") ("USE_TEXT_SELECT") ("X_BITMAP_EXTRA") ("XOFFSET") ("XSIZE") ("YOFFSET") ("YSIZE"))) + ("WIDGET_CONTROL" pro nil (system) "%s [, Widget_ID]" (("ALIGNMENT") ("ALL_TABLE_EVENTS") ("ALL_TEXT_EVENTS") ("AM_PM") ("APPEND") ("BAD_ID") ("BITMAP") ("CANCEL_BUTTON") ("CLEAR_EVENTS") ("COLUMN_LABELS") ("COLUMN_WIDTHS") ("CONTEXT_MENU") ("DAYS_OF_WEEK") ("DEFAULT_BUTTON") ("DEFAULT_FONT") ("DELAY_DESTROY") ("DELETE_COLUMNS") ("DELETE_ROWS") ("DESTROY") ("DRAW_BUTTON_EVENTS") ("DRAW_EXPOSE_EVENTS") ("DRAW_MOTION_EVENTS") ("DRAW_VIEWPORT_EVENTS") ("DRAW_XSIZE") ("DRAW_YSIZE") ("DYNAMIC_RESIZE") ("EDIT_CELL") ("EDITABLE") ("EVENT_FUNC") ("EVENT_PRO") ("FORMAT") ("FUNC_GET_VALUE") ("GET_DRAW_VIEW") ("GET_UVALUE") ("GET_VALUE") ("GROUP_LEADER") ("HOURGLASS") ("ICONIFY") ("INPUT_FOCUS") ("INSERT_COLUMNS") ("INSERT_ROWS") ("KBRD_FOCUS_EVENTS") ("KILL_NOTIFY") ("MAP") ("MONTHS") ("NO_COPY") ("NO_NEWLINE") ("NOTIFY_REALIZE") ("PRO_SET_VALUE") ("REALIZE") ("RESET") ("ROW_HEIGHTS") ("ROW_LABELS") ("SCR_XSIZE") ("SCR_YSIZE") ("SEND_EVENT") ("SENSITIVE") ("SET_BUTTON") ("SET_DRAW_VIEW") ("SET_DROPLIST_SELECT") ("SET_LIST_SELECT") ("SET_LIST_TOP") ("SET_SLIDER_MAX") ("SET_SLIDER_MIN") ("SET_TABLE_SELECT") ("SET_TABLE_VIEW") ("SET_TEXT_SELECT") ("SET_TEXT_TOP_LINE") ("SET_UNAME") ("SET_UVALUE") ("SET_VALUE") ("SHOW") ("TABLE_XSIZE") ("TABLE_YSIZE") ("TIMER") ("TLB_GET_OFFSET") ("TLB_GET_SIZE") ("TLB_KILL_REQUEST_EVENTS") ("TLB_SET_TITLE") ("TLB_SET_XOFFSET") ("TLB_SET_YOFFSET") ("TRACKING_EVENTS") ("UNITS") ("UPDATE") ("USE_TABLE_SELECT") ("USE_TEXT_SELECT") ("X_BITMAP_EXTRA") ("XOFFSET") ("XSIZE") ("YOFFSET") ("YSIZE"))) + ("WIDGET_DISPLAYCONTEXTMENU" pro nil (system) "%s, Parent, X, Y, ContextBase_ID" nil) ("WINDOW" pro nil (system) "%s [, Window_Index]" (("COLORS") ("FREE") ("PIXMAP") ("RETAIN") ("TITLE") ("XPOS") ("XSIZE") ("YPOS") ("YSIZE"))) ("WRITE_BMP" pro nil (system) "%s, Filename, Image[, R, G, B]" (("FOUR_BIT") ("HEADER_DEFINE") ("IHDR") ("RGB"))) ("WRITE_IMAGE" pro nil (system) "%s, Filename, Format, Data [, Red, Green, Blue]" (("APPEND"))) @@ -377,7 +395,7 @@ ("WRITE_PPM" pro nil (system) "%s, Filename, Image" (("ASCII"))) ("WRITE_SPR" pro nil (system) "%s, AS, Filename" nil) ("WRITE_SRF" pro nil (system) "%s, Filename [, Image, R, G, B]" (("ORDER") ("WRITE_32"))) - ("WRITE_TIFF" pro nil (system) "%s, Filename [, Image, Order]" (("APPEND") ("BLUE") ("COMPRESSION") ("FLOAT") ("GEOTIFF") ("GREEN") ("LONG") ("PLANARCONFIG") ("RED") ("SHORT") ("VERBOSE") ("XRESOL") ("YRESOL"))) + ("WRITE_TIFF" pro nil (system) "%s, Filename [, Image, Order]" (("APPEND") ("BITS_PER_SAMPLE") ("BLUE") ("COMPRESSION") ("FLOAT") ("GEOTIFF") ("GREEN") ("LONG") ("ORIENTATION") ("PLANARCONFIG") ("RED") ("SHORT") ("UNITS") ("VERBOSE") ("XRESOL") ("YRESOL"))) ("WRITE_WAV" pro nil (system) "%s, Filename, Data, Rate" nil) ("WRITE_WAVE" pro nil (system) "%s, File, Array" (("BIN") ("DATANAME") ("MESHNAME") ("NOMESHDEF") ("VECTOR"))) ("WRITEU" pro nil (system) "%s, Unit, Expr1 ..., Exprn" (("REWRITE") ("TRANSFER_COUNT"))) @@ -391,7 +409,9 @@ ("XMANAGER" pro nil (system) "%s [, Name, ID]" (("CATCH") ("CLEANUP") ("EVENT_HANDLER") ("GROUP_LEADER") ("JUST_REG") ("NO_BLOCK"))) ("XMNG_TMPL" pro nil (system) "%s" (("BLOCK") ("GROUP"))) ("XMTOOL" pro nil (system) "%s" (("BLOCK") ("GROUP"))) - ("XOBJVIEW" pro nil (system) "%s, Obj" (("BACKGROUND") ("BLOCK") ("DOUBLE_VIEW") ("GROUP") ("MODAL") ("REFRESH") ("SCALE") ("STATIONARY") ("TEST") ("TITLE") ("TLB") ("XSIZE") ("YSIZE"))) + ("XOBJVIEW" pro nil (system) "%s, Obj" (("BACKGROUND") ("BLOCK") ("DOUBLE_VIEW") ("GROUP") ("JUST_REG") ("MODAL") ("REFRESH") ("RENDERER") ("SCALE") ("STATIONARY") ("TEST") ("TITLE") ("TLB") ("XOFFSET") ("XSIZE") ("YOFFSET") ("YSIZE"))) + ("XOBJVIEW_ROTATE" pro nil (system) "%s, Axis, Angle" (("PREMULTIPLY"))) + ("XOBJVIEW_WRITE_IMAGE" pro nil (system) "%s, Filename, Format" (("DIMENSIONS"))) ("XPALETTE" pro nil (system) "%s" (("BLOCK") ("GROUP") ("UPDATECALLBACK") ("UPDATECBDATA"))) ("XPCOLOR" pro nil (system) "%s" (("GROUP"))) ("XPLOT3D" pro nil (system) "%s, X, Y, Z" (("BLOCK") ("COLOR") ("DOUBLE_VIEW") ("GROUP") ("LINESTYLE") ("MODAL") ("NAME") ("OVERPLOT") ("SYMBOL") ("TEST") ("THICK") ("TITLE") ("XRANGE") ("XTITLE") ("YRANGE") ("YTITLE") ("ZRANGE") ("ZTITLE"))) @@ -407,7 +427,7 @@ ("A_CORRELATE" fun nil (system) "Result = %s(X, Lag)" (("COVARIANCE") ("DOUBLE"))) ("ABS" fun nil (system) "Result = %s(X)" nil) ("ACOS" fun nil (system) "Result = %s(X)" nil) - ("ADAPT_HIST_EQUAL" fun nil (system) "Result = %s (Image)" (("CLIP") ("NREGIONS") ("TOP"))) + ("ADAPT_HIST_EQUAL" fun nil (system) "Result = %s (Image)" (("CLIP") ("FCN") ("NREGIONS") ("TOP"))) ("ALOG" fun nil (system) "Result = %s(X)" nil) ("ALOG10" fun nil (system) "Result = %s(X)" nil) ("AMOEBA" fun nil (system) "Result = %s( Ftol)" (("FUNCTION_NAME") ("FUNCTION_VALUE") ("NCALLS") ("NMAX") ("P0") ("SCALE") ("SIMPLEX"))) @@ -461,15 +481,15 @@ ("COLOR_QUAN" fun nil (system) "Result = %s( Image_R, Image_G, Image_B, R, G, B) or Result = COLOR_QUAN( Image, Dim, R, G, B )" (("COLORS") ("CUBE") ("DITHER") ("ERROR") ("GET_TRANSLATION") ("MAP_ALL") ("TRANSLATION"))) ("COLORMAP_APPLICABLE" fun nil (system) "Result = %s( redrawRequired )" nil) ("COMFIT" fun nil (system) "Result = %s( X, Y, A)" (("EXPONENTIAL") ("GEOMETRIC") ("GOMPERTZ") ("HYPERBOLIC") ("LOGISTIC") ("LOGSQUARE") ("SIGMA") ("WEIGHTS") ("YFIT"))) - ("COMPLEX" fun nil (system) "Result = %s( Real [, Imaginary] ) or Result = COMPLEX(Expression, Offset, Dim1 [, ..., Dim8])" nil) + ("COMPLEX" fun nil (system) "Result = %s( Real [, Imaginary] ) or Result = COMPLEX(Expression, Offset, Dim1 [, ..., Dim8])" (("DOUBLE"))) ("COMPLEXARR" fun nil (system) "Result = %s( D1, ..., D8)" (("NOZERO"))) ("COMPLEXROUND" fun nil (system) "Result = %s(Input)" nil) ("COMPUTE_MESH_NORMALS" fun nil (system) "Result = %s( fVerts[, iConn] )" nil) - ("COND" fun nil (system) "Result = %s( A)" (("DOUBLE"))) - ("CONGRID" fun nil (system) "Result = %s( Array, X, Y, Z)" (("CUBIC") ("INTERP") ("MINUS_ONE"))) + ("COND" fun nil (system) "Result = %s( A)" (("DOUBLE") ("LNORM"))) + ("CONGRID" fun nil (system) "Result = %s( Array, X, Y, Z)" (("CENTER") ("CUBIC") ("INTERP") ("MINUS_ONE"))) ("CONJ" fun nil (system) "Result = %s(X)" nil) ("CONVERT_COORD" fun nil (system) "Result = %s( X [, Y [, Z]])" (("DATA") ("DEVICE") ("DOUBLE") ("NORMAL") ("T3D") ("TO_DATA") ("TO_DEVICE") ("TO_NORMAL"))) - ("CONVOL" fun nil (system) "Result = %s( Array, Kernel [, Scale_Factor])" (("CENTER") ("EDGE_TRUNCATE") ("EDGE_WRAP"))) + ("CONVOL" fun nil (system) "Result = %s( Array, Kernel [, Scale_Factor])" (("CENTER") ("EDGE_TRUNCATE") ("EDGE_WRAP") ("MISSING") ("NAN"))) ("COORD2TO3" fun nil (system) "Result = %s( Mx, My, Dim, D0 [, PTI] )" nil) ("CORRELATE" fun nil (system) "Result = %s( X [, Y])" (("COVARIANCE") ("DOUBLE"))) ("COS" fun nil (system) "Result = %s(X)" nil) @@ -492,11 +512,11 @@ ("CW_FIELD" fun nil (system) "Result = %s( Parent)" (("ALL_EVENTS") ("COLUMN") ("FIELDFONT") ("FLOATING") ("FONT") ("FRAME") ("INTEGER") ("LONG") ("NOEDIT") ("RETURN_EVENTS") ("ROW") ("STRING") ("TEXT_FRAME") ("TITLE") ("UNAME") ("UVALUE") ("VALUE") ("XSIZE") ("YSIZE"))) ("CW_FILESEL" fun nil (system) "Result = %s ( Parent)" (("FILENAME") ("FILTER") ("FIX_FILTER") ("FRAME") ("IMAGE_FILTER") ("MULTIPLE") ("PATH") ("SAVE") ("UNAME") ("UVALUE") ("WARN_EXIST"))) ("CW_FORM" fun nil (system) "Result = %s( [Parent,] Desc)" (("COLUMN") ("IDS") ("TITLE") ("UNAME") ("UVALUE"))) - ("CW_FSLIDER" fun nil (system) "Result = %s( Parent)" (("DRAG") ("EDIT") ("FORMAT") ("FRAME") ("MAXIMUM") ("MINIMUM") ("SCROLL") ("SUPPRESS_VALUE") ("TITLE") ("UNAME") ("UVALUE") ("VALUE") ("VERTICAL") ("XSIZE") ("YSIZE"))) + ("CW_FSLIDER" fun nil (system) "Result = %s( Parent)" (("DOUBLE") ("DRAG") ("EDIT") ("FORMAT") ("FRAME") ("MAXIMUM") ("MINIMUM") ("SCROLL") ("SUPPRESS_VALUE") ("TITLE") ("UNAME") ("UVALUE") ("VALUE") ("VERTICAL") ("XSIZE") ("YSIZE"))) ("CW_LIGHT_EDITOR" fun nil (system) "Result = %s (Parent)" (("DIRECTION_DISABLED") ("DRAG_EVENTS") ("FRAME") ("HIDE_DISABLED") ("LIGHT") ("LOCATION_DISABLED") ("TYPE_DISABLED") ("UVALUE") ("XRANGE") ("XSIZE") ("YRANGE") ("YSIZE") ("ZRANGE"))) ("CW_ORIENT" fun nil (system) "Result = %s( Parent)" (("AX") ("AZ") ("FRAME") ("TITLE") ("UNAME") ("UVALUE") ("XSIZE") ("YSIZE"))) ("CW_PALETTE_EDITOR" fun nil (system) "Result = %s (Parent)" (("DATA") ("FRAME") ("HISTOGRAM") ("HORIZONTAL") ("SELECTION") ("UNAME") ("UVALUE") ("XSIZE") ("YSIZE"))) - ("CW_PDMENU" fun nil (system) "Result = %s( Parent, Desc)" (("COLUMN") ("DELIMITER") ("FONT") ("HELP") ("IDS") ("MBAR") ("RETURN_FULL_NAME") ("RETURN_ID") ("RETURN_INDEX") ("RETURN_NAME") ("UNAME") ("UVALUE") ("XOFFSET") ("YOFFSET"))) + ("CW_PDMENU" fun nil (system) "Result = %s( Parent, Desc)" (("COLUMN") ("CONTEXT_MENU") ("DELIMITER") ("FONT") ("HELP") ("IDS") ("MBAR") ("RETURN_FULL_NAME") ("RETURN_ID") ("RETURN_INDEX") ("RETURN_NAME") ("UNAME") ("UVALUE") ("XOFFSET") ("YOFFSET"))) ("CW_RGBSLIDER" fun nil (system) "Result = %s( Parent)" (("CMY") ("COLOR_INDEX") ("DRAG") ("FRAME") ("GRAPHICS_LEVEL") ("HLS") ("HSV") ("LENGTH") ("RGB") ("UNAME") ("UVALUE") ("VALUE") ("VERTICAL"))) ("CW_TMPL" fun nil (system) "Result = %s( Parent)" (("UNAME") ("UVALUE"))) ("CW_ZOOM" fun nil (system) "Result = %s( Parent)" (("FRAME") ("MAX") ("MIN") ("RETAIN") ("SAMPLE") ("SCALE") ("TRACK") ("UNAME") ("UVALUE") ("X_SCROLL_SIZE") ("X_ZSIZE") ("XSIZE") ("Y_SCROLL_SIZE") ("Y_ZSIZE") ("YSIZE"))) @@ -653,6 +673,9 @@ ("EOS_SW_WRITEDATAMETA" fun nil (system) "Result = %s(swathID, fieldname, dimlist, numbertype)" nil) ("EOS_SW_WRITEFIELD" fun nil (system) "Result = %s( swathID, fieldname, cut, data)" (("EDGE") ("START") ("STRIDE"))) ("EOS_SW_WRITEGEOMETA" fun nil (system) "Result = %s(swathID, fieldname, dimlist, numbertype)" nil) + ("ERF" fun nil (system) "Result = %s(X)" nil) + ("ERFC" fun nil (system) "Result = %s(X)" nil) + ("ERFCX" fun nil (system) "Result = %s(X)" nil) ("ERODE" fun nil (system) "Result = %s( Image, Structure [, X0 [, Y0 [, Z0]]])" (("GRAY") ("PRESERVE_TYPE") ("UINT") ("ULONG") ("VALUES"))) ("ERRORF" fun nil (system) "Result = %s(X)" nil) ("EXECUTE" fun nil (system) "Result = %s(String [, QuietCompile])" nil) @@ -664,14 +687,16 @@ ("F_CVF" fun nil (system) "Result = %s(P, Dfn, Dfd)" nil) ("F_PDF" fun nil (system) "Result = %s(V, Dfn, Dfd)" nil) ("FACTORIAL" fun nil (system) "Result = %s( N)" (("STIRLING") ("UL64"))) - ("FFT" fun nil (system) "Result = %s( Array [, Direction])" (("DOUBLE") ("INVERSE") ("OVERWRITE"))) + ("FFT" fun nil (system) "Result = %s( Array [, Direction])" (("DIMENSION") ("DOUBLE") ("INVERSE") ("OVERWRITE"))) ("FILE_EXPAND_PATH" fun nil (system) "Result = %s (Path)" nil) - ("FILE_TEST" fun nil (system) "Result = %s( File)" (("BLOCK_SPECIAL") ("CHARACTER_SPECIAL") ("DANGLING_SYMLINK") ("DIRECTORY") ("EXECUTABLE") ("GET_MODE") ("GROUP") ("NAMED_PIPE") ("READ") ("REGULAR") ("SETGID") ("SETUID") ("SOCKET") ("STICKY_BIT") ("SYMLINK") ("USER") ("WRITE") ("ZERO_LENGTH"))) + ("FILE_INFO" fun nil (system) "Result = %s(Path)" (("NOEXPAND_PATH"))) + ("FILE_SEARCH" fun nil (system) "Result = %s(Path_Specification) or for recursive searching, Result = FILE_SEARCH(Dir_Specification, Recur_Pattern)" (("COUNT") ("EXPAND_ENVIRONMENT") ("EXPAND_TILDE") ("FOLD_CASE") ("FULLY_QUALIFY_PATH") ("ISSUE_ACCESS_ERROR") ("MARK_DIRECTORY") ("MATCH_ALL_INITIAL_DOT") ("MATCH_INITIAL_DOT") ("NOSORT") ("QUOTE") ("TEST_BLOCK_SPECIAL") ("TEST_CHARACTER_SPECIAL") ("TEST_DANGLING_SYMLINK") ("TEST_DIRECTORY") ("TEST_EXECUTABLE") ("TEST_GROUP") ("TEST_NAMED_PIPE") ("TEST_READ") ("TEST_REGULAR") ("TEST_SETGID") ("TEST_SETUID") ("TEST_SOCKET") ("TEST_STICKY_BIT") ("TEST_SYMLINK") ("TEST_USER") ("TEST_WRITE") ("TEST_ZERO_LENGTH"))) + ("FILE_TEST" fun nil (system) "Result = %s( File)" (("BLOCK_SPECIAL") ("CHARACTER_SPECIAL") ("DANGLING_SYMLINK") ("DIRECTORY") ("EXECUTABLE") ("GET_MODE") ("GROUP") ("NAMED_PIPE") ("NOEXPAND_PATH") ("READ") ("REGULAR") ("SETGID") ("SETUID") ("SOCKET") ("STICKY_BIT") ("SYMLINK") ("USER") ("WRITE") ("ZERO_LENGTH"))) ("FILE_WHICH" fun nil (system) "Result = %s( [Path, ] File)" (("INCLUDE_CURRENT_DIR"))) ("FILEPATH" fun nil (system) "Result = %s( Filename)" (("ROOT_DIR") ("SUBDIRECTORY") ("TERMINAL") ("TMP"))) ("FINDFILE" fun nil (system) "Result = %s( File_Specification)" (("COUNT"))) ("FINDGEN" fun nil (system) "Result = %s(D1, ..., D8)" nil) - ("FINITE" fun nil (system) "Result = %s( X)" (("INFINITY") ("NAN"))) + ("FINITE" fun nil (system) "Result = %s( X)" (("INFINITY") ("NAN") ("SIGN"))) ("FIX" fun nil (system) "Result = %s( Expression [, Offset [, Dim1, ..., Dim8]])" (("PRINT") ("TYPE"))) ("FLOAT" fun nil (system) "Result = %s( Expression [, Offset [, Dim1, ..., Dim8]] )" nil) ("FLOOR" fun nil (system) "Result = %s(X)" (("L64"))) @@ -688,7 +713,7 @@ ("GAUSS_PDF" fun nil (system) "Result = %s(V)" nil) ("GAUSSFIT" fun nil (system) "Result = %s( X, Y [, A])" (("ESTIMATES") ("NTERMS"))) ("GAUSSINT" fun nil (system) "Result = %s(X)" nil) - ("GET_DRIVE_LIST" fun nil (system) "Result = %s( )" nil) + ("GET_DRIVE_LIST" fun nil (system) "Result = %s( )" (("CDROM") ("COUNT") ("FIXED") ("REMOTE") ("REMOVABLE"))) ("GET_KBRD" fun nil (system) "Result = %s(Wait)" nil) ("GET_SCREEN_SIZE" fun nil (system) "Result = %s( [Display_name])" (("DISPLAY_NAME") ("RESOLUTION"))) ("GET_SYMBOL" fun nil (system) "Result = %s( Name)" (("TYPE"))) @@ -700,6 +725,7 @@ ("HANDLE_CREATE" fun nil (system) "Result = %s([ID])" nil) ("HANDLE_INFO" fun nil (system) "Result = %s(ID)" nil) ("HANNING" fun nil (system) "Result = %s( N1 [, N2])" (("ALPHA") ("DOUBLE"))) + ("HDF_" fun nil (system) "Result = %s VD _NATTRS( VData, FieldID )" nil) ("HDF_AN_ANNLEN" fun nil (system) "Result = %s(ann_id)" nil) ("HDF_AN_ANNLIST" fun nil (system) "Result = %s(an_id, annot_type, obj_tag, obj_ref, ann_list)" nil) ("HDF_AN_ATYPE2TAG" fun nil (system) "Result = %s(annot_type)" nil) @@ -767,10 +793,12 @@ ("HDF_SD_SELECT" fun nil (system) "Result = %s(SD_ID, Number)" nil) ("HDF_SD_START" fun nil (system) "Result = %s( Filename)" (("CREATE") ("RDWR") ("READ"))) ("HDF_VD_ATTACH" fun nil (system) "Result = %s( FileHandle, VDataId)" (("READ") ("WRITE"))) + ("HDF_VD_ATTRFIND" fun nil (system) "Result = %s(VData, FieldID, Name)" nil) ("HDF_VD_FEXIST" fun nil (system) "Result = %s(VData, Fieldnames)" nil) ("HDF_VD_FIND" fun nil (system) "Result = %s(FileHandle, Name)" nil) ("HDF_VD_GETID" fun nil (system) "Result = %s(FileHandle, VDataId)" nil) ("HDF_VD_GETNEXT" fun nil (system) "Result = %s(VData, Id)" nil) + ("HDF_VD_ISATTR" fun nil (system) "Result = %s(VData)" nil) ("HDF_VD_ISVD" fun nil (system) "Result = %s(VGroup, Id)" nil) ("HDF_VD_LONE" fun nil (system) "Result = %s( FileHandle)" (("MAXSIZE"))) ("HDF_VD_READ" fun nil (system) "Result = %s( VData, Data)" (("FIELDS") ("FULL_INTERLACE") ("NO_INTERLACE") ("NRECORDS"))) @@ -784,8 +812,9 @@ ("HDF_VG_NUMBER" fun nil (system) "Result = %s(VGroup)" nil) ("HILBERT" fun nil (system) "Result = %s(X [, D])" nil) ("HIST_2D" fun nil (system) "Result = %s( V1, V2)" (("BIN1") ("BIN2") ("MAX1") ("MAX2") ("MIN1") ("MIN2"))) - ("HIST_EQUAL" fun nil (system) "Result = %s( A)" (("BINSIZE") ("HISTOGRAM_ONLY") ("MAXV") ("MINV") ("OMAX") ("OMIN") ("PERCENT") ("TOP"))) + ("HIST_EQUAL" fun nil (system) "Result = %s( A)" (("BINSIZE") ("FCN") ("HISTOGRAM_ONLY") ("MAXV") ("MINV") ("OMAX") ("OMIN") ("PERCENT") ("TOP"))) ("HISTOGRAM" fun nil (system) "Result = %s( Array)" (("BINSIZE") ("INPUT") ("L64") ("MAX") ("MIN") ("NAN") ("NBINS") ("OMAX") ("OMIN") ("REVERSE_INDICES"))) + ("HOUGH" fun nil (system) "Result = %s( Array)" (("BACKPROJECT") ("DOUBLE") ("DRHO") ("DX") ("DY") ("GRAY") ("NRHO") ("NTHETA") ("NX") ("NY") ("RHO") ("RMIN") ("THETA") ("XMIN") ("YMIN"))) ("HQR" fun nil (system) "Result = %s( A)" (("COLUMN") ("DOUBLE"))) ("IBETA" fun nil (system) "Result = %s( A, B, X)" (("DOUBLE") ("EPS") ("ITER") ("ITMAX"))) ("IDENTITY" fun nil (system) "Result = %s( N)" (("DOUBLE"))) @@ -799,7 +828,7 @@ ("INTERPOL" fun nil (system) "Result = %s( V, N) or Result = INTERPOL( V, X, U)" (("LSQUADRATIC") ("QUADRATIC") ("SPLINE"))) ("INTERPOLATE" fun nil (system) "Result = %s( P, X [, Y [, Z]])" (("CUBIC") ("GRID") ("MISSING"))) ("INVERT" fun nil (system) "Result = %s( Array [, Status])" (("DOUBLE"))) - ("IOCTL" fun nil (system) "Result = %s( File_Unit [, Request, Arg])" (("BY_VALUE") ("MT_OFFLINE") ("MT_REWIND") ("MT_SKIP_FILE") ("MT_SKIP_RECORD") ("MT_WEOF") ("SUPRESS_ERROR"))) + ("IOCTL" fun nil (system) "Result = %s( File_Unit [, Request, Arg])" (("BY_VALUE") ("MT_OFFLINE") ("MT_REWIND") ("MT_SKIP_FILE") ("MT_SKIP_RECORD") ("MT_WEOF") ("SUPPRESS_ERROR"))) ("ISHFT" fun nil (system) "Result = %s(P1, P2)" nil) ("JULDAY" fun nil (system) "Result = %s(Month, Day, Year, Hour, Minute, Second)" nil) ("KEYWORD_SET" fun nil (system) "Result = %s(Expression)" nil) @@ -838,7 +867,7 @@ ("MAP_IMAGE" fun nil (system) "Result = %s( Image [, Startx, Starty [, Xsize, Ysize]])" (("BILINEAR") ("COMPRESS") ("LATMAX") ("LATMIN") ("LONMAX") ("LONMIN") ("MAX_VALUE") ("MIN_VALUE") ("MISSING") ("SCALE"))) ("MAP_PATCH" fun nil (system) "Result = %s( Image_Orig [, Lons, Lats])" (("LAT0") ("LAT1") ("LON0") ("LON1") ("MAX_VALUE") ("MISSING") ("TRIANGULATE") ("XSIZE") ("XSTART") ("YSIZE") ("YSTART"))) ("MATRIX_MULTIPLY" fun nil (system) "Result = %s( A, B)" (("ATRANSPOSE") ("BTRANSPOSE"))) - ("MAX" fun nil (system) "Result = %s( Array [, Max_Subscript])" (("MIN") ("NAN"))) + ("MAX" fun nil (system) "Result = %s( Array [, Max_Subscript])" (("DIMENSION") ("MIN") ("NAN") ("SUBSCRIPT_MIN"))) ("MD_TEST" fun nil (system) "Result = %s( X)" (("ABOVE") ("BELOW") ("MDC"))) ("MEAN" fun nil (system) "Result = %s( X)" (("DOUBLE") ("NAN"))) ("MEANABSDEV" fun nil (system) "Result = %s( X)" (("DOUBLE") ("MEDIAN") ("NAN"))) @@ -853,7 +882,7 @@ ("MESH_SURFACEAREA" fun nil (system) "Result = %s ( Verts, Conn)" (("AUXDATA") ("MOMENT"))) ("MESH_VALIDATE" fun nil (system) "Result = %s ( Verts, Conn)" (("COMBINE_VERTICES") ("PACK_VERTICES") ("REMOVE_NAN") ("TOLERANCE"))) ("MESH_VOLUME" fun nil (system) "Result = %s ( Verts, Conn)" (("SIGNED"))) - ("MIN" fun nil (system) "Result = %s( Array [, Min_Subscript])" (("MAX") ("NAN"))) + ("MIN" fun nil (system) "Result = %s( Array [, Min_Subscript])" (("DIMENSION") ("MAX") ("NAN") ("SUBSCRIPT_MAX"))) ("MIN_CURVE_SURF" fun nil (system) "Result = %s(Z [, X, Y])" (("BOUNDS") ("CONST") ("DOUBLE") ("GS") ("NX") ("NY") ("REGULAR") ("SPHERE") ("TPS") ("XGRID") ("XOUT") ("XPOUT") ("XVALUES") ("YGRID") ("YOUT") ("YPOUT") ("YVALUES"))) ("MOMENT" fun nil (system) "Result = %s( X)" (("DOUBLE") ("MDEV") ("NAN") ("SDEV"))) ("MORPH_CLOSE" fun nil (system) "Result = %s (Image, Structure)" (("GRAY") ("PRESERVE_TYPE") ("UINT") ("ULONG") ("VALUES"))) @@ -867,7 +896,7 @@ ("MSG_CAT_OPEN" fun nil (system) "Result = %s( application)" (("DEFAULT_FILENAME") ("FILENAME") ("FOUND") ("LOCALE") ("PATH") ("SUB_QUERY"))) ("N_ELEMENTS" fun nil (system) "Result = %s(Expression)" nil) ("N_PARAMS" fun nil (system) "Result = %s()" nil) - ("N_TAGS" fun nil (system) "Result = %s( Expression)" (("LENGTH"))) + ("N_TAGS" fun nil (system) "Result = %s( Expression)" (("DATA_LENGTH") ("LENGTH"))) ("NCDF_ATTCOPY" fun nil (system) "Result = %s( Incdf [, Invar])" (("IN_GLOBAL") ("OUT_GLOBAL"))) ("NCDF_ATTINQ" fun nil (system) "Result = %s( Cdfid [, Varid])" (("GLOBAL"))) ("NCDF_ATTNAME" fun nil (system) "Result = %s( Cdfid [, Varid])" (("GLOBAL"))) @@ -881,19 +910,20 @@ ("NCDF_VARID" fun nil (system) "Result = %s(Cdfid, Name)" nil) ("NCDF_VARINQ" fun nil (system) "Result = %s(Cdfid, Varid)" nil) ("NEWTON" fun nil (system) "Result = %s( X, Vecfunc)" (("CHECK") ("DOUBLE") ("ITMAX") ("STEPMAX") ("TOLF") ("TOLMIN") ("TOLX"))) - ("NORM" fun nil (system) "Result = %s( A)" (("DOUBLE"))) + ("NORM" fun nil (system) "Result = %s( A)" (("DOUBLE") ("LNORM"))) ("OBJ_CLASS" fun nil (system) "Result = %s( [Arg])" (("COUNT") ("SUPERCLASS"))) ("OBJ_ISA" fun nil (system) "Result = %s(ObjectInstance, ClassName)" nil) ("OBJ_NEW" fun nil (system) "Result = %s( [ObjectClassName [, Arg1......Argn]] )" nil) ("OBJ_VALID" fun nil (system) "Result = %s( [Arg])" (("CAST") ("COUNT"))) ("OBJARR" fun nil (system) "Result = %s( D1, ..., D8)" (("NOZERO"))) ("P_CORRELATE" fun nil (system) "Result = %s( X, Y, C)" (("DOUBLE"))) + ("PATH_SEP" fun nil (system) "Result = %s()" (("PARENT_DIRECTORY") ("SEARCH_PATH"))) ("PCOMP" fun nil (system) "Result = %s( A)" (("COEFFICIENTS") ("COVARIANCE") ("DOUBLE") ("EIGENVALUES") ("NVARIABLES") ("STANDARDIZE") ("VARIANCES"))) ("PNT_LINE" fun nil (system) "Result = %s( P0, L0, L1 [, Pl])" (("INTERVAL"))) ("POLAR_SURFACE" fun nil (system) "Result = %s( Z, R, Theta)" (("BOUNDS") ("GRID") ("MISSING") ("QUINTIC") ("SPACING"))) ("POLY" fun nil (system) "Result = %s(X, C)" nil) ("POLY_2D" fun nil (system) "Result = %s( Array, P, Q [, Interp [, Dimx, Dimy]])" (("CUBIC") ("MISSING"))) - ("POLY_AREA" fun nil (system) "Result = %s( X, Y)" (("SIGNED"))) + ("POLY_AREA" fun nil (system) "Result = %s( X, Y)" (("DOUBLE") ("SIGNED"))) ("POLY_FIT" fun nil (system) "Result = %s( X, Y, Degree)" (("CHISQ") ("COVAR") ("DOUBLE") ("MEASURE_ERRORS") ("SIGMA") ("STATUS") ("YBAND") ("YERROR") ("YFIT"))) ("POLYFILLV" fun nil (system) "Result = %s( X, Y, Sx, Sy [, Run_Length] )" nil) ("POLYFITW" fun nil (system) "Result = %s(X, Y, Weights, NDegree [, Yfit, Yband, Sigma, Corrm])" (("DOUBLE") ("STATUS"))) @@ -904,6 +934,7 @@ ("PTR_NEW" fun nil (system) "Result = %s( [InitExpr])" (("ALLOCATE_HEAP") ("NO_COPY"))) ("PTR_VALID" fun nil (system) "Result = %s( [Arg])" (("CAST") ("COUNT"))) ("PTRARR" fun nil (system) "Result = %s( D1, ... ..., D8)" (("ALLOCATE_HEAP") ("NOZERO"))) + ("QGRID3" fun nil (system) "Result = %s( XYZ, F, Tetrahedra)" (("DELTA") ("DIMENSION") ("MISSING") ("START"))) ("QROMB" fun nil (system) "Result = %s( Func, A, B)" (("DOUBLE") ("EPS") ("JMAX") ("K"))) ("QROMO" fun nil (system) "Result = %s(Func, A [, B])" (("DOUBLE") ("EPS") ("JMAX") ("K") ("MIDEXP") ("MIDINF") ("MIDPNT") ("MIDSQL") ("MIDSQU"))) ("QSIMP" fun nil (system) "Result = %s( Func, A, B)" (("DOUBLE") ("EPS") ("JMAX"))) @@ -911,6 +942,7 @@ ("QUERY_DICOM" fun nil (system) "Result = %s( Filename [, Info])" (("IMAGE_INDEX"))) ("QUERY_IMAGE" fun nil (system) "Result = %s ( Filename[, Info])" (("CHANNELS") ("DIMENSIONS") ("HAS_PALETTE") ("IMAGE_INDEX") ("NUM_IMAGES") ("PIXEL_TYPE") ("SUPPORTED_READ") ("SUPPORTED_WRITE") ("TYPE"))) ("QUERY_JPEG" fun nil (system) "Result = %s ( Filename [, Info] )" nil) + ("QUERY_MRSID" fun nil (system) "Result = %s( Filename [, Info])" (("LEVEL"))) ("QUERY_PICT" fun nil (system) "Result = %s ( Filename [, Info] )" nil) ("QUERY_PNG" fun nil (system) "Result = %s ( Filename [, Info] )" nil) ("QUERY_PPM" fun nil (system) "Result = %s ( Filename [, Info])" (("MAXVAL"))) @@ -919,6 +951,7 @@ ("QUERY_WAV" fun nil (system) "Result = %s ( Filename[, Info] )" nil) ("R_CORRELATE" fun nil (system) "Result = %s( X, Y)" (("D") ("KENDALL") ("PROBD") ("ZD"))) ("R_TEST" fun nil (system) "Result = %s( X)" (("N0") ("N1") ("R"))) + ("RADON" fun nil (system) "Result = %s( Array)" (("BACKPROJECT") ("DOUBLE") ("DRHO") ("DX") ("DY") ("GRAY") ("LINEAR") ("NRHO") ("NTHETA") ("NX") ("NY") ("RHO") ("RMIN") ("THETA") ("XMIN") ("YMIN"))) ("RANDOMN" fun nil (system) "Result = %s( Seed [, D1, ..., D8])" (("BINOMIAL") ("DOUBLE") ("GAMMA") ("LONG") ("NORMAL") ("POISSON") ("UNIFORM"))) ("RANDOMU" fun nil (system) "Result = %s( Seed [, D1, ..., D8])" (("BINOMIAL") ("DOUBLE") ("GAMMA") ("LONG") ("NORMAL") ("POISSON") ("UNIFORM"))) ("RANKS" fun nil (system) "Result = %s(X)" nil) @@ -927,16 +960,19 @@ ("READ_BMP" fun nil (system) "Result = %s( Filename, [, R, G, B] [, Ihdr])" (("RGB"))) ("READ_DICOM" fun nil (system) "Result = %s (Filename [, Red, Green, Blue])" (("IMAGE_INDEX"))) ("READ_IMAGE" fun nil (system) "Result = %s (Filename [, Red, Green, Blue])" (("IMAGE_INDEX"))) + ("READ_MRSID" fun nil (system) "Result = %s ( Filename)" (("LEVEL") ("SUB_RECT"))) ("READ_PNG" fun nil (system) "Result = %s ( Filename [, R, G, B])" (("ORDER") ("TRANSPARENT") ("VERBOSE"))) ("READ_SPR" fun nil (system) "Result = %s(Filename)" nil) ("READ_SYLK" fun nil (system) "Result = %s( File)" (("ARRAY") ("COLMAJOR") ("NCOLS") ("NROWS") ("STARTCOL") ("STARTROW") ("USEDOUBLES") ("USELONGS"))) - ("READ_TIFF" fun nil (system) "Result = %s( Filename [, R, G, B])" (("CHANNELS") ("GEOTIFF") ("IMAGE_INDEX") ("INTERLEAVE") ("ORDER") ("PLANARCONFIG") ("SUB_RECT") ("UNSIGNED") ("VERBOSE"))) + ("READ_TIFF" fun nil (system) "Result = %s( Filename [, R, G, B])" (("CHANNELS") ("GEOTIFF") ("IMAGE_INDEX") ("INTERLEAVE") ("ORDER") ("ORIENTATION") ("PLANARCONFIG") ("SUB_RECT") ("UNSIGNED") ("VERBOSE"))) ("READ_WAV" fun nil (system) "Result = %s ( Filename [, Rate] )" nil) ("READ_XWD" fun nil (system) "Result = %s( Filename[, R, G, B] )" nil) + ("REAL_PART" fun nil (system) "Result = %s(Z)" nil) ("REBIN" fun nil (system) "Result = %s( Array, D1 [, ..., D8])" (("SAMPLE"))) ("RECALL_COMMANDS" fun nil (system) "Result = %s()" nil) - ("RECON3" fun nil (system) "Result = %s( Images, Obj_Rot, Obj_Pos, Focal, Dist,Vol_Pos, Img_Ref, Img_Mag, Vol_Size)" (("CUBIC") ("MISSING") ("MODE"))) + ("RECON3" fun nil (system) "Result = %s( Images, Obj_Rot, Obj_Pos, Focal, Dist,Vol_Pos, Img_Ref, Img_Mag, Vol_Size)" (("CUBIC") ("MISSING") ("MODE") ("QUIET"))) ("REFORM" fun nil (system) "Result = %s( Array, D1, ..., D8)" (("OVERWRITE"))) + ("REGION_GROW" fun nil (system) "Result = %s(Array, ROIPixels)" (("ALL_NEIGHBORS") ("STDDEV_MULTIPLIER") ("THRESHOLD"))) ("REGRESS" fun nil (system) "Result = %s( X, Y)" (("CHISQ") ("CONST") ("CORRELATION") ("DOUBLE") ("FTEST") ("MCORRELATION") ("MEASURE_ERRORS") ("SIGMA") ("STATUS") ("YFIT"))) ("REPLICATE" fun nil (system) "Result = %s( Value, D1 [, ..., D8] )" nil) ("REVERSE" fun nil (system) "Result = %s( Array [, Subscript_Index])" (("OVERWRITE"))) @@ -954,12 +990,13 @@ ("SEARCH3D" fun nil (system) "Result = %s( Array, Xpos, Ypos, Zpos, Min_Val, Max_Val)" (("DECREASE") ("DIAGONAL") ("INCREASE") ("LPF_BAND"))) ("SFIT" fun nil (system) "Result = %s( Data, Degree)" (("KX"))) ("SHIFT" fun nil (system) "Result = %s(Array, S1, ..., Sn)" nil) + ("SIMPLEX" fun nil (system) "Result = %s( Zequation, Constraints, M1, M2, M3 [, Tableau [, Izrov [, Iposv]]])" (("DOUBLE") ("EPS") ("STATUS"))) ("SIN" fun nil (system) "Result = %s(X)" nil) ("SINDGEN" fun nil (system) "Result = %s(D1, ..., D8)" nil) ("SINH" fun nil (system) "Result = %s(X)" nil) ("SIZE" fun nil (system) "Result = %s( Expression)" (("DIMENSIONS") ("FILE_LUN") ("L64") ("N_DIMENSIONS") ("N_ELEMENTS") ("STRUCTURE") ("TNAME") ("TYPE"))) ("SKEWNESS" fun nil (system) "Result = %s( X)" (("DOUBLE") ("NAN"))) - ("SMOOTH" fun nil (system) "Result = %s( Array, Width)" (("EDGE_TRUNCATE") ("NAN"))) + ("SMOOTH" fun nil (system) "Result = %s( Array, Width)" (("EDGE_TRUNCATE") ("MISSING") ("NAN"))) ("SOBEL" fun nil (system) "Result = %s(Image)" nil) ("SORT" fun nil (system) "Result = %s(Array)" (("L64"))) ("SPH_SCAT" fun nil (system) "Result = %s( Lon, Lat, F)" (("BOUNDS") ("BOUT") ("GOUT") ("GS") ("NLAT") ("NLON"))) @@ -1035,20 +1072,21 @@ ("VERT_T3D" fun nil (system) "Result = %s( Vertex_List)" (("MATRIX") ("NO_COPY") ("NO_DIVIDE") ("SAVE_DIVIDE"))) ("VOIGT" fun nil (system) "Result = %s(A, U)" nil) ("VOXEL_PROJ" fun nil (system) "Result = %s( V [, RGBO])" (("BACKGROUND") ("CUTTING_PLANE") ("INTERPOLATE") ("MAXIMUM_INTENSITY") ("STEP") ("XSIZE") ("YSIZE") ("ZBUFFER") ("ZPIXELS"))) - ("WARP_TRI" fun nil (system) "Result = %s( Xo, Yo, Xi, Yi, Image)" (("EXTRAPOLATE") ("OUTPUT_SIZE") ("QUINTIC"))) + ("WARP_TRI" fun nil (system) "Result = %s( Xo, Yo, Xi, Yi, Image)" (("EXTRAPOLATE") ("OUTPUT_SIZE") ("QUINTIC") ("TPS"))) ("WATERSHED" fun nil (system) "Result = %s ( Image)" (("CONNECTIVITY"))) ("WHERE" fun nil (system) "Result = %s( Array_Expression [, Count])" (("COMPLEMENT") ("L64") ("NCOMPLEMENT"))) - ("WIDGET_BASE" fun nil (system) "Result = %s( [Parent])" (("ALIGN_BOTTOM") ("ALIGN_CENTER") ("ALIGN_LEFT") ("ALIGN_RIGHT") ("ALIGN_TOP") ("APP_MBAR") ("BASE_ALIGN_BOTTOM") ("BASE_ALIGN_CENTER") ("BASE_ALIGN_LEFT") ("BASE_ALIGN_RIGHT") ("BASE_ALIGN_TOP") ("COLUMN") ("DISPLAY_NAME") ("EVENT_FUNC") ("EVENT_PRO") ("EXCLUSIVE") ("FLOATING") ("FRAME") ("FUNC_GET_VALUE") ("GRID_LAYOUT") ("GROUP_LEADER") ("KBRD_FOCUS_EVENTS") ("KILL_NOTIFY") ("MAP") ("MBAR") ("MODAL") ("NO_COPY") ("NONEXCLUSIVE") ("NOTIFY_REALIZE") ("PRO_SET_VALUE") ("RESOURCE_NAME") ("RNAME_MBAR") ("ROW") ("SCR_XSIZE") ("SCR_YSIZE") ("SCROLL") ("SENSITIVE") ("SPACE") ("TITLE") ("TLB_FRAME_ATTR") ("TLB_KILL_REQUEST_EVENTS") ("TLB_SIZE_EVENTS") ("TRACKING_EVENTS") ("UNAME") ("UNITS") ("UVALUE") ("X_SCROLL_SIZE") ("XOFFSET") ("XPAD") ("XSIZE") ("Y_SCROLL_SIZE") ("YOFFSET") ("YPAD") ("YSIZE"))) + ("WIDGET_ACTIVEX" fun nil (system) "Result = %s( Parent, COM_ID)" (("ALIGN_BOTTOM") ("ALIGN_CENTER") ("ALIGN_LEFT") ("ALIGN_RIGHT") ("ALIGN_TOP") ("EVENT_FUNC") ("EVENT_PRO") ("FUNC_GET_VALUE") ("ID_TYPE") ("KILL_NOTIFY") ("NO_COPY") ("NOTIFY_REALIZE") ("PRO_SET_VALUE") ("SCR_XSIZE") ("SCR_YSIZE") ("SENSITIVE") ("UNAME") ("UNITS") ("UVALUE") ("XOFFSET") ("XSIZE") ("YOFFSET") ("YSIZE"))) + ("WIDGET_BASE" fun nil (system) "Result = %s( [Parent])" (("ALIGN_BOTTOM") ("ALIGN_CENTER") ("ALIGN_LEFT") ("ALIGN_RIGHT") ("ALIGN_TOP") ("APP_MBAR") ("BASE_ALIGN_BOTTOM") ("BASE_ALIGN_CENTER") ("BASE_ALIGN_LEFT") ("BASE_ALIGN_RIGHT") ("BASE_ALIGN_TOP") ("COLUMN") ("CONTEXT_MENU") ("DISPLAY_NAME") ("EVENT_FUNC") ("EVENT_PRO") ("EXCLUSIVE") ("FLOATING") ("FRAME") ("FUNC_GET_VALUE") ("GRID_LAYOUT") ("GROUP_LEADER") ("KBRD_FOCUS_EVENTS") ("KILL_NOTIFY") ("MAP") ("MBAR") ("MODAL") ("NO_COPY") ("NONEXCLUSIVE") ("NOTIFY_REALIZE") ("PRO_SET_VALUE") ("RESOURCE_NAME") ("RNAME_MBAR") ("ROW") ("SCR_XSIZE") ("SCR_YSIZE") ("SCROLL") ("SENSITIVE") ("SPACE") ("TITLE") ("TLB_FRAME_ATTR") ("TLB_KILL_REQUEST_EVENTS") ("TLB_SIZE_EVENTS") ("TRACKING_EVENTS") ("UNAME") ("UNITS") ("UVALUE") ("X_SCROLL_SIZE") ("XOFFSET") ("XPAD") ("XSIZE") ("Y_SCROLL_SIZE") ("YOFFSET") ("YPAD") ("YSIZE"))) ("WIDGET_BUTTON" fun nil (system) "Result = %s( Parent)" (("ALIGN_CENTER") ("ALIGN_LEFT") ("ALIGN_RIGHT") ("BITMAP") ("DYNAMIC_RESIZE") ("EVENT_FUNC") ("EVENT_PRO") ("FONT") ("FRAME") ("FUNC_GET_VALUE") ("GROUP_LEADER") ("HELP") ("KILL_NOTIFY") ("MENU") ("NO_COPY") ("NO_RELEASE") ("NOTIFY_REALIZE") ("PRO_SET_VALUE") ("RESOURCE_NAME") ("SCR_XSIZE") ("SCR_YSIZE") ("SENSITIVE") ("SEPARATOR") ("TRACKING_EVENTS") ("UNAME") ("UNITS") ("UVALUE") ("VALUE") ("X_BITMAP_EXTRA") ("XOFFSET") ("XSIZE") ("YOFFSET") ("YSIZE"))) ("WIDGET_DRAW" fun nil (system) "Result = %s(Parent)" (("APP_SCROLL") ("BUTTON_EVENTS") ("COLOR_MODEL") ("COLORS") ("EVENT_FUNC") ("EVENT_PRO") ("EXPOSE_EVENTS") ("FRAME") ("FUNC_GET_VALUE") ("GRAPHICS_LEVEL") ("GROUP_LEADER") ("KILL_NOTIFY") ("MOTION_EVENTS") ("NO_COPY") ("NOTIFY_REALIZE") ("PRO_SET_VALUE") ("RENDERER") ("RESOURCE_NAME") ("RETAIN") ("SCR_XSIZE") ("SCR_YSIZE") ("SCROLL") ("SENSITIVE") ("TRACKING_EVENTS") ("UNAME") ("UNITS") ("UVALUE") ("VALUE") ("VIEWPORT_EVENTS") ("X_SCROLL_SIZE") ("XOFFSET") ("XSIZE") ("Y_SCROLL_SIZE") ("YOFFSET") ("YSIZE"))) ("WIDGET_DROPLIST" fun nil (system) "Result = %s( Parent)" (("DYNAMIC_RESIZE") ("EVENT_FUNC") ("EVENT_PRO") ("FONT") ("FRAME") ("FUNC_GET_VALUE") ("GROUP_LEADER") ("KILL_NOTIFY") ("NO_COPY") ("NOTIFY_REALIZE") ("PRO_SET_VALUE") ("RESOURCE_NAME") ("SCR_XSIZE") ("SCR_YSIZE") ("SENSITIVE") ("TITLE") ("TRACKING_EVENTS") ("UNAME") ("UNITS") ("UVALUE") ("VALUE") ("XOFFSET") ("XSIZE") ("YOFFSET") ("YSIZE"))) ("WIDGET_EVENT" fun nil (system) "Result = %s([Widget_ID])" (("BAD_ID") ("NOWAIT") ("SAVE_HOURGLASS") ("YIELD_TO_TTY"))) - ("WIDGET_INFO" fun nil (system) "Result = %s( [Widget_ID] )" (("ACTIVE") ("CHILD") ("COLUMN_WIDTHS") ("DRAW_BUTTON_EVENTS") ("DRAW_EXPOSE_EVENTS") ("DRAW_MOTION_EVENTS") ("DRAW_VIEWPORT_EVENTS") ("DROPLIST_NUMBER") ("DROPLIST_SELECT") ("DYNAMIC_RESIZE") ("EVENT_FUNC") ("EVENT_PRO") ("FIND_BY_UNAME") ("GEOMETRY") ("KBRD_FOCUS_EVENTS") ("LIST_MULTIPLE") ("LIST_NUM_VISIBLE") ("LIST_NUMBER") ("LIST_SELECT") ("LIST_TOP") ("MANAGED") ("MODAL") ("NAME") ("PARENT") ("REALIZED") ("ROW_HEIGHTS") ("SIBLING") ("SLIDER_MIN_MAX") ("TABLE_ALL_EVENTS") ("TABLE_EDIT_CELL") ("TABLE_EDITABLE") ("TABLE_SELECT") ("TABLE_VIEW") ("TEXT_ALL_EVENTS") ("TEXT_EDITABLE") ("TEXT_NUMBER") ("TEXT_OFFSET_TO_XY") ("TEXT_SELECT") ("TEXT_TOP_LINE") ("TEXT_XY_TO_OFFSET") ("TLB_KILL_REQUEST_EVENTS") ("TRACKING_EVENTS") ("TYPE") ("UNAME") ("UNITS") ("UPDATE") ("USE_TABLE_SELECT") ("VALID_ID") ("VERSION"))) + ("WIDGET_INFO" fun nil (system) "Result = %s( [Widget_ID] )" (("ACTIVE") ("CHILD") ("COLUMN_WIDTHS") ("CONTEXT_EVENTS") ("DRAW_BUTTON_EVENTS") ("DRAW_EXPOSE_EVENTS") ("DRAW_MOTION_EVENTS") ("DRAW_VIEWPORT_EVENTS") ("DROPLIST_NUMBER") ("DROPLIST_SELECT") ("DYNAMIC_RESIZE") ("EVENT_FUNC") ("EVENT_PRO") ("FIND_BY_UNAME") ("GEOMETRY") ("KBRD_FOCUS_EVENTS") ("LIST_MULTIPLE") ("LIST_NUM_VISIBLE") ("LIST_NUMBER") ("LIST_SELECT") ("LIST_TOP") ("MANAGED") ("MODAL") ("NAME") ("PARENT") ("REALIZED") ("ROW_HEIGHTS") ("SIBLING") ("SLIDER_MIN_MAX") ("SYSTEM_COLORS") ("TABLE_ALL_EVENTS") ("TABLE_EDIT_CELL") ("TABLE_EDITABLE") ("TABLE_SELECT") ("TABLE_VIEW") ("TEXT_ALL_EVENTS") ("TEXT_EDITABLE") ("TEXT_NUMBER") ("TEXT_OFFSET_TO_XY") ("TEXT_SELECT") ("TEXT_TOP_LINE") ("TEXT_XY_TO_OFFSET") ("TLB_KILL_REQUEST_EVENTS") ("TRACKING_EVENTS") ("TYPE") ("UNAME") ("UNITS") ("UPDATE") ("USE_TABLE_SELECT") ("VALID_ID") ("VERSION"))) ("WIDGET_LABEL" fun nil (system) "Result = %s( Parent)" (("ALIGN_CENTER") ("ALIGN_LEFT") ("ALIGN_RIGHT") ("DYNAMIC_RESIZE") ("FONT") ("FRAME") ("FUNC_GET_VALUE") ("GROUP_LEADER") ("KILL_NOTIFY") ("NO_COPY") ("NOTIFY_REALIZE") ("PRO_SET_VALUE") ("RESOURCE_NAME") ("SCR_XSIZE") ("SCR_YSIZE") ("SENSITIVE") ("TRACKING_EVENTS") ("UNAME") ("UNITS") ("UVALUE") ("VALUE") ("XOFFSET") ("XSIZE") ("YOFFSET") ("YSIZE"))) - ("WIDGET_LIST" fun nil (system) "Result = %s( Parent)" (("EVENT_FUNC") ("EVENT_PRO") ("FONT") ("FRAME") ("FUNC_GET_VALUE") ("GROUP_LEADER") ("KILL_NOTIFY") ("MULTIPLE") ("NO_COPY") ("NOTIFY_REALIZE") ("PRO_SET_VALUE") ("RESOURCE_NAME") ("SCR_XSIZE") ("SCR_YSIZE") ("SENSITIVE") ("TRACKING_EVENTS") ("UNAME") ("UNITS") ("UVALUE") ("VALUE") ("XOFFSET") ("XSIZE") ("YOFFSET") ("YSIZE"))) + ("WIDGET_LIST" fun nil (system) "Result = %s( Parent)" (("CONTEXT_EVENTS") ("EVENT_FUNC") ("EVENT_PRO") ("FONT") ("FRAME") ("FUNC_GET_VALUE") ("GROUP_LEADER") ("KILL_NOTIFY") ("MULTIPLE") ("NO_COPY") ("NOTIFY_REALIZE") ("PRO_SET_VALUE") ("RESOURCE_NAME") ("SCR_XSIZE") ("SCR_YSIZE") ("SENSITIVE") ("TRACKING_EVENTS") ("UNAME") ("UNITS") ("UVALUE") ("VALUE") ("XOFFSET") ("XSIZE") ("YOFFSET") ("YSIZE"))) ("WIDGET_SLIDER" fun nil (system) "Result = %s( Parent)" (("DRAG") ("EVENT_FUNC") ("EVENT_PRO") ("FONT") ("FRAME") ("FUNC_GET_VALUE") ("GROUP_LEADER") ("KILL_NOTIFY") ("MAXIMUM") ("MINIMUM") ("NO_COPY") ("NOTIFY_REALIZE") ("PRO_SET_VALUE") ("RESOURCE_NAME") ("SCR_XSIZE") ("SCR_YSIZE") ("SCROLL") ("SENSITIVE") ("SUPPRESS_VALUE") ("TITLE") ("TRACKING_EVENTS") ("UNAME") ("UNITS") ("UVALUE") ("VALUE") ("VERTICAL") ("XOFFSET") ("XSIZE") ("YOFFSET") ("YSIZE"))) ("WIDGET_TABLE" fun nil (system) "Result = %s( Parent)" (("ALIGNMENT") ("ALL_EVENTS") ("AM_PM") ("COLUMN_LABELS") ("COLUMN_MAJOR") ("COLUMN_WIDTHS") ("DAYS_OF_WEEK") ("EDITABLE") ("EVENT_FUNC") ("EVENT_PRO") ("FONT") ("FORMAT") ("FRAME") ("FUNC_GET_VALUE") ("GROUP_LEADER") ("KBRD_FOCUS_EVENTS") ("KILL_NOTIFY") ("MONTHS") ("NO_COPY") ("NO_HEADERS") ("NOTIFY_REALIZE") ("PRO_SET_VALUE") ("RESIZEABLE_COLUMNS") ("RESIZEABLE_ROWS") ("RESOURCE_NAME") ("ROW_HEIGHTS") ("ROW_LABELS") ("ROW_MAJOR") ("SCR_XSIZE") ("SCR_YSIZE") ("SCROLL") ("SENSITIVE") ("TRACKING_EVENTS") ("UNAME") ("UNITS") ("UVALUE") ("VALUE") ("X_SCROLL_SIZE") ("XOFFSET") ("XSIZE") ("Y_SCROLL_SIZE") ("YOFFSET") ("YSIZE"))) - ("WIDGET_TEXT" fun nil (system) "Result = %s( Parent)" (("ALL_EVENTS") ("EDITABLE") ("EVENT_FUNC") ("EVENT_PRO") ("FONT") ("FRAME") ("FUNC_GET_VALUE") ("GROUP_LEADER") ("KBRD_FOCUS_EVENTS") ("KILL_NOTIFY") ("NO_COPY") ("NO_NEWLINE") ("NOTIFY_REALIZE") ("PRO_SET_VALUE") ("RESOURCE_NAME") ("SCR_XSIZE") ("SCR_YSIZE") ("SCROLL") ("SENSITIVE") ("TRACKING_EVENTS") ("UNAME") ("UNITS") ("UVALUE") ("VALUE") ("WRAP") ("XOFFSET") ("XSIZE") ("YOFFSET") ("YSIZE"))) + ("WIDGET_TEXT" fun nil (system) "Result = %s( Parent)" (("ALL_EVENTS") ("CONTEXT_EVENTS") ("EDITABLE") ("EVENT_FUNC") ("EVENT_PRO") ("FONT") ("FRAME") ("FUNC_GET_VALUE") ("GROUP_LEADER") ("KBRD_FOCUS_EVENTS") ("KILL_NOTIFY") ("NO_COPY") ("NO_NEWLINE") ("NOTIFY_REALIZE") ("PRO_SET_VALUE") ("RESOURCE_NAME") ("SCR_XSIZE") ("SCR_YSIZE") ("SCROLL") ("SENSITIVE") ("TRACKING_EVENTS") ("UNAME") ("UNITS") ("UVALUE") ("VALUE") ("WRAP") ("XOFFSET") ("XSIZE") ("YOFFSET") ("YSIZE"))) ("WRITE_SYLK" fun nil (system) "Result = %s( File, Data)" (("STARTCOL") ("STARTROW"))) ("WTN" fun nil (system) "Result = %s( A, Coef)" (("COLUMN") ("DOUBLE") ("INVERSE") ("OVERWRITE"))) ("XFONT" fun nil (system) "Result = %s()" (("GROUP") ("PRESERVE_FONT_INFO"))) @@ -1085,6 +1123,9 @@ ("ComputeMesh" fun "IDLanROIGroup" (system) "Result = Obj->[%s::]%s( Vertices, Conn)" (("CAPPED") ("SURFACE_AREA"))) ("ContainsPoints" fun "IDLanROIGroup" (system) "Result = Obj->[%s::]%s( X[, Y[, Z]] )" nil) ("Init" fun "IDLanROIGroup" (system) "Result = Obj->[%s::]%s( ) ('IDLanROIGroup')" nil) + ("GetProperty" pro "IDLcomIDispatch" (system) "Obj->[%s::]%s" (("PROPERTY_NAME"))) + ("SetProperty" pro "IDLcomIDispatch" (system) "Obj->[%s::]%s" (("PROPERTY_NAME"))) + ("Init" fun "IDLcomIDispatch" (system) "Result = Obj -> [%s::]%s()" nil) ("Connect" pro "IDLdbDatabase" (system) "DBobj ->[%s::]%s" (("CONNECTION") ("DATASOURCE") ("PASSWORD") ("USER_ID"))) ("ExecuteSQL" pro "IDLdbDatabase" (system) "DBobj->ExecuteSQL, strSQL" nil) ("GetProperty" pro "IDLdbDatabase" (system) "DBobj->GetProperty" (("CAN_GET_TABLES") ("DBMS_NAME") ("DBMS_VERSION") ("DRIVER_ODBC_LEVEL") ("DRIVER_VERSION") ("IS_CONNECTED") ("IS_READONLY") ("MAX_CONNECTIONS") ("MAX_RECORDSETS") ("ODBC_LEVEL") ("SQL_LEVEL") ("SQL_SERVER_NAME") ("USE_CURSOR_LIB") ("USER_NAME"))) @@ -1129,6 +1170,11 @@ ("IsValid" fun "IDLffLanguageCat" (system) "Result = Obj ->[%s::]%s( )" nil) ("Query" fun "IDLffLanguageCat" (system) "Result = Obj ->[%s::]%s( key)" (("DEFAULT_STRING"))) ("SetCatalog" fun "IDLffLanguageCat" (system) "Result = Obj ->[%s::]%s( application)" (("FILENAME") ("LOCALE") ("PATH"))) + ("Cleanup" pro "IDLffMrSID" (system) "Obj -> [%s::]%s" nil) + ("GetProperty" pro "IDLffMrSID" (system) "Obj->[%s::]%s" (("CHANNELS") ("DIMENSIONS") ("GEO_ORIGIN") ("GEO_PROJTYPE") ("GEO_RESOLUTION") ("GEO_VALID") ("LEVELS") ("PIXEL_TYPE") ("TYPE"))) + ("GetDimsAtLevel" fun "IDLffMrSID" (system) "Dims = Obj -> [%s::]%s ( Level )" nil) + ("GetImageData" fun "IDLffMrSID" (system) "ImageData = Obj->[%s::]%s ()" (("LEVEL") ("SUB_RECT"))) + ("Init" fun "IDLffMrSID" (system) "Result = Obj -> [%s::]%s(, Filename)" (("QUIET"))) ("AddAttribute" pro "IDLffShape" (system) "Obj->[%s::]%s, Name, Type, Width" (("PRECISION"))) ("Cleanup" pro "IDLffShape" (system) "Obj -> [%s::]%s" nil) ("Close" pro "IDLffShape" (system) "Obj->[%s::]%s" nil) @@ -1138,7 +1184,7 @@ ("SetAttributes" pro "IDLffShape" (system) "Obj->[%s::]%s, Index, Attribute_Num, Value or Obj->[IDLffShape::]SetAttributes, Index, Attributes" nil) ("GetAttributes" fun "IDLffShape" (system) "Result = Obj->[%s::]%s([Index])" (("ALL") ("ATTRIBUTE_STRUCTURE"))) ("GetEntity" fun "IDLffShape" (system) "Result = Obj->[%s::]%s( [Index])" (("ALL") ("ATTRIBUTES"))) - ("Init" fun "IDLffShape" (system) "Result = Obj -> [%s::]%s()" nil) + ("Init" fun "IDLffShape" (system) "Result = Obj -> [%s::]%s( [ Filename])" (("ENTITY_TYPE") ("UPDATE"))) ("Open" fun "IDLffShape" (system) "Result = Obj->[%s::]%s( `Filename')" (("ENTITY_TYPE") ("UPDATE"))) ("Cleanup" pro "IDLgrAxis" (system) "Obj -> [%s::]%s" nil) ("GetProperty" pro "IDLgrAxis" (system) "Obj -> [%s::]%s" (("ALL") ("AM_PM") ("COLOR") ("CRANGE") ("DAYS_OF_WEEK") ("DIRECTION") ("EXACT") ("EXTEND") ("GRIDSTYLE") ("HIDE") ("LOCATION") ("LOG") ("MAJOR") ("MINOR") ("MONTHS") ("NAME") ("NOTEXT") ("PALETTE") ("PARENT") ("RANGE") ("SUBTICKLEN") ("TEXTALIGNMENTS") ("TEXTBASELINE") ("TEXTPOS") ("TEXTUPDIR") ("THICK") ("TICKDIR") ("TICKFORMAT") ("TICKFRMTDATA") ("TICKINTERVAL") ("TICKLAYOUT") ("TICKLEN") ("TICKTEXT") ("TICKUNITS") ("TICKVALUES") ("TITLE") ("USE_TEXT_COLOR") ("UVALUE") ("XCOORD_CONV") ("XRANGE") ("YCOORD_CONV") ("YRANGE") ("ZCOORD_CONV") ("ZRANGE"))) @@ -1155,7 +1201,7 @@ ("GetFontnames" fun "IDLgrBuffer" (system) "Return = Obj -> [%s::]%s( FamilyName)" (("IDL_FONTS") ("STYLES"))) ("GetTextDimensions" fun "IDLgrBuffer" (system) "Result = Obj ->[%s::]%s( TextObj)" (("DESCENT") ("PATH"))) ("Init" fun "IDLgrBuffer" (system) "Result = Obj -> [%s::]%s( ) ('IDLgrBuffer')" (("COLOR_MODEL") ("DIMENSIONS") ("GRAPHICS_TREE") ("N_COLORS") ("PALETTE") ("QUALITY") ("RESOLUTION") ("UNITS") ("UVALUE"))) - ("PickData" fun "IDLgrBuffer" (system) "Result = Obj -> [%s::]%s( View, Object, Location, XYZLocation)" (("PATH"))) + ("PickData" fun "IDLgrBuffer" (system) "Result = Obj -> [%s::]%s( View, Object, Location, XYZLocation)" (("DIMENSIONS") ("PATH"))) ("Read" fun "IDLgrBuffer" (system) "Result = Obj -> [%s::]%s()" nil) ("Select" fun "IDLgrBuffer" (system) "Result = Obj -> [%s::]%s(Picture, XY)" (("DIMENSIONS") ("UNITS"))) ("Cleanup" pro "IDLgrClipboard" (system) "Obj-> [%s::]%s" nil) @@ -1173,13 +1219,13 @@ ("ComputeDimensions" fun "IDLgrColorbar" (system) "Result = Obj ->[%s::]%s( DestinationObj)" (("PATH"))) ("Init" fun "IDLgrColorbar" (system) "Result = Obj -> [%s::]%s( [aRed, aGreen, aBlue] ) ( 'IDLgrColorbar' [, aRed, aGreen, aBlue])" (("BLUE_VALUES") ("COLOR") ("DIMENSIONS") ("GREEN_VALUES") ("HIDE") ("MAJOR") ("MINOR") ("NAME") ("PALETTE") ("RED_VALUES") ("SHOW_AXIS") ("SHOW_OUTLINE") ("SUBTICKLEN") ("THICK") ("THREED") ("TICKFORMAT") ("TICKFRMTDATA") ("TICKLEN") ("TICKTEXT") ("TICKVALUES") ("TITLE") ("UVALUE") ("XCOORD_CONV") ("YCOORD_CONV") ("ZCOORD_CONV"))) ("Cleanup" pro "IDLgrContour" (system) "Obj -> [%s::]%s" nil) - ("GetProperty" pro "IDLgrContour" (system) "Obj -> [%s::]%s" (("ALL") ("ANISOTROPY") ("C_COLOR") ("C_FILL_PATTERN") ("C_LINESTYLE") ("C_THICK") ("C_VALUE") ("COLOR") ("DATA_VALUES") ("DOWNHILL") ("FILL") ("GEOM") ("HIDE") ("MAX_VALUE") ("MIN_VALUE") ("N_LEVELS") ("NAME") ("PALETTE") ("PARENT") ("PLANAR") ("POLYGONS") ("SHADE_RANGE") ("SHADING") ("TICKINTERVAL") ("TICKLEN") ("UVALUE") ("XCOORD_CONV") ("XRANGE") ("YCOORD_CONV") ("YRANGE") ("ZCOORD_CONV") ("ZRANGE"))) - ("SetProperty" pro "IDLgrContour" (system) "Obj -> [%s::]%s" (("ANISOTROPY") ("C_COLOR") ("C_FILL_PATTERN") ("C_LINESTYLE") ("C_THICK") ("C_VALUE") ("COLOR") ("DATA_VALUES") ("DOWNHILL") ("FILL") ("GEOMX") ("GEOMY") ("GEOMZ") ("HIDE") ("MAX_VALUE") ("MIN_VALUE") ("N_LEVELS") ("NAME") ("PALETTE") ("PLANAR") ("POLYGONS") ("SHADE_RANGE") ("SHADING") ("TICKINTERVAL") ("TICKLEN") ("UVALUE") ("XCOORD_CONV") ("YCOORD_CONV") ("ZCOORD_CONV"))) + ("GetProperty" pro "IDLgrContour" (system) "Obj -> [%s::]%s" (("ALL") ("ANISOTROPY") ("C_COLOR") ("C_FILL_PATTERN") ("C_LINESTYLE") ("C_THICK") ("C_VALUE") ("COLOR") ("DATA_VALUES") ("DEPTH_OFFSET") ("DOWNHILL") ("FILL") ("GEOM") ("HIDE") ("MAX_VALUE") ("MIN_VALUE") ("N_LEVELS") ("NAME") ("PALETTE") ("PARENT") ("PLANAR") ("POLYGONS") ("SHADE_RANGE") ("SHADING") ("TICKINTERVAL") ("TICKLEN") ("UVALUE") ("XCOORD_CONV") ("XRANGE") ("YCOORD_CONV") ("YRANGE") ("ZCOORD_CONV") ("ZRANGE"))) + ("SetProperty" pro "IDLgrContour" (system) "Obj -> [%s::]%s" (("ANISOTROPY") ("C_COLOR") ("C_FILL_PATTERN") ("C_LINESTYLE") ("C_THICK") ("C_VALUE") ("COLOR") ("DATA_VALUES") ("DEPTH_OFFSET") ("DOWNHILL") ("FILL") ("GEOMX") ("GEOMY") ("GEOMZ") ("HIDE") ("MAX_VALUE") ("MIN_VALUE") ("N_LEVELS") ("NAME") ("PALETTE") ("PLANAR") ("POLYGONS") ("SHADE_RANGE") ("SHADING") ("TICKINTERVAL") ("TICKLEN") ("UVALUE") ("XCOORD_CONV") ("YCOORD_CONV") ("ZCOORD_CONV"))) ("GetCTM" fun "IDLgrContour" (system) "Result = Obj -> [%s::]%s()" (("DESTINATION") ("PATH") ("TOP"))) - ("Init" fun "IDLgrContour" (system) "Result = Obj -> [%s::]%s( [Values] ) ('IDLgrContour' [, Values])" (("ANISOTROPY") ("C_COLOR") ("C_FILL_PATTERN") ("C_LINESTYLE") ("C_THICK") ("C_VALUE") ("COLOR") ("DATA_VALUES") ("DOUBLE_DATA") ("DOUBLE_GEOM") ("DOWNHILL") ("FILL") ("GEOMX") ("GEOMY") ("GEOMZ") ("HIDE") ("MAX_VALUE") ("MIN_VALUE") ("N_LEVELS") ("NAME") ("PALETTE") ("PLANAR") ("POLYGONS") ("SHADE_RANGE") ("SHADING") ("TICKINTERVAL") ("TICKLEN") ("UVALUE") ("XCOORD_CONV") ("YCOORD_CONV") ("ZCOORD_CONV"))) + ("Init" fun "IDLgrContour" (system) "Result = Obj -> [%s::]%s( [Values] ) ('IDLgrContour' [, Values])" (("ANISOTROPY") ("C_COLOR") ("C_FILL_PATTERN") ("C_LINESTYLE") ("C_THICK") ("C_VALUE") ("COLOR") ("DATA_VALUES") ("DEPTH_OFFSET") ("DOUBLE_DATA") ("DOUBLE_GEOM") ("DOWNHILL") ("FILL") ("GEOMX") ("GEOMY") ("GEOMZ") ("HIDE") ("MAX_VALUE") ("MIN_VALUE") ("N_LEVELS") ("NAME") ("PALETTE") ("PLANAR") ("POLYGONS") ("SHADE_RANGE") ("SHADING") ("TICKINTERVAL") ("TICKLEN") ("UVALUE") ("XCOORD_CONV") ("YCOORD_CONV") ("ZCOORD_CONV"))) ("Cleanup" pro "IDLgrFont" (system) "Obj -> [%s::]%s" nil) - ("GetProperty" pro "IDLgrFont" (system) "Obj -> [%s:]%s" (("ALL") ("NAME") ("SIZE") ("SUBSTITUTE") ("THICK") ("UVALUE"))) - ("SetProperty" pro "IDLgrFont" (system) "Obj -> [%s:]%s" (("NAME") ("SIZE") ("SUBSTITUTE") ("THICK") ("UVALUE"))) + ("GetProperty" pro "IDLgrFont" (system) "" (("NAME") ("SIZE") ("SUBSTITUTE") ("THICK") ("UVALUE"))) + ("SetProperty" pro "IDLgrFont" (system) "" (("NAME") ("SIZE") ("SUBSTITUTE") ("THICK") ("UVALUE"))) ("Init" fun "IDLgrFont" (system) "Result = Obj -> [%s::]%s( [Fontname] ) ('IDLgrFont' [, Fontname])" (("NAME") ("SIZE") ("SUBSTITUTE") ("THICK") ("UVALUE"))) ("Cleanup" pro "IDLgrImage" (system) "Obj -> [%s::]%s" nil) ("GetProperty" pro "IDLgrImage" (system) "Obj -> [%s::]%s" (("ALL") ("BLEND_FUNCTION") ("CHANNEL") ("DATA") ("DIMENSIONS") ("GREYSCALE") ("HIDE") ("INTERLEAVE") ("INTERPOLATE") ("LOCATION") ("NAME") ("NO_COPY") ("ORDER") ("PALETTE") ("PARENT") ("SUB_RECT") ("UVALUE") ("XCOORD_CONV") ("XRANGE") ("YCOORD_CONV") ("YRANGE") ("ZCOORD_CONV") ("ZRANGE"))) @@ -1313,7 +1359,7 @@ ("SetProperty" pro "IDLgrVRML" (system) "Obj -> [%s::]%s" (("DIMENSIONS") ("FILENAME") ("GRAPHICS_TREE") ("PALETTE") ("QUALITY") ("RESOLUTION") ("UNITS") ("UVALUE"))) ("GetFontnames" fun "IDLgrVRML" (system) "Return = Obj ->[%s::]%s( FamilyName)" (("IDL_FONTS") ("STYLES"))) ("GetTextDimensions" fun "IDLgrVRML" (system) "Result = Obj ->[%s::]%s( TextObj)" (("DESCENT") ("PATH"))) - ("Init" fun "IDLgrVRML" (system) "Result = Obj -> [%s::]%s( ) ('IDLgrVRML')" (("COLOR_MODEL") ("DIMENSIONS") ("FILENAME") ("GRAPHICS_TREE") ("N_COLORS") ("PALETTE") ("QUALITY") ("RESOLUTION") ("UNITS") ("UVALUE") ("WORLDTITLE") ("WORLDINFO"))) + ("Init" fun "IDLgrVRML" (system) "Result = Obj -> [%s::]%s( ) ('IDLgrVRML')" (("COLOR_MODEL") ("DIMENSIONS") ("FILENAME") ("GRAPHICS_TREE") ("N_COLORS") ("PALETTE") ("QUALITY") ("RESOLUTION") ("UNITS") ("UVALUE") ("WORLDINFO") ("WORLDTITLE"))) ("Cleanup" pro "IDLgrWindow" (system) "Obj -> [%s::]%s" nil) ("Draw" pro "IDLgrWindow" (system) "Obj -> [%s::]%s [, Picture]" (("CREATE_INSTANCE") ("DRAW_INSTANCE"))) ("Erase" pro "IDLgrWindow" (system) "Obj -> [%s::]%s" (("COLOR"))) @@ -1334,18 +1380,19 @@ ("Init" fun "TrackBall" (system) "Result = Obj -> [%s::]%s( Center, Radius ) ('TrackBall', Center, Radius)" (("AXIS") ("CONSTRAIN") ("MOUSE"))) ("Update" fun "TrackBall" (system) "Result = Obj -> [%s::]%s( sEvent)" (("MOUSE") ("TRANSFORM") ("TRANSLATE"))) ) - "1287 builtin routines with 5724 keywords for IDL version 5.4.") + "1324 builtin routines with 5958 keywords for IDL version 5.5.") (setq idlwave-system-variables-alist '( ("C") + ("CPU" ("HW_VECTOR") ("VECTOR_ENABLE") ("HW_NCPU") ("TPOOL_NTHREADS") ("TPOOL_MIN_ELTS") ("TPOOL_MAX_ELTS")) ("D" ("NAME") ("X_SIZE") ("Y_SIZE") ("X_VSIZE") ("Y_VSIZE") ("X_CH_SIZE") ("Y_CH_SIZE") ("X_PX_CM") ("Y_PX_CM") ("N_COLORS") ("TABLE_SIZE") ("FILL_DIST") ("WINDOW") ("UNIT") ("FLAGS") ("ORIGIN") ("ZOOM")) ("DIR") ("DLM_PATH") ("DPI") ("DTOR") ("EDIT_INPUT") - ("ERROR_STATE" ("NAME") ("BLOCK") ("CODE") ("SYS_CODE") ("MSG") ("SYS_MSG") ("MSG_PREFIX")) + ("ERROR_STATE" ("NAME") ("BLOCK") ("CODE") ("SYS_CODE") ("SYS_CODE_TYPE") ("MSG") ("SYS_MSG") ("MSG_PREFIX")) ("EXCEPT") ("HELP_PATH") ("JOURNAL") @@ -1361,8 +1408,8 @@ ("QUIET") ("RADEG") ("VALUES" ("F_INFINITY") ("F_NAN") ("D_INFINITY") ("D_NAN")) - ("VERSION" ("ARCH") ("OS") ("OS_FAMILY") ("RELEASE") ("BUILD_DATE") ("MEMORY_BITS") ("FILE_OFFSET_BITS")) - ("WARN" ("OBS_ROUTINES") ("OBS_SYSVARS") ("PARENS") ("TRUNCATED_FILENAME")) + ("VERSION" ("ARCH") ("OS") ("OS_FAMILY") ("OS_NAME") ("RELEASE") ("BUILD_DATE") ("MEMORY_BITS") ("FILE_OFFSET_BITS")) + ("WARN" ("OBS_ROUTINES") ("OBS_SYSVARS") ("PARENS")) ("X" ("TITLE") ("TYPE") ("STYLE") ("TICKS") ("TICKLEN") ("THICK") ("RANGE") ("CRANGE") ("S") ("MARGIN") ("OMARGIN") ("WINDOW") ("REGION") ("CHARSIZE") ("MINOR") ("TICKV") ("TICKNAME") ("GRIDSTYLE") ("TICKFORMAT") ("TICKINTERVAL") ("TICKLAYOUT") ("TICKUNITS")) ("Y" ("TITLE") ("TYPE") ("STYLE") ("TICKS") ("TICKLEN") ("THICK") ("RANGE") ("CRANGE") ("S") ("MARGIN") ("OMARGIN") ("WINDOW") ("REGION") ("CHARSIZE") ("MINOR") ("TICKV") ("TICKNAME") ("GRIDSTYLE") ("TICKFORMAT") ("TICKINTERVAL") ("TICKLAYOUT") ("TICKUNITS")) ("Z" ("TITLE") ("TYPE") ("STYLE") ("TICKS") ("TICKLEN") ("THICK") ("RANGE") ("CRANGE") ("S") ("MARGIN") ("OMARGIN") ("WINDOW") ("REGION") ("CHARSIZE") ("MINOR") ("TICKV") ("TICKNAME") ("GRIDSTYLE") ("TICKFORMAT") ("TICKINTERVAL") ("TICKLAYOUT") ("TICKUNITS")))) @@ -1373,30 +1420,30 @@ ("IDLgrAxis" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "COLOR" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRAXIS_TOP" "IDLGRAXISVERSION" "AM_PM" "AXIS_TYPE" "CALCFLAGS" "DAYS_OF_WEEK" "DIRECTION" "AXISFLAGS" "GRIDSTYLE" "LOCATION" "MAJOR" "MINOR" "MONTHS" "OUTRANGE" "RANGE" "SUBTICKLEN" "TEXTALIGNMENTS" "TEXTBASELINE" "TEXTUPDIR" "THICK" "TICKDIR" "TICKFORMAT" "ARRAY_TICKFORMAT" "TICKFRMTDATA" "TICKINTERVAL" "TICKLAYOUT" "TICKLEN" "TICKTEXT" "TICKUNITCODES" "TICKUNITS" "TICKVALUES" "TITLE" "CURRENT_LEVEL" "LEVEL_DATA" "STEPRANGEUNITS" "STEPRANGE") (inherits)) + ("IDLgrContour" + (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "COLOR" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRCONTOURTOP" "IDLGRCONTOURVERSION" "ANISOTROPY" "DATA_FORMAT" "DATA" "GEOM_FORMAT" "GEOM" "CONTOURFLAGS" "C_COLOR" "C_FILLPATTERN" "C_LINESTYLE" "C_THICK" "C_VALUE" "MAXVAL" "MINVAL" "NLEVELS" "POLYGONS" "SHADERANGE" "SHADING" "TICKINTERVAL" "TICKLEN" "PRECISIONDATA" "PRECISIONGEOM" "PRECISIONGRAPH" "LEVELINFO" "CFILL1" "DEPTHOFFSET" "IDLGRCONTOURBOTTOM") + (inherits)) ("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")) - ("IDLgrContour" - (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "COLOR" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRCONTOURTOP" "IDLGRCONTOURVERSION" "ANISOTROPY" "DATA_FORMAT" "DATA" "GEOM_FORMAT" "GEOM" "CONTOURFLAGS" "C_COLOR" "C_FILLPATTERN" "C_LINESTYLE" "C_THICK" "C_VALUE" "MAXVAL" "MINVAL" "NLEVELS" "POLYGONS" "SHADERANGE" "SHADING" "TICKINTERVAL" "TICKLEN" "PRECISIONDATA" "PRECISIONGEOM" "PRECISIONGRAPH" "LEVELINFO" "CFILL1" "IDLGRCONTOURBOTTOM") - (inherits)) ("IDLgrROI" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "COLOR" "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")) ("IDLgrSurface" - (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "COLOR" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRSURFACETOP" "IDLGRSURFACEVERSION" "DATA" "PRECISION" "SKIRT" "VERTCOLORS" "BTMCOLOR" "SURFACEFLAGS" "LINESTYLE" "MAXVALUE" "MINVALUE" "SHADING" "SHADERANGE" "STYLE" "NORMALS" "TXTRCOORD" "TXTRMAP" "THICK" "IDLGRSURFACEBOTTOM") + (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "COLOR" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRSURFACETOP" "IDLGRSURFACEVERSION" "DATA" "PRECISION" "SKIRT" "VERTCOLORS" "BTMCOLOR" "SURFACEFLAGS" "LINESTYLE" "MAXVALUE" "MINVALUE" "SHADING" "SHADERANGE" "STYLE" "NORMALS" "TXTRCOORD" "TXTRMAP" "THICK" "DEPTHOFFSET" "IDLGRSURFACEBOTTOM") + (inherits)) + ("IDLgrPolygon" + (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "COLOR" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRPOLYGONTOP" "IDLGRPOLYGONVERSION" "DATA" "PRECISION" "FILLPATTERN" "POLYGONS" "NORMALS" "POLYGONFLAGS" "SHADING" "SHADERANGE" "STYLE" "TXTRCOORD" "TXTRMAP" "VERTCOLORS" "BTMCOLOR" "LINESTYLE" "THICK" "DEPTHOFFSET" "IDLGRPOLYGONBOTTOM") (inherits)) ("IDLgrWindow" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "UVALUE" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRWINDOW_TOP" "IDLGRWINDOWVERSION" "WINDOWFLAGS" "DIMENSIONS" "DISPLAYNAME" "INDEX" "LOCATION" "RENDERER" "RETAIN" "SCREENDIMENSIONS" "SELF" "TITLE" "UNITS" "NEXT" "WFILL1" "PARENT" "WFILL2" "IDLGRWINDOW_BOTTOM") (inherits)) - ("IDLgrPolygon" - (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "COLOR" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRPOLYGONTOP" "IDLGRPOLYGONVERSION" "DATA" "PRECISION" "FILLPATTERN" "POLYGONS" "NORMALS" "POLYGONFLAGS" "SHADING" "SHADERANGE" "STYLE" "TXTRCOORD" "TXTRMAP" "VERTCOLORS" "BTMCOLOR" "LINESTYLE" "THICK" "IDLGRPOLYGONBOTTOM") + ("IDLgrPlot" + (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "COLOR" "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)) ("IDLgrVolume" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "COLOR" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRVOLUMETOP" "IDLGRVOLUMEVERSION" "AMBIENT" "BOUNDS" "LIMITS" "DIMENSIONS" "COLORTABLE" "COMPOSITEFUNC" "CUTPLANES" "NUMCUTPLANES" "DEPTH_CUE" "OPACITYTABLE" "RENDERSTEP" "DATA" "EDM_VOLUME" "VOLUMEFLAGS" "IDLGRVOLUMEBOTTOM") (inherits)) - ("IDLgrPlot" - (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "COLOR" "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)) ("IDLgrROIGroup" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "COLOR" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRROIGROUP_TOP" "IDLGRROIGROUPVERSION" "IDLGRROI_BOTTOM") (inherits "IDLanROIGroup")) @@ -1406,39 +1453,39 @@ ("IDLgrText" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "COLOR" "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" "IDLGRTEXT_BOTTOM") (inherits)) - ("IDLgrPolyline" - (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "COLOR" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRPOLYLINETOP" "IDLGRPOLYLINEVERSION" "DATA" "PRECISION" "LINESTYLE" "POLYLINES" "SYMBOL" "PSYMBOL" "THICK" "SHADING" "VERTCOLORS" "IDLGRPOLYLINEBOTTOM") + ("IDLgrImage" + (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "COLOR" "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)) ("IDLgrView" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRVIEW_TOP" "IDLGRVIEWVERSION" "COLOR" "DEPTH_CUE" "DIMENSIONS" "PRECISION" "EYE" "LOCATION" "OBLIQUE" "PROJECTION" "TRANSPARENT" "UNITS" "VIEW" "ZCLIP" "IDLGRVIEW_BOTTOM") (inherits "IDL_Container")) - ("IDLgrImage" - (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "COLOR" "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") + ("IDLgrPolyline" + (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "COLOR" "GRAPHICFLAGS" "PALETTE" "XCOORD_CONV" "YCOORD_CONV" "ZCOORD_CONV" "XRANGE" "YRANGE" "ZRANGE" "GRAPHIC_DATA_OBJECT" "IDLGRGRAPHIC_BOTTOM" "IDLGRPOLYLINETOP" "IDLGRPOLYLINEVERSION" "DATA" "PRECISION" "LINESTYLE" "POLYLINES" "SYMBOL" "PSYMBOL" "THICK" "SHADING" "VERTCOLORS" "IDLGRPOLYLINEBOTTOM") (inherits)) ("IDLgrLight" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRGRAPHIC_TOP" "IDLGRGRAPHICVERSION" "COLOR" "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)) - ("IDLgrClipboard" - (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "UVALUE" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRCLIPBOARDTOP" "IDLGRCLIPBOARDVERSION" "UNITS" "DIMENSIONS" "FILENAME" "VECTOR" "POSTSCRIPT" "IDLGRCLIPBOARDBOTTOM") - (inherits)) ("IDLgrVRML" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "UVALUE" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRVRMLTOP" "IDLGRVRMLVERSION" "UNITS" "DIMENSIONS" "FILENAME" "WORLDINFO" "WORLDTITLE" "IDLGRVRMLBOTTOM") (inherits)) + ("IDLgrClipboard" + (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "UVALUE" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRCLIPBOARDTOP" "IDLGRCLIPBOARDVERSION" "UNITS" "DIMENSIONS" "FILENAME" "VECTOR" "POSTSCRIPT" "IDLGRCLIPBOARDBOTTOM") + (inherits)) ("IDLgrPrinter" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "UVALUE" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRPRINTER_TOP" "IDLGRPRINTERVERSION" "PRINTERFLAGS" "NAME" "NCOPIES" "UNITS" "GAMMA" "IDLGRPRINTER_BOTTOM") (inherits)) ("IDLgrBuffer" (tags "IDLGRSRCDEST_TOP" "IDLGRSRCDESTVERSION" "CLIENTDIMENSIONS" "COLORMODEL" "SRCDESTFLAGS" "GRAPHICS_TREE" "NCOLORS" "PALETTE" "QUALITY" "RESOLUTION" "UVALUE" "DIST" "FILL1" "DEV" "FILL2" "ATTRS" "FILL3" "CACHES" "FILL4" "IDLGRSRCDEST_BOTTOM" "IDLGRBUFFERTOP" "IDLGRBUFFERVERSION" "UNITS" "DIMENSIONS" "IDLGRBUFFERBOTTOM") (inherits)) - ("IDLgrModel" - (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRMODEL_TOP" "IDLGRMODELVERSION" "MODELFLAGS" "TRANSFORM" "IDLGRMODEL_BOTTOM") - (inherits "IDL_Container")) - ("IDLgrScene" - (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRSCENE_TOP" "IDLGRSCENEVERSION" "COLOR" "TRANSPARENT" "IDLGRSCENE_BOTTOM") - (inherits "IDL_Container")) ("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") (inherits)) + ("IDLgrScene" + (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRSCENE_TOP" "IDLGRSCENEVERSION" "COLOR" "TRANSPARENT" "IDLGRSCENE_BOTTOM") + (inherits "IDL_Container")) + ("IDLgrModel" + (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRMODEL_TOP" "IDLGRMODELVERSION" "MODELFLAGS" "TRANSFORM" "IDLGRMODEL_BOTTOM") + (inherits "IDL_Container")) ("IDLgrViewgroup" (tags "IDLGRCOMPONENT_TOP" "IDLGRCOMPONENTVERSION" "HIDE" "NAME" "PARENT" "UVALUE" "IDLGRCOMPONENT_BOTTOM" "IDLGRCONTAINER_TOP" "IDLGRCONTAINERVERSION" "ISDYING" "IDLGRCONTAINER_BOTTOM" "IDLGRVIEWGROUPTOP" "IDLGRVIEWGROUPVERSION" "IDLGRVIEWGROUPBOTTOM") (inherits "IDL_Container")) @@ -1469,20 +1516,20 @@ ("IDLffShape" (tags "IDLFFSHAPE_TOP" "IDLFFSHAPEVERSION" "FILENAME" "ISOPEN" "SHPTYPE" "PATTRIBUTE" "SHAPEHANDLE" "DBFHANDLE" "IDLFFSHAPE_BOTTOM") (inherits)) - ("TrackBall" - (tags "BTNDOWN" "AXIS" "CONSTRAIN" "MOUSE" "CENTER" "RADIUS" "PT0" "PT1") - (inherits)) ("IDLffDXF" - (tags "IDLFFDXF_TOP" "IDLFFDXFVERSION" "DXFREADVALID" "DXFHANDLEVALID" "DXFLUT" "DXFHANDLE" "DXFHANDLEFILLER" "IDLFFDXF_BOTTOM") + (tags "IDLFFDXF_TOP" "IDLFFDXFVERSION" "DXFREADVALID" "DXFHANDLEVALID" "DXFLUT" "SERIAL" "DXFHANDLE" "DXFHANDLEFILLER" "IDLFFDXF_BOTTOM") (inherits)) ("IDLffDICOM" (tags "IDLFFDICOM_TOP" "IDLFFDICOMVERSION" "DICOMFLAGS" "DICOMELEMENTS" "DICOMPREAMBLE" "DICOMHANDLE" "DICOMHANDLEFILLER" "IDLFFDICOM_BOTTOM") (inherits)) - ("IDLgrTessellator" - (tags "IDLGRTESSELLATORTOP" "IDLGRTESSELLATORVERSION" "ITESSFLAGS" "IVERTS" "HVIDLIST" "IDLGRTESSELLATORBOTTOM") + ("TrackBall" + (tags "BTNDOWN" "AXIS" "CONSTRAIN" "MOUSE" "CENTER" "RADIUS" "PT0" "PT1") (inherits)) ("IDL_Container" (tags "IDL_CONTAINER_TOP" "IDLCONTAINERVERSION" "PHEAD" "PTAIL" "NLIST" "IDL_CONTAINER_BOTTOM") + (inherits)) + ("IDLgrTessellator" + (tags "IDLGRTESSELLATORTOP" "IDLGRTESSELLATORVERSION" "ITESSFLAGS" "IVERTS" "HVIDLIST" "IDLGRTESSELLATORBOTTOM") (inherits)))) (provide 'idlw-rinfo) diff --git a/lisp/progmodes/idlw-shell.el b/lisp/progmodes/idlw-shell.el index 030d949f60b..bd1e9b55182 100644 --- a/lisp/progmodes/idlw-shell.el +++ b/lisp/progmodes/idlw-shell.el @@ -1,10 +1,11 @@ -;;; idlw-shell.el --- run IDL or WAVE as an inferior process of Emacs -;; Copyright (c) 1999, 2000 Free Software Foundation +;; idlw-shell.el --- run IDL as an inferior process of Emacs. +;; Copyright (c) 1999, 2000, 2001 Free Software Foundation -;; Author: Chris Chase -;; Maintainer: John-David Smith -;; Version: 4.7 -;; Date: $Date: 2002/07/09 10:47:02 $ +;; Author: Carsten Dominik +;; Chris Chase +;; Maintainer: J.D. Smith +;; Version: 4.14 +;; Date: $Date: 2002/06/14 19:05:30 $ ;; Keywords: processes ;; This file is part of GNU Emacs. @@ -25,10 +26,10 @@ ;; Boston, MA 02111-1307, USA. ;;; Commentary: - -;; This mode is for IDL version 4 or later. It should work on Emacs -;; or XEmacs version 19 or later. - +;; +;; This mode is for IDL version 5 or later. It should work on +;; Emacs>20.3 or XEmacs>20.4. +;; ;; Runs IDL as an inferior process of Emacs, much like the emacs ;; `shell' or `telnet' commands. Provides command history and ;; searching. Provides debugging commands available in buffers @@ -37,7 +38,11 @@ ;; visual line pointer for current execution line, etc. ;; ;; Documentation should be available online with `M-x idlwave-info'. - +;; +;; New versions of IDLWAVE, documentation, and more information +;; available from: +;; http://idlwave.org +;; ;; INSTALLATION: ;; ============= ;; @@ -54,7 +59,7 @@ ;; The newest version of this file can be found on the maintainers ;; web site. ;; -;; http://www.strw.leidenuniv.el/~dominik/Tools/idlwave +;; http://idlwave.org ;; ;; DOCUMENTATION ;; ============= @@ -88,7 +93,6 @@ ;; ;;-------------------------------------------------------------------------- ;; -;; ;;; Code: @@ -99,17 +103,17 @@ (defvar idlwave-shell-have-new-custom nil) (eval-and-compile - ;; Kludge to allow `defcustom' for Emacs 19. - (condition-case () (require 'custom) (error nil)) - (if (and (featurep 'custom) - (fboundp 'custom-declare-variable) - (fboundp 'defface)) - ;; We've got what we needed - (setq idlwave-shell-have-new-custom t) - ;; We have the old or no custom-library, hack around it! - (defmacro defgroup (&rest args) nil) - (defmacro defcustom (var value doc &rest args) - `(defvar ,var ,value ,doc)))) + ;; Kludge to allow `defcustom' for Emacs 19. + (condition-case () (require 'custom) (error nil)) + (if (and (featurep 'custom) + (fboundp 'custom-declare-variable) + (fboundp 'defface)) + ;; We've got what we needed + (setq idlwave-shell-have-new-custom t) + ;; We have the old or no custom-library, hack around it! + (defmacro defgroup (&rest args) nil) + (defmacro defcustom (var value doc &rest args) + `(defvar ,var ,value ,doc)))) ;;; Customizations: idlwave-shell group @@ -141,9 +145,25 @@ process output is made by surrounding this name with `*'s." "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-initial-commands + :group 'idlwave-shell-general-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-general-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-general-setup + :type 'file) + (defcustom idlwave-shell-use-dedicated-frame nil "*Non-nil means, IDLWAVE should use a special frame to display shell buffer." :group 'idlwave-shell-general-setup @@ -158,6 +178,11 @@ The default makes the frame splittable, so that completion works correctly." :type '(repeat (cons symbol sexp))) +(defcustom idlwave-shell-raise-frame t + "*Non-nil means, `idlwave-shell' raises the frame showing the shell window." + :group 'idlwave-shell-general-setup + :type 'boolean) + (defcustom idlwave-shell-arrows-do-history t "*Non-nil means UP and DOWN arrows move through command history. This variable can have 3 values: @@ -172,6 +197,21 @@ t Arrows force the cursor back to the current command line and (const :tag "everywhere" t) (const :tag "in command line only" cmdline))) +;; FIXME: add comint-input-ring-size? +(defcustom idlwave-shell-comint-settings + '((comint-scroll-to-bottom-on-input . t) + (comint-scroll-to-bottom-on-output . nil) + (comint-scroll-show-maximum-output . t) + ) + "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-general-setup + :type '(repeat + (cons variable sexp))) + (defcustom idlwave-shell-use-toolbar t "*Non-nil means, use the debugging toolbar in all IDL related buffers. Starting the shell will then add the toolbar to all idlwave-mode buffers. @@ -185,7 +225,7 @@ At any time you can toggle the display of the toolbar with (defcustom idlwave-shell-temp-pro-prefix "/tmp/idltemp" "*The prefix for temporary IDL files used when compiling regions. It should be an absolute pathname. -The full temporary file name is obtained by to using `make-temp-name' +The full temporary file name is obtained by using `make-temp-file' so that the name will be unique among multiple Emacs processes." :group 'idlwave-shell-general-setup :type 'string) @@ -240,15 +280,36 @@ because these are used as separators by IDL." :group 'idlwave-shell-general-setup :type 'hook) -(defcustom idlwave-shell-print-expression-function nil - "When non-nil, a function to handle display of evaluated expressions. -This can be used to arrange for displaying the value of an expression -in (e.g.) a special frame. The function must accept one argument: -the expression which was evaluated. The output from IDL will be -available in the variable `idlwave-shell-command-output'." - :group 'idlwave-shell-highlighting-and-faces - :type 'symbol) +(defvar idlwave-shell-print-expression-function nil + "*OBSOLETE VARIABLE, is no longer used.") +(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-general-setup + :type '(repeat + (cons + (string :tag "Label ") + (string :tag "Command")))) + +(defcustom idlwave-shell-separate-examine-output t + "*Non-nil mean, put output of examine commands in their own buffer." + :group 'idlwave-shell-general-setup + :type 'boolean) + (defcustom idlwave-shell-use-input-mode-magic nil "*Non-nil means, IDLWAVE should check for input mode spells in output. The spells are strings printed by your IDL program and matched @@ -346,7 +407,7 @@ t Use what IDLWAVE thinks is best. Will be a face where possible, The overlay-arrow has the disadvantage to hide the first chars of a line. Since many people do not have the main block of IDL programs indented, a face highlighting may be better. -On Emacs 21, the overlay arrow is displayed in a special area and never +In Emacs 21, the overlay arrow is displayed in a special area and never hides any code, so setting this to 'arrow on Emacs 21 sounds like a good idea." :group 'idlwave-shell-highlighting-and-faces :type '(choice @@ -413,33 +474,78 @@ the expression printed by IDL." :group 'idlwave-shell-highlighting-and-faces :type 'symbol) +(defcustom idlwave-shell-output-face 'secondary-selection + "*The face for `idlwave-shell-output-overlay'. +Allows you to choose the font, color and other properties for +the expression output by IDL." + :group 'idlwave-shell-highlighting-and-faces + :type 'symbol) + ;;; End user customization variables ;;; External variables (defvar comint-last-input-start) (defvar comint-last-input-end) +(defun idlwave-shell-temp-file (type) + "Return a temp file, creating it if necessary. + +TYPE is either 'pro or 'rinfo, and idlwave-shell-temp-pro-file or +idlwave-shell-temp-rinfo-save-file is set (respectively)." + (cond + ((eq type 'rinfo) + (or idlwave-shell-temp-rinfo-save-file + (setq idlwave-shell-temp-rinfo-save-file + (idlwave-shell-make-temp-file idlwave-shell-temp-pro-prefix)))) + ((eq type 'pro) + (or idlwave-shell-temp-pro-file + (setq idlwave-shell-temp-pro-file + (idlwave-shell-make-temp-file idlwave-shell-temp-pro-prefix)))) + (t (error "Wrong argument (idlwave-shell-temp-file): %s" + (symbol-name type))))) + + +(defun idlwave-shell-make-temp-file (prefix) + "Create a temporary file." + ; Hard coded make-temp-file for Emacs<21 + (if (fboundp 'make-temp-file) + (make-temp-file prefix) + (let (file + (temp-file-dir (if (boundp 'temporary-file-directory) + temporary-file-directory + "/tmp"))) + (while (condition-case () + (progn + (setq file + (make-temp-name + (expand-file-name prefix temp-file-dir))) + (if (featurep 'xemacs) + (write-region "" nil file nil 'silent nil) + (write-region "" nil file nil 'silent nil 'excl)) + nil) + (file-already-exists t)) + ;; the file was somehow created by someone else between + ;; `make-temp-name' and `write-region', let's try again. + nil) + file))) + ;; Other variables - -(defvar idlwave-shell-temp-file-base - (make-temp-name idlwave-shell-temp-pro-prefix) - "Base name of the temporary files.") - -(defvar idlwave-shell-temp-pro-file - (concat idlwave-shell-temp-file-base ".pro") +(defvar idlwave-shell-temp-pro-file + nil "Absolute pathname for temporary IDL file for compiling regions") (defvar idlwave-shell-temp-rinfo-save-file - (concat idlwave-shell-temp-file-base ".sav") + nil "Absolute pathname for temporary IDL file save file for routine_info. This is used to speed up the reloading of the routine info procedure before use by the shell.") - (defvar idlwave-shell-dirstack-query "printd" "Command used by `idlwave-shell-resync-dirs' to query IDL for the directory stack.") +(defvar idlwave-shell-wd-is-synched nil) + (defvar idlwave-shell-path-query "__pa=expand_path(!path,/array)&for i=0,n_elements(__pa)-1 do print,'PATH:<'+__pa[i]+'>'&print,'SYSDIR:<'+!dir+'>'" "The command which gets !PATH and !DIR infor from the shell.") @@ -463,15 +569,22 @@ the directory stack.") (defvar idlwave-shell-is-stopped nil) (defvar idlwave-shell-expression-overlay nil "The overlay for where IDL is currently stopped.") +(defvar idlwave-shell-output-overlay nil + "The overlay for the last IDL output.") + ;; If these were already overlays, delete them. This probably means that we ;; are reloading this file. (if (overlayp idlwave-shell-stop-line-overlay) (delete-overlay idlwave-shell-stop-line-overlay)) (if (overlayp idlwave-shell-expression-overlay) (delete-overlay idlwave-shell-expression-overlay)) +(if (overlayp idlwave-shell-output-overlay) + (delete-overlay idlwave-shell-output-overlay)) + ;; Set to nil initially (setq idlwave-shell-stop-line-overlay nil - idlwave-shell-expression-overlay nil) + idlwave-shell-expression-overlay nil + idlwave-shell-output-overlay nil) ;; Define the shell stop overlay. When left nil, the arrow will be used. (cond @@ -499,10 +612,14 @@ the directory stack.") (overlay-put idlwave-shell-stop-line-overlay 'face idlwave-shell-stop-line-face))))) -;; Now the expression overlay +;; Now the expression and output overlays (setq idlwave-shell-expression-overlay (make-overlay 1 1)) (overlay-put idlwave-shell-expression-overlay 'face idlwave-shell-expression-face) +(setq idlwave-shell-output-overlay (make-overlay 1 1)) +(overlay-put idlwave-shell-output-overlay + 'face idlwave-shell-output-face) + (defvar idlwave-shell-bp-query "help,/breakpoints" "Command to obtain list of breakpoints") @@ -514,6 +631,9 @@ the directory stack.") The current command is finished when the IDL prompt is displayed. This is evaluated if it is a list or called with funcall.") +(defvar idlwave-shell-sentinel-hook nil + "Hook run when the idl process exits.") + (defvar idlwave-shell-hide-output nil "If non-nil the process output is not inserted into the output buffer.") @@ -665,7 +785,7 @@ IDL has currently stepped.") Info documentation for this package is available. Use \\[idlwave-info] to display (complain to your sysadmin if that does not work). For Postscript and HTML versions of the documentation, check IDLWAVE's - homepage at `http://www.strw.leidenuniv.nl/~dominik/Tools/idlwave'. + homepage at `http://idlwave.org'. IDLWAVE has customize support - see the group `idlwave'. 7. Keybindings @@ -679,7 +799,7 @@ IDL has currently stepped.") (setq comint-process-echoes t) ;; Can not use history expansion because "!" is used for system variables. (setq comint-input-autoexpand nil) - (setq comint-input-ring-size 64) +; (setq comint-input-ring-size 64) (make-local-variable 'comint-completion-addsuffix) (set (make-local-variable 'completion-ignore-case) t) (setq comint-completion-addsuffix '("/" . "")) @@ -723,6 +843,9 @@ IDL has currently stepped.") (setq idlwave-shell-sources-alist nil) (setq idlwave-shell-default-directory default-directory) (setq idlwave-shell-hide-output nil) + + ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility + (make-local-hook 'kill-buffer-hook) (add-hook 'kill-buffer-hook 'idlwave-shell-kill-shell-buffer-confirm nil 'local) (add-hook 'kill-buffer-hook 'idlwave-shell-delete-temp-files nil 'local) @@ -730,16 +853,30 @@ IDL has currently stepped.") (use-local-map idlwave-shell-mode-map) (easy-menu-add idlwave-shell-mode-menu idlwave-shell-mode-map) - (set (make-local-variable 'comint-scroll-to-bottom-on-input) t) - (set (make-local-variable 'comint-scroll-show-maximum-output) t) + ;; Set the optional comint variables + (when idlwave-shell-comint-settings + (let ((list idlwave-shell-comint-settings) entry) + (while (setq entry (pop list)) + (set (make-local-variable (car entry)) (cdr entry))))) ;; IDLWAVE syntax, and turn on abbreviations (setq local-abbrev-table idlwave-mode-abbrev-table) (set-syntax-table idlwave-mode-syntax-table) (set (make-local-variable 'comment-start) ";") (setq abbrev-mode t) + + ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility + (make-local-hook 'post-command-hook) (add-hook 'post-command-hook 'idlwave-command-hook nil t) + ;; Read the command history? + (when (and idlwave-shell-save-command-history + (stringp idlwave-shell-command-history-file)) + (set (make-local-variable 'comint-input-ring-file-name) + idlwave-shell-command-history-file) + (if (file-regular-p idlwave-shell-command-history-file) + (comint-read-input-ring))) + ;; Run the hooks. (run-hooks 'idlwave-shell-mode-hook) (idlwave-shell-send-command idlwave-shell-initial-commands nil 'hide) @@ -780,10 +917,20 @@ IDL has currently stepped.") ;; The frame exists, so we use it. idlwave-shell-display-wframe ;; The frame does not exist. We use the current frame. - ;; However, if the current is the shell frame, we make a new frame. + ;; However, if the current is the shell frame, we make a new frame, + ;; or recycle the first existing visible frame (setq idlwave-shell-display-wframe (if (eq (selected-frame) idlwave-shell-idl-wframe) - (make-frame) + (or + (let ((flist (visible-frame-list)) + (frame (selected-frame))) + (catch 'exit + (while flist + (if (not (eq (car flist) + idlwave-shell-idl-wframe)) + (throw 'exit (car flist)) + (setq flist (cdr flist)))))) + (make-frame)) (selected-frame)))))) (defun idlwave-shell-shell-frame () @@ -802,7 +949,7 @@ IDL has currently stepped.") (make-frame idlwave-shell-frame-parameters))))) ;;;###autoload -(defun idlwave-shell (&optional arg) +(defun idlwave-shell (&optional arg quick) "Run an inferior IDL, with I/O through buffer `(idlwave-shell-buffer)'. If buffer exists but shell process is not running, start new IDL. If buffer exists and shell process is running, just switch to the buffer. @@ -811,7 +958,8 @@ When called with a prefix ARG, or when `idlwave-shell-use-dedicated-frame' is non-nil, the shell buffer and the source buffers will be in separate frames. -The command to run comes from variable `idlwave-shell-explicit-file-name'. +The command to run comes from variable `idlwave-shell-explicit-file-name', +with options taken from `idlwave-shell-command-line-options'. The buffer is put in `idlwave-shell-mode', providing commands for sending input and controlling the IDL job. See help on `idlwave-shell-mode'. @@ -819,34 +967,47 @@ See also the variable `idlwave-shell-prompt-pattern'. \(Type \\[describe-mode] in the shell buffer for a list of commands.)" (interactive "P") + (if (eq arg 'quick) + (progn + (let ((idlwave-shell-use-dedicated-frame nil)) + (idlwave-shell nil) + (delete-other-windows)) + (and idlwave-shell-use-dedicated-frame + (setq idlwave-shell-idl-wframe (selected-frame))) + (add-hook 'idlwave-shell-sentinel-hook + 'save-buffers-kill-emacs t)) - ;; A non-nil arg means, we want a dedicated frame. This will last - ;; for the current editing session. - (if arg (setq idlwave-shell-use-dedicated-frame t)) - (if (equal arg '(16)) (setq idlwave-shell-use-dedicated-frame nil)) - - ;; Check if the process still exists. If not, create it. - (unless (comint-check-proc (idlwave-shell-buffer)) - (let* ((prg (or idlwave-shell-explicit-file-name "idl")) - (buf (apply 'make-comint - idlwave-shell-process-name prg nil - idlwave-shell-command-line-options)) - (process (get-buffer-process buf))) - (setq idlwave-idlwave_routine_info-compiled nil) - (set-process-filter process 'idlwave-shell-filter) - (set-process-sentinel process 'idlwave-shell-sentinel) - (set-buffer buf) - (idlwave-shell-mode))) - (let ((window (idlwave-display-buffer (idlwave-shell-buffer) nil - (idlwave-shell-shell-frame))) - (current-window (selected-window))) - (select-window window) - (goto-char (point-max)) - (select-window current-window) - (raise-frame (window-frame window)) - (if (eq (selected-frame) (window-frame window)) - (select-window window)) - )) + ;; A non-nil arg means, we want a dedicated frame. This will last + ;; for the current editing session. + (if arg (setq idlwave-shell-use-dedicated-frame t)) + (if (equal arg '(16)) (setq idlwave-shell-use-dedicated-frame nil)) + + ;; Check if the process still exists. If not, create it. + (unless (comint-check-proc (idlwave-shell-buffer)) + (let* ((prg (or idlwave-shell-explicit-file-name "idl")) + (buf (apply 'make-comint + idlwave-shell-process-name prg nil + (if (stringp idlwave-shell-command-line-options) + (idlwave-split-string + idlwave-shell-command-line-options) + idlwave-shell-command-line-options))) + (process (get-buffer-process buf))) + (setq idlwave-idlwave_routine_info-compiled nil) + (set-process-filter process 'idlwave-shell-filter) + (set-process-sentinel process 'idlwave-shell-sentinel) + (set-buffer buf) + (idlwave-shell-mode))) + (let ((window (idlwave-display-buffer (idlwave-shell-buffer) nil + (idlwave-shell-shell-frame))) + (current-window (selected-window))) + (select-window window) + (goto-char (point-max)) + (select-window current-window) + (if idlwave-shell-ready + (raise-frame (window-frame window))) + (if (eq (selected-frame) (window-frame window)) + (select-window window)) + ))) (defun idlwave-shell-recenter-shell-window (&optional arg) "Run `idlwave-shell', but make sure the current window stays selected." @@ -871,6 +1032,7 @@ IDL is considered ready if the prompt is present and if `idlwave-shell-ready' is non-nil." ;(setq hide nil) ; FIXME: turn this on for debugging only +; (message "SENDING %s|||%s" cmd pcmd) ;?????????????????????? (let (buf proc) ;; Get or make the buffer and its process (if (or (not (setq buf (get-buffer (idlwave-shell-buffer)))) @@ -1061,17 +1223,14 @@ and then calls `idlwave-shell-send-command' for any pending commands." ;; We no longer do the cleanup here - this is done by the process sentinel (when (eq (process-status idlwave-shell-process-name) 'run) ;; OK, process is still running, so we can use it. - (let ((data (match-data))) + (setq idlwave-shell-wd-is-synched nil) ;; something might have changed cwd + (let ((data (match-data)) p) (unwind-protect (progn ;; May change the original match data. - (let (p) - (while (setq p (string-match "\C-M" string)) - (aset string p ? ))) -;;; Test/Debug code -;; (save-excursion (set-buffer (get-buffer-create "*test*")) -;; (goto-char (point-max)) -;; (insert "%%%" string)) + (while (setq p (string-match "\C-M" string)) + (aset string p ?\ )) + ;; ;; Keep output @@ -1084,6 +1243,9 @@ and then calls `idlwave-shell-send-command' for any pending commands." ; (concat idlwave-shell-command-output string)) ;; Insert the string. Do this before getting the ;; state. + (while (setq p (string-match "\C-G" string)) + (ding) + (aset string p ?\C-j )) (if idlwave-shell-hide-output (save-excursion (set-buffer @@ -1091,7 +1253,7 @@ and then calls `idlwave-shell-send-command' for any pending commands." (goto-char (point-max)) (insert string)) (idlwave-shell-comint-filter proc string)) - ;; Watch for prompt - need to accumulate the current line + ;; Watch for magic - need to accumulate the current line ;; since it may not be sent all at once. (if (string-match "\n" string) (progn @@ -1106,7 +1268,13 @@ and then calls `idlwave-shell-send-command' for any pending commands." (concat idlwave-shell-accumulation string))) - ;; Check for prompt in current line +;;; Test/Debug code +; (save-excursion (set-buffer +; (get-buffer-create "*idlwave-shell-output*")) +; (goto-char (point-max)) +; (insert "\nSTRING===>\n" string "\n<====\n")) + + ;; Check for prompt in current accumulating line (if (setq idlwave-shell-ready (string-match idlwave-shell-prompt-pattern idlwave-shell-accumulation)) @@ -1114,10 +1282,19 @@ and then calls `idlwave-shell-send-command' for any pending commands." (if idlwave-shell-hide-output (save-excursion (set-buffer idlwave-shell-hidden-output-buffer) - (goto-char (point-min)) - (re-search-forward idlwave-shell-prompt-pattern nil t) +; (goto-char (point-min)) +; (re-search-forward idlwave-shell-prompt-pattern nil t) + (goto-char (point-max)) + (re-search-backward idlwave-shell-prompt-pattern nil t) + (goto-char (match-end 0)) (setq idlwave-shell-command-output (buffer-substring (point-min) (point))) +;; Test/Debug +; (save-excursion (set-buffer +; (get-buffer-create "*idlwave-shell-output*")) +; (goto-char (point-max)) +; (insert "\nOUPUT===>\n" idlwave-shell-command-output "\n<===\n")) + (delete-region (point-min) (point))) (setq idlwave-shell-command-output (save-excursion @@ -1129,11 +1306,6 @@ and then calls `idlwave-shell-send-command' for any pending commands." (beginning-of-line nil) (point)) comint-last-input-end)))) -;;; Test/Debug code -;; (save-excursion (set-buffer -;; (get-buffer-create "*idlwave-shell-output*")) -;; (goto-char (point-max)) -;; (insert "%%%" string)) ;; Scan for state and do post command - bracket them ;; with idlwave-shell-ready=nil since they ;; may call idlwave-shell-send-command. @@ -1163,15 +1335,28 @@ and then calls `idlwave-shell-send-command' for any pending commands." (save-excursion (set-buffer (idlwave-shell-buffer)) (goto-char (point-max)) - (insert (format "\n\n Process %s %s" process event)))) + (insert (format "\n\n Process %s %s" process event)) + (if (and idlwave-shell-save-command-history + (stringp idlwave-shell-command-history-file)) + (condition-case nil + (comint-write-input-ring) + (error nil))))) + (when (and (> (length (frame-list)) 1) (frame-live-p idlwave-shell-idl-wframe)) (delete-frame idlwave-shell-idl-wframe) (setq idlwave-shell-idl-wframe nil idlwave-shell-display-wframe nil)) - (when (window-live-p win) + (when (and (window-live-p win) + (not (one-window-p 'nomini))) (delete-window win)) - (idlwave-shell-cleanup))) + (idlwave-shell-cleanup) + ;; Run the hook, if possible in the shell buffer. + (if (get-buffer buf) + (save-excursion + (set-buffer buf) + (run-hooks 'idlwave-shell-sentinel-hook)) + (run-hooks 'idlwave-shell-sentinel-hook)))) (defun idlwave-shell-scan-for-state () "Scan for state info. @@ -1471,6 +1656,7 @@ HEAP_GC, /VERBOSE" (let ((text idlwave-shell-command-output) (start 0) sep sep-re file type spec specs name cs key keys class entry) +; (message "GOT: %s" text) ;?????????????????????? ;; Initialize variables (setq idlwave-compiled-routines nil idlwave-unresolved-routines nil) @@ -1483,10 +1669,12 @@ HEAP_GC, /VERBOSE" text (substring text (match-end 0))) ;; Set dummy values and kill the text (setq sep "@" sep-re "@ *" text "") - (message "Routine Info warning: No match for BEGIN line")) + (message "Routine Info warning: No match for BEGIN line in \n>>>>\n%s\n<<<<\n" + idlwave-shell-command-output)) (if (string-match "^>>>END OF IDLWAVE ROUTINE INFO.*" text) (setq text (substring text 0 (match-beginning 0))) - (message "Routine Info warning: No match for END line")) + (message "Routine Info warning: No match for END line in \n>>>>\n%s\n<<<<\n" + idlwave-shell-command-output)) (if (string-match "\\S-" text) ;; Obviously, the pro worked. Make a note that we have it now. (setq idlwave-idlwave_routine_info-compiled t)) @@ -1604,10 +1792,28 @@ keywords." We assume that we are after a file name when completing one of the args of an executive .run, .rnew or .compile. Also, in a string constant we complete file names. Otherwise return nil, so that -other completion functions can do thier work." - (let* ((comint-file-name-chars idlwave-shell-file-name-chars) - (completion-ignore-case (default-value 'completion-ignore-case))) - (comint-dynamic-complete-filename))) +other completion functions can do their work." + ;; Comint does something funny with the default directory, + ;; so we set it here from out safe own variable + (setq default-directory + (file-name-as-directory idlwave-shell-default-directory)) + (if (not idlwave-shell-wd-is-synched) + ;; Some IDL stuff has been executed since last update, so we need to + ;; do it again. + (idlwave-shell-send-command + idlwave-shell-dirstack-query + `(progn + (idlwave-shell-filter-directory) + (setq idlwave-shell-wd-is-synched t) + (switch-to-buffer (idlwave-shell-buffer)) + (goto-char ,(point)) ;; This is necesary on Emacs, don't know why + ;; after the update, we immediately redo the completion, so the + ;; user will hardly notice we did the update. + (idlwave-shell-complete-filename)) + 'hide) + (let* ((comint-file-name-chars idlwave-shell-file-name-chars) + (completion-ignore-case (default-value 'completion-ignore-case))) + (comint-dynamic-complete-filename)))) (defun idlwave-shell-executive-command () "Return the name of the current executive command, if any." @@ -2045,36 +2251,91 @@ Runs to the last statement and then steps 1 statement. Use the .out command." (interactive "P") (idlwave-shell-print arg 'help)) +(defmacro idlwave-shell-mouse-examine (help &optional ev) + "Create a function for generic examination of expressions." + `(lambda (event) + "Expansion function for expression examination." + (interactive "e") + (let ((transient-mark-mode t) + (zmacs-regions t) + (tracker (if (featurep 'xemacs) 'mouse-track + 'mouse-drag-region))) + (funcall tracker event) + (idlwave-shell-print (if (idlwave-region-active-p) '(16) nil) + ,help ,ev)))) + (defun idlwave-shell-mouse-print (event) - "Call `idlwave-shell-print' at the mouse position." + "Print value of variable at the mouse position, with `help'" (interactive "e") - (mouse-set-point event) - (idlwave-shell-print nil nil 'mouse)) + (funcall (idlwave-shell-mouse-examine nil) event)) (defun idlwave-shell-mouse-help (event) - "Call `idlwave-shell-print' at the mouse position." + "Print value of variable at the mouse position, with `print'." (interactive "e") - (mouse-set-point event) - (idlwave-shell-print nil 'help 'mouse)) + (funcall (idlwave-shell-mouse-examine 'help) event)) + +(defun idlwave-shell-examine-select (event) + "Pop-up a list to select from for examining the expression" + (interactive "e") + (funcall (idlwave-shell-mouse-examine nil event) event)) + +(defmacro idlwave-shell-examine (help) + "Create a function for key-driven expression examination." + `(lambda () + (interactive) + (idlwave-shell-print nil ,help))) + +(defun idlwave-shell-define-key-both (key hook) + "Define a key in both the shell and buffer mode maps." + (define-key idlwave-mode-map key hook) + (define-key idlwave-shell-mode-map key hook)) + +(defvar idlwave-shell-examine-label nil + "Label to include with examine text if separate.") + +(defun idlwave-shell-print (arg &optional help ev) + "Print current expression. + +With HELP non-nil, show help on expression. If HELP is a string, +the expression will be put in place of ___, e.g.: + + print,size(___,/DIMENSIONS) + +Otherwise, print is called on the expression. -(defun idlwave-shell-print (arg &optional help mouse) - "Print current expression. With HELP, show help on expression. An expression is an identifier plus 1 pair of matched parentheses -directly following the identifier - an array or function -call. Alternatively, an expression is the contents of any matched -parentheses when the open parentheses is not directly preceded by an +directly following the identifier - an array or function call. +Alternatively, an expression is the contents of any matched +parentheses when the open parenthesis is not directly preceded by an identifier. If point is at the beginning or within an expression return the inner-most containing expression, otherwise, return the preceding expression. -With prefix arg ARG, or when called from the shell buffer, prompt -for an expression." +With prefix arg ARG prompt for an expression. + +With double prefix arg, use the current region. + +If EV is a valid event passed, pop-up a list from +idlw-shell-examine-alist from which to select the help command text." (interactive "P") (save-excursion - (let (expr beg end cmd) - (if (and (not mouse) - (or arg (eq major-mode 'idlwave-shell-mode))) - (setq expr (read-string "Expression: ")) + (let* ((process (get-buffer-process (current-buffer))) + (process-mark (if process (process-mark process))) + (stack-label + (if (and (integerp idlwave-shell-calling-stack-index) + (> idlwave-shell-calling-stack-index 0)) + (format " [-%d:%s]" + idlwave-shell-calling-stack-index + idlwave-shell-calling-stack-routine))) + expr beg end cmd examine-hook) + (cond + ((and (equal arg '(16)) + (< (- (region-end) (region-beginning)) 2000)) + (setq beg (region-beginning) + end (region-end))) + (arg + (setq expr (read-string "Expression: "))) + (t (idlwave-with-special-syntax1 ;; Move to beginning of current or previous expression (if (looking-at "\\<\\|(") @@ -2093,27 +2354,177 @@ for an expression." (while (looking-at "\\>[[(]\\|\\.") ;; an array (forward-sexp)) - (setq end (point)) - (setq expr (buffer-substring beg end)))) + (setq end (point))))) + + ;; Get expression, but first move the begin mark if a + ;; process-mark is inside the region, to keep the overlay from + ;; wandering in the Shell. + (when (and beg end) + (if (and process-mark (> process-mark beg) (< process-mark end)) + (setq beg (marker-position process-mark))) + (setq expr (buffer-substring beg end))) + + ;; Show the overlay(s) and attach any necessary hooks and filters (when (and beg end idlwave-shell-expression-overlay) (move-overlay idlwave-shell-expression-overlay beg end (current-buffer)) - (add-hook 'pre-command-hook 'idlwave-shell-delete-expression-overlay)) - (if (and (integerp idlwave-shell-calling-stack-index) - (> idlwave-shell-calling-stack-index 0)) + (add-hook 'pre-command-hook + 'idlwave-shell-delete-expression-overlay)) + (setq examine-hook + (if idlwave-shell-separate-examine-output + 'idlwave-shell-examine-display + 'idlwave-shell-examine-highlight)) + (add-hook 'pre-command-hook + 'idlwave-shell-delete-output-overlay) + + ;; Remove empty or comment-only lines + (while (string-match "\n[ \t]*\\(;.*\\)?\r*\n" expr) + (setq expr (replace-match "\n" t t expr))) + ;; Concatenate continuation lines + (while (string-match "[ \t]*\\$.*\\(;.*\\)?\\(\n[ \t]*\\|$\\)" expr) + (setq expr (replace-match "" t t expr))) + ;; Remove final newline + (if (string-match "\n[ \t\r]*\\'" expr) + (setq expr (replace-match "" t t expr))) + ;; Pop-up the examine selection list, if appropriate + (if (and ev idlwave-shell-examine-alist) + (let* ((help-cons + (assoc + (idlwave-popup-select + ev (mapcar 'car idlwave-shell-examine-alist) + "Examine with") + idlwave-shell-examine-alist))) + (setq help (cdr help-cons)) + (if idlwave-shell-separate-examine-output + (setq idlwave-shell-examine-label + (concat + (format "==>%s<==\n%s:" expr (car help-cons)) + stack-label "\n")))) + (setq idlwave-shell-examine-label + (concat + (format "==>%s<==\n%s:" expr + (cond ((null help) "print") + ((stringp help) help) + (t (symbol-name help)))) + stack-label "\n"))) + + ;; Send the command + (if stack-label (setq cmd (idlwave-retrieve-expression-from-level expr idlwave-shell-calling-stack-index idlwave-shell-calling-stack-routine help)) - (setq cmd (concat (if help "help," "print,") expr))) - (if idlwave-shell-print-expression-function - (idlwave-shell-send-command - cmd - (list idlwave-shell-print-expression-function expr) - 'hide) - (idlwave-shell-recenter-shell-window) - (idlwave-shell-send-command cmd))))) + (setq cmd (idlwave-shell-help-statement help expr))) + ;(idlwave-shell-recenter-shell-window) + (idlwave-shell-send-command + cmd + examine-hook + (if idlwave-shell-separate-examine-output 'hide))))) + +(defvar idlwave-shell-examine-window-alist nil + "Variable to hold the win/height pairs for all *Examine* windows.") + +(defun idlwave-shell-examine-display () + "View the examine command output in a separate buffer." + (let (win cur-beg cur-end) + (save-excursion + (set-buffer (get-buffer-create "*Examine*")) + (use-local-map idlwave-shell-examine-map) + (setq buffer-read-only nil) + (goto-char (point-max)) + (save-restriction + (narrow-to-region (point) (point)) + (if (string-match "^% Syntax error." idlwave-shell-command-output) + (insert "% Syntax error.\n") + (insert idlwave-shell-command-output) + ;; Just take the last bit between the prompts (if more than one). + (let* ((end (or + (re-search-backward idlwave-shell-prompt-pattern nil t) + (point-max))) + (beg (progn + (goto-char + (or (progn (if (re-search-backward + idlwave-shell-prompt-pattern nil t) + (match-end 0))) + (point-min))) + (re-search-forward "\n"))) + (str (buffer-substring beg end))) + (delete-region (point-min) (point-max)) + (insert str) + (if idlwave-shell-examine-label + (progn (goto-char (point-min)) + (insert idlwave-shell-examine-label) + (setq idlwave-shell-examine-label nil))))) + (setq cur-beg (point-min) + cur-end (point-max)) + (setq buffer-read-only t) + (move-overlay idlwave-shell-output-overlay cur-beg cur-end + (current-buffer)) + + ;; Look for the examine buffer in all windows. If one is + ;; found in a frame all by itself, use that, otherwise, switch + ;; to or create an examine window in this frame, and resize if + ;; it's a newly created window + (let* ((winlist (get-buffer-window-list "*Examine*" nil 'visible))) + (setq win (idlwave-display-buffer + "*Examine*" + nil + (let ((list winlist) thiswin) + (catch 'exit + (save-selected-window + (while (setq thiswin (pop list)) + (select-window thiswin) + (if (one-window-p) + (throw 'exit (window-frame thiswin))))))))) + (set-window-start win (point-min)) ; Ensure the point is visible. + (save-selected-window + (select-window win) + (let ((elt (assoc win idlwave-shell-examine-window-alist))) + (when (and (not (one-window-p)) + (or (not (memq win winlist)) ;a newly created window + (eq (window-height) (cdr elt)))) + ;; Autosize it. + (enlarge-window (- (/ (frame-height) 2) + (window-height))) + (shrink-window-if-larger-than-buffer) + ;; Clean the window list of dead windows + (setq idlwave-shell-examine-window-alist + (delq nil + (mapcar (lambda (x) (if (window-live-p (car x)) x)) + idlwave-shell-examine-window-alist))) + ;; And add the new value. + (if (setq elt (assoc win idlwave-shell-examine-window-alist)) + (setcdr elt (window-height)) + (add-to-list 'idlwave-shell-examine-window-alist + (cons win (window-height))))))))) + ;; Recenter for maximum output, after widened + (save-selected-window + (select-window win) + (goto-char (point-max)) + (skip-chars-backward "\n") + (recenter -1))))) + +(defvar idlwave-shell-examine-map (make-sparse-keymap)) +(define-key idlwave-shell-examine-map "q" 'idlwave-shell-examine-display-quit) +(define-key idlwave-shell-examine-map "c" 'idlwave-shell-examine-display-clear) + +(defun idlwave-shell-examine-display-quit () + (interactive) + (let ((win (selected-window))) + (if (one-window-p) + (delete-frame (window-frame win)) + (delete-window win)))) + +(defun idlwave-shell-examine-display-clear () + (interactive) + (save-excursion + (let ((buf (get-buffer "*Examine*"))) + (when (bufferp buf) + (set-buffer buf) + (setq buffer-read-only nil) + (erase-buffer) + (setq buffer-read-only t))))) (defun idlwave-retrieve-expression-from-level (expr level routine help) "Return IDL command to print the expression EXPR from stack level LEVEL. @@ -2126,37 +2537,38 @@ calling stack. The copies are given some unlikely names on the level. Since this function depends upon the undocumented IDL routine routine_names, -there is no guarantie that this will work with future versions of IDL." +there is no guarantee that this will work with future versions of IDL." (let ((prefix "___") ;; No real variables should starts with this. (fetch (- 0 level)) (start 0) var tvar fetch-vars pre post) ;; FIXME: In the following we try to find the variables in expression - ;; This is quite empirical - I don't know in what situations this will - ;; break. We will look for identifiers and exclude cases where we - ;; know it is not a variable. To distinguish array references from - ;; function calls, we require that arrays use [] instead of () - - (while (string-match - "\\(\\`\\|[^a-zA-Z0-9$_]\\)\\([a-zA-Z][a-zA-Z0-9$_]*\\)\\([^a-zA-Z0-9$_]\\|\\'\\)" expr start) - (setq var (match-string 2 expr) - tvar (concat prefix var) - start (match-beginning 2) - pre (substring expr 0 (match-beginning 2)) - post (substring expr (match-end 2))) - (cond - ;; Exclude identifiers which are not variables - ((string-match ",[ \t]*/\\'" pre)) ;; a `/' KEYWORD - ((and (string-match "[,(][ \t]*\\'" pre) - (string-match "\\`[ \t]*=" post))) ;; a `=' KEYWORD - ((string-match "\\`(" post)) ;; a function - ((string-match "->[ \t]*\\'" pre)) ;; a method - ((string-match "\\.\\'" pre)) ;; structure member - (t ;; seems to be a variable - arrange to get it and replace - ;; its name in the expression with the temproary name. - (push (cons var tvar) fetch-vars) - (setq expr (concat pre tvar post))))) + ;; This is quite empirical - I don't know in what situations this will + ;; break. We will look for identifiers and exclude cases where we + ;; know it is not a variable. To distinguish array references from + ;; function calls, we require that arrays use [] instead of () + + (while (string-match + "\\(\\`\\|[^a-zA-Z0-9$_]\\)\\([a-zA-Z][a-zA-Z0-9$_]*\\)\\([^a-zA-Z0-9$_]\\|\\'\\)" expr start) + (setq var (match-string 2 expr) + tvar (concat prefix var) + start (match-beginning 2) + pre (substring expr 0 (match-beginning 2)) + post (substring expr (match-end 2))) + (cond + ;; Exclude identifiers which are not variables + ((string-match ",[ \t]*/\\'" pre)) ;; a `/' KEYWORD + ((and (string-match "[,(][ \t]*\\'" pre) + (string-match "\\`[ \t]*=" post))) ;; a `=' KEYWORD + ((string-match "\\`(" post)) ;; a function + ((string-match "->[ \t]*\\'" pre)) ;; a method + ((string-match "\\.\\'" pre)) ;; structure member + (t ;; seems to be a variable - arrange to get it and replace + ;; its name in the expression with the temproary name. + (push (cons var tvar) fetch-vars) + (setq expr (concat pre tvar post)))) + (if (= start 0) (setq start 1))) ;; Make a command line that first copies the relevant variables ;; and then prints the expression. (concat @@ -2165,17 +2577,65 @@ there is no guarantie that this will work with future versions of IDL." (format "%s = routine_names('%s',fetch=%d)" (cdr x) (car x) fetch)) (nreverse fetch-vars) " & ") - (if idlwave-shell-print-expression-function " & " "\n") - (if help "help, " "print, ") - expr + "\n" + (idlwave-shell-help-statement help expr) (format " ; [-%d:%s]" level routine)))) +(defun idlwave-shell-help-statement (help expr) + "Construct a help statement for printing expression EXPR. + +HELP can be non-nil for `help,', nil for 'print,' or any string into which +to insert expression in place of the marker ___, e.g.: print, +size(___,/DIMENSIONS)" + (cond + ((null help) (concat "print, " expr)) + ((stringp help) + (if (string-match "\\(^\\|[^_]\\)\\(___\\)\\([^_]\\|$\\)" help) + (concat (substring help 0 (match-beginning 2)) + expr + (substring help (match-end 2))))) + (t (concat "help, " expr)))) + + +(defun idlwave-shell-examine-highlight () + "Highlight the most recent IDL output." + (let* ((buffer (get-buffer (idlwave-shell-buffer))) + (process (get-buffer-process buffer)) + (process-mark (if process (process-mark process))) + output-begin output-end) + (save-excursion + (set-buffer buffer) + (goto-char process-mark) + (beginning-of-line) + (setq output-end (point)) + (re-search-backward idlwave-shell-prompt-pattern nil t) + (beginning-of-line 2) + (setq output-begin (point))) + + ;; First make sure the shell window is visible + (idlwave-display-buffer (idlwave-shell-buffer) + nil (idlwave-shell-shell-frame)) + (if (and idlwave-shell-output-overlay process-mark) + (move-overlay idlwave-shell-output-overlay + output-begin output-end buffer)))) + +(defun idlwave-shell-delete-output-overlay () + (if (eq this-command 'idlwave-shell-mouse-nop) + nil + (condition-case nil + (if idlwave-shell-output-overlay + (delete-overlay idlwave-shell-output-overlay)) + (error nil)) + (remove-hook 'pre-command-hook 'idlwave-shell-delete-output-overlay))) + (defun idlwave-shell-delete-expression-overlay () - (condition-case nil - (if idlwave-shell-expression-overlay - (delete-overlay idlwave-shell-expression-overlay)) - (error nil)) - (remove-hook 'pre-command-hook 'idlwave-shell-delete-expression-overlay)) + (if (eq this-command 'idlwave-shell-mouse-nop) + nil + (condition-case nil + (if idlwave-shell-expression-overlay + (delete-overlay idlwave-shell-expression-overlay)) + (error nil)) + (remove-hook 'pre-command-hook 'idlwave-shell-delete-expression-overlay))) (defvar idlwave-shell-bp-alist nil "Alist of breakpoints. @@ -2213,7 +2673,9 @@ If there is a prefix argument, display IDL process." (let ((oldbuf (current-buffer))) (save-excursion (set-buffer (idlwave-find-file-noselect - idlwave-shell-temp-pro-file 'tmp)) + (idlwave-shell-temp-file 'pro) 'tmp)) + (set (make-local-variable 'comment-start-skip) ";+[ \t]*") + (set (make-local-variable 'comment-start) ";") (erase-buffer) (insert-buffer-substring oldbuf beg end) (if (not (save-excursion @@ -2253,13 +2715,8 @@ Does not work for a region with multiline blocks - use (error nil)))) (defun idlwave-display-buffer (buf not-this-window-p &optional frame) - (if (or (< emacs-major-version 20) - (and (= emacs-major-version 20) - (< emacs-minor-version 3))) - ;; Only two args. - (display-buffer buf not-this-window-p) - ;; Three ares possible. - (display-buffer buf not-this-window-p frame))) + (if (not (frame-live-p frame)) (setq frame nil)) + (display-buffer buf not-this-window-p frame)) (defvar idlwave-shell-bp-buffer " *idlwave-shell-bp*" "Scratch buffer for parsing IDL breakpoint lists and other stuff.") @@ -2302,22 +2759,37 @@ from previous breakpoint list." (insert idlwave-shell-command-output) (goto-char (point-min)) (let ((old-bp-alist idlwave-shell-bp-alist) - file line index module) + ;; Searching the breakpoints + ;; In IDL 5.5, the breakpoint reporting format changed. + (bp-re54 "^[ \t]*\\([0-9]+\\)[ \t]+\\(\\S-+\\)?[ \t]+\\([0-9]+\\)[ \t]+\\(\\S-+\\)") + (bp-re55 "^\\s-*\\([0-9]+\\)\\s-+\\([0-9]+\\)\\s-+\\(Uncompiled\\|Func=\\|Pro=\\)\\(\\S-+\\)?\\s-+\\(\\S-+\\)") + file line index module + bp-re indmap) (setq idlwave-shell-bp-alist (list nil)) - (when (re-search-forward "^\\s-*Index.*\n\\s-*-" nil t) + ;; Search for either header type, and set the correct regexp + (when (or + (if (re-search-forward "^\\s-*Index.*\n\\s-*-" nil t) + (setq bp-re bp-re54 ; versions <= 5.4 + indmap '(1 2 3 4))) + (if (re-search-forward + "^\\s-*Index\\s-*Line\\s-*Attributes\\s-*File" nil t) + (setq bp-re bp-re55 ; versions >= 5.5 + indmap '(1 4 2 5)))) ;; There seems to be a breakpoint listing here. ;; Parse breakpoint lines. - ;; Breakpoints have the form: + ;; Breakpoints have the form + ;; for IDL<=v5.4: ;; Index Module Line File - ;; All seperated by whitespace. + ;; All separated by whitespace. ;; Module may be missing if the file is not compiled. - ;; - (while (re-search-forward - "^[ \t]*\\([0-9]+\\)[ \t]+\\(\\S-+\\)?[ \t]+\\([0-9]+\\)[ \t]+\\(\\S-+\\)" nil t) - (setq index (match-string 1) - module (match-string 2) - line (string-to-int (match-string 3)) - file (idlwave-shell-file-name (match-string 4))) + ;; for IDL>=v5.5: + ;; Index Line Attributes File + ;; (attributes replaces module, "Uncompiled" included) + (while (re-search-forward bp-re nil t) + (setq index (match-string (nth 0 indmap)) + module (match-string (nth 1 indmap)) + line (string-to-int (match-string (nth 2 indmap))) + file (idlwave-shell-file-name (match-string (nth 3 indmap)))) ;; Add the breakpoint info to the list (nconc idlwave-shell-bp-alist (list (cons (list file line) @@ -2372,24 +2844,24 @@ Otherwise return the filename in bp." The breakpoint will be placed at the beginning of the statement on the line specified by BP or at the next IDL statement if that line is not a statement. -Determines IDL's internal representation for the breakpoint which may -have occurred at a different line then used with the breakpoint +Determines IDL's internal representation for the breakpoint, which may +have occurred at a different line than used with the breakpoint command." ;; Get and save the old breakpoints (idlwave-shell-send-command idlwave-shell-bp-query '(progn - (idlwave-shell-filter-bp) - (setq idlwave-shell-old-bp idlwave-shell-bp-alist)) + (idlwave-shell-filter-bp) + (setq idlwave-shell-old-bp idlwave-shell-bp-alist)) 'hide) ;; Get sources for IDL compiled procedures followed by setting ;; breakpoint. (idlwave-shell-send-command idlwave-shell-sources-query `(progn - (idlwave-shell-sources-filter) - (idlwave-shell-set-bp2 (quote ,bp))) + (idlwave-shell-sources-filter) + (idlwave-shell-set-bp2 (quote ,bp))) 'hide)) (defun idlwave-shell-set-bp2 (bp) @@ -2619,7 +3091,7 @@ handled by this command." idlwave-routines) (idlwave-shell-update-routine-info t))) -(defvar idlwave-shell-sources-query "help,/source" +(defvar idlwave-shell-sources-query "help,/source,/full" "IDL command to obtain source files for compiled procedures.") (defvar idlwave-shell-sources-alist nil @@ -2746,11 +3218,10 @@ Otherwise, just expand the file name." (let ((def-dir (if (eq major-mode 'idlwave-shell-mode) default-directory idlwave-shell-default-directory))) - (if idlwave-shell-use-truename - (file-truename name def-dir) + (if idlwave-shell-use-truename + (file-truename name def-dir) (expand-file-name name def-dir)))) - ;; Keybindings -------------------------------------------------------------- (defvar idlwave-shell-mode-map (copy-keymap comint-mode-map) @@ -2777,23 +3248,42 @@ Otherwise, just expand the file name." (define-key idlwave-shell-mode-map [(down)] 'idlwave-shell-down-or-history) (define-key idlwave-mode-map "\C-c\C-y" 'idlwave-shell-char-mode-loop) (define-key idlwave-mode-map "\C-c\C-x" 'idlwave-shell-send-char) -(define-key idlwave-mode-map - (if (featurep 'xemacs) [(shift button2)] [(shift mouse-2)]) - 'idlwave-shell-mouse-print) -(define-key idlwave-mode-map - (if (featurep 'xemacs) [(shift control button2)] [(shift control mouse-2)]) + +;; The mouse bindings for PRINT and HELP +(idlwave-shell-define-key-both + (if (featurep 'xemacs) + [(shift button2)] + [(shift down-mouse-2)]) + 'idlwave-shell-mouse-print) +(idlwave-shell-define-key-both + (if (featurep 'xemacs) + [(control meta button2)] + [(control meta down-mouse-2)]) 'idlwave-shell-mouse-help) +(idlwave-shell-define-key-both + (if (featurep 'xemacs) + [(control shift button2)] + [(control shift down-mouse-2)]) + 'idlwave-shell-examine-select) +;; Add this one from the idlwave-mode-map (define-key idlwave-shell-mode-map - (if (featurep 'xemacs) [(shift button2)] [(shift mouse-2)]) - 'idlwave-shell-mouse-print) -(define-key idlwave-shell-mode-map - (if (featurep 'xemacs) [(shift control button2)] [(shift control mouse-2)]) - 'idlwave-shell-mouse-help) -(define-key idlwave-shell-mode-map - (if (featurep 'xemacs) [(shift button3)] [(shift mouse-3)]) + (if (featurep 'xemacs) + [(shift button3)] + [(shift mouse-3)]) 'idlwave-mouse-context-help) +;; For Emacs, we need to turn off the button release events. +(defun idlwave-shell-mouse-nop (event) + (interactive "e")) +(unless (featurep 'xemacs) + (idlwave-shell-define-key-both + [(shift mouse-2)] 'idlwave-shell-mouse-nop) + (idlwave-shell-define-key-both + [(shift control mouse-2)] 'idlwave-shell-mouse-nop) + (idlwave-shell-define-key-both + [(control meta mouse-2)] 'idlwave-shell-mouse-nop)) + ;; The following set of bindings is used to bind the debugging keys. ;; If `idlwave-shell-activate-prefix-keybindings' is non-nil, the first key ;; in the list gets bound the C-c C-d prefix map. @@ -2994,7 +3484,7 @@ Otherwise, just expand the file name." (let ((image-string "/* XPM */ static char * file[] = { \"14 12 3 1\", -\" c #FFFFFFFFFFFF s backgroundColor\", +\" c None s backgroundColor\", \". c #4B4B4B4B4B4B\", \"R c #FFFF00000000\", \" \", @@ -3017,7 +3507,7 @@ static char * file[] = { ((and (not (featurep 'xemacs)) (fboundp 'image-type-available-p) (image-type-available-p 'xpm)) - (list 'image :type 'xpm :data image-string)) + (list 'image :type 'xpm :data image-string :ascent 'center)) (t nil)))) (provide 'idlw-shell) diff --git a/lisp/progmodes/idlw-toolbar.el b/lisp/progmodes/idlw-toolbar.el index e6f243d411c..0ad1a3b24ce 100644 --- a/lisp/progmodes/idlw-toolbar.el +++ b/lisp/progmodes/idlw-toolbar.el @@ -1,10 +1,10 @@ ;;; idlw-toolbar.el --- a debugging toolbar for IDLWAVE -;; Copyright (c) 1999, 2000 Free Software Foundation +;; Copyright (c) 1999, 2000, 2001,2002 Free Software Foundation -;; Author: Carsten Dominik -;; Maintainer: John-David Smith -;; Version: 4.7 -;; Date: $Date: 2001/07/16 12:22:59 $ +;; Author: Carsten Dominik +;; Maintainer: J.D. Smith +;; Version: 4.14 +;; Date: $Date: 2002/06/14 19:06:16 $ ;; Keywords: processes ;; This file is part of GNU Emacs. @@ -29,6 +29,10 @@ ;; This file implements a debugging toolbar for IDLWAVE. It requires ;; Emacs or XEmacs with toolbar and xpm support. +;; New versions of IDLWAVE, documentation, and more information +;; available from: +;; http://idlwave.org + ;;; Code: @@ -59,7 +63,7 @@ "/* XPM */ static char * file[] = { \"28 28 2 1\", -\" c #C8C8C8C8C8C8 s backgroundToolBarColor\", +\" c None s backgroundToolBarColor\", \". c #000000000000\", \" \", \" \", @@ -96,7 +100,7 @@ static char * file[] = { "/* XPM */ static char * file[] = { \"28 28 3 1\", -\" c #C8C8C8C8C8C8 s backgroundToolBarColor\", +\" c None s backgroundToolBarColor\", \". c #000000000000\", \"R c #FFFF00000000\", \" \", @@ -134,7 +138,7 @@ static char * file[] = { "/* XPM */ static char * file[] = { \"28 28 3 1\", -\" c #C8C8C8C8C8C8 s backgroundToolBarColor\", +\" c None s backgroundToolBarColor\", \". c #000000000000\", \"R c #FFFF00000000\", \" \", @@ -172,7 +176,7 @@ static char * file[] = { "/* XPM */ static char * file[] = { \"28 28 4 1\", -\" c #C8C8C8C8C8C8 s backgroundToolBarColor\", +\" c None s backgroundToolBarColor\", \"_ c #FFFFFFFFFFFF\", \". c #000000000000\", \"R c #FFFF00000000\", @@ -212,7 +216,7 @@ static char * file[] = { "/* XPM */ static char * file[] = { \"28 28 3 1\", -\" c #C8C8C8C8C8C8 s backgroundToolBarColor\", +\" c None s backgroundToolBarColor\", \". c #000000000000\", \"R c #FFFF00000000\", \" \", @@ -250,7 +254,7 @@ static char * file[] = { "/* XPM */ static char * file[] = { \"28 28 4 1\", -\" c #C8C8C8C8C8C8 s backgroundToolBarColor\", +\" c None s backgroundToolBarColor\", \". c #000000000000\", \"X c #FFFFFFFFFFFF\", \"R c #FFFF00000000\", @@ -289,7 +293,7 @@ static char * file[] = { "/* XPM */ static char * file[] = { \"28 28 2 1\", -\" c #C8C8C8C8C8C8 s backgroundToolBarColor\", +\" c None s backgroundToolBarColor\", \". c #000000000000\", \" \", \" \", @@ -326,7 +330,7 @@ static char * file[] = { "/* XPM */ static char * file[] = { \"28 28 3 1\", -\" c #C8C8C8C8C8C8 s backgroundToolBarColor\", +\" c None s backgroundToolBarColor\", \". s FgColor c #000000000000\", \"G c #0000BBBB0000\", \" \", @@ -364,7 +368,7 @@ static char * file[] = { "/* XPM */ static char * file[] = { \"28 28 3 1\", -\" c #C8C8C8C8C8C8 s backgroundToolBarColor\", +\" c None s backgroundToolBarColor\", \". s FgColor c #000000000000\", \"G c #0000BBBB0000\", \" \", @@ -402,7 +406,7 @@ static char * file[] = { "/* XPM */ static char * file[] = { \"28 28 4 1\", -\" c #C8C8C8C8C8C8 s backgroundToolBarColor\", +\" c None s backgroundToolBarColor\", \". c #000000000000\", \"G c #0000BBBB0000\", \"R c #FFFF00000000\", @@ -441,7 +445,7 @@ static char * file[] = { "/* XPM */ static char * file[] = { \"28 28 3 1\", -\" c #C8C8C8C8C8C8 s backgroundToolBarColor\", +\" c None s backgroundToolBarColor\", \". c #000000000000\", \"G c #0000BBBB0000\", \" \", @@ -479,7 +483,7 @@ static char * file[] = { "/* XPM */ static char * file[] = { \"28 28 3 1\", -\" c #C8C8C8C8C8C8 s backgroundToolBarColor\", +\" c None s backgroundToolBarColor\", \". c #000000000000\", \"G c #0000BBBB0000\", \" \", @@ -517,7 +521,7 @@ static char * file[] = { "/* XPM */ static char * file[] = { \"28 28 3 1\", -\" c #C8C8C8C8C8C8 s backgroundToolBarColor\", +\" c None s backgroundToolBarColor\", \". c #000000000000\", \"G c #0000BBBB0000\", \" \", @@ -556,7 +560,7 @@ static char * file[] = { "/* XPM */ static char * file[] = { \"28 28 2 1\", -\" c #C8C8C8C8C8C8 s backgroundToolBarColor\", +\" c None s backgroundToolBarColor\", \". c #000000000000\", \" \", \" \", @@ -593,7 +597,7 @@ static char * file[] = { "/* XPM */ static char * file[] = { \"28 28 5 1\", -\" c #C8C8C8C8C8C8 s backgroundToolBarColor\", +\" c None s backgroundToolBarColor\", \". s FgColor c #000000000000\", \"_ c #FFFFFFFFFFFF\", \"G c #0000BBBB0000\", @@ -633,7 +637,7 @@ static char * file[] = { "/* XPM */ static char * file[] = { \"28 28 5 1\", -\" c #C8C8C8C8C8C8 s backgroundToolBarColor\", +\" c None s backgroundToolBarColor\", \". s FgColor c #000000000000\", \"_ c #FFFFFFFFFFFF\", \"G c #0000BBBB0000\", @@ -673,7 +677,7 @@ static char * file[] = { "/* XPM */ static char * file[] = { \"28 28 3 1\", -\" c #C8C8C8C8C8C8 s backgroundToolBarColor\", +\" c None s backgroundToolBarColor\", \"G c #0000BBBB0000\", \". c #000000000000\", \" \", @@ -874,3 +878,5 @@ static char * file[] = { (provide 'idlwave-toolbar) ;;; idlw-toolbar.el ends here + + diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el index 412ceb06c51..94b229235b4 100644 --- a/lisp/progmodes/idlwave.el +++ b/lisp/progmodes/idlwave.el @@ -1,10 +1,11 @@ ;;; idlwave.el --- IDL and WAVE CL editing mode for GNU Emacs -;; Copyright (c) 1999, 2000 Free Software Foundation +;; Copyright (c) 1999, 2000, 2001,2002 Free Software Foundation -;; Author: Chris Chase -;; Maintainer: John-David Smith -;; Version: 4.7 -;; Date: $Date: 2002/02/16 12:53:42 $ +;; Author: Carsten Dominik +;; Chris Chase +;; Maintainer: J.D. Smith +;; Version: 4.14 +;; Date: $Date: 2002/06/14 19:03:30 $ ;; Keywords: languages ;; This file is part of GNU Emacs. @@ -37,6 +38,9 @@ ;; for features, key bindings, and info. ;; Also, Info format documentation is available with `M-x idlwave-info' ;; +;; New versions of IDLWAVE, documentation, and more information +;; available from: +;; http://idlwave.org ;; ;; INSTALLATION ;; ============ @@ -56,7 +60,7 @@ ;; The newest version of this file is available from the maintainers ;; Webpage. ;; -;; http://www.strw.leidenuniv.el/~dominik/Tools/idlwave +;; http://idlwave.org ;; ;; DOCUMENTATION ;; ============= @@ -126,10 +130,6 @@ ;; problems with pointer dereferencing statements. I don't use ;; pointers often enough to find out - please report any problems. ;; -;; Completion and Routine Info do not know about inheritance. Thus, -;; Keywords inherited from superclasses are not displayed and cannot -;; completed. -;; ;; When forcing completion of method keywords, the initial ;; query for a method has multiple entries for some methods. Would ;; be too difficult to fix this hardly used case. @@ -140,20 +140,20 @@ (eval-when-compile (require 'cl)) (eval-and-compile - ;; Kludge to allow `defcustom' for Emacs 19. - (condition-case () (require 'custom) (error nil)) - (if (and (featurep 'custom) (fboundp 'custom-declare-variable)) - nil ;; We've got what we needed - ;; We have the old or no custom-library, hack around it! - (defmacro defgroup (&rest args) nil) - (defmacro defcustom (var value doc &rest args) - `(defvar ,var ,value ,doc)))) + ;; Kludge to allow `defcustom' for Emacs 19. + (condition-case () (require 'custom) (error nil)) + (if (and (featurep 'custom) (fboundp 'custom-declare-variable)) + nil ;; We've got what we needed + ;; We have the old or no custom-library, hack around it! + (defmacro defgroup (&rest args) nil) + (defmacro defcustom (var value doc &rest args) + `(defvar ,var ,value ,doc)))) (defgroup idlwave nil - "Major mode for editing IDL/WAVE CL .pro files" + "Major mode for editing IDL .pro files" :tag "IDLWAVE" :link '(url-link :tag "Home Page" - "http://strw.leidenuniv.nl/~dominik/Tools/idlwave") + "http://idlwave.org") :link '(emacs-commentary-link :tag "Commentary in idlw-shell.el" "idlw-shell.el") :link '(emacs-commentary-link :tag "Commentary in idlwave.el" "idlwave.el") @@ -190,13 +190,48 @@ line up with the block BEGIN lines." (defcustom idlwave-continuation-indent 2 "*Extra indentation applied to continuation lines. This extra offset applies to the first of a set of continuation lines. -The following lines receive the same indentation as the first. -Also, the value of this variable applies to continuation lines inside -parenthesis. When the current line contains an open unmatched ([{, -the next line is indented to that parenthesis plus the value of this variable." +The following lines receive the same indentation as the first." :group 'idlwave-code-formatting :type 'integer) +(defcustom idlwave-max-extra-continuation-indent 20 + "*Maximum additional indentation for special continuation indent. +Several special indentations are tried to help line up continuation +lines in routine calls or definitions, other statements with +parentheses, or assigment statements. This variable specifies a +maximum amount by which this special indentation can exceed the +standard continuation indentation, otherwise defaulting to a fixed +offset. Set to 0 to effectively disable all special continuation +indentation, or to a large number (like 100) to enable it in all +cases. See also `idlwave-indent-top-open-paren', which can override +this variable." + :group 'idlwave-code-formatting + :type 'integer) + +(defcustom idlwave-indent-to-open-paren t + "*Non-nil means, indent continuation lines to innermost open +parenthesis. This indentation occurs even if otherwise disallowed by +`idlwave-max-extra-continuation-indent'. Matching parens and the +interleaving args are lined up. Example: + + x = function_a(function_b(function_c( a, b, [1,2,3, $ + 4,5,6 $ + ], $ + c, d $ + ))) + +When this variable is nil, paren alignment may still occur, based on +the value of `max-extra-continuation-indent', which, if zero, would +yield: + + x = function_a(function_b(function_c( a, b, [1,2,3, $ + 4,5,6 $ + ], $ + c, d $ + )))" + :group 'idlwave-code-formatting + :type 'boolean) + (defcustom idlwave-hanging-indent t "*If set non-nil then comment paragraphs are indented under the hanging indent given by `idlwave-hang-indent-regexp' match in the first line @@ -274,6 +309,22 @@ the comment is not preceded by whitespace it is unchanged." "Routine Info options for IDLWAVE mode." :group 'idlwave) + +(defcustom idlwave-init-rinfo-when-idle-after 10 + "*Seconds of idle time before routine info is automatically initialized. +Initializing the routine info can take long, in particular if a large +library catalog is involved. When Emacs is idle for more than the number +of seconds specified by this variable, it starts the initialization. +The process is split into five steps, in order to keep possible work +interruption as short as possible. If one of the steps finishes, and no +user input has arrived in the mean time, initialization proceeds immediately +to the next step. +A good value for this variable is about 1/3 of the time initialization +take in you setup. So if you have a fast machine and no problems with a slow network connection, don't hesitate to set this to 2 seconds. +A Value of 0 means, don't initialize automatically." + :group 'idlwave-routine-info + :type 'number) + (defcustom idlwave-scan-all-buffers-for-routine-info t "*Non-nil means, scan buffers for IDL programs when updating info. The scanning is done by the command `idlwave-update-routine-info'. @@ -449,7 +500,7 @@ definition is displayed instead." "Face for highlighting links into IDLWAVE online help." :group 'idlwave-online-help) -(defcustom idlwave-help-activate-links-agressively t +(defcustom idlwave-help-activate-links-aggressively t "*Non-nil means, make all possible links in help active. This just activates all words which are also a help topic - some links may be misleading." @@ -558,6 +609,17 @@ not about inherited ones." :group 'idlwave-routine-info :type 'boolean) +(defcustom idlwave-keyword-class-inheritance '("^[gs]etproperty$" "^init$") + "List of regular expressions for class-driven keyword inheritance. +Keyword inheritance is often tied to class inheritance by \"chaining\" +up the class tree. While it cannot be assumed that the presence of an +_EXTRA or _REF_EXTRA symbol guarantees such chaining will occur, for +certain methods this assumption is almost always true. The methods +for which to assume this can be set here." + :group 'idlwave-routine-info + :type '(repeat (regexp :tag "Match method:"))) + + (defcustom idlwave-completion-show-classes 1 "*Number of classes to show when completing object methods and keywords. When completing methods or keywords for an object with unknown class, @@ -588,21 +650,21 @@ class info listed. See `idlwave-completion-show-classes'." (keyword-default . nil)) "Association list governing specification of object classes for completion. -When IDLWAVE is trying to complete items which belong to the object -oriented part of IDL, it usually cannot determine the class of a given -object from context. In order to provide the user with a correct list -of methods or keywords, it would have to determine the appropriate -class. IDLWAVE has two ways to deal with this problem. +When IDLWAVE tries to complete object-oriented methods, it usually +cannot determine the class of a given object from context. In order +to provide the user with a correct list of methods or keywords, it +needs have to determine the appropriate class. IDLWAVE has two ways +to deal with this problem. -1. One possibility is to combine the items of all available - classes for the purpose of completion. So when completing a - method, all methods of all classes are available, and when - completing a keyword, all keywords allowed for this method in any - class will be possible completions. This behavior is very much - like normal completion and is therefore the default. It works much +1. One possibility is to combine the items of all available classes + which contain this method for the purpose of completion. So when + completing a method, all methods of all known classes are + available, and when completing a keyword, all keywords allowed for + this method in any class are shown. This behavior is very much + like normal completion and is therefore the default. It works much better than one might think - only for the INIT, GETPROPERTY and - SETPROPERTY the keyword lists become uncomfortably long. - See also `idlwave-completion-show-classes'. + SETPROPERTY the keyword lists become uncomfortably long. See also + `idlwave-completion-show-classes'. 2. The second possibility is to ask the user on each occasion. To make this less interruptive, IDLWAVE can store the class as a text @@ -613,11 +675,12 @@ class. IDLWAVE has two ways to deal with this problem. You will have to turn on the storage of the selected class explicitly with the variable `idlwave-store-inquired-class'. -This variable allows to configure IDLWAVE's behavior during -completion. Its value is an alist, which should contain at least two -elements: (method-default . VALUE) and (keyword-default . VALUE), -where VALUE is either t or nil. These specify if the class should be -determined during method and keyword completion, respectively. +This variable allows you to configure IDLWAVE's method and +method-keyword completion behavior. Its value is an alist, which +should contain at least two elements: (method-default . VALUE) and +(keyword-default . VALUE), where VALUE is either t or nil. These +specify if the class should be found during method and keyword +completion, respectively. The alist may have additional entries specifying exceptions from the keyword completion rule for specific methods, like INIT or @@ -917,6 +980,14 @@ Otherwise STRING is used. If nil, the file summary will be omitted. For example you might set PATHNAME to the path for the lib_template.pro file included in the IDL distribution.") +(defcustom idlwave-header-to-beginning-of-file nil + "*Non-nil means, the documentation header will always be at start of file. +When nil, the header is positioned between the PRO/FUNCTION line of +the current routine and the code, allowing several routine headers in +a file." + :group 'idlwave-documentation + :type 'boolean) + (defcustom idlwave-timestamp-hook 'idlwave-default-insert-timestamp "*The hook function used to update the timestamp of a function." :group 'idlwave-documentation @@ -951,16 +1022,26 @@ If nil it will not be inserted." ;; anything. (defcustom idlwave-shell-explicit-file-name "idl" - "*If non-nil, is the command to run IDL. + "*If non-nil, this is the command to run IDL. Should be an absolute file path or path relative to the current environment -execution search path." +execution search path. If you want to specify command line switches +for the idl program, use `idlwave-shell-command-line-options'. + +I know the name of this variable is badly chosen, but I cannot change +it without compromizing backwards-compatibility." :group 'idlwave-external-programs :type 'string) -;; FIXME: Document a case when is this needed. (defcustom idlwave-shell-command-line-options nil - "*A list of command line options for calling the IDL program." - :type '(repeat (string :value "")) + "*A list of command line options for calling the IDL program. +Since IDL is executed directly without going through a shell like /bin/sh, +this should be a list of strings like '(\"-rt=file\" \"-nw\") with a separate +string for each argument. But you may also give a single string which +contains the options whitespace-separated. Emacs will be kind enough to +split it for you." + :type '(choice + string + (repeat (string :value ""))) :group 'idlwave-external-programs) (defcustom idlwave-help-application "idlhelp" @@ -1356,12 +1437,12 @@ Normally a space.") "Character which is inserted as a last character on previous line by \\[idlwave-split-line] to begin a continuation line. Normally $.") -(defconst idlwave-mode-version " 4.7") +(defconst idlwave-mode-version " 4.14") (defmacro idlwave-keyword-abbrev (&rest args) "Creates a function for abbrev hooks to call `idlwave-check-abbrev' with args." `(quote (lambda () - ,(append '(idlwave-check-abbrev) args)))) + ,(append '(idlwave-check-abbrev) args)))) ;; If I take the time I can replace idlwave-keyword-abbrev with ;; idlwave-code-abbrev and remove the quoted abbrev check from @@ -1374,10 +1455,10 @@ Normally a space.") Specifically, if the abbrev is in a comment or string it is unexpanded. Otherwise ARGS forms a list that is evaluated." `(quote (lambda () - ,(prin1-to-string args) ;; Puts the code in the doc string - (if (idlwave-quoted) - (progn (unexpand-abbrev) nil) - ,(append args))))) + ,(prin1-to-string args) ;; Puts the code in the doc string + (if (idlwave-quoted) + (progn (unexpand-abbrev) nil) + ,(append args))))) (defvar idlwave-mode-map (make-sparse-keymap) "Keymap used in IDL mode.") @@ -1449,7 +1530,7 @@ KEY in `idlwave-mode-map' by defining an anonymous function calling `self-insert-command' followed by CMD. If KEY contains more than one character a binding will only be set if SELECT is 'both. -(KEY . CMD\ is also placed in the `idlwave-indent-expand-table', +\(KEY . CMD\) is also placed in the `idlwave-indent-expand-table', replacing any previous value for KEY. If a binding is not set then it will instead be placed in `idlwave-indent-action-table'. @@ -1512,6 +1593,7 @@ Capitalize system variables - action only (define-key idlwave-mode-map "\C-c\C-n" 'idlwave-next-statement) ;; (define-key idlwave-mode-map "\r" 'idlwave-newline) ;; (define-key idlwave-mode-map "\t" 'idlwave-indent-line) +(define-key idlwave-mode-map (kbd "S-") 'idlwave-indent-statement) (define-key idlwave-mode-map "\C-c\C-a" 'idlwave-auto-fill-mode) (define-key idlwave-mode-map "\M-q" 'idlwave-fill-paragraph) (define-key idlwave-mode-map "\M-s" 'idlwave-edit-in-idlde) @@ -1567,8 +1649,10 @@ Capitalize system variables - action only ;; Automatically add spaces for the following characters (idlwave-action-and-binding "&" '(idlwave-surround -1 -1)) (idlwave-action-and-binding "<" '(idlwave-surround -1 -1)) -(idlwave-action-and-binding ">" '(idlwave-surround -1 -1 '(?-))) -(idlwave-action-and-binding "->" '(idlwave-surround -1 -1 nil 2)) +;; Binding works for both > and ->, by changing the length of the token. +(idlwave-action-and-binding ">" '(idlwave-surround -1 -1 '(?-) 1 + 'idlwave-gtr-pad-hook)) +(idlwave-action-and-binding "->" '(idlwave-surround -1 -1 nil 2) t) (idlwave-action-and-binding "," '(idlwave-surround 0 -1)) ;; Automatically add spaces to equal sign if not keyword (idlwave-action-and-binding "=" '(idlwave-expand-equal -1 -1)) @@ -1580,135 +1664,147 @@ Capitalize system variables - action only ;;; space is inserted (this is the space typed by the user to expanded ;;; the abbrev). ;;; +(defvar idlwave-mode-abbrev-table nil + "Abbreviation table used for IDLWAVE mode") +(define-abbrev-table 'idlwave-mode-abbrev-table ()) + +(defun idlwave-define-abbrev (name expansion hook &optional noprefix table) + "Define-abbrev with backward compatibility. + +If NOPREFIX is non-nil, don't prepend prefix character. Installs into +idlwave-mode-abbrev-table unless TABLE is non-nil." + (let ((abbrevs-changed nil) ;; mask the current value to avoid save + (args (list (or table idlwave-mode-abbrev-table) + (if noprefix name (concat idlwave-abbrev-start-char name)) + expansion + hook))) + (condition-case nil + (apply 'define-abbrev (append args '(0 t))) + (error (apply 'define-abbrev args))))) (condition-case nil (modify-syntax-entry (string-to-char idlwave-abbrev-start-char) "w" idlwave-mode-syntax-table) (error nil)) -(defvar idlwave-mode-abbrev-table nil - "Abbreviation table used for IDLWAVE mode") -(define-abbrev-table 'idlwave-mode-abbrev-table ()) -(let ((abbrevs-changed nil) ;; mask the current value to avoid save - (tb idlwave-mode-abbrev-table) - (c idlwave-abbrev-start-char)) - ;; - ;; Templates - ;; - (define-abbrev tb (concat c "c") "" (idlwave-code-abbrev idlwave-case) 0 t) - (define-abbrev tb (concat c "sw") "" (idlwave-code-abbrev idlwave-switch) 0 t) - (define-abbrev tb (concat c "f") "" (idlwave-code-abbrev idlwave-for) 0 t) - (define-abbrev tb (concat c "fu") "" (idlwave-code-abbrev idlwave-function) 0 t) - (define-abbrev tb (concat c "pr") "" (idlwave-code-abbrev idlwave-procedure) 0 t) - (define-abbrev tb (concat c "r") "" (idlwave-code-abbrev idlwave-repeat) 0 t) - (define-abbrev tb (concat c "w") "" (idlwave-code-abbrev idlwave-while) 0 t) - (define-abbrev tb (concat c "i") "" (idlwave-code-abbrev idlwave-if) 0 t) - (define-abbrev tb (concat c "elif") "" (idlwave-code-abbrev idlwave-elif) 0 t) - ;; - ;; Keywords, system functions, conversion routines - ;; - (define-abbrev tb (concat c "b") "begin" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb (concat c "co") "common" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb (concat c "cb") "byte()" (idlwave-keyword-abbrev 1) 0 t) - (define-abbrev tb (concat c "cx") "fix()" (idlwave-keyword-abbrev 1) 0 t) - (define-abbrev tb (concat c "cl") "long()" (idlwave-keyword-abbrev 1) 0 t) - (define-abbrev tb (concat c "cf") "float()" (idlwave-keyword-abbrev 1) 0 t) - (define-abbrev tb (concat c "cs") "string()" (idlwave-keyword-abbrev 1) 0 t) - (define-abbrev tb (concat c "cc") "complex()" (idlwave-keyword-abbrev 1) 0 t) - (define-abbrev tb (concat c "cd") "double()" (idlwave-keyword-abbrev 1) 0 t) - (define-abbrev tb (concat c "e") "else" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb (concat c "ec") "endcase" 'idlwave-show-begin 0 t) - (define-abbrev tb (concat c "es") "endswitch" 'idlwave-show-begin 0 t) - (define-abbrev tb (concat c "ee") "endelse" 'idlwave-show-begin 0 t) - (define-abbrev tb (concat c "ef") "endfor" 'idlwave-show-begin 0 t) - (define-abbrev tb (concat c "ei") "endif else if" 'idlwave-show-begin 0 t) - (define-abbrev tb (concat c "el") "endif else" 'idlwave-show-begin 0 t) - (define-abbrev tb (concat c "en") "endif" 'idlwave-show-begin 0 t) - (define-abbrev tb (concat c "er") "endrep" 'idlwave-show-begin 0 t) - (define-abbrev tb (concat c "ew") "endwhile" 'idlwave-show-begin 0 t) - (define-abbrev tb (concat c "g") "goto," (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb (concat c "h") "help," (idlwave-keyword-abbrev 0) 0 t) - (define-abbrev tb (concat c "k") "keyword_set()" (idlwave-keyword-abbrev 1) 0 t) - (define-abbrev tb (concat c "n") "n_elements()" (idlwave-keyword-abbrev 1) 0 t) - (define-abbrev tb (concat c "on") "on_error," (idlwave-keyword-abbrev 0) 0 t) - (define-abbrev tb (concat c "oi") "on_ioerror," (idlwave-keyword-abbrev 0 1) 0 t) - (define-abbrev tb (concat c "ow") "openw," (idlwave-keyword-abbrev 0) 0 t) - (define-abbrev tb (concat c "or") "openr," (idlwave-keyword-abbrev 0) 0 t) - (define-abbrev tb (concat c "ou") "openu," (idlwave-keyword-abbrev 0) 0 t) - (define-abbrev tb (concat c "p") "print," (idlwave-keyword-abbrev 0) 0 t) - (define-abbrev tb (concat c "pt") "plot," (idlwave-keyword-abbrev 0) 0 t) - (define-abbrev tb (concat c "re") "read," (idlwave-keyword-abbrev 0) 0 t) - (define-abbrev tb (concat c "rf") "readf," (idlwave-keyword-abbrev 0) 0 t) - (define-abbrev tb (concat c "ru") "readu," (idlwave-keyword-abbrev 0) 0 t) - (define-abbrev tb (concat c "rt") "return" (idlwave-keyword-abbrev 0) 0 t) - (define-abbrev tb (concat c "sc") "strcompress()" (idlwave-keyword-abbrev 1) 0 t) - (define-abbrev tb (concat c "sn") "strlen()" (idlwave-keyword-abbrev 1) 0 t) - (define-abbrev tb (concat c "sl") "strlowcase()" (idlwave-keyword-abbrev 1) 0 t) - (define-abbrev tb (concat c "su") "strupcase()" (idlwave-keyword-abbrev 1) 0 t) - (define-abbrev tb (concat c "sm") "strmid()" (idlwave-keyword-abbrev 1) 0 t) - (define-abbrev tb (concat c "sp") "strpos()" (idlwave-keyword-abbrev 1) 0 t) - (define-abbrev tb (concat c "st") "strput()" (idlwave-keyword-abbrev 1) 0 t) - (define-abbrev tb (concat c "sr") "strtrim()" (idlwave-keyword-abbrev 1) 0 t) - (define-abbrev tb (concat c "t") "then" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb (concat c "u") "until" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb (concat c "wu") "writeu," (idlwave-keyword-abbrev 0) 0 t) - (define-abbrev tb (concat c "ine") "if n_elements() eq 0 then" - (idlwave-keyword-abbrev 11) 0 t) - (define-abbrev tb (concat c "inn") "if n_elements() ne 0 then" - (idlwave-keyword-abbrev 11) 0 t) - (define-abbrev tb (concat c "np") "n_params()" (idlwave-keyword-abbrev 0) 0 t) - (define-abbrev tb (concat c "s") "size()" (idlwave-keyword-abbrev 1) 0 t) - (define-abbrev tb (concat c "wi") "widget_info()" (idlwave-keyword-abbrev 1) 0 t) - (define-abbrev tb (concat c "wc") "widget_control," (idlwave-keyword-abbrev 0) 0 t) +;; +;; Templates +;; +(idlwave-define-abbrev "c" "" (idlwave-code-abbrev idlwave-case)) +(idlwave-define-abbrev "sw" "" (idlwave-code-abbrev idlwave-switch)) +(idlwave-define-abbrev "f" "" (idlwave-code-abbrev idlwave-for)) +(idlwave-define-abbrev "fu" "" (idlwave-code-abbrev idlwave-function)) +(idlwave-define-abbrev "pr" "" (idlwave-code-abbrev idlwave-procedure)) +(idlwave-define-abbrev "r" "" (idlwave-code-abbrev idlwave-repeat)) +(idlwave-define-abbrev "w" "" (idlwave-code-abbrev idlwave-while)) +(idlwave-define-abbrev "i" "" (idlwave-code-abbrev idlwave-if)) +(idlwave-define-abbrev "elif" "" (idlwave-code-abbrev idlwave-elif)) +;; +;; Keywords, system functions, conversion routines +;; +(idlwave-define-abbrev "ap" "arg_present()" (idlwave-keyword-abbrev 1)) +(idlwave-define-abbrev "b" "begin" (idlwave-keyword-abbrev 0 t)) +(idlwave-define-abbrev "co" "common" (idlwave-keyword-abbrev 0 t)) +(idlwave-define-abbrev "cb" "byte()" (idlwave-keyword-abbrev 1)) +(idlwave-define-abbrev "cx" "fix()" (idlwave-keyword-abbrev 1)) +(idlwave-define-abbrev "cl" "long()" (idlwave-keyword-abbrev 1)) +(idlwave-define-abbrev "cf" "float()" (idlwave-keyword-abbrev 1)) +(idlwave-define-abbrev "cs" "string()" (idlwave-keyword-abbrev 1)) +(idlwave-define-abbrev "cc" "complex()" (idlwave-keyword-abbrev 1)) +(idlwave-define-abbrev "cd" "double()" (idlwave-keyword-abbrev 1)) +(idlwave-define-abbrev "e" "else" (idlwave-keyword-abbrev 0 t)) +(idlwave-define-abbrev "ec" "endcase" 'idlwave-show-begin) +(idlwave-define-abbrev "es" "endswitch" 'idlwave-show-begin) +(idlwave-define-abbrev "ee" "endelse" 'idlwave-show-begin) +(idlwave-define-abbrev "ef" "endfor" 'idlwave-show-begin) +(idlwave-define-abbrev "ei" "endif else if" 'idlwave-show-begin) +(idlwave-define-abbrev "el" "endif else" 'idlwave-show-begin) +(idlwave-define-abbrev "en" "endif" 'idlwave-show-begin) +(idlwave-define-abbrev "er" "endrep" 'idlwave-show-begin) +(idlwave-define-abbrev "ew" "endwhile" 'idlwave-show-begin) +(idlwave-define-abbrev "g" "goto," (idlwave-keyword-abbrev 0 t)) +(idlwave-define-abbrev "h" "help," (idlwave-keyword-abbrev 0)) +(idlwave-define-abbrev "k" "keyword_set()" (idlwave-keyword-abbrev 1)) +(idlwave-define-abbrev "n" "n_elements()" (idlwave-keyword-abbrev 1)) +(idlwave-define-abbrev "on" "on_error," (idlwave-keyword-abbrev 0)) +(idlwave-define-abbrev "oi" "on_ioerror," (idlwave-keyword-abbrev 0 1)) +(idlwave-define-abbrev "ow" "openw," (idlwave-keyword-abbrev 0)) +(idlwave-define-abbrev "or" "openr," (idlwave-keyword-abbrev 0)) +(idlwave-define-abbrev "ou" "openu," (idlwave-keyword-abbrev 0)) +(idlwave-define-abbrev "p" "print," (idlwave-keyword-abbrev 0)) +(idlwave-define-abbrev "pt" "plot," (idlwave-keyword-abbrev 0)) +(idlwave-define-abbrev "re" "read," (idlwave-keyword-abbrev 0)) +(idlwave-define-abbrev "rf" "readf," (idlwave-keyword-abbrev 0)) +(idlwave-define-abbrev "ru" "readu," (idlwave-keyword-abbrev 0)) +(idlwave-define-abbrev "rt" "return" (idlwave-keyword-abbrev 0)) +(idlwave-define-abbrev "sc" "strcompress()" (idlwave-keyword-abbrev 1)) +(idlwave-define-abbrev "sn" "strlen()" (idlwave-keyword-abbrev 1)) +(idlwave-define-abbrev "sl" "strlowcase()" (idlwave-keyword-abbrev 1)) +(idlwave-define-abbrev "su" "strupcase()" (idlwave-keyword-abbrev 1)) +(idlwave-define-abbrev "sm" "strmid()" (idlwave-keyword-abbrev 1)) +(idlwave-define-abbrev "sp" "strpos()" (idlwave-keyword-abbrev 1)) +(idlwave-define-abbrev "st" "strput()" (idlwave-keyword-abbrev 1)) +(idlwave-define-abbrev "sr" "strtrim()" (idlwave-keyword-abbrev 1)) +(idlwave-define-abbrev "t" "then" (idlwave-keyword-abbrev 0 t)) +(idlwave-define-abbrev "u" "until" (idlwave-keyword-abbrev 0 t)) +(idlwave-define-abbrev "wu" "writeu," (idlwave-keyword-abbrev 0)) +(idlwave-define-abbrev "iap" "if arg_present() then" (idlwave-keyword-abbrev 6)) +(idlwave-define-abbrev "ik" "if keyword_set() then" (idlwave-keyword-abbrev 6)) +(idlwave-define-abbrev "ine" "if n_elements() eq 0 then" (idlwave-keyword-abbrev 11)) +(idlwave-define-abbrev "inn" "if n_elements() ne 0 then" (idlwave-keyword-abbrev 11)) +(idlwave-define-abbrev "np" "n_params()" (idlwave-keyword-abbrev 0)) +(idlwave-define-abbrev "s" "size()" (idlwave-keyword-abbrev 1)) +(idlwave-define-abbrev "wi" "widget_info()" (idlwave-keyword-abbrev 1)) +(idlwave-define-abbrev "wc" "widget_control," (idlwave-keyword-abbrev 0)) - ;; This section is reserved words only. (From IDL user manual) - ;; - (define-abbrev tb "and" "and" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "begin" "begin" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "break" "break" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "case" "case" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "common" "common" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "continue" "continue" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "do" "do" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "else" "else" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "end" "end" 'idlwave-show-begin-check 0 t) - (define-abbrev tb "endcase" "endcase" 'idlwave-show-begin-check 0 t) - (define-abbrev tb "endelse" "endelse" 'idlwave-show-begin-check 0 t) - (define-abbrev tb "endfor" "endfor" 'idlwave-show-begin-check 0 t) - (define-abbrev tb "endif" "endif" 'idlwave-show-begin-check 0 t) - (define-abbrev tb "endrep" "endrep" 'idlwave-show-begin-check 0 t) - (define-abbrev tb "endswitch" "endswitch" 'idlwave-show-begin-check 0 t) - (define-abbrev tb "endwhi" "endwhi" 'idlwave-show-begin-check 0 t) - (define-abbrev tb "endwhile" "endwhile" 'idlwave-show-begin-check 0 t) - (define-abbrev tb "eq" "eq" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "for" "for" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "function" "function" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "ge" "ge" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "goto" "goto" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "gt" "gt" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "if" "if" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "le" "le" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "lt" "lt" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "mod" "mod" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "ne" "ne" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "not" "not" (idlwave-keyword-abbrev 0 t 0 t)) - (define-abbrev tb "of" "of" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "on_ioerror" "on_ioerror" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "or" "or" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "pro" "pro" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "repeat" "repeat" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "switch" "switch" (idlwave-keyword-abbrev 0 t 0 t)) - (define-abbrev tb "then" "then" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "until" "until" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "while" "while" (idlwave-keyword-abbrev 0 t) 0 t) - (define-abbrev tb "xor" "xor" (idlwave-keyword-abbrev 0 t) 0 t)) +;; This section is reserved words only. (From IDL user manual) +;; +(idlwave-define-abbrev "and" "and" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "begin" "begin" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "break" "break" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "case" "case" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "common" "common" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "continue" "continue" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "do" "do" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "else" "else" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "end" "end" 'idlwave-show-begin-check t) +(idlwave-define-abbrev "endcase" "endcase" 'idlwave-show-begin-check t) +(idlwave-define-abbrev "endelse" "endelse" 'idlwave-show-begin-check t) +(idlwave-define-abbrev "endfor" "endfor" 'idlwave-show-begin-check t) +(idlwave-define-abbrev "endif" "endif" 'idlwave-show-begin-check t) +(idlwave-define-abbrev "endrep" "endrep" 'idlwave-show-begin-check t) +(idlwave-define-abbrev "endswitch" "endswitch" 'idlwave-show-begin-check t) +(idlwave-define-abbrev "endwhi" "endwhi" 'idlwave-show-begin-check t) +(idlwave-define-abbrev "endwhile" "endwhile" 'idlwave-show-begin-check t) +(idlwave-define-abbrev "eq" "eq" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "for" "for" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "function" "function" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "ge" "ge" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "goto" "goto" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "gt" "gt" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "if" "if" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "le" "le" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "lt" "lt" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "mod" "mod" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "ne" "ne" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "not" "not" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "of" "of" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "on_ioerror" "on_ioerror" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "or" "or" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "pro" "pro" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "repeat" "repeat" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "switch" "switch" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "then" "then" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "until" "until" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "while" "while" (idlwave-keyword-abbrev 0 t) t) +(idlwave-define-abbrev "xor" "xor" (idlwave-keyword-abbrev 0 t) t) (defvar imenu-create-index-function) (defvar extract-index-name-function) (defvar prev-index-position-function) (defvar imenu-extract-index-name-function) (defvar imenu-prev-index-position-function) -;; defined later - so just make the compiler shut up +;; defined later - so just make the compiler hush (defvar idlwave-mode-menu) (defvar idlwave-mode-debug-menu) @@ -1723,10 +1819,10 @@ The main features of this mode are Like other Emacs programming modes, C-j inserts a newline and indents. TAB is used for explicit indentation of the current line. - To start a continuation line, use \\[idlwave-split-line]. This function can also - be used in the middle of a line to split the line at that point. - When used inside a long constant string, the string is split at - that point with the `+' concatenation operator. + To start a continuation line, use \\[idlwave-split-line]. This + function can also be used in the middle of a line to split the line + at that point. When used inside a long constant string, the string + is split at that point with the `+' concatenation operator. Comments are indented as follows: @@ -1736,24 +1832,28 @@ The main features of this mode are The indentation of comments starting in column 0 is never changed. - Use \\[idlwave-fill-paragraph] to refill a paragraph inside a comment. The indentation - of the second line of the paragraph relative to the first will be - retained. Use \\[idlwave-auto-fill-mode] to toggle auto-fill mode for these comments. - When the variable `idlwave-fill-comment-line-only' is nil, code - can also be auto-filled and auto-indented (not recommended). + Use \\[idlwave-fill-paragraph] to refill a paragraph inside a + comment. The indentation of the second line of the paragraph + relative to the first will be retained. Use + \\[idlwave-auto-fill-mode] to toggle auto-fill mode for these + comments. When the variable `idlwave-fill-comment-line-only' is + nil, code can also be auto-filled and auto-indented (not + recommended). To convert pre-existing IDL code to your formatting style, mark the - entire buffer with \\[mark-whole-buffer] and execute \\[idlwave-expand-region-abbrevs]. - Then mark the entire buffer again followed by \\[indent-region] (`indent-region'). + entire buffer with \\[mark-whole-buffer] and execute + \\[idlwave-expand-region-abbrevs]. Then mark the entire buffer + again followed by \\[indent-region] (`indent-region'). 2. Routine Info ------------ - IDLWAVE displays information about the calling sequence and the accepted - keyword parameters of a procedure or function with \\[idlwave-routine-info]. - \\[idlwave-find-module] jumps to the source file of a module. - These commands know about system routines, all routines in idlwave-mode - buffers and (when the idlwave-shell is active) about all modules - currently compiled under this shell. Use \\[idlwave-update-routine-info] to update this + IDLWAVE displays information about the calling sequence and the + accepted keyword parameters of a procedure or function with + \\[idlwave-routine-info]. \\[idlwave-find-module] jumps to the + source file of a module. These commands know about system + routines, all routines in idlwave-mode buffers and (when the + idlwave-shell is active) about all modules currently compiled under + this shell. Use \\[idlwave-update-routine-info] to update this information, which is also used for completion (see item 4). 3. Online IDL Help @@ -1812,10 +1912,10 @@ The main features of this mode are 9. Documentation and Customization ------------------------------- - Info documentation for this package is available. Use \\[idlwave-info] - to display (complain to your sysadmin if that does not work). - For Postscript and HTML versions of the documentation, check IDLWAVE's - homepage at `http://www.strw.leidenuniv.nl/~dominik/Tools/idlwave'. + Info documentation for this package is available. Use + \\[idlwave-info] to display (complain to your sysadmin if that does + not work). For Postscript, PDF, and HTML versions of the + documentation, check IDLWAVE's homepage at `http://idlwave.org'. IDLWAVE has customize support - see the group `idlwave'. 10.Keybindings @@ -1861,7 +1961,8 @@ The main features of this mode are (set (make-local-variable idlwave-fill-function) 'idlwave-auto-fill) (setq comment-end "") (set (make-local-variable 'comment-multi-line) nil) - (set (make-local-variable 'paragraph-separate) "[ \t\f]*$\\|[ \t]*;+[ \t]*$") + (set (make-local-variable 'paragraph-separate) + "[ \t\f]*$\\|[ \t]*;+[ \t]*$\\|;+[+=-_*]+$") (set (make-local-variable 'paragraph-start) "[ \t\f]\\|[ \t]*;+[ \t]") (set (make-local-variable 'paragraph-ignore-fill-prefix) nil) (set (make-local-variable 'parse-sexp-ignore-comments) nil) @@ -1884,10 +1985,15 @@ The main features of this mode are 'idlwave-prev-index-position) ;; Make a local post-command-hook and add our hook to it + ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility + (make-local-hook 'post-command-hook) (add-hook 'post-command-hook 'idlwave-command-hook nil 'local) ;; Make local hooks for buffer updates + ;; NB: `make-local-hook' needed for older/alternative Emacs compatibility + (make-local-hook 'kill-buffer-hook) (add-hook 'kill-buffer-hook 'idlwave-kill-buffer-update nil 'local) + (make-local-hook 'after-save-hook) (add-hook 'after-save-hook 'idlwave-save-buffer-update nil 'local) (add-hook 'after-save-hook 'idlwave-revoke-license-to-kill nil 'local) @@ -1988,6 +2094,16 @@ Returns point if comment found and nil otherwise." (backward-char 1) (point))))) +(defvar transient-mark-mode) +(defvar zmacs-regions) +(defvar mark-active) +(defun idlwave-region-active-p () + "Is transien-mark-mode on an the region active? +Works on both Emacs and XEmacs." + (if (featurep 'xemacs) + (and zmacs-regions (region-active-p)) + (and transient-mark-mode mark-active))) + (defun idlwave-show-matching-quote () "Insert quote and show matching quote if this is end of a string." (interactive) @@ -2006,19 +2122,17 @@ Returns point if comment found and nil otherwise." (defun idlwave-show-begin-check () "Ensure that the previous word was a token before `idlwave-show-begin'. An END token must be preceded by whitespace." - (if - (save-excursion - (backward-word 1) - (backward-char 1) - (looking-at "[ \t\n\f]")) - (idlwave-show-begin))) + (if (not (idlwave-quoted)) + (if + (save-excursion + (backward-word 1) + (backward-char 1) + (looking-at "[ \t\n\f]")) + (idlwave-show-begin)))) (defun idlwave-show-begin () "Finds the start of current block and blinks to it for a second. Also checks if the correct end statement has been used." - ;; Re-indent end line - (if idlwave-reindent-end - (idlwave-indent-line)) ;; All end statements are reserved words (let* ((pos (point)) end end1) @@ -2034,7 +2148,7 @@ Also checks if the correct end statement has been used." (idlwave-block-jump-out -1 'nomark) (when (setq end1 (cdr (idlwave-block-master))) (cond - ((null end1)) ; no-opeartion + ((null end1)) ; no-operation ((string= (downcase end) (downcase end1)) (sit-for 1)) ((string= (downcase end) "end") @@ -2050,7 +2164,10 @@ Also checks if the correct end statement has been used." (beep) (message "Warning: Shouldn't this be \"%s\" instead of \"%s\"?" end1 end) - (sit-for 1)))))))) + (sit-for 1))))))) + ;; Re-indent end line + (if idlwave-reindent-end + (idlwave-indent-line))) (defun idlwave-block-master () (let ((case-fold-search t)) @@ -2084,10 +2201,16 @@ Also checks if the correct end statement has been used." (bolp)) (let ((idlwave-show-block nil)) (newline-and-indent))) - (insert "end") - (idlwave-show-begin)) + (let ((last-abbrev-location (point))) ; for upcasing + (insert "end") + (idlwave-show-begin))) -(defun idlwave-surround (&optional before after escape-chars length) +(defun idlwave-gtr-pad-hook (char) + "Let the > symbol expand around -> if present. The new token length +is returned." + 2) + +(defun idlwave-surround (&optional before after escape-chars length ec-hook) "Surround the LENGTH characters before point with blanks. LENGTH defaults to 1. Optional arguments BEFORE and AFTER affect the behavior before and @@ -2103,32 +2226,39 @@ The function does nothing if any of the following conditions is true: - the character before point is inside a string or comment - the char preceeding the string to be surrounded is a member of ESCAPE-CHARS. This hack is used to avoid padding of `>' when it is part of - the '->' operator. In this case, ESCAPE-CHARS would be '(?-)." + the '->' operator. In this case, ESCAPE-CHARS would be '(?-). - (setq length (or length 1)) ; establish a default for LENGTH - - (when (and idlwave-surround-by-blank - (not (idlwave-quoted)) - (not (memq (char-after (- (point) (1+ length))) escape-chars))) - (backward-char length) - (save-restriction - (let ((here (point))) - (skip-chars-backward " \t") - (if (bolp) - ;; avoid clobbering indent - (progn - (move-to-column (idlwave-calculate-indent)) - (if (<= (point) here) - (narrow-to-region (point) here)) - (goto-char here))) - (idlwave-make-space before)) - (skip-chars-forward " \t")) - (forward-char length) - (idlwave-make-space after) - ;; Check to see if the line should auto wrap - (if (and (equal (char-after (1- (point))) ?\ ) - (> (current-column) fill-column)) - (funcall auto-fill-function)))) +If a function is passed in EC-HOOK, and an ESCAPE-CHARS match occurs, +the named function will be called with a single argument of the +preceeding character. Then idlwave-surround will run as usual if +EC-HOOK returns non-nil, and a new length will be taken from the +return value." + (when (and idlwave-surround-by-blank (not (idlwave-quoted))) + (let* ((length (or length 1)) ; establish a default for LENGTH + (prev-char (char-after (- (point) (1+ length))))) + (when (or (not (memq prev-char escape-chars)) + (and (fboundp ec-hook) + (setq length + (save-excursion (funcall ec-hook prev-char))))) + (backward-char length) + (save-restriction + (let ((here (point))) + (skip-chars-backward " \t") + (if (bolp) + ;; avoid clobbering indent + (progn + (move-to-column (idlwave-calculate-indent)) + (if (<= (point) here) + (narrow-to-region (point) here)) + (goto-char here))) + (idlwave-make-space before)) + (skip-chars-forward " \t")) + (forward-char length) + (idlwave-make-space after) + ;; Check to see if the line should auto wrap + (if (and (equal (char-after (1- (point))) ?\ ) + (> (current-column) fill-column)) + (funcall auto-fill-function)))))) (defun idlwave-make-space (n) "Make space at point. @@ -2226,7 +2356,9 @@ non-nil." ;; Split the string. (progn (insert (setq beg (char-after beg)) " + " idlwave-continuation-char beg) - (backward-char 1)) + (backward-char 1) + (newline-and-indent) + (forward-char 1)) ;; Do not split the string. (beep) (message "Warning: continuation inside string!!") @@ -2234,8 +2366,8 @@ non-nil." ;; Not splitting a string. (if (not (member (char-before) '(?\ ?\t))) (insert " ")) - (insert idlwave-continuation-char)) - (newline-and-indent)) + (insert idlwave-continuation-char) + (newline-and-indent))) (indent-new-comment-line)) ;; Indent previous line (setq beg (- (point-max) (point))) @@ -2466,15 +2598,16 @@ If there is no label point is not moved and nil is returned." ;; - it is not in a comment ;; - not in a string constant ;; - not in parenthesis (like a[0:3]) + ;; - not followed by another ":" in explicit class, ala a->b::c ;; As many in this mode, this function is heuristic and not an exact ;; parser. - (let ((start (point)) - (end (idlwave-find-key ":" 1 'nomark - (save-excursion - (idlwave-end-of-statement) (point))))) + (let* ((start (point)) + (eos (save-excursion (idlwave-end-of-statement) (point))) + (end (idlwave-find-key ":" 1 'nomark eos))) (if (and end (= (nth 0 (parse-partial-sexp start end)) 0) - (not (string-match "\\?" (buffer-substring start end)))) + (not (string-match "\\?" (buffer-substring start end))) + (not (string-match "^::" (buffer-substring end eos)))) (progn (forward-char) (point)) @@ -2561,18 +2694,22 @@ See `idlwave-surround'. " (idlwave-surround 0 0)) (t))))) -(defun idlwave-indent-and-action () - "Call `idlwave-indent-line' and do expand actions." - (interactive) +(defun idlwave-indent-and-action (&optional arg) + "Call `idlwave-indent-line' and do expand actions. +With prefix ARG non-nil, indent the entire sub-statement." + (interactive "p") (save-excursion (if (and idlwave-expand-generic-end (re-search-backward "\\<\\(end\\)\\s-*\\=" (max 0 (- (point) 10)) t) (looking-at "\\(end\\)\\([ \n\t]\\|\\'\\)")) (progn (goto-char (match-end 1)) - (idlwave-show-begin)))) - (idlwave-indent-line t) - ) + ;;Expand the END abbreviation, just as RET or Space would have. + (if abbrev-mode (expand-abbrev) + (idlwave-show-begin))))) + (if arg + (idlwave-indent-statement) + (idlwave-indent-line t))) (defun idlwave-indent-line (&optional expand) "Indents current IDL line as code or as a comment. @@ -2670,6 +2807,15 @@ Inserts spaces before markers at point." (indent-region beg (point) nil)) (message "Indenting subprogram...done."))) +(defun idlwave-indent-statement () + "Indent current statement, including all continuation lines." + (interactive) + (save-excursion + (idlwave-beginning-of-statement) + (let ((beg (point))) + (idlwave-end-of-statement) + (indent-region beg (point) nil)))) + (defun idlwave-calculate-indent () "Return appropriate indentation for current line as IDL code." (save-excursion @@ -2688,7 +2834,7 @@ Inserts spaces before markers at point." (t (let ((the-indent ;; calculate indent based on previous statement (save-excursion - (cond + (cond ((idlwave-previous-statement) 0) ;; Main block @@ -2707,73 +2853,140 @@ Inserts spaces before markers at point." ;; adjust the indentation based on the current statement (cond ;; End block - ((idlwave-look-at idlwave-end-block-reg t) - (+ the-indent idlwave-end-offset)) + ((idlwave-look-at idlwave-end-block-reg) + (+ the-indent idlwave-end-offset)) (the-indent))))))) ;; -;; Parenthesses balacing/indent +;; Parentheses balacing/indent ;; +(defun idlwave-calculate-paren-indent (beg-reg end-reg close-exp) + "Calculate the continuation indent inside a paren group. +Returns a cons-cell with (open . indent), where open is the +location of the open paren" + (let ((open (nth 1 (parse-partial-sexp beg-reg end-reg)))) + ;; Found an innermost open paren. + (when open + (goto-char open) + ;; Line up with next word unless this is a closing paren. + (cons open + (cond + ;; This is a closed paren - line up under open paren. + (close-exp + (current-column)) + ;; Empty (or just comment) - just line up next to paren + ((progn + ;; Skip paren + (forward-char 1) + (looking-at "[ \t$]*\\(;.*\\)?$")) + (current-column)) + ;; Line up with first word after blank space + ((progn + (skip-chars-forward " \t") + (current-column)))))))) + (defun idlwave-calculate-cont-indent () "Calculates the IDL continuation indent column from the previous statement. Note that here previous statement means the beginning of the current -statement if this statement is a continuation of the previous line. -Intervening comments or comments within the previous statement can -screw things up if the comments contain parentheses characters." +statement if this statement is a continuation of the previous line." (save-excursion (let* (open (case-fold-search t) (end-reg (progn (beginning-of-line) (point))) (close-exp (progn (skip-chars-forward " \t") (looking-at "\\s)"))) - (beg-reg (progn (idlwave-previous-statement) (point)))) - ;; - ;; If PRO or FUNCTION declaration indent after name, and first comma. - ;; - (if (idlwave-look-at "\\<\\(pro\\|function\\)\\>") - (progn - (forward-sexp 1) - (if (looking-at "[ \t]*,[ \t]*") - (goto-char (match-end 0))) - (current-column)) - ;; - ;; Not a PRO or FUNCTION - ;; - ;; Look for innermost unmatched open paren - ;; - (if (setq open (car (cdr (parse-partial-sexp beg-reg end-reg)))) - ;; Found innermost open paren. - (progn - (goto-char open) - ;; Line up with next word unless this is a closing paren. - (cond - ;; This is a closed paren - line up under open paren. - (close-exp - (current-column)) - ;; Empty - just add regular indent. Take into account - ;; the forward-char - ((progn - ;; Skip paren - (forward-char 1) - (looking-at "[ \t$]*$")) - (+ (current-column) idlwave-continuation-indent -1)) - ;; Line up with first word - ((progn - (skip-chars-forward " \t") - (current-column))))) - ;; No unmatched open paren. Just a simple continuation. - (goto-char beg-reg) - (+ (idlwave-current-indent) - ;; Make adjustments based on current line - (cond - ;; Else statement - ((progn - (goto-char end-reg) - (skip-chars-forward " \t") - (looking-at "else")) - 0) - ;; Ordinary continuation - (idlwave-continuation-indent)))))))) + (beg-reg (progn (idlwave-previous-statement) (point))) + (cur-indent (idlwave-current-indent)) + (else-cont (and (goto-char end-reg) (looking-at "[ \t]*else"))) + (basic-indent ;; The basic, non-fancy indent + (+ cur-indent idlwave-continuation-indent)) + (fancy-nonparen-indent ;; A smarter indent for routine/assignments + ;; Try without parens first: + (progn + (goto-char beg-reg) + (while (idlwave-look-at "&")) ; skip over continued statements + (cond + ;; A continued Procedure call or definition + ((progn + (idlwave-look-at "\\(pro\\|function\\)") + (looking-at "[ \t]*\\([a-zA-Z0-9$_]+[ \t]*->[ \t]*\\)?[a-zA-Z][:a-zA-Z0-9$_]*[ \t]*\\(,\\)[ \t]*")) + (goto-char (match-end 0)) + ;; Comment only, or blank line with "$"? Align with , + (if (save-match-data (looking-at "[ \t$]*\\(;.*\\)?$")) + (goto-char (match-end 2))) + (current-column)) + + ;; Continued assignment (with =), + ((looking-at "[ \t]*[a-zA-Z0-9$_]+[ \t]*\\(=\\)[ \t]*") + (goto-char (match-end 0)) + ;; Comment only? Align with = + (if (save-match-data (looking-at "[ \t$]*\\(;.*\\)?$")) + (progn + (goto-char (match-end 1)) + (if idlwave-surround-by-blank + (1+ (current-column)) + (current-column))) + (current-column)))))) + (fancy-nonparen-indent-allowed + (and fancy-nonparen-indent + (< (- fancy-nonparen-indent basic-indent) + idlwave-max-extra-continuation-indent))) + (fancy-paren-indent-cons ;; A smarter indent for paren groups + ;; Look for any enclosing parens + (idlwave-calculate-paren-indent beg-reg end-reg close-exp)) + (fancy-paren-open (car fancy-paren-indent-cons)) + (fancy-paren-indent (cdr fancy-paren-indent-cons)) + (fancy-paren-indent-allowed + (and fancy-paren-indent + (or idlwave-indent-to-open-paren ;; override + (< (- fancy-paren-indent basic-indent) + idlwave-max-extra-continuation-indent)))) + fancy-enclosing-parent-indent) + (cond + ;; else continuations are always standard + (else-cont + cur-indent) + + ;; an allowed parenthesis-indent + (fancy-paren-indent-allowed + fancy-paren-indent) + + ;; a disallowed paren indent nested inside one or more other + ;; parens: indent relative to the first allowed enclosing paren + ;; set, if any... if it's actually a greater indent, just use + ;; the fancy-paren-indent anyway. + ((and fancy-paren-indent + (not fancy-paren-indent-allowed) + (setq fancy-enclosing-paren-indent + (let ((enclose-open fancy-paren-open) + enclose-indent-cons + enclose-indent) + (catch 'loop + (while (setq enclose-indent-cons + (idlwave-calculate-paren-indent + beg-reg (max (1- enclose-open) beg-reg) + nil) + enclose-open (car enclose-indent-cons) + enclose-indent (cdr enclose-indent-cons)) + (if (< (- enclose-indent basic-indent) + idlwave-max-extra-continuation-indent) + (throw 'loop enclose-indent))))))) + (min fancy-paren-indent + (+ fancy-enclosing-paren-indent idlwave-continuation-indent))) + + ;; a disallowed paren indent inside another type: indent relative + ((and fancy-paren-indent + (not fancy-paren-indent-allowed) + fancy-nonparen-indent-allowed ) + (+ fancy-nonparen-indent idlwave-continuation-indent)) + + ;; an allowed nonparen-only indent + (fancy-nonparen-indent-allowed + fancy-nonparen-indent) + + ;; everything else + (t + basic-indent))))) (defun idlwave-find-key (key-re &optional dir nomark limit) "Move to next match of the regular expression KEY-RE. @@ -2855,9 +3068,16 @@ Skips any whitespace. Returns 0 if the end-of-line follows the whitespace." ((current-column))))) (defun idlwave-is-continuation-line () - "Tests if current line is continuation line." + "Tests if current line is continuation line. +Blank or comment-only lines following regular continuation lines (with +`$') count as continuations too." (save-excursion - (idlwave-look-at "\\<\\$"))) + (or + (idlwave-look-at "\\<\\$") + (catch 'loop + (while (and (looking-at "^[ \t]*\\(;.*\\)?$") + (eq (forward-line -1) 0)) + (if (idlwave-look-at "\\<\\$") (throw 'loop t))))))) (defun idlwave-is-comment-line () "Tests if the current line is a comment line." @@ -3215,31 +3435,36 @@ is non-nil." (interactive "P") (or nomark (push-mark)) ;; make sure we catch the current line if it begins the unit - (end-of-line) - (idlwave-beginning-of-subprogram) - (beginning-of-line) - ;; skip function or procedure line - (if (idlwave-look-at "\\<\\(pro\\|function\\)\\>") - (progn - (idlwave-end-of-statement) - (if (> (forward-line 1) 0) (insert "\n")))) - (if idlwave-file-header - (cond ((car idlwave-file-header) - (insert-file (car idlwave-file-header))) - ((stringp (car (cdr idlwave-file-header))) - (insert (car (cdr idlwave-file-header))))))) - + (if idlwave-header-to-beginning-of-file + (goto-char (point-min)) + (end-of-line) + (idlwave-beginning-of-subprogram) + (beginning-of-line) + ;; skip function or procedure line + (if (idlwave-look-at "\\<\\(pro\\|function\\)\\>") + (progn + (idlwave-end-of-statement) + (if (> (forward-line 1) 0) (insert "\n"))))) + (let ((pos (point))) + (if idlwave-file-header + (cond ((car idlwave-file-header) + (insert-file (car idlwave-file-header))) + ((stringp (car (cdr idlwave-file-header))) + (insert (car (cdr idlwave-file-header)))))) + (goto-char pos))) (defun idlwave-default-insert-timestamp () "Default timestamp insertion function" (insert (current-time-string)) (insert ", " (user-full-name)) - (insert " <" (user-login-name) "@" (system-name) ">") + (if (boundp 'user-mail-address) + (insert " <" user-mail-address ">") + (insert " <" (user-login-name) "@" (system-name) ">")) ;; Remove extra spaces from line (idlwave-fill-paragraph) ;; Insert a blank line comment to separate from the date entry - ;; will keep the entry from flowing onto date line if re-filled. - (insert "\n;\n;\t\t"))t + (insert "\n;\n;\t\t")) (defun idlwave-doc-modification () "Insert a brief modification log at the beginning of the current program. @@ -3915,10 +4140,31 @@ This defines the function `idlwave-sintern-TAG' and the variable ;; The code to get routine info from different sources. (defvar idlwave-system-routines) +(defvar idlwave-catalog-process nil + "The background process currently updating the catalog.") + (defun idlwave-routines () "Provide a list of IDL routines. This routine loads the builtin routines on the first call. Later it only returns the value of the variable." + (if (and idlwave-catalog-process + (processp idlwave-catalog-process)) + (progn + (cond + ((equal (process-status idlwave-catalog-process) 'exit) + (message "updating........") + (setq idlwave-catalog-process nil) + (idlwave-update-routine-info '(4))) + ((equal (process-status idlwave-catalog-process) 'run) + ;; Keep it running... + ) + (t + ;; Something is wrong, get rid of the process + (message "Problem with catalog process") (beep) + (condition-case nil + (kill-process idlwave-catalog-process) + (error nil)) + (setq idlwave-catalog-process nil))))) (or idlwave-routines (progn (idlwave-update-routine-info) @@ -3929,6 +4175,52 @@ only returns the value of the variable." "List of functions which should run after a global rinfo update. Does not run after automatic updates of buffer or the shell.") +(defun idlwave-rescan-catalog-directories () + "Rescan the previously selected directories. For batch processing." + (idlwave-update-routine-info '(16))) + +(defun idlwave-rescan-asynchronously () + "Dispatch another emacs instance to update the idlwave catalog. +After the process finishes normally, the first access to routine info +will re-read the catalog." + (interactive) + (if (processp idlwave-catalog-process) + (if (eq (process-status idlwave-catalog-process) 'run) + (if (yes-or-no-p "A catalog-updating process is running. Kill it? ") + (progn + (condition-case nil + (kill-process idlwave-catalog-process) + (error nil)) + (error "Process killed, no new process started")) + (error "Quit")) + (condition-case nil + (kill-process idlwave-catalog-process) + (error nil)))) + (if (or (not idlwave-libinfo-file) + (not (stringp idlwave-libinfo-file)) + (not (file-regular-p idlwave-libinfo-file))) + (error "No catalog has been produced yet")) + (let* ((emacs (expand-file-name (invocation-name) (invocation-directory))) + (args (list "-batch" + "-l" (expand-file-name "~/.emacs") + "-l" "idlwave" + "-f" "idlwave-rescan-catalog-directories")) + (process (apply 'start-process "idlcat" + nil emacs args))) + (setq idlwave-catalog-process process) + (set-process-sentinel + process + (lambda (pro why) + (when (string-match "finished" why) + (setq idlwave-routines nil + idlwave-system-routines nil + idlwave-catalog-process nil) + (or (idlwave-start-load-rinfo-timer) + (idlwave-update-routine-info '(4)))))) + (message "Background job started to update catalog file"))) + + +(defvar idlwave-load-rinfo-idle-timer) (defun idlwave-update-routine-info (&optional arg) "Update the internal routine-info lists. These lists are used by `idlwave-routine-info' (\\[idlwave-routine-info]) @@ -3947,29 +4239,48 @@ When an IDL shell is running, this command also queries the IDL program for currently compiled routines. With prefix ARG, also reload the system and library lists. -With two prefix ARG's, also rescans the library tree." +With two prefix ARG's, also rescans the library tree. +With three prefix args, dispatch asynchronous process to do the update." (interactive "P") - (if (equal arg '(16)) - (idlwave-create-libinfo-file t) - (let* ((reload (or arg - idlwave-buffer-case-takes-precedence - (null idlwave-system-routines)))) + ;; Stop any idle processing + (if (or (and (fboundp 'itimerp) + (itimerp idlwave-load-rinfo-idle-timer)) + (and (fboundp 'timerp) + (timerp idlwave-load-rinfo-idle-timer))) + (cancel-timer idlwave-load-rinfo-idle-timer)) + (cond + ((equal arg '(64)) + ;; Start a background process which updates the catalog. + (idlwave-rescan-asynchronously)) + ((equal arg '(16)) + ;; Update the catalog now, and wait for it. + (idlwave-create-libinfo-file t)) + (t + (let* ((load (or arg + idlwave-buffer-case-takes-precedence + (null idlwave-routines))) + ;; The override-idle means, even if the idle timer has done some + ;; preparing work, load and renormalize everything anyway. + (override-idle (or arg idlwave-buffer-case-takes-precedence))) (setq idlwave-buffer-routines nil idlwave-compiled-routines nil idlwave-unresolved-routines nil) ;; Reset the appropriate hashes - (idlwave-reset-sintern (cond (reload t) - ((null idlwave-system-routines) t) - (t 'bufsh))) + (if (get 'idlwave-reset-sintern 'done-by-idle) + ;; reset was already done in idle time, so skip this step now once + (put 'idlwave-reset-sintern 'done-by-idle nil) + (idlwave-reset-sintern (cond (load t) + ((null idlwave-system-routines) t) + (t 'bufsh)))) (if idlwave-buffer-case-takes-precedence ;; We can safely scan the buffer stuff first (progn (idlwave-update-buffer-routine-info) - (and reload (idlwave-load-system-rinfo))) + (and load (idlwave-load-system-rinfo override-idle))) ;; We first do the system info, and then the buffers - (and reload (idlwave-load-system-rinfo)) + (and load (idlwave-load-system-rinfo override-idle)) (idlwave-update-buffer-routine-info)) ;; Let's see if there is a shell @@ -3992,15 +4303,94 @@ With two prefix ARG's, also rescans the library tree." (when ask-shell ;; Ask the shell about the routines it knows. (message "Querying the shell") - (idlwave-shell-update-routine-info nil t)))))) + (idlwave-shell-update-routine-info nil t))))))) -(defun idlwave-load-system-rinfo () +(defvar idlwave-load-rinfo-steps-done (make-vector 5 nil)) +(defvar idlwave-load-rinfo-idle-timer nil) +(defun idlwave-start-load-rinfo-timer () + (if (or (and (fboundp 'itimerp) + (itimerp idlwave-load-rinfo-idle-timer)) + (and (fboundp 'timerp) + (timerp idlwave-load-rinfo-idle-timer))) + (cancel-timer idlwave-load-rinfo-idle-timer)) + (setq idlwave-load-rinfo-steps-done (make-vector 5 nil)) + (setq idlwave-load-rinfo-idle-timer nil) + (if (and idlwave-init-rinfo-when-idle-after + (numberp idlwave-init-rinfo-when-idle-after) + (not (equal 0 idlwave-init-rinfo-when-idle-after)) + (not idlwave-routines)) + (condition-case nil + (progn + (setq idlwave-load-rinfo-idle-timer + (run-with-idle-timer + idlwave-init-rinfo-when-idle-after + nil 'idlwave-load-rinfo-next-step))) + (error nil)))) + + + +(defun idlwave-load-rinfo-next-step () + (let ((inhibit-quit t) + (arr idlwave-load-rinfo-steps-done)) + (if (catch 'exit + (when (not (aref arr 0)) + (message "Loading idlw-rinfo.el in idle time...") + (load "idlw-rinfo" 'noerror 'nomessage) + (message "Loading idlw-rinfo.el in idle time...done") + (aset arr 0 t) + (throw 'exit t)) + (when (not (aref arr 1)) + (message "Normalizing idlwave-system-routines in idle time...") + (idlwave-reset-sintern t) + (put 'idlwave-reset-sintern 'done-by-idle t) + (setq idlwave-system-routines + (idlwave-sintern-rinfo-list idlwave-system-routines 'sys)) + (message "Normalizing idlwave-system-routines in idle time...done") + (aset arr 1 t) + (throw 'exit t)) + (when (not (aref arr 2)) + (when (and (stringp idlwave-libinfo-file) + (file-regular-p idlwave-libinfo-file)) + (condition-case nil + (progn + (message "Loading library catalog in idle time...") + (load-file idlwave-libinfo-file) + (message "Loading library catalog in idle time...done") + (aset arr 2 t) + (throw 'exit t)) + (error (throw 'exit nil))))) + (when (not (aref arr 3)) + (when idlwave-library-routines + (message "Normalizing idlwave-library-routines in idle time...") + (setq idlwave-library-routines (idlwave-sintern-rinfo-list + idlwave-library-routines 'sys)) + (message "Normalizing idlwave-library-routines in idle time...done")) + (aset arr 3 t) + (throw 'exit t)) + (when (not (aref arr 4)) + (message "Finishing initialization in idle time...") + (idlwave-routines) + (message "Finishing initialization in idle time...done") + (throw 'exit nil))) + (progn + ;; restart the timer + (if (sit-for 1) + (idlwave-load-rinfo-next-step) + (setq idlwave-load-rinfo-idle-timer + (run-with-idle-timer + idlwave-init-rinfo-when-idle-after + nil 'idlwave-load-rinfo-next-step))) + )))) + +(defun idlwave-load-system-rinfo (&optional force) ;; Load and case-treat the system and lib info files. - (load "idlw-rinfo" t) - (message "Normalizing idlwave-system-routines...") - (setq idlwave-system-routines - (idlwave-sintern-rinfo-list idlwave-system-routines 'sys)) - (message "Normalizing idlwave-system-routines...done") + (when (or force (not (aref idlwave-load-rinfo-steps-done 0))) + (load "idlw-rinfo" 'noerror 'nomessage)) + (when (or force (not (aref idlwave-load-rinfo-steps-done 1))) + (message "Normalizing idlwave-system-routines...") + (setq idlwave-system-routines + (idlwave-sintern-rinfo-list idlwave-system-routines 'sys)) + (message "Normalizing idlwave-system-routines...done")) (setq idlwave-routines (copy-sequence idlwave-system-routines)) (setq idlwave-last-system-routine-info-cons-cell (nthcdr (1- (length idlwave-routines)) idlwave-routines)) @@ -4008,13 +4398,16 @@ With two prefix ARG's, also rescans the library tree." (file-regular-p idlwave-libinfo-file)) (condition-case nil (progn - (load-file idlwave-libinfo-file) + (when (or force (not (aref idlwave-load-rinfo-steps-done 2))) + (load-file idlwave-libinfo-file)) (setq idlwave-true-path-alist nil) - (message "Normalizing idlwave-library-routines...") - (setq idlwave-library-routines (idlwave-sintern-rinfo-list - idlwave-library-routines 'sys)) - (message "Normalizing idlwave-library-routines...done")) + (when (or force (not (aref idlwave-load-rinfo-steps-done 3))) + (message "Normalizing idlwave-library-routines...") + (setq idlwave-library-routines (idlwave-sintern-rinfo-list + idlwave-library-routines 'sys)) + (message "Normalizing idlwave-library-routines...done"))) (error nil))) + (run-hooks 'idlwave-after-load-rinfo-hook)) @@ -4467,10 +4860,13 @@ directories and save the routine info. ;; Define the routine info list (insert "\n(setq idlwave-library-routines\n '(") - (mapcar (lambda (x) - (insert "\n ") - (insert (with-output-to-string (prin1 x)))) - idlwave-library-routines) + (let ((standard-output (current-buffer))) + (mapcar (lambda (x) + (insert "\n ") + (prin1 x) + (goto-char (point-max))) +; (insert (with-output-to-string (prin1 x)))) + idlwave-library-routines)) (insert (format "))\n\n;;; %s ends here\n" (file-name-nondirectory idlwave-libinfo-file))) (goto-char (point-min)) @@ -4609,7 +5005,7 @@ end pro idlwave_get_class_tags, class res = execute('tags=tag_names({'+class+'})') - if res then print,'IDLWAVE-CLASS-TAGS: '+class+string(format='(1000(\" \",A))',tags) + if res then print,'IDLWAVE-CLASS-TAGS: '+class+' '+strjoin(tags,' ',/single) end ;; END OF IDLWAVE SUPPORT ROUTINES " @@ -4625,25 +5021,27 @@ end ;; Save and compile the procedure. The compiled procedure is then ;; saved into an IDL SAVE file, to allow for fast RESTORE. ;; We need to RESTORE the procedure each time we use it, since - ;; the user may have killed or redefined it. In particluar, + ;; the user may have killed or redefined it. In particular, ;; .RESET_SESSION will kill all user procedures. (unless (and idlwave-idlwave_routine_info-compiled - (file-readable-p idlwave-shell-temp-rinfo-save-file)) + (file-readable-p (idlwave-shell-temp-file 'rinfo))) (save-excursion (set-buffer (idlwave-find-file-noselect - idlwave-shell-temp-pro-file)) + (idlwave-shell-temp-file 'pro))) (erase-buffer) (insert idlwave-routine-info.pro) (save-buffer 0)) (idlwave-shell-send-command (concat ".run " idlwave-shell-temp-pro-file) nil 'hide) +; (message "SENDING SAVE") ; ???????????????????????? (idlwave-shell-send-command (format "save,'idlwave_routine_info','idlwave_print_info_entry',FILE='%s',/ROUTINES" - idlwave-shell-temp-rinfo-save-file) + (idlwave-shell-temp-file 'rinfo)) nil 'hide)) ;; Restore and execute the procedure, analyze the output +; (message "SENDING RESTORE & EXECUTE") ; ???????????????????????? (idlwave-shell-send-command (format "RESTORE, '%s' & idlwave_routine_info" idlwave-shell-temp-rinfo-save-file) @@ -4670,14 +5068,15 @@ at this point. it completes a keyword of the relevant function or procedure. - In the first arg of `OBJ_NEW', it completes a class name. -When several completions are possible, a list will be displayed in the +When several completions are possible, a list will be displayed in the *Completions* buffer. If this list is too long to fit into the -window, scrolling can be achieved by repeatedly pressing \\[idlwave-complete]. +window, scrolling can be achieved by repeatedly pressing +\\[idlwave-complete]. The function also knows about object methods. When it needs a class name, the action depends upon `idlwave-query-class', which see. You -can force IDLWAVE to ask you for a class name with a \\[universal-argument] prefix -argument to this command. +can force IDLWAVE to ask you for a class name with a +\\[universal-argument] prefix argument to this command. See also the variables `idlwave-keyword-completion-adds-equal' and `idlwave-function-completion-adds-paren'. @@ -4697,6 +5096,9 @@ Possible values are: 8 <=> 'function-method-keyword 9 <=> 'class +As a special case, the universal argument C-u forces completion of +function names in places where the default would be a keyword. + For Lisp programmers only: When we force a keyword, optional argument MODULE can contain the module name. When we force a method or a method keyword, CLASS can specify the class." @@ -4740,8 +5142,10 @@ When we force a method or a method keyword, CLASS can specify the class." ((eq what 'procedure) ;; Complete a procedure name - (let* ((class-selector (idlwave-determine-class (nth 3 where-list) 'pro)) - (super-classes (idlwave-all-class-inherits class-selector)) + (let* ((cw-list (nth 3 where-list)) + (class-selector (idlwave-determine-class cw-list 'pro)) + (super-classes (unless (idlwave-explicit-class-listed cw-list) + (idlwave-all-class-inherits class-selector))) (isa (concat "procedure" (if class-selector "-method" ""))) (type-selector 'pro)) (setq idlwave-completion-help-info @@ -4759,8 +5163,10 @@ When we force a method or a method keyword, CLASS can specify the class." ((eq what 'function) ;; Complete a function name - (let* ((class-selector (idlwave-determine-class (nth 3 where-list) 'fun)) - (super-classes (idlwave-all-class-inherits class-selector)) + (let* ((cw-list (nth 3 where-list)) + (class-selector (idlwave-determine-class cw-list 'fun)) + (super-classes (unless (idlwave-explicit-class-listed cw-list) + (idlwave-all-class-inherits class-selector))) (isa (concat "function" (if class-selector "-method" ""))) (type-selector 'fun)) (setq idlwave-completion-help-info @@ -4776,6 +5182,10 @@ When we force a method or a method keyword, CLASS can specify the class." isa 'idlwave-attach-method-classes))) + ((and (memq what '(procedure-keyword function-keyword)) + (equal arg '(4))) + (idlwave-complete 3)) + ((eq what 'procedure-keyword) ;; Complete a procedure keyword (let* ((where (nth 3 where-list)) @@ -5104,6 +5514,14 @@ When TYPE is not specified, both procedures and functions will be considered." (setq list (cdr list))) (nreverse rtn))) +(defun idlwave-explicit-class-listed (info) + "Return whether or not the class is listed explicitly, ala a->b::c. +INFO is as returned by idlwave-what-function or -procedure." + (let ((apos (nth 3 info))) + (if apos + (save-excursion (goto-char apos) + (looking-at "->[a-zA-Z][a-zA-Z0-9$_]*::"))))) + (defun idlwave-determine-class (info type) ;; Determine the class of a routine call. INFO is the structure returned ;; `idlwave-what-function' or `idlwave-what-procedure'. @@ -5187,14 +5605,15 @@ When TYPE is not specified, both procedures and functions will be considered." ))) (defun idlwave-where () - "Find out where we are. + "Find out where we are. The return value is a list with the following stuff: -(PRO-LIST FUNC-LIST COMPLETE-WHAT CW-LIST LAST-CHAR) +\(PRO-LIST FUNC-LIST COMPLETE-WHAT CW-LIST LAST-CHAR) PRO-LIST (PRO POINT CLASS ARROW) FUNC-LIST (FUNC POINT CLASS ARROW) COMPLETE-WHAT a symbol indicating what kind of completion makes sense here -CW-LIST Like PRO-LIST, for what can be copmpleted here. +CW-LIST (PRO-OR-FUNC POINT CLASS ARROW) Like PRO-LIST, for what can + be completed here. LAST-CHAR last relevant character before point (non-white non-comment, not part of current identifier or leading slash). @@ -5203,9 +5622,9 @@ PRO: Procedure name FUNC: Function name POINT: Where is this CLASS: What class has the routine (nil=no, t=is method, but class unknown) -ARROW: Where is the arrow?" +ARROW: Location of the arrow" (idlwave-routines) - (let* (;(bos (save-excursion (idlwave-beginning-of-statement) (point))) + (let* (;(bos (save-excursion (idlwave-beginning-of-statement) (point))) (bos (save-excursion (idlwave-start-of-substatement 'pre) (point))) (func-entry (idlwave-what-function bos)) (func (car func-entry)) @@ -5261,8 +5680,8 @@ ARROW: Where is the arrow?" (if (re-search-backward "->[ \t]*\\(\\([$a-zA-Z0-9_]+\\)::\\)?[$a-zA-Z0-9_]*\\=" bos t) (setq cw-arrow (match-beginning 0) cw-class (if (match-end 2) - (idlwave-sintern-class (match-string 2)) - t)))))) + (idlwave-sintern-class (match-string 2)) + t)))))) (list (list pro pro-point pro-class pro-arrow) (list func func-point func-class func-arrow) cw @@ -5333,9 +5752,9 @@ ARROW: Where is the arrow?" (idlwave-start-of-substatement 'pre) (setq string (buffer-substring (point) pos)) (if (string-match - "\\`[ \t]*\\([a-zA-Z][a-zA-Z0-9$_]*\\)[ \t]*\\(,\\|\\'\\)" string) - (setq pro (match-string 1 string) - pro-point (+ (point) (match-beginning 1))) + "\\`\\(.*&\\)?[ \t]*\\([a-zA-Z][a-zA-Z0-9$_]*\\)[ \t]*\\(,\\|\\'\\)" string) + (setq pro (match-string 2 string) + pro-point (+ (point) (match-beginning 2))) (if (and (idlwave-skip-object) (setq string (buffer-substring (point) pos)) (string-match @@ -5404,7 +5823,7 @@ This function is not general, can only be used for completion stuff." ((memq (preceding-char) '(?\; ?\$)) (throw 'exit nil)) ((eq (preceding-char) ?\n) (beginning-of-line 0) - (if (looking-at "\\([^;]\\)*\\$[ \t]*\\(;.*\\)?\n") + (if (looking-at "\\([^;\n]*\\)\\$[ \t]*\\(;[^\n]*\\)?\n") ;; continuation line (goto-char (match-end 1)) (throw 'exit nil))) @@ -5592,6 +6011,93 @@ Show PROMPT in echo area. TYPE is one of 'function, 'procedure or 'keyword." ;;---------------------------------------------------------------------- ;;---------------------------------------------------------------------- ;;---------------------------------------------------------------------- +(defvar rtn) +(defun idlwave-pset (item) + (set 'rtn item)) + +(defun idlwave-popup-select (ev list title &optional sort) + "Select an item in LIST with a popup menu. +TITLE is the title to put atop the popup. If SORT is non-nil, +sort the list before displaying" + (let ((maxpopup idlwave-max-popup-menu-items) + rtn menu resp) + (cond ((null list)) + ((= 1 (length list)) + (setq rtn (car list))) + ((featurep 'xemacs) + (if sort (setq list (sort list (lambda (a b) + (string< (upcase a) (upcase b)))))) + (setq menu + (append (list title) + (mapcar (lambda (x) (vector x (list 'idlwave-pset + x))) + list))) + (setq menu (idlwave-split-menu-xemacs menu maxpopup)) + (setq resp (get-popup-menu-response menu)) + (funcall (event-function resp) (event-object resp))) + (t + (if sort (setq list (sort list (lambda (a b) + (string< (upcase a) (upcase b)))))) + (setq menu (cons title + (list + (append (list "") + (mapcar (lambda(x) (cons x x)) list))))) + (setq menu (idlwave-split-menu-emacs menu maxpopup)) + (setq rtn (x-popup-menu ev menu)))) + rtn)) + +(defun idlwave-split-menu-xemacs (menu N) + "Split the MENU into submenus of maximum length N." + (if (<= (length menu) (1+ N)) + ;; No splitting needed + menu + (let* ((title (car menu)) + (entries (cdr menu)) + (menu (list title)) + (cnt 0) + (nextmenu nil)) + (while entries + (while (and entries (< cnt N)) + (setq cnt (1+ cnt) + nextmenu (cons (car entries) nextmenu) + entries (cdr entries))) + (setq nextmenu (nreverse nextmenu)) + (setq nextmenu (cons (format "%s...%s" + (aref (car nextmenu) 0) + (aref (nth (1- cnt) nextmenu) 0)) + nextmenu)) + (setq menu (cons nextmenu menu) + nextmenu nil + cnt 0)) + (nreverse menu)))) + +(defun idlwave-split-menu-emacs (menu N) + "Split the MENU into submenus of maximum length N." + (if (<= (length (nth 1 menu)) (1+ N)) + ;; No splitting needed + menu + (let* ((title (car menu)) + (entries (cdr (nth 1 menu))) + (menu nil) + (cnt 0) + (nextmenu nil)) + (while entries + (while (and entries (< cnt N)) + (setq cnt (1+ cnt) + nextmenu (cons (car entries) nextmenu) + entries (cdr entries))) + (setq nextmenu (nreverse nextmenu)) + (prin1 nextmenu) + (setq nextmenu (cons (format "%s...%s" + (car (car nextmenu)) + (car (nth (1- cnt) nextmenu))) + nextmenu)) + (setq menu (cons nextmenu menu) + nextmenu nil + cnt 0)) + (setq menu (nreverse menu)) + (setq menu (cons title menu)) + menu))) (defvar idlwave-completion-setup-hook nil) @@ -5791,6 +6297,15 @@ Point is expected just before the opening `{' of the struct definition." (goto-char (match-end 0))) (nreverse names)))) +(defun idlwave-in-structure () + "Return t if point is inside an IDL structure." + (let ((beg (point))) + (save-excursion + (if (not (or (idlwave-in-comment) (idlwave-in-quote))) + (if (idlwave-find-structure-definition nil nil 'back) + (let ((borders (idlwave-struct-borders))) + (or (= (car borders) (cdr borders)) ;; struct not yet closed... + (and (> beg (car borders)) (< beg (cdr borders)))))))))) (defun idlwave-struct-borders () "Return the borders of the {...} after point as a cons cell." @@ -5803,12 +6318,12 @@ Point is expected just before the opening `{' of the struct definition." (cons beg (point))))) (defun idlwave-find-structure-definition (&optional var name bound) - "Search forward for a structure definition. + "Search forward for a structure definition. If VAR is non-nil, search for a structure assigned to variable VAR. -If NAME is non-nil, search for a named structure NAME. -If BOUND is an integer, limit the search. -If BOUND is the symbol `all', we search first back and then forward -through the entire file." +If NAME is non-nil, search for a named structure NAME. If BOUND is an +integer, limit the search. If BOUND is the symbol `all', we search +first back and then forward through the entire file. If BOUND is the +symbol `back' we search only backward." (let* ((ws "[ \t]*\\(\\$.*\n[ \t]*\\)?") (case-fold-search t) (lim (if (integerp bound) bound nil)) @@ -5818,9 +6333,9 @@ through the entire file." "\\(\\)") "=" ws "\\({\\)" (if name (concat ws "\\<" (downcase name) "[^a-zA-Z0-9_$]") "")))) - (if (or (and (eq bound 'all) + (if (or (and (or (eq bound 'all) (eq bound 'back)) (re-search-backward re nil t)) - (re-search-forward re lim t)) + (and (not (eq bound 'back)) (re-search-forward re lim t))) (goto-char (match-beginning 3))))) (defvar idlwave-class-info nil) @@ -5902,7 +6417,7 @@ through the entire file." (defun idlwave-all-class-inherits (class) "Return a list of all superclasses of CLASS (recursively expanded). -The list is cashed in `idlwave-class-info' for faster access." +The list is cached in `idlwave-class-info' for faster access." (cond ((not idlwave-support-inheritance) nil) ((eq class nil) nil) @@ -6177,7 +6692,6 @@ Works for system routines and keywords only." ;; work. (setq this-command last-command) (idlwave-do-mouse-completion-help ev)) - (defvar idlwave-help-is-loaded nil "Is online help avaiable?") @@ -6489,12 +7003,11 @@ keyword region, change to the appropriate Init method." (defun idlwave-fix-keywords (name type class keywords) ;; This fixes the list of keywords. - (let ((case-fold-search t) - name1 type1) + (let ((case-fold-search t)) ;; If this is the OBJ_NEW function, try to figure out the class and use ;; the keywords from the corresponding INIT method. - (if (and (equal name "OBJ_NEW") + (if (and (equal (upcase name) "OBJ_NEW") (or (eq major-mode 'idlwave-mode) (eq major-mode 'idlwave-shell-mode))) (let* ((bos (save-excursion (idlwave-beginning-of-statement) (point))) @@ -6516,32 +7029,36 @@ keyword region, change to the appropriate Init method." ;; If the class is `t', combine all keywords of all methods NAME (when (eq class t) (loop for x in (idlwave-routines) do - (and (nth 2 x) ; non-nil class - (or (and (eq (nth 1 x) type) ; default type - (eq (car x) name)) ; default name - (and (eq (nth 1 x) type1) ; backup type - (eq (car x) name1))) ; backup name - (mapcar (lambda (k) (add-to-list 'keywords k)) - (nth 5 x)))) + (and (nth 2 x) ; non-nil class + (eq (nth 1 x) type) ; correct type + (eq (car x) name) ; correct name + (mapcar (lambda (k) (add-to-list 'keywords k)) + (nth 5 x)))) + (setq keywords (idlwave-uniquify keywords))) + + ;; If we have inheritance, add all keywords from superclasses, if + ;; the user indicated that method in + ;; `idlwave-keyword-class-inheritance' + (when (and + idlwave-keyword-class-inheritance + (stringp class) + (or (assq (idlwave-sintern-keyword "_extra") keywords) + (assq (idlwave-sintern-keyword "_ref_extra") keywords)) + (boundp 'super-classes) + ;; Check if one of the keyword-class regexps matches the name + (let ((regexps idlwave-keyword-class-inheritance) re) + (catch 'exit + (while (setq re (pop regexps)) + (if (string-match re name) (throw 'exit t)))))) + (loop for x in (idlwave-routines) do + (and (nth 2 x) ; non-nil class + (or (eq (nth 2 x) class) ; the right class + (memq (nth 2 x) super-classes)) ; an inherited class + (eq (nth 1 x) type) ; correct type + (eq (car x) name) ; correct name + (mapcar (lambda (k) (add-to-list 'keywords k)) + (nth 5 x)))) (setq keywords (idlwave-uniquify keywords))) - - ;; If we have inheritance, add all keywords from superclasses - ;; :-( Taken out because JD says it does not work this way. -; (when (and (stringp class) -; (or (assq (idlwave-sintern-keyword "_extra") keywords) -; (assq (idlwave-sintern-keyword "_ref_extra") keywords)) -; (boundp 'super-classes)) -; (loop for x in (idlwave-routines) do -; (and (nth 2 x) ; non-nil class -; (or (eq (nth 2 x) class) ; the right class -; (memq (nth 2 x) super-classes)) ; an inherited class -; (or (and (eq (nth 1 x) type) ; default type -; (eq (car x) name)) ; default name -; (and (eq (nth 1 x) type1) ; backup type -; (eq (car x) name1))) ; backup name -; (mapcar (lambda (k) (add-to-list 'keywords k)) -; (nth 5 x)))) -; (setq keywords (idlwave-uniquify keywords))) ;; Return the final list keywords)) @@ -7025,7 +7542,7 @@ command can be used to detect possible name clashes during this process." (if (memq routine done) (setq dtwins nil) (setq dtwins (idlwave-study-twins twins))) - ;; Mark all twins as delt with + ;; Mark all twins as dealt with (setq done (append twins done)) (when (or (> (length dtwins) 1) (> (idlwave-count-eq 'lib (nth 2 (car dtwins))) 1) @@ -7426,9 +7943,11 @@ Assumes that point is at the beginning of the unit as found by ["Update Routine Info" idlwave-update-routine-info t] "--" "IDL Library Catalog" - ["Select Catalog Directories" idlwave-create-libinfo-file t] + ["Select Catalog Directories" (idlwave-create-libinfo-file nil) t] ["Scan Directories" (idlwave-update-routine-info '(16)) - idlwave-path-alist] + (and idlwave-path-alist (not idlwave-catalog-process))] + ["Scan Directories &" (idlwave-update-routine-info '(64)) + (and idlwave-path-alist (not idlwave-catalog-process))] "--" "Routine Shadows" ["Check Current Buffer" idlwave-list-buffer-load-path-shadows t] @@ -7589,11 +8108,18 @@ This function was written since `list-abbrevs' looks terrible for IDLWAVE mode." (set-buffer "*Help*") (setq truncate-lines t))) +;; Add .pro files to speedbar for support, if it's loaded +(eval-after-load "speedbar" '(speedbar-add-supported-extension ".pro")) + ;; Try to load online help, but catch any errors. (condition-case nil (idlwave-require-online-help) (error nil)) +;; Set an idle timer to load the routine info. +;; Will only work on systems which support this. +(or idlwave-routines (idlwave-start-load-rinfo-timer)) + ;; Run the hook (run-hooks 'idlwave-load-hook)