Server IP : 111.118.215.189 / Your IP : 18.117.158.174 Web Server : Apache System : Linux md-in-83.webhostbox.net 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64 User : a1673wkz ( 2475) PHP Version : 8.2.25 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0755) : /usr/share/emacs/24.3/lisp/progmodes/ |
[ Home ] | [ C0mmand ] | [ Upload File ] |
---|
;ELC ;;; Compiled by mockbuild@buildfarm06-new.corp.cloudlinux.com on Fri Oct 11 10:09:26 2024 ;;; from file /builddir/build/BUILD/emacs-24.3/lisp/progmodes/idlwave.el ;;; in Emacs version 24.3.1 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301!\210\302\303!\204 \304\303\305\"\210\302\306!\204 \304\306\307\"\210\302\310!\204% \304\310\311\"\210\302\312!\2040 \304\312\313\"\210\302\314!\204; \315\316\317\217\210\320\321\315\322\323\324\325\326\325\327\325\330\325\331\332\333\334\335&\210\320\336\315\337\334\321%\210\340\341\342\343\334\336\344\345&\210\340\346\347\350\334\336\344\345&\210\340\351\352\353\334\336\344\345&\210\340\354\347\355\334\336\344\345&\210\340\356\357\360\334\336\344\345&\210\340\361\362\363\334\336\344\364&\210\340\365\315\366\334\336\344\364&\210\340\367\362\370\334\336\344\364&\210\340\371\372\373\334\336\344\374&\210\340\375\315\376\334\336\344\364&\210\340\377\362\201@ \334\336\344\364&\210\340\201A \362\201B \334\336\344\364&\210\340\201C \362\201D \334\336\344\364&\210\340\201E \201F \201G \334\336\344\201H &\210\340\201I \315\201J \334\336\344\201K &\210\340\201L \201M \201N \334\336\344\374&\210\320\201O \315\201P \334\321%\210\340\201Q \362\201R \334\201O \344\364&\210\340\201S \201T \201U \334\201O \344\201V &\210\340\201W \362\201X \334\201O \344\201Y &\210\340\201Z \362\201[ \334\201O \344\364&\210\340\201\\ \201] \201^ \334\201O \344\201_ &\210\340\201` \201a \201b \334\201O \344\345&\210\340\201c \315\201d \334\201O \344\201e &\210\340\201f \201g \201h \334\201O \344\201i &\210\340\201j \201k \201l \334\201O \344\201m &\207" [require idlw-help fboundp line-beginning-position defalias point-at-bol line-end-position point-at-eol char-valid-p characterp match-string-no-properties match-string cancel-timer nil (byte-code "\300\301!\207" [require timer] 2) ((error)) custom-declare-group idlwave "Major mode for editing IDL .pro files." :tag "IDLWAVE" :link (url-link :tag "Home Page" "http://idlwave.org") (emacs-commentary-link :tag "Commentary in idlw-shell.el" "idlw-shell.el") (emacs-commentary-link :tag "Commentary in idlwave.el" "idlwave.el") (custom-manual "(idlwave)Top") :prefix "idlwave" :group languages idlwave-code-formatting "Indentation and formatting options for IDLWAVE mode." custom-declare-variable idlwave-main-block-indent 2 "Extra indentation for the main block of code.\nThat is the block between the FUNCTION/PRO statement and the END\nstatement for that program unit." :type integer idlwave-block-indent 3 "Extra indentation applied to block lines.\nIf you change this, you probably also want to change `idlwave-end-offset'." idlwave-end-offset -3 "Extra indentation applied to block END lines.\nA value equal to negative `idlwave-block-indent' will make END lines\nline up with the block BEGIN lines." idlwave-continuation-indent "Extra indentation applied to continuation lines.\nThis extra offset applies to the first of a set of continuation lines.\nThe following lines receive the same indentation as the first." idlwave-max-extra-continuation-indent 40 "Maximum additional indentation for special continuation indent.\nSeveral special indentations are tried to help line up continuation\nlines in routine calls or definitions, other statements with\nparentheses, or assignment statements. This variable specifies a\nmaximum amount by which this special indentation can exceed the\nstandard continuation indentation, otherwise defaulting to a fixed\noffset. Set to 0 to effectively disable all special continuation\nindentation, or to a large number (like 100) to enable it in all\ncases. See also `idlwave-indent-to-open-paren', which can override\nthis variable." idlwave-indent-to-open-paren t "Non-nil means, indent continuation lines to innermost open parenthesis.\nThis indentation occurs even if otherwise disallowed by\n`idlwave-max-extra-continuation-indent'. Matching parens and the\ninterleaving args are lined up. Example:\n\n x = function_a(function_b(function_c( a, b, [1,2,3, $\n 4,5,6 $\n ], $\n c, d $\n )))\n\nWhen this variable is nil, paren alignment may still occur, based on\nthe value of `idlwave-max-extra-continuation-indent', which, if zero,\nwould yield:\n\n x = function_a(function_b(function_c( a, b, [1,2,3, $\n 4,5,6 $\n ], $\n c, d $\n )))" boolean idlwave-indent-parens-nested "Non-nil means, indent continuation lines with parens by nesting\nlines at consecutively deeper levels." idlwave-hanging-indent "If set non-nil then comment paragraphs are indented under the\nhanging indent given by `idlwave-hang-indent-regexp' match in the first line\nof the paragraph." idlwave-hang-indent-regexp "- " "Regular expression matching the position of the hanging indent\nin the first line of a comment paragraph. The size of the indent\nextends to the end of the match for the regular expression." regexp idlwave-use-last-hang-indent "If non-nil then use last match on line for `idlwave-indent-regexp'." idlwave-fill-comment-line-only "If non-nil then auto fill will only operate on comment lines." idlwave-auto-fill-split-string "If non-nil then auto fill will split strings with the IDL `+' operator.\nWhen the line end falls within a string, string concatenation with the\n'+' operator will be used to distribute a long string over lines.\nIf nil and a string is split then a terminal beep and warning are issued.\n\nThis variable is ignored when `idlwave-fill-comment-line-only' is\nnon-nil, since in this case code is not auto-filled." idlwave-split-line-string "If non-nil then `idlwave-split-line' will split strings with `+'.\nWhen the splitting point of a line falls inside a string, split the string\nusing the `+' string concatenation operator. If nil and a string is\nsplit then a terminal beep and warning are issued." idlwave-no-change-comment ";;;" "The indentation of a comment that starts with this regular\nexpression will not be changed. Note that the indentation of a comment\nat the beginning of a line is never changed." string idlwave-begin-line-comment "A comment anchored at the beginning of line.\nA comment matching this regular expression will not have its\nindentation changed. If nil the default is \"^;\", i.e., any line\nbeginning with a \";\". Expressions for comments at the beginning of\nthe line should begin with \"^\"." (choice (const :tag "Any line beginning with `;'" nil) 'regexp) idlwave-code-comment ";;[^;]" "A comment that starts with this regular expression on a line by\nitself is indented as if it is a part of IDL code. As a result if\nthe comment is not preceded by whitespace it is unchanged." idlwave-routine-info "Routine Info options for IDLWAVE mode." idlwave-use-library-catalogs "Non-nil means search the IDL path for library catalog files.\n\nThese files, named .idlwave_catalog, document routine information for\nindividual directories and libraries of IDL .pro files. Many popular\nlibraries come with catalog files by default, so leaving this on is\nusually a good idea." idlwave-init-rinfo-when-idle-after 10 "Seconds of idle time before routine info is automatically initialized.\nInitializing the routine info can take a long time, in particular if a\nlarge number of library catalogs are involved. When Emacs is idle for\nmore than the number of seconds specified by this variable, it starts\nthe initialization. The process is split into five steps, in order to\nkeep work interruption as short as possible. If one of the steps\nfinishes, and no user input has arrived in the mean time, initialization\nproceeds immediately to the next step. A good value for this variable\nis about 1/3 of the time initialization take in your setup. So if you\nhave a fast machine and no problems with a slow network connection,\ndon't hesitate to set this to 2 seconds. A value of 0 means, don't\ninitialize automatically, but instead wait until routine information is\nneeded, and initialize then." number idlwave-scan-all-buffers-for-routine-info "Non-nil means, scan buffers for IDL programs when updating info.\nThe scanning is done by the command `idlwave-update-routine-info'.\nThe following values are allowed:\n\nnil Don't scan any buffers.\nt Scan all `idlwave-mode' buffers in the current editing session.\ncurrent Scan only the current buffer, but no other buffers." (choice (const :tag "No buffer" nil) (const :tag "All buffers" t) (const :tag "Current buffer only" 'current)) idlwave-query-shell-for-routine-info "Non-nil means query the shell for info about compiled routines.\nQuerying the shell is useful to get information about compiled modules,\nand it is turned on by default. However, when you have a complete library\nscan, this is not necessary." idlwave-auto-routine-info-updates '(find-file save-buffer kill-buffer compile-buffer) "Controls under what circumstances routine info is updated automatically.\nPossible values:\nnil Never\nt All available\n(...) A list of circumstances. Allowed members are:\n find-file Add info for new IDLWAVE buffers.\n save-buffer Update buffer info when buffer is saved\n kill-buffer Remove buffer info when buffer gets killed\n compile-buffer Update shell info after `idlwave-shell-save-and...'" (choice (const :tag "Never" nil) (const :tag "As often as possible" t) (set :tag "Checklist" :greedy t (const :tag "When visiting a file" find-file) (const :tag "When saving a buffer" save-buffer) (const :tag "After a buffer was killed" kill-buffer) (const :tag "After a buffer was compiled successfully, update shell info" compile-buffer))) idlwave-rinfo-max-source-lines 5 "Maximum number of source files displayed in the Routine Info window.\nWhen an integer, it is the maximum number of source files displayed.\nA value of t means to show all source files." idlwave-library-path "Library path for Windows and MacOS (OS9). Not needed under UNIX.\nWhen selecting the directories to scan for IDL user catalog routine\ninfo, IDLWAVE can, under UNIX, query the shell for the exact search\npath (the value of !PATH). However, under Windows and MacOS\n(pre-OSX), the IDLWAVE shell does not work. In this case, this\nvariable can be set to specify the paths where IDLWAVE can find PRO\nfiles. The shell will only be asked for a list of paths when this\nvariable is nil. The value is a list of directories. A directory\npreceded by a `+' will be searched recursively. If you set this\nvariable on a UNIX system, the shell will not be queried. See also\n`idlwave-system-directory'." (repeat (directory)) idlwave-system-directory "" "The IDL system directory for Windows and MacOS. Not needed under\nUNIX. Set this to the value of the `!DIR' system variable in IDL.\nIDLWAVE uses this to find out which of the library routines belong to\nthe official system library. All files inside the `lib' subdirectory\nare considered system library files - so don't install private stuff\nin this directory. On UNIX systems, IDLWAVE queries the shell for the\nvalue of `!DIR'. See also `idlwave-library-path'." directory idlwave-config-directory (convert-standard-filename "~/.idlwave") "Directory for configuration files and user-library catalog." file] 18) (defvar idlwave-user-catalog-file "idlusercat.el") (defvar idlwave-xml-system-rinfo-converted-file "idl_xml_rinfo.el") (defvar idlwave-path-file "idlpath.el") (byte-code "\300\301\302\303\304\305\306\307&\210\300\310\311\312\304\305\306\313&\210\314\315\302\316\317\320\304\321&\207" [custom-declare-variable idlwave-special-lib-alist nil "Alist of regular expressions matching special library directories.\nWhen listing routine source locations, IDLWAVE gives a short hint where\nthe file defining the routine is located. By default it lists `SystemLib'\nfor routines in the system library `!DIR/lib' and `Library' for anything\nelse. This variable can define additional types. The car of each entry\nis a regular expression matching the file name (they normally will match\non the path). The cdr is the string to be used as identifier. Max 10\nchars are allowed." :group idlwave-routine-info :type (repeat (cons regexp string)) idlwave-auto-write-paths t "Write out path (!PATH) and system directory (!DIR) info automatically.\nPath info is needed to locate library catalog files. If non-nil,\nwhenever the path-list changes as a result of shell-query, etc., it is\nwritten to file. Otherwise, the menu option \"Write Paths\" can be\nused to force a write." boolean custom-declare-group idlwave-completion "Completion options for IDLWAVE mode." :prefix "idlwave" idlwave] 8) (defconst idlwave-tmp '(choice :tag "by applying the function" (const upcase) (const downcase) (const capitalize) (const preserve) (symbol :tag "Other"))) (byte-code "\301\302\303\304\305\306\307\310\311\312ED&\210\301\313\314\315\305\306\307\316&\210\301\317\314\320\305\306\307\316&\210\301\321\314\322\305\306\307\316&\210\301\323\324\325\305\306\307\316&\210\301\326\324\327\305\330\307\316&\210\301\331\332\333\305\330\307\334&\210\301\335\336\337\305\306\307\340&\210\301\341\324\342\305\306\307\316&\210\301\343\344\345\305\306\307\346&\210\301\347\324\350\305\306\307\316&\210\301\351\352\353\305\306\307\354&\210\301\355\324\356\305\306\307\316&\210\301\357\324\360\305\306\307\316&\210\301\361\324\362\305\306\307\363&\210\301\364\324\365\305\306\307\316&\210\366\367\314\370\305\371%\210\301\372\314\373\305\367\307\316&\210\301\374\375\376\305\367\307\377&\210\301\201@ \314\201A \305\367\307\316&\210\301\201B \324\201C \305\367\307\201D &\210\301\201E \324\201F \305\367\307\316&\210\301\201G \314\201H \305\367\307\316&\210\301\201I \324\201J \305\367\307\316&\210\301\201K \324\201L \305\367\307\316&\210\301\201M \314\201N \305\367\307\316&\210\301\201O \314\201P \305\367\307\316&\207" [idlwave-tmp custom-declare-variable idlwave-completion-case '((routine . upcase) (keyword . upcase) (class . preserve) (method . preserve)) "Association list setting the case of completed words.\n\nThis variable determines the case (UPPER/lower/Capitalized...) of\nwords inserted into the buffer by completion. The preferred case can\nbe specified separately for routine names, keywords, classes and\nmethods.\nThis alist should therefore have entries for `routine' (normal\nfunctions and procedures, i.e. non-methods), `keyword', `class', and\n`method'. Plausible values are\n\nupcase upcase whole word, like `BOX_CURSOR'\ndowncase downcase whole word, like `read_ppm'\ncapitalize capitalize each part, like `Widget_Control'\npreserve preserve case as is, like `IDLgrView'\n\nThe value can also be any Emacs Lisp function which transforms the\ncase of characters in a string.\n\nA value of `preserve' means that the case of the completed word is\nidentical to the way it was written in the definition statement of the\nroutine. This was implemented to allow for mixed-case completion, in\nparticular of object classes and methods.\nIf a completable word is defined in multiple locations, the meaning of\n`preserve' is not unique since the different definitions might be\ncased differently. Therefore IDLWAVE always takes the case of the\n*first* definition it encounters during routine info collection and\nuses the case derived from it consistently.\n\nNote that a lowercase-only string in the buffer will always be completed in\nlower case (but see the variable `idlwave-completion-force-default-case').\n\nAfter changing this variable, you need to either restart Emacs or press\n`C-u C-c C-i' to update the internal lists." :group idlwave-completion :type repeat cons (symbol :tag "Derive completion case for") idlwave-completion-force-default-case nil "Non-nil means, completion will always honor `idlwave-completion-case'.\nWhen nil, only the completion of a mixed case or upper case string\nwill honor the default settings in `idlwave-completion-case', while\nthe completion of lower case strings will be completed entirely in\nlower case." boolean idlwave-complete-empty-string-as-lower-case "Non-nil means, the empty string is considered downcase for completion.\nThe case of what is already in the buffer determines the case of completions.\nWhen this variable is non-nil, the empty string is considered to be downcase.\nCompleting on the empty string then offers downcase versions of the possible\ncompletions." idlwave-buffer-case-takes-precedence "Non-nil means, the case of tokens in buffers dominates over system stuff.\nTo make this possible, we need to re-case everything each time we update\nthe routine info from the buffers. This is slow.\nThe default is to consider the case given in the system and library files\nfirst which makes updating much faster." idlwave-highlight-help-links-in-completion t "Non-nil means, highlight completions for which system help is available.\nHelp can then be accessed with mouse-3.\nThis option is only effective when the online help system is installed." idlwave-support-inheritance "Non-nil means, treat inheritance with completion, online help etc.\nWhen nil, IDLWAVE only knows about the native methods and tags of a class,\nnot about inherited ones." idlwave-routine-info idlwave-keyword-class-inheritance '("^[gs]etproperty$" "^init$") "List of regular expressions for class-driven keyword inheritance.\nKeyword inheritance is often tied to class inheritance by \"chaining\"\nup the class tree. While it cannot be assumed that the presence of an\n_EXTRA or _REF_EXTRA symbol guarantees such chaining will occur, for\ncertain methods this assumption is almost always true. The methods\nfor which to assume this can be set here." (repeat (regexp :tag "Match method:")) idlwave-completion-show-classes 1 "Number of classes to show when completing object methods and keywords.\nWhen completing methods or keywords for an object with unknown class,\nthe *Completions* buffer will show the valid classes for each completion\nlike this:\n\nMyMethod <Class1,Class2,Class3>\n\nThe value of this variable may be nil to inhibit display, or an integer to\nindicate the maximum number of classes to display.\n\nOn XEmacs, a full list of classes will also be placed into a `help-echo'\nproperty on the completion items, so that the list of classes for the current\nitem is displayed in the echo area. If the value of this variable is a\nnegative integer, the `help-echo' property will be suppressed." (choice (const :tag "Don't show" nil) (integer :tag "Number of classes shown" 1)) idlwave-completion-fontify-classes "Non-nil means, fontify the classes in completions buffer.\nThis makes it easier to distinguish the completion items from the extra\nclass info listed. See `idlwave-completion-show-classes'." idlwave-query-class '((method-default) (keyword-default)) "Association list governing specification of object classes for completion.\n\nWhen IDLWAVE tries to complete object-oriented methods, it usually\ncannot determine the class of a given object from context. In order\nto provide the user with a correct list of methods or keywords, it\nneeds to determine the appropriate class. IDLWAVE has two ways of\ndoing this (well, three ways if you count the shell... see\n`idlwave-shell-query-for-class'):\n\n1. Combine the items of all available classes which contain this\n method for the purpose of completion. So when completing a method,\n all methods of all known classes are available, and when completing\n a keyword, all keywords allowed for this method in any class are\n shown. This behavior is very much like normal completion and is\n therefore the default. It works much better than one might think -\n only for the INIT, GETPROPERTY and SETPROPERTY the keyword lists\n become uncomfortably long. See also\n `idlwave-completion-show-classes'.\n\n2. The second possibility is to ask the user on each occasion. To\n make this less interruptive, IDLWAVE can store the class as a text\n property on the object operator `->'. For a given object in the\n source code, class selection will then be needed only once\n - for example to complete the method. Keywords to the method can\n then be completed directly, because the class is already known.\n You will have to turn on the storage of the selected class\n explicitly with the variable `idlwave-store-inquired-class'.\n\nThis variable allows you to configure IDLWAVE's method and\nmethod-keyword completion behavior. Its value is an alist, which\nshould contain at least two elements: (method-default . VALUE) and\n(keyword-default . VALUE), where VALUE is either t or nil. These\nspecify if the class should be found during method and keyword\ncompletion, respectively.\n\nThe alist may have additional entries specifying exceptions from the\nkeyword completion rule for specific methods, like INIT or\nGETPROPERTY. In order to turn on class specification for the INIT\nmethod, add an entry (\"INIT\" . t). The method name must be ALL-CAPS." (list (cons (const method-default) (boolean :tag "Determine class when completing METHODS ")) (cons (const keyword-default) (boolean :tag "Determine class when completing KEYWORDS ")) (repeat :tag "Exceptions to defaults" :inline t (cons (string :tag "MODULE" :value "") (boolean :tag "Determine class for this method")))) idlwave-store-inquired-class "Non-nil means, store class of a method call as text property on `->'.\nIDLWAVE sometimes has to ask the user for the class associated with a\nparticular object method call. This happens during the commands\n`idlwave-routine-info' and `idlwave-complete', depending upon the\nvalue of the variable `idlwave-query-class'.\n\nWhen you specify a class, this information can be stored as a text\nproperty on the `->' arrow in the source code, so that during the same\nediting session, IDLWAVE will not have to ask again. When this\nvariable is non-nil, IDLWAVE will store and reuse the class information.\nThe class stored can be checked and removed with `\\[idlwave-routine-info]'\non the arrow.\n\nThe default of this variable is nil, since the result of commands then\nis more predictable. However, if you know what you are doing, it can\nbe nice to turn this on.\n\nAn arrow which knows the class will be highlighted with\n`idlwave-class-arrow-face'. The command \\[idlwave-routine-info]\ndisplays (with prefix arg: deletes) the class stored on the arrow\nat point." idlwave-class-arrow-face 'bold "Face to highlight object operator arrows `->' which carry a class property.\nWhen IDLWAVE stores a class name as text property on an object arrow\n(see variable `idlwave-store-inquired-class', it highlights the arrow\nwith this font in order to remind the user that this arrow is special." symbol idlwave-resize-routine-help-window "Non-nil means, resize the Routine-info *Help* window to fit the content." idlwave-keyword-completion-adds-equal "Non-nil means, completion automatically adds `=' after completed keywords." idlwave-function-completion-adds-paren "Non-nil means, completion automatically adds `(' after completed function.\nnil means, don't add anything.\nA value of `2' means, also add the closing parenthesis and position cursor\nbetween the two." (choice (const :tag "Nothing" nil) (const :tag "(" t) (const :tag "()" 2)) idlwave-completion-restore-window-configuration "Non-nil means, try to restore the window configuration after completion.\nWhen completion is not unique, Emacs displays a list of completions.\nThis messes up your window configuration. With this variable set, IDLWAVE\nrestores the old configuration after successful completion." custom-declare-group idlwave-abbrev-and-indent-action "IDLWAVE performs actions when expanding abbreviations or indenting lines.\nThe variables in this group govern this." idlwave idlwave-do-actions "Non-nil means performs actions when indenting.\nThe actions that can be performed are listed in `idlwave-indent-action-table'." idlwave-abbrev-start-char "\\" "A single character string used to start abbreviations in abbrev mode.\nPossible characters to chose from: ~`%\nor even '?'. '.' is not a good choice because it can make structure\nfield names act like abbrevs in certain circumstances.\n\nChanges to this in `idlwave-mode-hook' will have no effect. Instead a user\nmust set it directly using `setq' in the init file before idlwave.el\nis loaded." string idlwave-surround-by-blank "Non-nil means, enable `idlwave-surround'.\nIf non-nil, `=',`<',`>',`&',`,', `->' are surrounded with spaces by\n`idlwave-surround'.\nSee help for `idlwave-indent-action-table' for symbols using `idlwave-surround'.\n\nAlso see the default key bindings for keys using `idlwave-surround'.\nKeys are bound and made into actions calling `idlwave-surround' with\n`idlwave-action-and-binding'.\nSee help for `idlwave-action-and-binding' for examples.\n\nAlso see help for `idlwave-surround'." idlwave-pad-keyword "Non-nil means pad '=' in keywords (routine calls or defs) like assignment.\nWhenever `idlwave-surround' is non-nil then this affects how '=' is\npadded for keywords and for variables. If t, pad the same as for\nassignments. If nil then spaces are removed. With any other value,\nspaces are left unchanged." (choice (const :tag "Pad like assignments" t) (const :tag "Remove space near `='" nil) (const :tag "Keep space near `='" 'keep)) idlwave-show-block "Non-nil means point blinks to block beginning for `idlwave-show-begin'." idlwave-expand-generic-end "Non-nil means expand generic END to ENDIF/ENDELSE/ENDWHILE etc." idlwave-reindent-end "Non-nil means re-indent line after END was typed." idlwave-abbrev-move "Non-nil means the abbrev hook can move point.\nSet to nil by `idlwave-expand-region-abbrevs'. To see the abbrev\ndefinitions, use the command `list-abbrevs', for abbrevs that move\npoint. Moving point is useful, for example, to place point between\nparentheses of expanded functions.\n\nSee `idlwave-check-abbrev'." idlwave-abbrev-change-case "Non-nil means all abbrevs will be forced to either upper or lower case.\nIf the value t, all expanded abbrevs will be upper case.\nIf the value is 'down then abbrevs will be forced to lower case.\nIf nil, the case will not change.\nIf `idlwave-reserved-word-upcase' is non-nil, reserved words will always be\nupper case, regardless of this variable." idlwave-reserved-word-upcase "Non-nil means, reserved words will be made upper case via abbrev expansion.\nIf nil case of reserved words is controlled by `idlwave-abbrev-change-case'.\nHas effect only if in abbrev-mode."] 11) #@380 Associated array containing action lists of search string (car), and function as a cdr. This table is used by `idlwave-indent-line'. See documentation for `idlwave-do-action' for a complete description of the action lists. Additions to the table are made with `idlwave-action-and-binding' when a binding is not requested. See help on `idlwave-action-and-binding' for examples. (defvar idlwave-indent-action-table nil (#$ . 27047)) #@395 Associated array containing action lists of search string (car), and function as a cdr. The table is used by the `idlwave-indent-and-action' function. See documentation for `idlwave-do-action' for a complete description of the action lists. Additions to the table are made with `idlwave-action-and-binding' when a binding is requested. See help on `idlwave-action-and-binding' for examples. (defvar idlwave-indent-expand-table nil (#$ . 27487)) (custom-declare-group 'idlwave-documentation nil "Options for documenting IDLWAVE files." :group 'idlwave) #@329 A list (PATHNAME STRING) specifying the doc-header template to use for summarizing a file. If PATHNAME is non-nil then this file will be included. Otherwise STRING is used. If nil, the file summary will be omitted. For example you might set PATHNAME to the path for the lib_template.pro file included in the IDL distribution. (defvar idlwave-file-header (list nil ";+\n; NAME:\n;\n;\n;\n; PURPOSE:\n;\n;\n;\n; CATEGORY:\n;\n;\n;\n; CALLING SEQUENCE:\n;\n;\n;\n; INPUTS:\n;\n;\n;\n; OPTIONAL INPUTS:\n;\n;\n;\n; KEYWORD PARAMETERS:\n;\n;\n;\n; OUTPUTS:\n;\n;\n;\n; OPTIONAL OUTPUTS:\n;\n;\n;\n; COMMON BLOCKS:\n;\n;\n;\n; SIDE EFFECTS:\n;\n;\n;\n; RESTRICTIONS:\n;\n;\n;\n; PROCEDURE:\n;\n;\n;\n; EXAMPLE:\n;\n;\n;\n; MODIFICATION HISTORY:\n;\n;-\n") (#$ . 28049)) (byte-code "\300\301\302\303\304\305\306\307&\210\300\310\311\312\304\305\306\313&\210\300\314\315\316\304\305\306\317&\210\300\320\321\322\304\305\306\323&\210\300\324\325\326\304\305\306\323&\210\327\330\331\332\304\333%\210\300\334\335\336\304\330\306\317&\210\300\337\331\340\306\341\304\330&\210\300\342\343\344\304\330\306\317&\210\300\345\346\347\304\350\306\351&\210\300\352\331\353\304\350\306\307&\210\327\354\331\355\356\357\304\333&\210\300\360\302\361\304\354\306\307&\210\300\362\363\364\304\354\306\365&\210\300\366\331\367\304\354\306\370&\210\300\371\331\372\304\354\306\370&\207" [custom-declare-variable idlwave-header-to-beginning-of-file t "Non-nil means, the documentation header will always be at start of file.\nWhen nil, the header is positioned between the PRO/FUNCTION line of\nthe current routine and the code, allowing several routine headers in\na file." :group idlwave-documentation :type boolean idlwave-timestamp-hook 'idlwave-default-insert-timestamp "The hook function used to update the timestamp of a function." function idlwave-doc-modifications-keyword "HISTORY" "The modifications keyword to use with the log documentation commands.\nA ':' is added to the keyword end.\nInserted by doc-header and used to position logs by doc-modification.\nIf nil it will not be inserted." string idlwave-doclib-start "^;+\\+" "Regexp matching the start of a document library header." regexp idlwave-doclib-end "^;+-" "Regexp matching the end of a document library header." custom-declare-group idlwave-external-programs nil "Path locations of external commands used by IDLWAVE." idlwave idlwave-shell-explicit-file-name "idl" "If non-nil, this is the command to run IDL.\nShould be an absolute file path or path relative to the current environment\nexecution search path. If you want to specify command line switches\nfor the IDL program, use `idlwave-shell-command-line-options'.\n\nI know the name of this variable is badly chosen, but I cannot change\nit without compromising backwards-compatibility." idlwave-shell-command-line-options "A list of command line options for calling the IDL program.\nSince IDL is executed directly without going through a shell like /bin/sh,\nthis should be a list of strings like '(\"-rt=file\" \"-nw\") with a separate\nstring for each argument. But you may also give a single string which\ncontains the options whitespace-separated. Emacs will be kind enough to\nsplit it for you." (choice string (repeat (string :value ""))) idlwave-help-application "idlhelp" "The external application providing reference help for programming.\nObsolete, if the IDL Assistant is being used for help." idlwave-shell-debug-modifiers 'nil "List of modifiers to be used for the debugging commands.\nWill be used to bind debugging commands in the shell buffer and in all\nsource buffers. These are additional convenience bindings, the debugging\ncommands are always available with the `C-c C-d' prefix.\nIf you set this to '(control shift), this means setting a breakpoint will\nbe on `C-S-b', compiling a source file on `C-S-c' etc. Possible modifiers\nare `control', `meta', `super', `hyper', `alt', and `shift'." idlwave-shell-general-setup (set :tag "Specify modifiers" (const control) (const meta) (const super) (const hyper) (const alt) (const shift)) idlwave-shell-automatic-start "If non-nil attempt invoke `idlwave-shell' if not already running.\nThis is checked when an attempt to send a command to an\nIDL process is made." idlwave-misc "Miscellaneous options for IDLWAVE mode." :link (custom-group-link :tag "Font Lock Faces group" font-lock-faces) idlwave-startup-message "Non-nil displays a startup message when `idlwave-mode' is first called." idlwave-default-font-lock-items '(pros-and-functions batch-files idlwave-idl-keywords label goto common-blocks class-arrows) "Items which should be fontified on the default fontification level 2.\nIDLWAVE defines 3 levels of fontification. Level 1 is very little, level 3\nis everything and level 2 is specified by this list.\nThis variable must be set before IDLWAVE gets loaded.\nIt is a list of symbols; the following symbols are allowed:\n\npros-and-functions Procedure and Function definitions\nbatch-files Batch Files\nidlwave-idl-keywords IDL Keywords\nlabel Statement Labels\ngoto Goto Statements\ncommon-blocks Common Blocks\nkeyword-parameters Keyword Parameters in routine definitions and calls\nsystem-variables System Variables\nfixme FIXME: Warning in comments (on XEmacs only v. 21.0 and up)\nclass-arrows Object Arrows with class property" (set :inline t :greedy t (const :tag "Procedure and Function definitions" pros-and-functions) (const :tag "Batch Files" batch-files) (const :tag "IDL Keywords (reserved words)" idlwave-idl-keywords) (const :tag "Statement Labels" label) (const :tag "Goto Statements" goto) (const :tag "Tags in Structure Definition" structtag) (const :tag "Structure Name" structname) (const :tag "Common Blocks" common-blocks) (const :tag "Keyword Parameters" keyword-parameters) (const :tag "System Variables" system-variables) (const :tag "FIXME: Warning" fixme) (const :tag "Object Arrows with class property " class-arrows)) idlwave-mode-hook "Normal hook. Executed when a buffer is put into `idlwave-mode'." hook idlwave-load-hook "Normal hook. Executed when idlwave.el is loaded."] 8) #@202 Non-nil means turn on a few experimental features. This variable is only for the maintainer, to test difficult stuff, while still distributing stable releases. As a user, you should not set this to t. (defvar idlwave-experimental nil (#$ . 34256)) (defvar idlwave-idl-keywords "\\<\\(&&\\|and\\|b\\(egin\\|reak\\)\\|c\\(ase\\|o\\(mpile_opt\\|ntinue\\)\\)\\|do\\|e\\(lse\\|nd\\(case\\|else\\|for\\|if\\|rep\\|switch\\|while\\)?\\|q\\)\\|for\\(ward_function\\)?\\|g\\(oto\\|[et]\\)\\|i\\(f\\|nherits\\)\\|l[et]\\|mod\\|n\\(e\\|ot\\)\\|o\\(n_\\(error\\|ioerror\\)\\|[fr]\\)\\|re\\(peat\\|turn\\)\\|switch\\|then\\|until\\|while\\|xor\\|||\\)\\>") (byte-code "\306\307\310\311\312\313\314\315\316\317\320\321\nD!\210\322\323\324\"!\210\325\n\f \257!\210.\323\207" [pros-and-functions common-blocks batch-files fixme label goto ("\\<\\(function\\|pro\\)\\>[ ]+\\(\\sw+\\(::\\sw+\\)?\\)" (1 font-lock-keyword-face) (2 font-lock-function-name-face nil t)) ("\\<\\(common\\)\\>[ ]*\\(\\sw+\\)?[ ]*,?" (1 font-lock-keyword-face) (2 font-lock-constant-face nil t) ("[ ]*\\(\\sw+\\)[ ,]*" (goto-char (match-end 0)) nil (1 font-lock-variable-name-face))) ("^[ ]*\\(@[^ \n]+\\)" (1 font-lock-string-face)) ("\\<FIXME:" (0 font-lock-warning-face t)) ("^[ ]*\\([a-zA-Z]\\sw*:\\)" (1 font-lock-constant-face)) ("\\(goto\\)[ ]*,[ ]*\\([a-zA-Z]\\sw*\\)" (1 font-lock-keyword-face) (2 font-lock-constant-face)) ("\\<\\([a-zA-Z][a-zA-Z0-9_]*:\\)[^:]" (1 font-lock-constant-face)) ("\\({\\|\\<inherits\\s-\\)\\s-*\\([a-zA-Z][a-zA-Z0-9_]*\\)[}, \n]" (2 font-lock-function-name-face)) ("\\(,\\|[a-zA-Z0-9_](\\)[ ]*\\(\\$[ ]*\\(;.*\\)?\n\\([ ]*\\(;.*\\)?\n\\)*[ ]*\\)?\\(/[a-zA-Z_]\\sw*\\|[a-zA-Z_]\\sw*[ ]*=\\)" (6 font-lock-constant-face)) ("\\(![a-zA-Z_0-9]+\\(\\.\\sw+\\)?\\)" (1 font-lock-variable-name-face)) (idlwave-match-class-arrows (0 idlwave-class-arrow-face)) (lambda (#1=#:def-tmp-var) (defconst idlwave-font-lock-keywords-1 #1# "Subdued level highlighting for IDLWAVE mode.")) (lambda (#1#) (defconst idlwave-font-lock-keywords-2 #1# "Medium level highlighting for IDLWAVE mode.")) mapcar symbol-value (lambda (#1#) (defconst idlwave-font-lock-keywords-3 #1# "Gaudy level highlighting for IDLWAVE mode.")) structtag structname keyword-parameters system-variables class-arrows idlwave-default-font-lock-items idlwave-idl-keywords] 12) (defalias 'idlwave-match-class-arrows #[(limit) "\205 \302\303 \301#\205 \304\305\224\306\"\207" [idlwave-store-inquired-class limit re-search-forward "->" get-text-property 0 idlwave-class] 4]) #@51 Default expressions to highlight in IDLWAVE mode. (defvar idlwave-font-lock-keywords idlwave-font-lock-keywords-2 (#$ . 36835)) (defvar idlwave-font-lock-defaults '((idlwave-font-lock-keywords idlwave-font-lock-keywords-1 idlwave-font-lock-keywords-2 idlwave-font-lock-keywords-3) nil t ((36 . "w") (95 . "w") (46 . "w") (124 . "w") (38 . "w")) beginning-of-line)) (put 'idlwave-mode 'font-lock-defaults idlwave-font-lock-defaults) #@149 Regexp to match the start of a full-line comment. That is the _beginning_ of a line containing a comment delimiter `;' preceded only by whitespace. (defconst idlwave-comment-line-start-skip "^[ ]*;" (#$ . 37274)) #@119 Regular expression to find the beginning of a block. The case does not matter. The search skips matches in comments. (defconst idlwave-begin-block-reg "\\<\\(pro\\|function\\|begin\\|case\\|switch\\)\\>" (#$ . 37495)) #@79 Regular expression to find the beginning of a unit. The case does not matter. (defconst idlwave-begin-unit-reg "^\\s-*\\(pro\\|function\\)\\>\\|\\`" (#$ . 37720)) #@195 Regular expression to find the line that indicates the end of unit. This line is the end of buffer or the start of another unit. The case does not matter. The search skips matches in comments. (defconst idlwave-end-unit-reg "^\\s-*\\(pro\\|function\\)\\>\\|\\'" (#$ . 37890)) #@47 Regular expression to match a continued line. (defconst idlwave-continue-line-reg "\\<\\$" (#$ . 38173)) #@113 Regular expression to find the end of a block. The case does not matter. The search skips matches in comments. (defconst idlwave-end-block-reg "\\<end\\(\\|case\\|switch\\|else\\|for\\|if\\|rep\\|while\\)\\>" (#$ . 38285)) #@373 Matches between statements and the corresponding END variant. The cars are the reserved words starting a block. If the block really begins with BEGIN, the cars are the reserved words before the begin which can be used to identify the block type. This is used to check for the correct END type, to close blocks and to expand generic end statements to their detailed form. (defconst idlwave-block-matches '(("pro" . "end") ("function" . "end") ("case" . "endcase") ("else" . "endelse") ("for" . "endfor") ("then" . "endif") ("repeat" . "endrep") ("switch" . "endswitch") ("while" . "endwhile")) (#$ . 38516)) #@168 Regular expression matching reserved words which can stand before blocks starting with a BEGIN statement. The matches must have associations `idlwave-block-matches'. (defconst idlwave-block-match-regexp "\\<\\(else\\|for\\|then\\|repeat\\|while\\)\\>" (#$ . 39131)) #@48 Regular expression matching an IDL identifier. (defconst idlwave-identifier "[a-zA-Z_][a-zA-Z0-9$_]*" (#$ . 39404)) #@51 Regular expression matching IDL system variables. (defconst idlwave-sysvar (concat "!" idlwave-identifier) (#$ . 39526)) #@49 Regular expression matching IDL variable names. (defconst idlwave-variable (concat idlwave-identifier "\\|" idlwave-sysvar) (#$ . 39653)) #@41 Regular expression matching IDL labels. (defconst idlwave-label (concat idlwave-identifier ":") (#$ . 39797)) (defconst idlwave-method-call (concat idlwave-identifier "\\s *->" "\\(\\s *" idlwave-identifier "::\\)?")) #@799 Associated list of statement matching regular expressions. Each regular expression matches the start of an IDL statement. The first element of each association is a symbol giving the statement type. The associated value is a list. The first element of this list is a regular expression matching the start of an IDL statement for identifying the statement type. The second element of this list is a regular expression for finding a substatement for the type. The substatement starts after the end of the found match modulo whitespace. If it is nil then the statement has no substatement. The list order matters since matching an assignment statement exactly is not possible without parsing. Thus assignment statement become just the leftover unidentified statements containing an equal sign. (defconst idlwave-statement-match (byte-code "\304\305\306DB\307\310\311\312\313\314\315\316\317\320\321 \322\321\n\323\324\260\306DB\320\321\n\323\325\260\306DB\326\321 \327Q\306DB\257\207" [idlwave-end-block-reg idlwave-variable idlwave-method-call idlwave-identifier (endelse "end\\(\\|if\\)\\s +else" "end\\(\\|if\\)\\s +else") end nil (if "if\\>" "then") (for "for\\>" "do") (begin "begin\\>" nil) (pdef "pro\\>\\|function\\>" nil) (while "while\\>" "do") (repeat "repeat\\>" "repeat") (goto "goto\\>" nil) (case "case\\>" nil) (switch "switch\\>" nil) call "\\(" "\\) *= *" "\\s *\\)?" "\\s *(" "\\( *\\($\\|\\$\\)\\|\\s *,\\)" assign "\\) *="] 20) (#$ . 40022)) #@30 IDL mode auto fill function. (defvar idlwave-fill-function 'auto-fill-function (#$ . 41501)) #@35 IDL mode comment indent function. (defvar idlwave-comment-indent-function 'comment-indent-function (#$ . 41600)) #@73 Character to be inserted for IDL comment indentation. Normally a space. (defvar idlwave-comment-indent-char -1 (#$ . 41719)) #@137 Character which is inserted as a last character on previous line by \[idlwave-split-line] to begin a continuation line. Normally $. (defconst idlwave-continuation-char 36 (#$ . 41851)) (defconst idlwave-mode-version "6.1_em22") #@79 Creates a function for abbrev hooks to call `idlwave-check-abbrev' with args. (defalias 'idlwave-keyword-abbrev '(macro . #[(&rest args) "\301\302\303\304\305\"ED\207" [args quote lambda nil append (idlwave-check-abbrev)] 6 (#$ . 42089)])) #@193 Creates a function for abbrev hooks that ensures abbrevs are not quoted. Specifically, if the abbrev is in a comment or string it is unexpanded. Otherwise ARGS forms a list that is evaluated. (defalias 'idlwave-code-abbrev '(macro . #[(&rest args) "\301\302\303!\304\305\306\307!FF\207" [args lambda nil prin1-to-string if (idlwave-quoted) (progn (unexpand-abbrev) nil) append] 8 (#$ . 42337)])) #@72 Run an inferior IDL, with I/O through buffer `(idlwave-shell-buffer)'. (autoload 'idlwave-shell "idlw-shell" '(#$ . 42741) t) (autoload 'idlwave-shell-send-command "idlw-shell") #@55 Run `idlwave-shell' and switch back to current window (autoload 'idlwave-shell-recenter-shell-window "idlw-shell" '(#$ . 42925) t) #@38 Save and run buffer under the shell. (autoload 'idlwave-shell-save-and-run "idlw-shell" '(#$ . 43062) t) #@33 Set breakpoint in current line. (autoload 'idlwave-shell-break-here "idlw-shell" '(#$ . 43173) t) #@29 Compile and run the region. (autoload 'idlwave-shell-run-region "idlw-shell" '(#$ . 43277) t) (byte-code "\300\301 M\207" [idlwave-debug-map make-sparse-keymap] 2) #@26 Keymap used in IDL mode. (defvar idlwave-mode-map (byte-code "\304 \305\306\307#\210\305\310\307#\210\305\311\312#\210\305\313\312#\210\305\314\315#\210\305\316\317#\210\305\320\321#\210\305\322\323#\210\305\324\325#\210\305\326\327#\210\305\330\331#\210\305\332\333#\210\305\334\335#\210\305\336\337#\210\305\340\341#\210\305\342\343#\210\305\344\345#\210\305\346\347#\210\305\350\351#\210\305\352\353#\210\305\354\355#\210\305\356\357#\210\305\360\361#\210\305\362\363#\210\305\364\365#\210\305\366\367#\210\305\370\371#\210\305\372\373#\210 <\203 \374\232\204\303 >\375\303\376 !\"\305\377\201@ \n\203\322 \201A \202\325 \201B C\"!\201C #\210\305\377\201@ \n\203\356 \201D \202\361 \201E C\"!\201F #\210\305\377\201@ \n\203\n\201G \202 \201H C\"!\201I #\210*\305\201J \201C #\210\305\201K \201F #\210\305\201L \201I #\210\305\201M \201N #\210\305\201O \201P #\210\305\201Q \201R #\210\305\201S \201T #\210\305\201U \201V #\210\305\201W \201X #\210\305\201Y \201Z #\210\305\201[ \201\\ #\210\305\201] \201^ #\210\305\201_ \201` #\210\305\201a \201b #\210\305\201c \201d #\210\305\201e \201f #\210\305\201g \201f #\210\305\201h \201f #\210\305\201i \201j #\210\305\201k \201l #\210\305\201m \201n #\210)\207" [map idlwave-shell-debug-modifiers mods-noshift shift make-sparse-keymap define-key " " idlwave-hard-tab [(control tab)] "'" idlwave-show-matching-quote "\"" "" idlwave-keyboard-quit ";" idlwave-toggle-comment-region "\201" idlwave-beginning-of-subprogram "\205" idlwave-end-of-subprogram "{" idlwave-beginning-of-block "}" idlwave-end-of-block "]" idlwave-close-block [(meta control h)] idlwave-mark-subprogram "\216" idlwave-forward-block "\220" idlwave-backward-block "\204" idlwave-down-block "\225" idlwave-backward-up-block "\215" idlwave-split-line "\221" idlwave-indent-subprogram "" idlwave-previous-statement "" idlwave-next-statement [(shift iso-lefttab)] idlwave-indent-statement "" idlwave-auto-fill-mode "\361" idlwave-fill-paragraph "\363" idlwave-edit-in-idlde "" idlwave-doc-header " " idlwave-doc-modification "" idlwave-case "" idlwave-debug-map nil delq copy-sequence vector append 67 99 idlwave-shell-save-and-run 66 98 idlwave-shell-break-here 69 101 idlwave-shell-run-region "" "" "" "" idlwave-for "" idlwave-repeat "" idlwave-while "" idlwave-kill-autoloaded-buffers "" idlwave-shell "\f" idlwave-shell-recenter-shell-window "" idlwave-list-buffer-load-path-shadows "" idlwave-find-module "" idlwave-find-module-this-file "?" idlwave-routine-info "\277" idlwave-context-help [(control meta 63)] idlwave-help-assistant-help-with-topic [(meta tab)] idlwave-complete [27 9] "\211" " " idlwave-update-routine-info "=" idlwave-resolve [(shift mouse-3)] idlwave-mouse-context-help] 6) (#$ . 43447)) #@48 Syntax table in use in `idlwave-mode' buffers. (defvar idlwave-mode-syntax-table (byte-code "\301 \302\303\304#\210\302\305\304#\210\302\306\304#\210\302\307\304#\210\302\310\304#\210\302\311\304#\210\302\312\304#\210\302\313\304#\210\302\314\304#\210\302\315\304#\210\302\316\317#\210\302\320\317#\210\302\321\304#\210\302\322\323#\210\302\324\325#\210\302\326\327#\210\302\330\323#\210\302\331\304#\210\302\332\333#\210\302\334\335#\210\302\336\335#\210)\207" [st make-syntax-table modify-syntax-entry 43 "." 45 42 47 94 35 61 37 60 62 39 "\"" 34 92 95 "_" 123 "(}" 125 "){" 36 46 59 "<" 10 ">" 12] 4) (#$ . 46294)) #@64 Syntax table that treats symbol characters as word characters. (defvar idlwave-find-symbol-syntax-table (byte-code "\302!\303\304\305 #\210\303\306\305 #\210\303\307\305 #\210\303\310\305 #\210 )\207" [idlwave-mode-syntax-table st copy-syntax-table modify-syntax-entry 36 "w" 95 33 46] 4) (#$ . 46941)) #@45 Execute BODY with a different syntax table. (defalias 'idlwave-with-special-syntax '(macro . #[(&rest body) "\301\302\303\304\305BB\306BBE\207" [body let ((saved-syntax (syntax-table))) unwind-protect progn (set-syntax-table idlwave-find-symbol-syntax-table) ((set-syntax-table saved-syntax))] 6 (#$ . 47252)])) #@1291 KEY and CMD are made into a key binding and an indent action. KEY is a string - same as for the `define-key' function. CMD is a function of no arguments or a list to be evaluated. CMD is bound to KEY in `idlwave-mode-map' by defining an anonymous function calling `self-insert-command' followed by CMD. If KEY contains more than one character a binding will only be set if SELECT is 'both. (KEY . CMD) is also placed in the `idlwave-indent-expand-table', replacing any previous value for KEY. If a binding is not set then it will instead be placed in `idlwave-indent-action-table'. If the optional argument SELECT is nil then an action and binding are created. If SELECT is 'noaction, then a binding is always set and no action is created. If SELECT is 'both then an action and binding will both be created even if KEY contains more than one character. Otherwise, if SELECT is non-nil then only an action is created. Some examples: No spaces before and 1 after a comma (idlwave-action-and-binding "," '(idlwave-surround 0 1)) A minimum of 1 space before and after `=' (see `idlwave-expand-equal'). (idlwave-action-and-binding "=" '(idlwave-expand-equal -1 -1)) Capitalize system variables - action only (idlwave-action-and-binding idlwave-sysvar '(capitalize-word 1) t) (defalias 'idlwave-action-and-binding #[(key cmd &optional select) "\306\232\2043 \203 \307\202 \310\311\n!\312\313 !\"\211\203&