;ELC   
;;; Compiled by pot@pot.cnuce.cnr.it on Tue Mar 18 15:51:13 2003
;;; from file /home/pot/gnu/emacs-pretest.new/lisp/progmodes/icon.el
;;; in Emacs version 21.3
;;; with bytecomp version 2.85.4.1
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.
(if (and (boundp 'emacs-version)
	 (< (aref emacs-version (1- (length emacs-version))) ?A)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`icon.el' was compiled for Emacs 19.29 or later"))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


#@43 Abbrev table in use in Icon-mode buffers.
(defvar icon-mode-abbrev-table nil (#$ . 620))
(define-abbrev-table 'icon-mode-abbrev-table nil)
#@27 Keymap used in Icon mode.
(defvar icon-mode-map nil (#$ . 765))
(byte-code "\204v \302\303!\302 \304\305\306#\210\304\307\306#\210\304\310\311#\210\304\312\313#\210\304\314\315#\210\304\316\317#\210\304\320\321#\210\304\322\302\303!#\210\304\323\303	B#\210\304	\324\325#\210\304	\326\327#\210\304	\330\331#\210\304	\332\333#\210\304	\334\335#\210\336\337\340\341#\210\336\342\340\341#\210\336\343\340\341#\210)\302\207" [icon-mode-map map make-sparse-keymap "Icon" define-key "{" electric-icon-brace "}" "" mark-icon-function "" beginning-of-icon-defun "" end-of-icon-defun "" indent-icon-exp "" backward-delete-char-untabify [menu-bar] [menu-bar icon] [beginning-of-icon-defun] ("Beginning of function" . beginning-of-icon-defun) [end-of-icon-defun] ("End of function" . end-of-icon-defun) [comment-region] ("Comment Out Region" . comment-region) [indent-region] ("Indent Region" . indent-region) [indent-line] ("Indent Line" . icon-indent-command) put eval-region menu-enable mark-active comment-region indent-region] 5)
#@43 Syntax table in use in Icon-mode buffers.
(defvar icon-mode-syntax-table nil (#$ . 1815))
(byte-code "\204a \301 \302\303\304#\210\302\305\306#\210\302\307\310#\210\302\311\312#\210\302\313\312#\210\302\314\312#\210\302\315\312#\210\302\316\312#\210\302\317\312#\210\302\320\312#\210\302\321\312#\210\302\322\312#\210\302\323\312#\210\302\324\312#\210\302\325\326#\210\327\330\331\332\333\334%\207" [icon-mode-syntax-table make-syntax-table modify-syntax-entry 92 "\\" 35 "<" 10 ">" 36 "." 47 42 43 45 61 37 60 62 38 124 39 "\"" custom-declare-group icon nil "Mode for editing Icon code." :group languages] 6)
#@67 *Indentation of Icon statements with respect to containing block.
(custom-declare-variable 'icon-indent-level '4 '(#$ . -2448) :type 'integer :group 'icon)
#@79 *Imagined indentation of a Icon open brace that actually follows a statement.
(custom-declare-variable 'icon-brace-imaginary-offset '0 '(#$ . -2610) :type 'integer :group 'icon)
#@74 *Extra indentation for braces, compared with other text in same context.
(custom-declare-variable 'icon-brace-offset '0 '(#$ . -2794) :type 'integer :group 'icon)
#@59 *Extra indent for Icon lines not starting new statements.
(custom-declare-variable 'icon-continued-statement-offset '4 '(#$ . -2963) :type 'integer :group 'icon)
#@125 *Extra indent for Icon substatements that start with open-braces.
This is in addition to `icon-continued-statement-offset'.
(custom-declare-variable 'icon-continued-brace-offset '0 '(#$ . -3132) :type 'integer :group 'icon)
#@112 *Non-nil means automatically newline before and after braces Icon code.
This applies when braces are inserted.
(custom-declare-variable 'icon-auto-newline 'nil '(#$ . -3363) :type 'boolean :group 'icon)
#@168 *Non-nil means TAB in Icon mode should always reindent the current line.
It will then reindent, regardless of where in the line point is
when the TAB command is used.
(custom-declare-variable 'icon-tab-always-indent 't '(#$ . -3573) :type 'boolean :group 'icon)
#@66 Imenu expression for Icon mode.  See `imenu-generic-expression'.
(defvar icon-imenu-generic-expression '((nil "^[ 	]*procedure[ 	]+\\(\\sw+\\)[ 	]*(" 1)) (#$ . 3841))
#@1381 Major mode for editing Icon code.
Expression and list commands understand all Icon brackets.
Tab indents for Icon code.
Paragraphs are separated by blank lines only.
Delete converts tabs to spaces as it moves back.
\{icon-mode-map}
Variables controlling indentation style:
 icon-tab-always-indent
    Non-nil means TAB in Icon mode should always reindent the current line,
    regardless of where in the line point is when the TAB command is used.
 icon-auto-newline
    Non-nil means automatically newline before and after braces
    inserted in Icon code.
 icon-indent-level
    Indentation of Icon statements within surrounding block.
    The surrounding block's indentation is the indentation
    of the line on which the open-brace appears.
 icon-continued-statement-offset
    Extra indentation given to a substatement, such as the
    then-clause of an if or body of a while.
 icon-continued-brace-offset
    Extra indentation given to a brace that starts a substatement.
    This is in addition to `icon-continued-statement-offset'.
 icon-brace-offset
    Extra indentation for line if it starts with an open brace.
 icon-brace-imaginary-offset
    An open brace following other text is treated as if it were
    this far to the right of the start of its line.

Turning on Icon mode calls the value of the variable `icon-mode-hook'
with no args, if that value is non-nil.
(defalias 'icon-mode #[nil "\306 \210\307!\210\310\311\312!\210\313\314!\210\315 P\f\313\316!\210\f\313\317!\210\320\313\321!\210\322\313\323!\210\324\313\325!\210\326\313\327!\210\330\313\331!\210\332\313\317!\320L\210\333!\313\334!\210\"\310#\236\204k \335#B#\336\337!\207" [icon-mode-map major-mode mode-name icon-mode-abbrev-table local-abbrev-table icon-mode-syntax-table kill-all-local-variables use-local-map icon-mode "Icon" set-syntax-table make-local-variable paragraph-start "$\\|" paragraph-separate indent-line-function icon-indent-line require-final-newline t comment-start "# " comment-end "" comment-start-skip "# *" comment-indent-function icon-comment-indent ((icon-font-lock-keywords icon-font-lock-keywords-1 icon-font-lock-keywords-2) nil nil ((95 . "w")) beginning-of-defun (font-lock-mark-block-function . mark-defun)) imenu-generic-expression (icon-mode "\\<procedure\\>" "\\<end\\>" nil icon-forward-sexp-function) run-hooks icon-mode-hook page-delimiter font-lock-defaults icon-imenu-generic-expression hs-special-modes-alist] 2 (#$ . 4016) nil])
(defalias 'icon-comment-indent #[nil "\301\302!\203 \303\207\207" [comment-column looking-at "^#" 0] 2])
#@50 Insert character and correct line's indentation.
(defalias 'electric-icon-brace #[(arg) "\304	\204@ l\203@ \212\305\304x\210n)\204 \n\203@ \306 \210\307 \210c\210\306 \210\n\2032 \307 \210`\310Z\306 \210\212\203; Tb\210\311\312!\210)\203Q \212b\210\313\314	!!)\202V \313\314	!!)\207" [insertpos arg icon-auto-newline last-command-char nil " 	" icon-indent-line newline 2 delete-char -1 self-insert-command prefix-numeric-value] 3 (#$ . 6612) "P"])
(defalias 'icon-indent-command #[(&optional whole-exp) "\2032 \305 \306\211\212\f\203 \307 \210`\310\311!\210`\nb\210\311y\210`)	\nV\2050 \312\n	\313$+\207\f\204C \212\314\306x\210n)\204C \315 \207\305 \207" [whole-exp end beg shift-amt icon-tab-always-indent icon-indent-line nil beginning-of-line forward-sexp 1 indent-code-rigidly "#" " 	" insert-tab] 5 nil "P"])
#@81 Indent current line as Icon code.
Return the amount the indentation changed by.
(defalias 'icon-indent-line #[nil "\306\307!\307\211\211d`Z\310 \210`\f\307=\203 \311 \202k \312\313!\203* \314\202k \315\307w\210\f<\2036 \f@\312\316!\203M \312\317!\204M \212\320 \210\311 )\202k g\321U\204Y \312\322!\203` \fZ\202k g\323U\203k \f\\\315\307w\210\fiZ\324\n!\203\211 dZ`V\203\235 dZb\210\202\235 `|\210\fj\210dZ`V\203\235 dZb\210\n-\207" [pos case-fold-search shift-amt beg indent icon-indent-level calculate-icon-indent nil beginning-of-line current-indentation looking-at "^#" 0 " 	" "else\\b" "else\\s_" icon-backward-to-start-of-if 125 "end\\b" 123 zerop icon-brace-offset] 6 (#$ . 7450)])
#@185 Return appropriate indentation for current line as Icon code.
In usual case returns an integer: the column to indent to.
Returns nil if line starts inside a string, t if in a comment.
(defalias 'calculate-icon-indent #[(&optional parse-start) "\212\306 \210`\307\211\211\211\203 b\210\202 \310 `\fW\2030 `\311`\f\312#\211A@\202 \313\n8\204< \314\n8\203B \314\n8\202\367 	\203U 	f\315U\204U 	Tb\210i\202\367 \203k \316e!\210\317 \203g \202\367 \312\202\367 	\204t \310 \210`\fb\210\316	!\210\317 \203\241 \320	!\210i\\\212\fb\210\321\307w\210g)\315=\203\234 \202\235 \312\\\202\367 	b\210\212\322\323!\203\262 \324\313!\210\202\265 \325u\210\326\307w\210\322\327!\203\305 \325y\210\202\265 `\fW\205\314 i)\206\367 n\203\343 \330!\203\343 \\\202\345 \321\307x\210n\203\361 \312\202\363 \\\331 \\.\207" [toplevel containing-sexp state case-fold-search indent-point parse-start beginning-of-line nil beginning-of-icon-defun parse-partial-sexp 0 3 4 123 icon-backward-to-noncomment icon-is-continuation-line icon-backward-to-start-of-continued-exp " 	" looking-at "procedure\\s " forward-sexp 1 " 	\n" "#" zerop current-indentation icon-continued-statement-offset icon-continued-brace-offset icon-indent-level icon-brace-offset icon-brace-imaginary-offset] 6 (#$ . 8168)])
(byte-code "\301B\302\301\207" [current-load-list icon-resword-alist (("by" . t) ("case" . t) ("create") ("do") ("dynamic" . t) ("else") ("every" . t) ("if" . t) ("global" . t) ("initial" . t) ("link" . t) ("local" . t) ("of") ("record" . t) ("repeat" . t) ("static" . t) ("then") ("to" . t) ("until" . t) ("while" . t))] 2)
(defalias 'icon-is-continuation-line #[nil "h\211z\211\303=\203 \304\305v\210`\306v\210`{\n\"\202 \307>?*\207" [ch ch-syntax icon-resword-alist 119 assoc -1 1 (0 59 125 123 41 93 34 39 35 44 46 10)] 4])
(defalias 'icon-backward-to-noncomment #[(lim) "\303\211?\205. \304\nx\210`\305 \210\306\307`	\"8\203( \n`W\203( \310\311!\210\202 \312\211\202 *\207" [stop opoint lim nil " 	\n\f" beginning-of-line 5 parse-partial-sexp search-backward "#" t] 5])
(defalias 'icon-backward-to-start-of-continued-exp #[(lim) "h\302>\203\n \303\304!\210\305 \210\306\307w\210`X\203 Tb\207\310 \204\" \311\207gz\312=\203: \313`\212\314v\210`){	\"A\203: \311\207\311\210\315!\207" [lim icon-resword-alist (41 93) forward-sexp -1 beginning-of-line " 	" nil icon-is-continued-line 0 119 assoc 1 icon-backward-to-start-of-continued-exp] 3])
(defalias 'icon-is-continued-line #[nil "\212\300\210\301 )\207" [0 icon-is-continuation-line] 1])
#@48 Move to the start of the last "unbalanced" if.
(defalias 'icon-backward-to-start-of-if #[(&optional limit) "\204 \212\303 \210`)\304\305\306\n!?\205@ \307\304!\210\310\311!\203& \nT\202 \310\312!\2032 \nS\202 `W\203 \313b\210\202 *\207" [limit case-fold-search if-level beginning-of-icon-defun 1 nil zerop backward-sexp looking-at "else\\b" "if\\b" 0] 2 (#$ . 10739)])
#@55 Put mark at end of Icon function, point at beginning.
(defalias 'mark-icon-function #[nil "\300`!\210\301 \210\300`!\210\302\303!\210\304 \207" [push-mark end-of-icon-defun beginning-of-line 0 beginning-of-icon-defun] 2 (#$ . 11128) nil])
#@71 Go to the start of the enclosing procedure; return t if at top level.
(defalias 'beginning-of-icon-defun #[nil "\300\301e\302#\203\f \303\304!\207\305\207" [re-search-backward "^procedure\\s \\|^end[ 	\n]" move looking-at "e" t] 4 (#$ . 11373) nil])
(defalias 'end-of-icon-defun #[nil "o\204 \300u\210\301\302d\303#\210\300v\210\304y\207" [-1 re-search-forward "\\(\\s \\|^\\)end\\(\\s \\|$\\)" move 1] 4 nil nil])
#@56 Indent each line of the Icon grouping following point.
(defalias 'indent-icon-exp #[nil "\306C`C\306\211\211\211\211\211\211\211\211\211\211\211`\307 !\"#$%&'(\212\310\311!\210)\212\306$m?\205\326$?\205\326\306##\204\241 m\203V \312\211$\204\241 \"!\313`\306\210`\306\211\"%\211\"@\"AA@\203\203 \"AA@\307Y\203\203 \"AA@\314!8\203\215 \315 \210\316\"8\203\232 \311y\210\202F \312\211#\203K \307X\203\252 \312$$\2046 U\204\270 \306V\203\317 (A('A'S\211\202\271 W\203\350 \306(B(\306'B'T\211\202\320 '@\204 '\"A@\206\376 \212\310\317!\210`)\240\210\311y\210\320\306w\210l\2046 (@\203n(@\307Y\203n'@f\321U\204*(@ \202\206\212\322\323!g\321U\324	!\210\325 \203V\326'@!\210)i\\\203O*\202P\307\\ \202j\f\203e\327	!\210\330  \202j(@ )\202\206\331(@\205y(@[!+(+\211 \240\210)g\332U\204\222\322\333!\203\231 ,Z g\321U\203\246 -\\ i U\204\270`\334 \210`|\210 j\210\322.!\2046 \335.\212\306\210`)\312#\2036 \336 \210\334 \210\2026 .\207" [next-depth opoint at-do at-brace at-else last-depth nil 0 forward-sexp 1 t parse-partial-sexp 4 icon-indent-line 3 -1 " 	" 123 looking-at "else\\W" icon-backward-to-noncomment icon-is-continuation-line icon-backward-to-start-of-continued-exp icon-backward-to-start-of-if current-indentation calculate-icon-indent 125 "end\\b" beginning-of-line re-search-forward indent-for-comment last-sexp this-indent ostate state inner-loop-done outer-loop-done restart case-fold-search contain-stack indent-stack icon-continued-statement-offset icon-continued-brace-offset val icon-indent-level icon-brace-offset comment-start-skip] 17 (#$ . 11795) nil])
#@43 Subdued level highlighting for Icon mode.
(defconst icon-font-lock-keywords-1 '(("^[ 	]*\\(procedure\\)\\>[ 	]*\\(\\sw+\\)?" (1 font-lock-builtin-face) (2 font-lock-function-name-face nil t))) (#$ . 13486))
#@41 Gaudy level highlighting for Icon mode.
(defconst icon-font-lock-keywords-2 (append icon-font-lock-keywords-1 '(("\\<\\(c\\(?:o-expression\\|set\\)\\|file\\|integer\\|list\\|null\\|real\\|s\\(?:et\\|tring\\)\\|table\\)\\>" . font-lock-type-face) ("\\<\\(b\\(?:reak\\|y\\)\\|c\\(?:\\(?:as\\|reat\\)e\\)\\|d\\(?:efault\\|o\\)\\|e\\(?:lse\\|very\\)\\|fail\\|if\\|n\\(?:\\(?:ex\\|o\\)t\\)\\|of\\|re\\(?:cord\\|peat\\|turn\\)\\|suspend\\|t\\(?:hen\\|o\\)\\|until\\|while\\)\\>" . font-lock-keyword-face) ("\\<\\(end\\|initial\\)\\>" . font-lock-builtin-face) ("\\(&\\(?:a\\(?:llocated\\|scii\\)\\|c\\(?:lock\\|o\\(?:l\\(?:lections\\|umn\\)?\\|ntrol\\)\\|\\(?:se\\|urren\\)t\\)\\|d\\(?:ate\\(?:line\\)?\\|igits\\|ump\\)\\|e\\(?:rro\\(?:r\\(?:number\\|text\\|value\\)?\\|ut\\)\\|vent\\(?:\\(?:cod\\|sourc\\|valu\\)e\\)\\)\\|f\\(?:ail\\|eatures\\|ile\\)\\|host\\|in\\(?:put\\|terval\\)\\|l\\(?:case\\|drag\\|e\\(?:tters\\|vel\\)\\|ine\\|press\\|release\\)\\|m\\(?:ain\\|drag\\|eta\\|press\\|release\\)\\|null\\|output\\|p\\(?:hi\\|i\\|os\\|rogname\\)\\|r\\(?:andom\\|drag\\|e\\(?:gions\\|size\\)\\|ow\\|press\\|release\\)\\|s\\(?:hift\\|ource\\|torage\\|ubject\\)\\|t\\(?:\\(?:im\\|rac\\)e\\)\\|ucase\\|version\\|window\\|[exy]\\)\\)" . font-lock-constant-face) ("^[ 	]*\\(global\\|l\\(?:ink\\|ocal\\)\\|static\\)\\(\\sw+\\>\\)*" (1 font-lock-builtin-face) (font-lock-match-c-style-declaration-item-and-skip-to-next (goto-char (or (match-beginning 2) (match-end 1))) nil (1 (if (match-beginning 2) font-lock-function-name-face font-lock-variable-name-face)))) ("^\\(\\$\\(?:define\\|\\(?:eli\\|\\(?:ifn?\\|un\\)de\\)f\\)\\)\\>[ 	]*\\([^ 	\n]+\\)?" (1 font-lock-builtin-face) (4 font-lock-variable-name-face nil t)) ("^\\(\\$\\(?:dump\\|e\\(?:lse\\|ndif\\)\\|include\\)\\)\\>" . font-lock-builtin-face) ("^\\(\\$\\(?:error\\|warning\\)\\)\\>[ 	]*\\(.+\\)?" (1 font-lock-builtin-face) (3 font-lock-warning-face nil t)))) (#$ . 13699))
#@50 Default expressions to highlight in `icon-mode'.
(defvar icon-font-lock-keywords icon-font-lock-keywords-1 (#$ . 15630))
(defalias 'icon-forward-sexp-function #[(arg) "\301W\203	 \302 \207\303 \210\304u\207" [arg 0 beginning-of-icon-defun end-of-icon-defun -1] 2])
(provide 'icon)
