# HG changeset patch # User J.D. Smith # Date 1027018687 0 # Node ID 148f4d9a89059be9a243ff21fb16c830502057e2 # Parent 0fc136f66777af236ba84882e9093b93e9aa6888 Updated to IDLWAVE version 4.14. See idlwave.org. diff -r 0fc136f66777 -r 148f4d9a8905 lisp/progmodes/idlw-rinfo.el --- a/lisp/progmodes/idlw-rinfo.el Thu Jul 18 18:57:28 2002 +0000 +++ b/lisp/progmodes/idlw-rinfo.el Thu Jul 18 18:58:07 2002 +0000 @@ -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)) + ("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)) - ("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)) ("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)) + ("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")) - ("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)) ("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 -r 0fc136f66777 -r 148f4d9a8905 lisp/progmodes/idlw-shell.el --- a/lisp/progmodes/idlw-shell.el Thu Jul 18 18:57:28 2002 +0000 +++ b/lisp/progmodes/idlw-shell.el Thu Jul 18 18:58:07 2002 +0000 @@ -1,10 +1,11 @@ -;;; idlw-shell.el --- run IDL or WAVE as an inferior process of Emacs -;; Copyright (c) 1999, 2000 Free Software Foundation - -;; Author: Chris Chase -;; Maintainer: John-David Smith -;; Version: 4.7 -;; Date: $Date: 2002/07/09 10:47:02 $ +;; idlw-shell.el --- run IDL as an inferior process of Emacs. +;; Copyright (c) 1999, 2000, 2001 Free Software Foundation + +;; 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 @@ "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 @@ :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 @@ (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 @@ (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 @@ :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 @@ 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 @@ :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 @@ (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 @@ (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 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 @@ 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 @@ (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 @@ (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 @@ (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 @@ ;; 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 @@ (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 @@ 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 @@ \(Type \\[describe-mode] in the shell buffer for a list of commands.)" (interactive "P") - - ;; 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)) - )) + (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 + (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 @@ 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 @@ ;; 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 @@ ; (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (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 @@ 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 @@ 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 @@ (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") + (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") - (mouse-set-point event) - (idlwave-shell-print nil 'help 'mouse)) - -(defun idlwave-shell-print (arg &optional help mouse) - "Print current expression. With HELP, show help on expression. + (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. + 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 @@ (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 @@ 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 @@ (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 @@ (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 @@ (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 @@ (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 @@ 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 @@ 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 @@ (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 @@ (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 @@ (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 @@ ((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 -r 0fc136f66777 -r 148f4d9a8905 lisp/progmodes/idlw-toolbar.el --- a/lisp/progmodes/idlw-toolbar.el Thu Jul 18 18:57:28 2002 +0000 +++ b/lisp/progmodes/idlw-toolbar.el Thu Jul 18 18:58:07 2002 +0000 @@ -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 @@ "/* 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 @@ "/* 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 @@ "/* 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 @@ "/* 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 @@ "/* 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 @@ "/* XPM */ static char * file[] = { \"28 28 2 1\", -\" c #C8C8C8C8C8C8 s backgroundToolBarColor\", +\" c None s backgroundToolBarColor\", \". c #000000000000\", \" \", \" \", @@ -326,7 +330,7 @@ "/* 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 @@ "/* 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 @@ "/* 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 @@ "/* 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 @@ "/* 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 @@ "/* 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 @@ "/* XPM */ static char * file[] = { \"28 28 2 1\", -\" c #C8C8C8C8C8C8 s backgroundToolBarColor\", +\" c None s backgroundToolBarColor\", \". c #000000000000\", \" \", \" \", @@ -593,7 +597,7 @@ "/* 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 @@ "/* 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 @@ "/* 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 @@ (provide 'idlwave-toolbar) ;;; idlw-toolbar.el ends here + + diff -r 0fc136f66777 -r 148f4d9a8905 lisp/progmodes/idlwave.el --- a/lisp/progmodes/idlwave.el Thu Jul 18 18:57:28 2002 +0000 +++ b/lisp/progmodes/idlwave.el Thu Jul 18 18:58:07 2002 +0000 @@ -1,10 +1,11 @@ ;;; idlwave.el --- IDL and WAVE CL editing mode for GNU Emacs -;; Copyright (c) 1999, 2000 Free Software Foundation - -;; Author: Chris Chase -;; Maintainer: John-David Smith -;; Version: 4.7 -;; Date: $Date: 2002/02/16 12:53:42 $ +;; Copyright (c) 1999, 2000, 2001,2002 Free Software Foundation + +;; 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 @@ (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 @@ "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 @@ "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 @@ :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 @@ (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. - -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 +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 + 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 @@ 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 @@ 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 @@ ;; 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 @@ "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 @@ 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 @@ `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 @@ (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 @@ ;; 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 @@ ;;; 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 @@ 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 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 @@ 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 @@ (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 @@ '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 @@ (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 @@ (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 @@ (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 @@ (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 @@ (bolp)) (let ((idlwave-show-block nil)) (newline-and-indent))) - (insert "end") - (idlwave-show-begin)) - -(defun idlwave-surround (&optional before after escape-chars length) + (let ((last-abbrev-location (point))) ; for upcasing + (insert "end") + (idlwave-show-begin))) + +(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 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 '(?-)." - - (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)))) + the '->' operator. In this case, ESCAPE-CHARS would be '(?-). + +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 @@ ;; 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 @@ ;; 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 @@ ;; - 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 @@ (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 @@ (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 @@ (t (let ((the-indent ;; calculate indent based on previous statement (save-excursion - (cond + (cond ((idlwave-previous-statement) 0) ;; Main block @@ -2707,73 +2853,140 @@ ;; 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 @@ ((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 @@ (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 @@ ;; 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 @@ "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 @@ 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 @@ (when ask-shell ;; Ask the shell about the routines it knows. (message "Querying the shell") - (idlwave-shell-update-routine-info nil t)))))) - -(defun idlwave-load-system-rinfo () + (idlwave-shell-update-routine-info nil t))))))) + +(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 @@ (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 @@ ;; 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 @@ 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 @@ ;; 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 @@ 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 @@ 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 @@ ((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 @@ ((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 @@ 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 @@ (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 @@ ))) (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 @@ 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 @@ (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 @@ (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 @@ ((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 @@ ;;---------------------------------------------------------------------- ;;---------------------------------------------------------------------- ;;---------------------------------------------------------------------- +(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 @@ (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 @@ (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 @@ "\\(\\)") "=" 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 @@ (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 @@ ;; 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 @@ (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 @@ ;; 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 - ;; :-( 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))) + + ;; 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))) ;; Return the final list keywords)) @@ -7025,7 +7542,7 @@ (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 @@ ["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 @@ (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)