;ELC   
;;; compiled by rms@psilocin.gnu.ai.mit.edu on Mon Jul 29 20:01:01 1996
;;; from file /home/fsf/rms/e19/lisp/f90.el
;;; emacs version 19.31.97.2.
;;; bytecomp version FSF 2.10
;;; optimization is on.
;;; this file uses opcodes which do not exist in Emacs 18.

(if (and (boundp 'emacs-version)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`f90.el' was compiled for Emacs 19.29 or later"))


#@44 Address of mailing list for F90 mode bugs.
(defconst bug-f90-mode "T.Einarsson@clab.ericsson.se" (#$ . 468))
#@42 *Extra indentation applied to DO blocks.
(defvar f90-do-indent 3 (#$ . -583))
#@73 *Extra indentation applied to IF, SELECT CASE, WHERE and FORALL blocks.
(defvar f90-if-indent 3 (#$ . -667))
#@70 *Extra indentation applied to TYPE, INTERFACE and BLOCK DATA blocks.
(defvar f90-type-indent 3 (#$ . -782))
#@74 *Extra indentation applied to PROGRAM/MODULE/SUBROUTINE/FUNCTION blocks.
(defvar f90-program-indent 2 (#$ . -896))
#@55 *Extra indentation applied to F90 continuation lines.
(defvar f90-continuation-indent 5 (#$ . -1017))
#@76 *String inserted by \[f90-comment-region] at start of each line in region.
(defvar f90-comment-region "!!$" (#$ . -1125))
#@57 *Regexp saying which comments to be indented like code.
(defvar f90-indented-comment-re "!" (#$ . -1253))
#@71 *Regexp of comment-like directive like "!HPF\\$", not to be indented.
(defvar f90-directive-comment-re "!hpf\\$" (#$ . -1365))
#@70 *t makes automatic insertion of & at beginning of continuation line.
(defvar f90-beginning-ampersand t (#$ . -1498))
#@180 *From an END statement, check and fill the end using matching block start.
Allowed values are 'blink, 'no-blink, and nil, which determine
whether to blink the matching beginning.
(defvar f90-smart-end (quote blink) (#$ . -1622))
#@66 *Regexp holding list of delimiters at which lines may be broken.
(defvar f90-break-delimiters "[-+\\*/><=,% 	]" (#$ . -1857))
#@70 *Non-nil causes `f90-do-auto-fill' to break lines before delimiters.
(defvar f90-break-before-delimiters t (#$ . -1989))
#@114 *Automatic case conversion of keywords.
  The options are 'downcase-word, 'upcase-word, 'capitalize-word and nil
(defvar f90-auto-keyword-case nil (#$ . -2117))
#@36 *If nil, left-justify linenumbers.
(defvar f90-leave-line-no nil (#$ . -2284))
#@68 *Non-nil displays a startup message when F90 mode is first called.
(defvar f90-startup-message t (#$ . -2369))
#@26 Regexp for F90 keywords.
(defconst f90-keywords-re (concat "\\<\\(a\\(llocat\\(able\\|e\\)\\|ssign\\(\\|ment\\)\\)\\|b\\(ackspace\\|" "lock\\)\\|c\\(a\\(ll\\|se\\)\\|haracter\\|lose\\|o\\(m\\(mon\\|plex\\)\\|" "nt\\(ains\\|inue\\)\\)\\|ycle\\)\\|d\\(ata\\|eallocate\\|imension\\|" "o\\(\\|uble\\)\\)\\|e\\(lse\\(\\|if\\|where\\)\\|n\\(d\\(\\|do\\|file\\|" "if\\)\\|try\\)\\|quivalence\\|x\\(it\\|ternal\\)\\)\\|f\\(or\\(all\\|" "mat\\)\\|unction\\)\\|goto\\|i\\(f\\|mplicit\\|n\\(clude\\|quire\\|t\\(" "e\\(ger\\|nt\\|rface\\)\\|rinsic\\)\\)\\)\\|logical\\|module\\|n\\(" "amelist\\|one\\|ullify\\)\\|o\\(nly\\|p\\(en\\|erator\\|tional\\)\\)\\|p\\(a\\(" "rameter\\|use\\)\\|ointer\\|r\\(ecision\\|i\\(nt\\|vate\\)\\|o\\(" "cedure\\|gram\\)\\)\\|ublic\\)\\|re\\(a[dl]\\|cursive\\|sult\\|turn\\|wind\\)\\|" "s\\(ave\\|e\\(lect\\|quence\\)\\|top\\|ubroutine\\)\\|t\\(arget\\|hen\\|" "ype\\)\\|use\\|w\\(h\\(ere\\|ile\\)\\|rite\\)\\)\\>") (#$ . 2486))
#@42 Keyword-regexp for font-lock level >= 3.
(defconst f90-keywords-level-3-re (concat "\\<\\(a\\(llocat\\(able\\|e\\)\\|ssign\\(\\|ment\\)\\)\\|backspace\\|" "close\\|d\\(eallocate\\|imension\\)\\|e\\(n\\(dfile\\|try\\)\\|" "quivalence\\|xternal\\)\\|" "in\\(quire\\|t\\(ent\\|rinsic\\)\\)\\|nullify\\|" "o\\(nly\\|p\\(en\\|erator\\|tional\\)\\)\\|" "p\\(a\\(rameter\\|use\\)\\|ointer\\|ri\\(nt\\|vate\\)\\|ublic\\)\\|re\\(" "ad\\|cursive\\|sult\\|wind\\)\\|s\\(ave\\|e\\(lect\\|quence\\)\\)\\|target\\|" "write\\)\\>") (#$ . 3440))
#@59 Regexp whose first part matches F90 intrinsic procedures.
(defconst f90-procedures-re (concat "\\<\\(a\\(bs\\|c\\(har\\|os\\)\\|djust[lr]\\|i\\(mag\\|nt\\)\\|ll\\(\\|" "ocated\\)\\|n\\(int\\|y\\)\\|s\\(in\\|sociated\\)\\|tan2?\\)\\|b\\(" "it_size\\|test\\)\\|c\\(eiling\\|har\\|mplx\\|o\\(njg\\|sh?\\|unt\\)\\|" "shift\\)\\|d\\(ate_and_time\\|ble\\|i\\(gits\\|m\\)\\|ot_product\\|prod" "\\)\\|e\\(oshift\\|psilon\\|xp\\(\\|onent\\)\\)\\|f\\(loor\\|" "raction\\)\\|huge\\|i\\(a\\(char\\|nd\\)\\|b\\(clr\\|its\\|set\\)\\|" "char\\|eor\\|n\\(dex\\|t\\)\\|or\\|shftc?\\)\\|kind\\|l\\(bound\\|" "en\\(\\|_trim\\)\\|g[et]\\|l[et]\\|og\\(\\|10\\|ical\\)\\)\\|m\\(a\\(" "tmul\\|x\\(\\|exponent\\|loc\\|val\\)\\)\\|erge\\|in\\(\\|exponent\\|" "loc\\|val\\)\\|od\\(\\|ulo\\)\\|vbits\\)\\|n\\(earest\\|int\\|ot\\)\\|" "p\\(ack\\|r\\(e\\(cision\\|sent\\)\\|oduct\\)\\)\\|r\\(a\\(dix\\|n\\(" "dom_\\(number\\|seed\\)\\|ge\\)\\)\\|e\\(peat\\|shape\\)\\|rspacing\\)\\|" "s\\(ca\\(le\\|n\\)\\|e\\(lected_\\(int_kind\\|real_kind\\)\\|" "t_exponent\\)\\|hape\\|i\\(gn\\|nh?\\|ze\\)\\|p\\(acing\\|read\\)\\|" "qrt\\|um\\|ystem_clock\\)\\|t\\(anh?\\|iny\\|r\\(ans\\(fer\\|pose\\)\\|" "im\\)\\)\\|u\\(bound\\|npack\\)\\|verify\\)[ 	]*(") (#$ . 3976))
#@38 Regexp matching intrinsic operators.
(defconst f90-operators-re (concat "\\.\\(and\\|eqv?\\|false\\|g[et]\\|l[et]\\|n\\(e\\(\\|qv\\)\\|" "ot\\)\\|or\\|true\\)\\.") (#$ . 5212))
#@57 Regexp for all HPF keywords, procedures and directives.
(defconst f90-hpf-keywords-re (concat "\\<\\(a\\(l\\(ign\\|l_\\(prefix\\|s\\(catter\\|uffix\\)\\)\\)\\|ny_\\(" "prefix\\|s\\(catter\\|uffix\\)\\)\\)\\|block\\|c\\(o\\(py_\\(prefix\\|" "s\\(catter\\|uffix\\)\\)\\|unt_\\(prefix\\|s\\(catter\\|uffix\\)\\)\\)\\|" "yclic\\)\\|d\\(istribute\\|ynamic\\)\\|extrinsic\\|grade_\\(down\\|" "up\\)\\|hpf_\\(alignment\\|distribution\\|template\\)\\|i\\(a\\(ll\\(\\|" "_\\(prefix\\|s\\(catter\\|uffix\\)\\)\\)\\|ny\\(\\|_\\(prefix\\|s\\(" "catter\\|uffix\\)\\)\\)\\)\\|len\\|n\\(dependent\\|herit\\)\\|parity\\(\\|" "_\\(prefix\\|s\\(catter\\|uffix\\)\\)\\)\\)\\|leadz\\|m\\(axval_\\(" "prefix\\|s\\(catter\\|uffix\\)\\)\\|inval_\\(prefix\\|s\\(catter\\|" "uffix\\)\\)\\)\\|n\\(ew\\|umber_of_processors\\)\\|onto\\|p\\(arity\\(\\|" "_\\(prefix\\|s\\(catter\\|uffix\\)\\)\\)\\|op\\(cnt\\|par\\)\\|ro\\(" "cessors\\(\\|_shape\\)\\|duct_\\(prefix\\|s\\(catter\\|uffix\\)\\)\\)\\|" "ure\\)\\|re\\(align\\|distribute\\)\\|sum_\\(prefix\\|s\\(catter\\|" "uffix\\)\\)\\|template\\|with\\)\\>") (#$ . 5395))
#@71 This does fairly subdued highlighting of comments and function calls.
(defvar f90-font-lock-keywords-1 (byte-code "\n\" ʯʯ" [string-match "XEmacs" emacs-version ("\\<\\(end[ 	]*\\(program\\|module\\|function\\|subroutine\\|type\\)\\)\\>" 1 font-lock-keyword-face) ("\\<\\(end[ 	]*\\(program\\|module\\|function\\|subroutine\\|type\\)\\)\\>[ 	]*\\(\\sw+\\)" 3 font-lock-function-name-face) ("\\<\\(program\\|call\\|module\\|subroutine\\|function\\|use\\)\\>" 1 font-lock-keyword-face) ("\\<\\(program\\|call\\|module\\|subroutine\\|function\\|use\\)\\>[ 	]*\\(\\sw+\\)" 2 font-lock-function-name-face nil t) ("\\<\\(module[ 	]*procedure\\)\\>" 1 font-lock-keyword-face t) ("\\<\\(type\\)[ 	]*\\(,.*::[ 	]*\\|[ 	]+\\)\\(\\sw+\\)" 1 font-lock-keyword-face) ("\\<\\(type\\)[ 	]*\\(,.*::[ 	]*\\|[ 	]+\\)\\(\\sw+\\)" 3 font-lock-function-name-face) "\\<\\(\\(end[ 	]*\\)?\\(interface\\|block[ 	]*data\\)\\|contains\\)\\>" ("\\<\\(end[ 	]*\\(program\\|module\\|function\\|subroutine\\|type\\)\\)\\>[ 	]*\\(\\sw+\\)?" (1 font-lock-keyword-face) (3 font-lock-function-name-face nil t)) ("\\<\\(program\\|call\\|module\\|subroutine\\|function\\|use\\)\\>[ 	]*\\(\\sw+\\)?" (1 font-lock-keyword-face) (2 font-lock-function-name-face nil t)) ("\\<\\(module[ 	]*procedure\\)\\>" (1 font-lock-keyword-face t)) ("\\<\\(type\\)[ 	]*\\(,.*::[ 	]*\\|[ 	]+\\)\\(\\sw+\\)" (1 font-lock-keyword-face) (3 font-lock-function-name-face))] 8) (#$ . 6494))
#@59 Highlights declarations, do-loops and other constructions
(defvar f90-font-lock-keywords-2 (byte-code "	\f\"! ׯ/ \f\"" [append f90-font-lock-keywords-1 string-match "XEmacs" emacs-version ("^[ 	0-9]*\\(real\\|integer\\|c\\(haracter\\|omplex\\)\\|logical\\|type[ 	]*(\\sw+)\\)" 1 font-lock-type-face) ("^[ 	0-9]*\\(real\\|integer\\|c\\(haracter\\|omplex\\)\\|logical\\|type[ 	]*(\\sw+)\\)\\(.*::\\|[ 	]*(.*)\\)?\\(.*\\)" 4 font-lock-doc-string-face) ("\\<\\(end[ 	]*\\(do\\|if\\|select\\)\\)\\>" 1 font-lock-keyword-face) ("\\<\\(end[ 	]*\\(do\\|if\\|select\\)\\)\\>\\([ 	]+\\(\\sw+\\)\\)" 3 font-lock-doc-string-face) ("^[ 	0-9]*\\(\\(\\sw+\\)[ 	]*:[ 	]*\\)\\(\\(if\\|do\\([ 	]*while\\)?\\|select[ 	]*case\\)\\)\\>" 2 font-lock-doc-string-face) ("^[ 	0-9]*\\(\\(\\sw+\\)[ 	]*:[ 	]*\\)?\\(\\(if\\|do\\([ 	]*while\\)?\\|select[ 	]*case\\)\\)\\>" 3 font-lock-keyword-face) ("\\<\\(implicit\\)[ 	]*\\(real\\|integer\\|c\\(haracter\\|omplex\\)\\|logical\\|type[ 	]*(\\sw+)\\|none\\)\\>" 1 font-lock-keyword-face) ("\\<\\(implicit\\)[ 	]*\\(real\\|integer\\|c\\(haracter\\|omplex\\)\\|logical\\|type[ 	]*(\\sw+)\\|none\\)\\>" 2 font-lock-type-face) ("\\<\\(namelist\\|common\\)[ 	]*/\\(\\sw+\\)?/" 1 font-lock-keyword-face) ("\\<\\(namelist\\|common\\)[ 	]*/\\(\\sw+\\)/" 2 font-lock-doc-string-face nil t) ("\\<\\(where\\|forall\\)[ 	]*(" . 1) "\\<e\\(lse\\([ 	]*if\\|where\\)?\\|nd[ 	]*\\(where\\|forall\\)\\)\\>" "\\<\\(then\\|continue\\|format\\|include\\|stop\\|return\\)\\>" ("\\<\\(exit\\|cycle\\)\\>" 1 font-lock-keyword-face) ("\\<\\(exit\\|cycle\\)[ 	]*\\(\\sw+\\)2\\>" 2 font-lock-doc-string-face) ("\\<\\(case\\)[ 	]*\\(default\\|(\\)" . 1) ("\\<\\(do\\|go *to\\)\\>[ 	]*\\([0-9]+\\)" 1 font-lock-keyword-face) ("\\<\\(do\\|go *to\\)\\>[ 	]*\\([0-9]+\\)" 2 font-lock-doc-string-face) ("^[ 	]*\\([0-9]+\\)" 1 font-lock-doc-string-face t) ("^[ 	0-9]*\\(real\\|integer\\|c\\(haracter\\|omplex\\)\\|logical\\|type[ 	]*(\\sw+)\\)\\(.*::\\|[ 	]*(.*)\\)?\\(.*\\)" (1 font-lock-type-face) (4 font-lock-variable-name-face)) ("\\<\\(end[ 	]*\\(do\\|if\\|select\\)\\)\\>\\([ 	]+\\(\\sw+\\)\\)?" (1 font-lock-keyword-face) (3 font-lock-reference-face nil t)) ("^[ 	0-9]*\\(\\(\\sw+\\)[ 	]*:[ 	]*\\)?\\(\\(if\\|do\\([ 	]*while\\)?\\|select[ 	]*case\\)\\)\\>" (2 font-lock-reference-face nil t) (3 font-lock-keyword-face)) ("\\<\\(implicit\\)[ 	]*\\(real\\|integer\\|c\\(haracter\\|omplex\\)\\|logical\\|type[ 	]*(\\sw+)\\|none\\)\\>" (1 font-lock-keyword-face) (2 font-lock-type-face)) ("\\<\\(namelist\\|common\\)[ 	]*/\\(\\sw+\\)?/" (1 font-lock-keyword-face) (2 font-lock-reference-face nil t)) ("\\<\\(where\\|forall\\)[ 	]*(" . 1) ("\\<\\(exit\\|cycle\\)[ 	]*\\(\\sw+\\)?\\>" (1 font-lock-keyword-face) (2 font-lock-reference-face nil t)) ("\\<\\(case\\)[ 	]*\\(default\\|(\\)" . 1) ("\\<\\(do\\|go *to\\)\\>[ 	]*\\([0-9]+\\)" (1 font-lock-keyword-face) (2 font-lock-reference-face)) ("^[ 	]*\\([0-9]+\\)" (1 font-lock-reference-face t))] 21) (#$ . 7952))
#@55 Highlights all F90 keywords and intrinsic procedures.
(defvar f90-font-lock-keywords-3 (byte-code "	\n\" C\" DF\"" [append f90-font-lock-keywords-2 f90-keywords-level-3-re f90-operators-re string-match "XEmacs" emacs-version f90-procedures-re (1 font-lock-keyword-face t) (1 font-lock-keyword-face t) "\\<real\\>"] 7) (#$ . 10951))
#@38 Highlights all F90 and HPF keywords.
(defvar f90-font-lock-keywords-4 (byte-code "	\nC\"" [append f90-font-lock-keywords-3 f90-hpf-keywords-re] 3) (#$ . 11308))
#@48 *Default expressions to highlight in F90 mode.
(defvar f90-font-lock-keywords f90-font-lock-keywords-2 (#$ . -11477))
#@42 Syntax table in use in F90 mode buffers.
(defvar f90-mode-syntax-table nil (#$ . 11601))
(byte-code "U  #############" [f90-mode-syntax-table make-syntax-table modify-syntax-entry 33 "<" 10 ">" 95 "w" 39 "\"" 34 96 13 " " 43 "." 45 61 42 47 92 "/"] 4)
#@26 Keymap used in F90 mode.
(defvar f90-mode-map nil (#$ . 11930))
(byte-code "a  ################\" !r %'B'#$ #!B#########@ #A B #C D #E F #G H #I J #K L #M N #O P #Q R #S TT 'B'U VV 'B'W XX 'B'Y ZZ 'B'[ \\\\ 'B'] ^^ 'B'_ `` 'B'a !b aa 'B'c a !" [f90-mode-map make-sparse-keymap define-key "`" f90-abbrev-start ";" f90-comment-region "" f90-beginning-of-subprogram "" f90-end-of-subprogram "" f90-mark-subprogram "" f90-indent-subprogram "\n" f90-indent-new-line "" newline "" f90-break-line "" f90-join-lines "" f90-fill-region "" f90-previous-statement "" f90-next-statement "" f90-insert-end "	" f90-indent-line string-match "XEmacs" emacs-version boundp f90-xemacs-menu ("F90" ["Indent Subprogram" f90-indent-subprogram t] ["Mark Subprogram" f90-mark-subprogram t] ["Beginning of Subprogram" f90-beginning-of-subprogram t] ["End of Subprogram" f90-end-of-subprogram t] "-----" ["(Un)Comment Region" f90-comment-region t] ["Indent Region" indent-region t] ["Fill Region" f90-fill-region t] "-----" ["Break Line at Point" f90-break-line t] ["Join with Next Line" f90-join-lines t] ["Insert Newline" newline t] ["Insert End" f90-insert-end t] "-----" ["Upcase Keywords (buffer)" f90-upcase-keywords t] ["Upcase Keywords (region)" f90-upcase-region-keywords t] ["Capitalize Keywords (buffer)" f90-capitalize-keywords t] ["Capitalize Keywords (region)" f90-capitalize-region-keywords t] ["Downcase Keywords (buffer)" f90-downcase-keywords t] ["Downcase Keywords (region)" f90-downcase-region-keywords t] "-----" ["Toggle abbrev-mode" abbrev-mode t] ["Toggle auto-fill" f90-auto-fill-mode t]) current-load-list put variable-documentation "XEmacs menu for F90 mode." [menu-bar] [menu-bar f90] "F90" "f90" [menu-bar f90 abbrev-mode] ("Toggle abbrev-mode" . abbrev-mode) [menu-bar f90 f90-auto-fill-mode] ("Toggle auto-fill" . f90-auto-fill-mode) [menu-bar f90 f90-downcase-region-keywords] ("Downcase Keywords (region)" . f90-downcase-region-keywords) [menu-bar f90 f90-downcase-keywords] ("Downcase Keywords (buffer)" . f90-downcase-keywords) [menu-bar f90 f90-capitalize-keywords] ("Capitalize Keywords (region)" . f90-capitalize-region-keywords) [menu-bar f90 f90-capitalize-region-keywords] ("Capitalize Keywords (buffer)" . f90-capitalize-keywords) [menu-bar f90 f90-upcase-region-keywords] ("Upcase Keywords (region)" . f90-upcase-region-keywords) [menu-bar f90 f90-upcase-keywords] ("Upcase Keywords (buffer)" . f90-upcase-keywords) [menu-bar f90 f90-insert-end] ("Insert end" . f90-insert-end) [menu-bar f90 f90-join-lines] ("Join with Next Line" . f90-join-lines) [menu-bar f90 f90-break-line] ("Break Line at Point" . f90-break-line) [menu-bar f90 f90-fill-region] ("Fill Region" . f90-fill-region) [menu-bar f90 indent-region] ("Indent Region" . indent-region) [menu-bar f90 f90-comment-region] ("(Un)Comment Region" . f90-comment-region) [menu-bar f90 f90-end-of-subprogram] ("End of Subprogram" . f90-end-of-subprogram) [menu-bar f90 f90-beginning-of-subprogram] ("Beginning of Subprogram" . f90-beginning-of-subprogram) [menu-bar f90 f90-mark-subprogram] ("Mark Subprogram" . f90-mark-subprogram) [menu-bar f90 f90-indent-subprogram] ("Indent Subprogram" . f90-indent-subprogram) "\\(block[ 	]*data\\|do\\|if\\|interface\\|function\\|module\\|program\\|select\\|subroutine\\|type\\|where\\|forall\\)\\>" f90-blocks-re "\\(program\\|module\\|subroutine\\|function\\)" f90-program-block-re "\\(else\\([ 	]*if\\|where\\)?\\|case[ 	]*\\(default\\|(\\)\\)" f90-else-like-re "end[ 	]*\\(if\\|select\\|where\\|forall\\)\\>" f90-end-if-re "end[ 	]*\\(type\\|interface\\|block[ 	]*data\\)" f90-end-type-re "\\<\\(type\\)[ 	]*\\(,.*::[ 	]*\\|[ 	]+\\)\\(\\sw+\\)" f90-type-def-re "\\(\\*\\*\\|//\\|=>\\)" f90-no-break-re f90-cache-position nil make-variable-buffer-local] 6)
#@40 imenu generic expression for F90 mode.
(defvar f90-imenu-generic-expression (byte-code "ǰFB" ["^[ 	0-9]*\\(" "program[ 	]+\\(\\sw+\\)\\|" "module[ 	]+\\(\\sw+\\)[ 	]*\\(!\\|$\\)\\|" "\\(pure\\|recursive\\|extrinsic([^)]+)\\)?[ 	]*" "subroutine[ 	]+\\(\\sw+\\)\\|" "\\([^!]*\\([^e!].[^ 	!]\\|.[^n!][^ 	!]\\|..[^d 	!]\\)" "\\|[^!]?[^!]?\\)[ 	]*function[ 	]+\\(\\sw+\\)" "\\)" 2 3 6 9] 8) (#$ . 15975))
(byte-code "! B	\f\"	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	@ A $	B C $	D E $	F G $	H I $	J K $	L M $	N O $	P Q $	R S $	T U $	V W $	X Y $	Z [ $	\\ ] $	^ _ $	` a $	b c $	d e $	f g $	h i $	j k $	l m $	n o $	p q $)" [boundp f90-mode-abbrev-table nil current-load-list abbrevs-changed ac define-abbrev-table define-abbrev "`al" "allocate" "`ab" "allocatable" "`as" "assignment" "`ba" "backspace" "`bd" "block data" "`c" "character" "`cl" "close" "`cm" "common" "`cx" "complex" "`cn" "contains" "`cy" "cycle" "`de" "deallocate" "`df" "define" "`di" "dimension" "`dw" "do while" "`el" "else" "`eli" "else if" "`elw" "elsewhere" "`eq" "equivalence" "`ex" "external" "`ey" "entry" "`fl" "forall" "`fo" "format" "`fu" "function" "`fa" ".false." "`im" "implicit none" "`in " "include" "`i" "integer" "`it" "intent" "`if" "interface" "`lo" "logical" "`mo" "module" "`na" "namelist" "`nu" "nullify" "`op" "optional" "`pa" "parameter" "`po" "pointer" "`pr" "print" "`pi" "private" "`pm" "program" "`pu" "public" "`r" "real" "`rc" "recursive" "`rt" "return" "`rw" "rewind" "`se" "select" "`sq" "sequence" "`su" "subroutine" "`ta" "target" "`tr" ".true." "`t" "type" "`wh" "where" "`wr" "write"] 5)
#@2320 Major mode for editing Fortran 90 code in free format.

\[f90-indent-new-line] corrects current indentation and creates new indented line.
\[f90-indent-line] indents the current line correctly. 
\[f90-indent-subprogram] indents the current subprogram. 

Type `? or `\[help-command] to display a list of built-in abbrevs for F90 keywords.

Key definitions:
\{f90-mode-map}

Variables controlling indentation style and extra features:

 f90-do-indent
    Extra indentation within do blocks.  (default 3)
 f90-if-indent
    Extra indentation within if/select case/where/forall blocks. (default 3)
 f90-type-indent
    Extra indentation within type/interface/block-data blocks.  (default 3)
 f90-program-indent
    Extra indentation within program/module/subroutine/function blocks.
      (default 2)
 f90-continuation-indent
    Extra indentation applied to continuation lines.  (default 5)
 f90-comment-region
    String inserted by \[f90-comment-region] at start of each line in 
    region.  (default "!!!$")
 f90-indented-comment-re
    Regexp determining the type of comment to be intended like code.
    (default "!")
 f90-directive-comment-re
    Regexp of comment-like directive like "!HPF\\$", not to be indented.
    (default "!hpf\\$")
 f90-break-delimiters
    Regexp holding list of delimiters at which lines may be broken.
    (default "[-+*/><=,% \t]")
 f90-break-before-delimiters
    Non-nil causes `f90-do-auto-fill' to break lines before delimiters.
    (default t)
 f90-beginning-ampersand 
    Automatic insertion of & at beginning of continuation lines. (default t)
 f90-smart-end 
    From an END statement, check and fill the end using matching block start.
    Allowed values are 'blink, 'no-blink, and nil, which determine
    whether to blink the matching beginning.) (default 'blink)
 f90-auto-keyword-case
    Automatic change of case of keywords. (default nil)
    The possibilities are 'downcase-word, 'upcase-word, 'capitalize-word.
 f90-leave-line-no
    Do not left-justify line numbers. (default nil)
 f90-startup-message
    Set to nil to inhibit message first time F90 mode is used. (default t)
 f90-keywords-re
    List of keywords used for highlighting/upcase-keywords etc.

Turning on F90 mode calls the value of the variable `f90-mode-hook'
with no args, if that value is non-nil.
(defalias 'f90-mode #[nil " !\n!!\f!!!!!!\"{ # p  \"p  !!%\"!'& !(!+*!. 1\"ى." [kill-all-local-variables f90-mode major-mode "F90" mode-name f90-mode-abbrev-table local-abbrev-table set-syntax-table f90-mode-syntax-table use-local-map f90-mode-map make-local-variable indent-line-function f90-indent-line indent-region-function f90-indent-region require-final-newline t comment-start "!" comment-start-skip "!+ *" comment-indent-function f90-comment-indent abbrev-all-caps nil indent-tabs-mode string-match "Xemacs" emacs-version put font-lock-keywords-case-fold-search current-menubar assoc set-buffer-menubar copy-sequence add-submenu f90-xemacs-menu font-lock-keywords f90-font-lock-keywords font-lock-defaults ((f90-font-lock-keywords f90-font-lock-keywords-1 f90-font-lock-keywords-2 f90-font-lock-keywords-3 f90-font-lock-keywords-4) nil t) imenu-generic-expression f90-imenu-generic-expression run-hooks f90-mode-hook f90-startup-message message "Emacs F90 mode; please report bugs to %s" bug-f90-mode] 4 (#$ . 17884) nil])
(defalias 'f90-get-beg-of-line #[nil "y`)" [0] 1])
(put (quote f90-get-beg-of-line) (quote byte-optimizer) (quote byte-compile-inline-expand))
(defalias 'f90-get-end-of-line #[nil "`)" [nil] 1])
(put (quote f90-get-end-of-line) (quote byte-optimizer) (quote byte-compile-inline-expand))
(defalias 'f90-in-string #[nil " `V  e	`\"8)" [f90-cache-position beg-pnt 3 parse-partial-sexp] 4])
(put (quote f90-in-string) (quote byte-optimizer) (quote byte-compile-inline-expand))
(defalias 'f90-in-comment #[nil " `V  e	`\"8)" [f90-cache-position beg-pnt 4 parse-partial-sexp] 4])
(put (quote f90-in-comment) (quote byte-optimizer) (quote byte-compile-inline-expand))
(defalias 'f90-line-continued #[nil "y`) `V  e\f`\"8)1 	\"x xhU*" [0 bol nil f90-cache-position beg-pnt 4 parse-partial-sexp search-backward "!" " 	" 38] 4])
(put (quote f90-line-continued) (quote byte-optimizer) (quote byte-compile-inline-expand))
#@88 Return indentation of current line.
Line-numbers are considered whitespace characters.
(defalias 'f90-current-indentation #[nil "ywi)" [0 " 	0-9" nil] 2 (#$ . 22333)])
(put (quote f90-current-indentation) (quote byte-optimizer) (quote byte-compile-inline-expand))
#@93 Indent current line to column COL.
If no-line-number nil, jump over a possible line-number.
(defalias 'f90-indent-to #[(col &optional no-line-number) "y	 w iU j\"" [0 no-line-number " 	0-9" nil delete-horizontal-space col indent-to 1] 3 (#$ . 22610)])
(put (quote f90-indent-to) (quote byte-optimizer) (quote byte-compile-inline-expand))
(defalias 'f90-match-piece #[(arg) "\n {" [arg] 2])
(put (quote f90-match-piece) (quote byte-optimizer) (quote byte-compile-inline-expand))
(defalias 'f90-get-present-comment-type #[nil "`) `V  e\f`\"8)T y	\": `V: ; e\f`\"8)N 	\", ǔǕ{\n+" [nil eol type f90-cache-position beg-pnt 4 parse-partial-sexp 0 re-search-forward "[!]+" 3] 4])
(put (quote f90-get-present-comment-type) (quote byte-optimizer) (quote byte-compile-inline-expand))
#@61 Compare strings neglecting case and allowing for nil value.
(defalias 'f90-equal-symbols #[(a b) " 	\f 	\n*" [a b b-local a-local] 3 (#$ . 23460)])
(put (quote f90-equal-symbols) (quote byte-optimizer) (quote byte-compile-inline-expand))
#@101 Return ("do" name) if a do statement starts after point.
Name is nil if the statement has no label.
(defalias 'f90-looking-at-do #[nil "!1 Ô \f\f{)!, Ȕ) \f\f{)*D" [looking-at "\\(\\(\\sw+\\)[ 	]*:\\)?[ 	]*\\(do\\)\\>" nil 3 arg struct label "\\(\\sw+\\)[ 	]*:" 1] 3 (#$ . 23717)])
(put (quote f90-looking-at-do) (quote byte-optimizer) (quote byte-compile-inline-expand))
#@114 Return ("select" name) if a select-case statement starts after point.
Name is nil if the statement has no label.
(defalias 'f90-looking-at-select-case #[nil "!1 Ô \f\f{)!, Ȕ) \f\f{)*D" [looking-at "\\(\\(\\sw+\\)[ 	]*:\\)?[ 	]*\\(select\\)[ 	]*case[ 	]*(" nil 3 arg struct label "\\(\\sw+\\)[ 	]*:" 1] 3 (#$ . 24124)])
(put (quote f90-looking-at-select-case) (quote byte-optimizer) (quote byte-compile-inline-expand))
#@110 Return ("if" name) if an if () then statement starts after point.
Name is nil if the statement has no label.
(defalias 'f90-looking-at-if-then #[nil "! Ŕ {)!3 Ȕ1 {)`#bw! y`)a `Va b e`\"8)| \"xP xhU*  w! \n	D+" [nil label struct looking-at "\\(\\(\\sw+\\)[ 	]*:\\)?[ 	]*\\(if\\)\\>" 3 arg "\\(\\sw+\\)[ 	]*:" 1 scan-lists 0 " 	" "then\\>" bol f90-cache-position beg-pnt 4 parse-partial-sexp search-backward "!" 38 f90-next-statement " 	0-9&"] 4 (#$ . 24578)])
(put (quote f90-looking-at-if-then) (quote byte-optimizer) (quote byte-compile-inline-expand))
#@61 Return (kind nil) if where/forall...end starts after point.
(defalias 'f90-looking-at-where-or-forall #[nil "!+ Ĕ {)D`#bw!+ 	*" [nil command looking-at "\\(where\\|forall\\)[ 	]*(" 1 arg scan-lists 0 " 	" "\\(!\\|$\\)"] 4 (#$ . 25236)])
(put (quote f90-looking-at-where-or-forall) (quote byte-optimizer) (quote byte-compile-inline-expand))
#@102 Return (kind name) at the start of a type/interface/block-data block.
Name is non-nil only for type.
(defalias 'f90-looking-at-type-like #[nil "	!\"  {)Ĕ {)D!7 4 {)D" [looking-at f90-type-def-re 1 arg 3 "\\(interface\\|block[	]*data\\)\\>" nil] 3 (#$ . 25611)])
(put (quote f90-looking-at-type-like) (quote byte-optimizer) (quote byte-compile-inline-expand))
#@74 Return (kind name) if a program block with name name starts after point.
(defalias 'f90-looking-at-program-block-start #[nil "!\"  {)Ĕ {)D!J !J : {)ĔG {)DP!n Ĕ^ {)ɔk {)D!? !  {)Ĕ {)D" [looking-at "\\(program\\)[ 	]+\\(\\sw+\\)\\>" 1 arg 2 "module[ 	]*procedure\\>" "\\(module\\)[ 	]+\\(\\sw+\\)\\>" "\\(pure\\|recursive\\|extrinsic([^)]+)\\)?[ 	]*" "\\(subroutine\\)[ 	]+\\(\\sw+\\)" 3 "end[ 	]*function" "[^!\"&\\n]*\\(function\\)[ 	]+\\(\\sw+\\)"] 3 (#$ . 26012)])
(put (quote f90-looking-at-program-block-start) (quote byte-optimizer) (quote byte-compile-inline-expand))
#@47 Return list of type and name of end of block.
(defalias 'f90-looking-at-program-block-end #[nil "\nQ!$ Ĕ {)Ɣ\" {)D" [looking-at "end[ 	]*" f90-blocks-re "?\\([ 	]+\\(\\sw+\\)\\)?\\>" 1 arg 3] 4 (#$ . 26688)])
(put (quote f90-looking-at-program-block-end) (quote byte-optimizer) (quote byte-compile-inline-expand))
(defalias 'f90-comment-indent #[nil "!  ! !! !(  xn4 6 iT\n]" [looking-at "!!!" 0 f90-directive-comment-re regexp-quote f90-comment-region f90-indented-comment-re f90-calculate-indent " 	" nil comment-column] 3])
(put (quote f90-comment-indent) (quote byte-optimizer) (quote byte-compile-inline-expand))
#@54 Return continuation properties of present statement.
(defalias 'f90-present-statement-cont #[nil " H y`)& `V& ' e`\"8)@ \"x xhU*)y`)f `Vf g e`\"8) \"xU xhU*\n 	 ΂ \n 	 ς \n 	 Ђ \n 	 т  *" [nil cont pcont f90-previous-statement 0 bol f90-cache-position beg-pnt 4 parse-partial-sexp search-backward "!" " 	" 38 single begin end middle error] 4 (#$ . 27370)])
(put (quote f90-present-statement-cont) (quote byte-optimizer) (quote byte-compile-inline-expand))
(defalias 'f90-indent-line-no #[nil " wU !  w" [f90-leave-line-no " 	" nil 0 looking-at "[0-9]" delete-horizontal-space " 	0-9"] 2])
(put (quote f90-indent-line-no) (quote byte-optimizer) (quote byte-compile-inline-expand))
(defalias 'f90-no-block-limit #[nil "`)!, !, !, !, !, 	#*?" [nil eol looking-at "end" "\\(do\\|if\\|else\\|select[ 	]*case\\|case\\|where\\|forall\\)\\>" "\\(program\\|module\\|interface\\|block[ 	]*data\\)\\>" "\\(contains\\|\\sw+[ 	]*:\\)" f90-type-def-re re-search-forward "\\(function\\|subroutine\\)" t] 4])
(put (quote f90-no-block-limit) (quote byte-optimizer) (quote byte-compile-inline-expand))
(defalias 'f90-update-line #[nil " y`)`) \n	#*" [nil eol bol f90-auto-keyword-case 0 f90-change-keywords] 4])
(put (quote f90-update-line) (quote byte-optimizer) (quote byte-compile-inline-expand))
#@106 Get correct indent for a line starting with line number.
Does not check type and subprogram indentation.
(defalias 'f90-get-correct-indent #[nil "`)   [ y`)8 `V8 9 e		`\"8)S \"x' xhU*)y`)z `Vz { e		`\"8) \"xi xhU* 	 Ђ  	 т  	 ҂  	 ӂ  *=\f 	=\f !\f  yي`)#\\yw!Bܔ{)!1ᔅ.{)*DB\n\"\\Y!ܔ^{)!yᔅv{)`#bw!y`)`Ve		`\"8)\"xxhU* w!D+T(!ᔅ{)D(`#bw!(*T!Yܔ.{)!KᔅH{)*DY\n,\\#yw!ܔ{)!ᔅ{)*D\n\"\\!Lܔ{)!ᔅ{)`#bw!Gy`)`Ve		`\"8)/\"xxhU*L w!LD+(!ᔅi{)D(`#bw!(*!ܔ{)!ᔅ{)*D\n,\\.!\n,Z!\n\"Z\\\n," [nil cont icol epnt f90-previous-statement pcont 0 bol f90-cache-position beg-pnt 4 parse-partial-sexp search-backward "!" " 	" 38 single begin end middle error looking-at "[ 	]*[0-9]" current-indentation re-search-forward "\\(if\\|do\\|select\\|where\\|forall\\)" t "\\(\\(\\sw+\\)[ 	]*:\\)?[ 	]*\\(do\\)\\>" 3 arg struct label "\\(\\sw+\\)[ 	]*:" 1 f90-do-indent "\\(\\(\\sw+\\)[ 	]*:\\)?[ 	]*\\(if\\)\\>" scan-lists "then\\>" f90-next-statement " 	0-9&" command "\\(where\\|forall\\)[ 	]*(" "\\(!\\|$\\)" "\\(\\(\\sw+\\)[ 	]*:\\)?[ 	]*\\(select\\)[ 	]*case[ 	]*(" f90-if-indent " 	0-9" f90-end-if-re "end[ 	]*do\\>"] 5 (#$ . 28833)])
#@59 Calculate the indent column based on previous statements.
(defalias 'f90-calculate-indent #[nil "`   ^ y`)	\n; `\nV; \n< e`\"8)V 	\"x* xhU*)y`)	\n~ `\nV~ \n e`\"8) 	\"xm xhU* \f ҂  \f ӂ  \f Ԃ  \f Ղ  *= +y`)	\n`\nV\n	e`\"8)#	\"x xhU*)y`)	\nK`\nVK\nLe`\"8)f	\"x:xhU*|\f|҂\fӂ\fԂ\fՂ *=  \f=ywi)\\\f= ywi)w! c!!!!{)!&!㔅#!!{)`#bw!y`)	\nT`\nVT\nUe`\"8)o	\"xCxhU* w!D+(!!㔅!!{)D(`#bw!(*!!!!{)!!㔅!!{)*D,!-\\c!T!&!!{)!C!㔅@!!{)*DT/\\c0!!㔅j!!{)!z!!{)D!!㔅!!{)D2\\c!!㔅!!{)!!!{)DU!!!㔅!!{)!!!{)DUP!(!!!{)!#!!{)DU!X!X!㔅C!!{)!S!!{)D^!c<\\\nby!!zw,!?!-Zځ@ !/ZA!2ZځB !ځC DE Q!!㔅!!{)!!!{)D<Z)," [nil t pnt case-fold-search cont icol f90-previous-statement 0 pcont bol f90-cache-position beg-pnt 4 parse-partial-sexp search-backward "!" " 	" 38 single begin end middle error " 	0-9" f90-continuation-indent current-indentation looking-at "[0-9]" f90-get-correct-indent label struct "\\(\\(\\sw+\\)[ 	]*:\\)?[ 	]*\\(if\\)\\>" 3 arg "\\(\\sw+\\)[ 	]*:" 1 scan-lists "then\\>" f90-next-statement " 	0-9&" command "\\(where\\|forall\\)[ 	]*(" "\\(!\\|$\\)" "\\(\\(\\sw+\\)[ 	]*:\\)?[ 	]*\\(select\\)[ 	]*case[ 	]*(" f90-else-like-re f90-if-indent "\\(\\(\\sw+\\)[ 	]*:\\)?[ 	]*\\(do\\)\\>" f90-do-indent f90-type-def-re "\\(interface\\|block[	]*data\\)\\>" f90-type-indent "\\(program\\)[ 	]+\\(\\sw+\\)\\>" 2 "module[ 	]*procedure\\>" "\\(module\\)[ 	]+\\(\\sw+\\)\\>" "\\(pure\\|recursive\\|extrinsic([^)]+)\\)?[ 	]*" "\\(subroutine\\)[ 	]+\\(\\sw+\\)" "end[ 	]*function" "[^!\"&\\n]*\\(function\\)[ 	]+\\(\\sw+\\)" "contains[ 	]*\\($\\|!\\)" f90-program-indent "[ 	]*$" "[ 	]*#" f90-end-if-re "end[ 	]*do\\>" f90-end-type-re "contains[ 	]*\\(!\\|$\\)" "end[ 	]*" f90-blocks-re "?\\([ 	]+\\(\\sw+\\)\\)?\\>"] 5 (#$ . 30655) nil])
#@102 Move point to beginning of the previous F90 statement.
Return nil if no previous statement is found.
(defalias 'f90-previous-statement #[nil "yyU ! 	)" [nil not-first-statement 0 -1 looking-at "[ 	0-9]*\\(!\\|$\\|#\\)"] 2 (#$ . 33204) nil])
#@95 Move point to beginning of the next F90 statement.
Return nil if no later statement is found.
(defalias 'f90-next-statement #[nil "yyU m? ! 	)" [nil not-last-statement 0 1 looking-at "[ 	0-9]*\\(!\\|$\\)"] 2 (#$ . 33466) nil])
#@84 Move point to the beginning of subprogram.
Return (type name) or nil if not found.
(defalias 'f90-beginning-of-subprogram #[nil "yw!7 \n\" \n\n{)\n˔2 \n\n{)D !g !g \nR \n\n{)\n˔b \n\n{)D P! \n˔~ \n\n{)\nД \n\n{)D !? ! \n \n\n{)\n˔ \n\n{)D ZU#yw!\n\n \n\n{)\n˔\n\n{)D!:!:\n%\n\n{)\n˔5\n\n{)DP!f\n˔Q\n\n{)\nДa\n\n{)D!?!\n\n\n{)\n˔\n\n{)DZ Q! \n\n\n{)\nД\n\n{)D \\ yU!+" [1 t nil matching-beg case-fold-search count 0 " 	0-9" looking-at "\\(program\\)[ 	]+\\(\\sw+\\)\\>" arg 2 "module[ 	]*procedure\\>" "\\(module\\)[ 	]+\\(\\sw+\\)\\>" "\\(pure\\|recursive\\|extrinsic([^)]+)\\)?[ 	]*" "\\(subroutine\\)[ 	]+\\(\\sw+\\)" 3 "end[ 	]*function" "[^!\"&\\n]*\\(function\\)[ 	]+\\(\\sw+\\)" re-search-backward f90-program-block-re move "end[ 	]*" f90-blocks-re "?\\([ 	]+\\(\\sw+\\)\\)?\\>" message "No beginning-found."] 5 (#$ . 33716) nil])
#@78 Move point to the end of subprogram.
Return (type name) or nil if not found.
(defalias 'f90-end-of-subprogram #[nil "yw\nQ!8 \f& \f\f{)\f͔6 \f\f{)D@ SUO#Oyw! \fn \f\f{)\fҔ~ \f\f{)D\f! ! \f \f\f{)\fҔ \f\f{)D\fP! \fҔ \f\f{)\f͔ \f\f{)D\f!!\f \f\f{)\fҔ\n\f\f{)D\\I\nQ!A\f/\f\f{)\f͔?\f\f{)DISC yU\\a!+" [1 t nil matching-end case-fold-search count 0 " 	0-9" looking-at "end[ 	]*" f90-blocks-re "?\\([ 	]+\\(\\sw+\\)\\)?\\>" arg 3 re-search-forward f90-program-block-re move "\\(program\\)[ 	]+\\(\\sw+\\)\\>" 2 "module[ 	]*procedure\\>" "\\(module\\)[ 	]+\\(\\sw+\\)\\>" "\\(pure\\|recursive\\|extrinsic([^)]+)\\)?[ 	]*" "\\(subroutine\\)[ 	]+\\(\\sw+\\)" "end[ 	]*function" "[^!\"&\\n]*\\(function\\)[ 	]+\\(\\sw+\\)" message "No end found."] 4 (#$ . 34870) nil])
#@115 Put mark at end of F90 subprogram, point at beginning.
Marks are pushed and highlight (grey shadow) is turned on.
(defalias 'f90-mark-subprogram #[nil "` `\"\nb 	\"   & \f	*" [nil program pos f90-end-of-subprogram push-mark t f90-beginning-of-subprogram string-match "XEmacs" emacs-version zmacs-activate-region mark-active deactivate-mark] 3 (#$ . 35857) nil])
#@151 Comment/uncomment every line in the region.
Insert f90-comment-region at the beginning of every line in the region
or, if already present, remove it.
(defalias 'f90-comment-region #[(beg-region end-region) " \nÓ\fby!! `ŕ|# cyUJ `	!WJ !!C `ŕ|# c# 	É)" [make-marker end end-region nil beg-region 0 looking-at regexp-quote f90-comment-region 1 marker-position] 4 (#$ . 36250) "*r"])
#@34 Indent current line as F90 code.
(defalias 'f90-indent-line #[(&optional no-update) " \f`y X y`)	\n5 `\nV5 \n6 e`\"8)P 	\"x$ xhU*)e w { wU{ !{  w! ! ǂ  ! ǂ !! ǂ !   xn ǂ iT] !    iZU!y w iU	!j!\"*`\f!W\f!b%L&	'Jy`)	`)&'J'	&#*)bi)*Vb )\f," [nil make-marker t case-fold-search pos no-line-number indent 0 f90-previous-statement bol f90-cache-position beg-pnt 4 parse-partial-sexp search-backward "!" " 	" 38 f90-leave-line-no looking-at "[0-9]" delete-horizontal-space " 	0-9" "!!!" f90-directive-comment-re regexp-quote f90-comment-region f90-indented-comment-re f90-calculate-indent comment-column "end" f90-smart-end f90-match-end col indent-to 1 marker-position no-update eol f90-auto-keyword-case f90-change-keywords auto-fill-function fill-column f90-do-auto-fill] 4 (#$ . 36676) nil])
#@193 Reindent the current F90 line, insert a newline and indent the newline.
An abbrev before point is expanded if `abbrev-mode' is non-nil.
If run in the middle of a line, the line is not broken.
(defalias 'f90-indent-new-line #[nil "  y& wU& !&  w!4 ! K `VK L e`\"8)y`)t `Vt u e`\"8) \"xc xhU*\f  c y`)`) #* \f   c!+" [nil t case-fold-search cont string abbrev-mode expand-abbrev 0 f90-leave-line-no " 	" looking-at "[0-9]" delete-horizontal-space " 	0-9" "\\(end\\|else\\|!\\)" f90-indent-line no-update f90-cache-position beg-pnt 3 parse-partial-sexp bol 4 search-backward "!" 38 "&" eol f90-auto-keyword-case f90-change-keywords newline f90-beginning-ampersand] 4 (#$ . 37691) nil])
#@49 Indent every line in region by forward parsing.
(defalias 'f90-indent-region #[(beg-region end-region) "  	\n\fby!B !yUB `\fW*   y`)k `Vk l e`\"8) \"xZ xhU*)y`) `V  e`\"8) \"x xhU*       *==  ny`)K`VKLe`\"8)f\"x:xhU*)y`)`Ve`\"8)\"x}xhU* *`!ywi)	yw!J(甅)(({))!E(ԔB(({)))*DT+)!(甅o(({)!(Ԕ(({))`#bw!y`)`Ve`\"8)\"xxhU* w!)D+n!+(甅\n(({))!&(Ԕ#(({)))*Dn2!a(ԔI(({)D2`#bw!a2*n5!s67!(Ԕ(({)(甅(({)D!(Ԕ(({)D9!(Ԕ(({)((({)Dx!!(Ԕ(({)((({)DxP!F(1(({)(甅A(({)DxЁ@ !?xЁA !x(Ԕf(({)(v(({)DЁB !C	\\	\nB\ny`)`Ve`\"8)\"xxhU*3yU3`\fW3D  E\\ZUE\\F GHyGwI  iU'Hj.J H\"*yUS\n`\fWS\nyK^wU^ЁL !^I  w`ЁM !s	ЁN !	!ЁO !ςPP!ςЁQ R!!ςS!T  xnςiTU]	`)VЁW !ЁX !ЁY !ЁZ !7![ \\ V] #*		5!.	6Z	ЁB !@	CZ	!w(甅V(({))!r(Ԕo(({)))*D+)!(甅(({)!(Ԕ(({))`#bw!y`)`Ve`\"8)\"xxhU* w!)D+!X(甅7(({))!S(ԔP(({)))*D2!(Ԕv(({)D2`#bw!2*67!(Ԕ(({)(甅(({)D!(Ԕ(({)D9!(Ԕ(({)((({)D!@!@(Ԕ+(({)(;(({)DP!l(W(({)(甅g(({)DЁ@ !?ЁA !(Ԕ(({)((({)DC		\\	\nB\n	Ё^ _` Q!(Ԕ(({)(甅(({)D	\n@\nA\na	b \f@\fA@@A@$)c!#	6p	Ёd !0	+p	e!<	9p	Ё^ _` Q!p	(ԔY	(({)(甅i	(({)Dp	C}		Z				iZU	GHyG	wI  iU	Hj	J H\"*y`)	`V		e`\"8)	\"x	xhU*3yU3`\fW3D  E\\ZU	E\\F GHyG6\nwI  iUG\nHjN\nJ H\"*	b\ff g h\"y\ni  \nj\nkl m !.\n" [make-marker point-marker nil end-struct beg-struct struct cont ind-b ind-curr ind-lev block-list save-point end-region-mark end-region beg-region 0 looking-at "[ 	]*[0-9]*\\(!\\|#\\|[ 	]*$\\)" f90-indent-line no-update 1 pcont f90-previous-statement bol f90-cache-position beg-pnt 4 parse-partial-sexp search-backward "!" " 	" 38 single begin end middle error " 	0-9" "\\(\\(\\sw+\\)[ 	]*:\\)?[ 	]*\\(do\\)\\>" 3 arg label "\\(\\sw+\\)[ 	]*:" f90-do-indent "\\(\\(\\sw+\\)[ 	]*:\\)?[ 	]*\\(if\\)\\>" scan-lists "then\\>" f90-next-statement " 	0-9&" "\\(\\(\\sw+\\)[ 	]*:\\)?[ 	]*\\(select\\)[ 	]*case[ 	]*(" command "\\(where\\|forall\\)[ 	]*(" "\\(!\\|$\\)" f90-else-like-re f90-if-indent f90-type-def-re "\\(interface\\|block[	]*data\\)\\>" f90-type-indent "\\(program\\)[ 	]+\\(\\sw+\\)\\>" 2 "module[ 	]*procedure\\>" "\\(module\\)[ 	]+\\(\\sw+\\)\\>" "\\(pure\\|recursive\\|extrinsic([^)]+)\\)?[ 	]*" "\\(subroutine\\)[ 	]+\\(\\sw+\\)" "end[ 	]*function" "[^!\"&\\n]*\\(function\\)[ 	]+\\(\\sw+\\)" "contains[ 	]*\\($\\|!\\)" f90-program-indent current-indentation f90-continuation-indent no-line-no no-line-number col delete-horizontal-space indent-to f90-leave-line-no "[0-9]" "[ 	]*$" "[ 	]*#" "!!!" f90-directive-comment-re regexp-quote f90-comment-region f90-indented-comment-re f90-calculate-indent comment-column eol "end" "\\(do\\|if\\|else\\|select[ 	]*case\\|case\\|where\\|forall\\)\\>" "\\(program\\|module\\|interface\\|block[ 	]*data\\)\\>" "\\(contains\\|\\sw+[ 	]*:\\)" re-search-forward "\\(function\\|subroutine\\)" t "end[ 	]*" f90-blocks-re "?\\([ 	]+\\(\\sw+\\)\\)?\\>" f90-smart-end f90-block-match f90-end-if-re "end[ 	]*do\\>" f90-end-type-re string-match "Xemacs" emacs-version zmacs-deactivate-region transient-mark-mode mark-active run-hooks deactivate-mark-hook] 11 (#$ . 38531) "*r"])
#@54 Properly indent the subprogram which contains point.
(defalias 'f90-indent-subprogram #[nil " $ 	@	A@#` \"	@	A@#1 !` \"!*" [nil program f90-mark-subprogram message "Indenting %s %s..." f90-indent-region mark "Indenting %s %s...done" "Indenting the whole file..." "Indenting the whole file...done"] 5 (#$ . 43215) nil])
#@64 Break line at point, insert continuation marker(s) and indent.
(defalias 'f90-break-line #[(&optional no-update) "\n `\nV \n e`\"8)( c c \n6 `\nV6 \n7 e`\"8)  `)\n\n_ `\nV_ \n` e`\"8) y\n\"\n `\nV \n e`\"8) \n\"t ̔̕{+ 	Pc  c \n y`)`)\n \n#*  c)?  " [nil ctype f90-cache-position beg-pnt 3 parse-partial-sexp "&" newline 4 delete-horizontal-space eol type 0 re-search-forward "[!]+" " " no-update bol f90-auto-keyword-case f90-change-keywords f90-beginning-ampersand "& " f90-indent-line] 4 (#$ . 43565) nil])
#@56 From fill-column, search backward for break-delimiter.
(defalias 'f90-find-breakpoint #[nil "y`)	\"\f   !?. u. !, u. u)" [0 bol re-search-backward f90-break-delimiters f90-break-before-delimiters backward-char looking-at f90-no-break-re nil 2] 3 (#$ . 44218)])
#@215 Toggle f90-auto-fill mode.
With ARG, turn `f90-auto-fill' mode on iff ARG is positive.
In `f90-auto-fill' mode, inserting a space at a column beyond `fill-column'
automatically breaks the line at a previous space.
(defalias 'f90-auto-fill-mode #[(arg) "	 	? !V ĉ " [arg auto-fill-function prefix-numeric-value 0 f90-do-auto-fill force-mode-line-update] 2 (#$ . 44510) "P"])
#@56 Break line if non-white characters beyond fill-column.
(defalias 'f90-do-auto-fill #[nil "i)	V< 	!!4 # `V# $ e`\"8)4    " [nil fill-column move-to-column looking-at "[ 	]*$" f90-cache-position beg-pnt 3 parse-partial-sexp delete-horizontal-space f90-find-breakpoint f90-break-line] 4 (#$ . 44904) nil])
#@61 Join present line with next line, if this line ends with &.
(defalias 'f90-join-lines #[nil "`xhUi !`yw!( !\n`|\n= `\nV= \n> e`\"8)Q  ce i)Ve  	b*" [nil oldpos pos " 	" 38 delete-char -1 1 looking-at "&" f90-cache-position beg-pnt 3 parse-partial-sexp delete-horizontal-space " " auto-fill-function fill-column f90-do-auto-fill t] 4 (#$ . 45245) nil])
#@71 Fill every line in region by forward parsing. Join lines if possible.
(defalias 'f90-fill-region #[(beg-region end-region) " 	\nb  ! ywi)\\i)V !!q ] `V] ^ e`\"8)q  5  !y w iU j \"*5 `	!W yU` \f$\"   & '!." [make-marker nil t auto-fill-function af-function go-on indent f90-auto-keyword-case f90-smart-end end-region-mark end-region beg-region f90-join-lines 0 " 	0-9" f90-continuation-indent fill-column move-to-column looking-at "[ 	]*$" f90-cache-position beg-pnt 3 parse-partial-sexp delete-horizontal-space f90-find-breakpoint f90-break-line no-update no-line-no no-line-number col indent-to 1 marker-position string-match "XEmacs" emacs-version zmacs-deactivate-region transient-mark-mode mark-active run-hooks deactivate-mark-hook] 8 (#$ . 45662) "*r"])
#@102 Match end-struct with beg-struct and complete end-block if possible.
Leave point at the end of line.
(defalias 'f90-block-match #[(beg-block beg-name end-block end-name) "`)\"č" [search-forward "end" nil no-match (byte-code "	\n \n \n\f,; 	. 	#\"? \"Pc? 	!K \nQ \n\f, s s \"Pc   #!!   \"!!  !!?  " [beg-block end-block b a b-local a-local message "END %s does not match %s." nil throw no-match "Inserting %s." " " search-forward beg-name end-name "Replacing %s with %s." replace-match "Deleting %s." "" looking-at "[ 	]*!" delete-horizontal-space] 5)] 3 (#$ . 46571)])
#@71 From an end foo statement, find the corresponding foo including name.
(defalias 'f90-match-end #[nil " `	\n\fywQ!P > {)ՔN {)D)\f@\fA@yUH Q#? Ép  `V  e`\"8)  `V  e`\"8)?s *Hyw!Ք {) !!\f	{)! !*D$! !Ք1{) !LI{)!`#bw!y`)'z`Vz{e`\"8)'\"xixhU* w! !D+$-!{)D-`#bw!-*$!'Ք{) !!{)! !*D$1!R={)ՔM{)Dj!mg{)D$!{){)D !!{){)D P!{)Ք{)D !#!#{){)D$4Zd Q!b \\d UU!>'?y`)'`)>?@ ?'>#*AB =`\fWC D  y``{#E !@A@\nbyF $).\n" [1 window-start nil t end-struct end-block beg-block end-name beg-name case-fold-search end-point matching-beg top-of-window count 0 " 	0-9" looking-at "end[ 	]*" f90-blocks-re "?\\([ 	]+\\(\\sw+\\)\\)?\\>" arg 3 notexist stop re-search-backward "\\(" "\\)" f90-cache-position beg-pnt parse-partial-sexp 4 "\\(\\(\\sw+\\)[ 	]*:\\)?[ 	]*\\(do\\)\\>" struct label "\\(\\sw+\\)[ 	]*:" "\\(\\(\\sw+\\)[ 	]*:\\)?[ 	]*\\(if\\)\\>" scan-lists " 	" "then\\>" bol search-backward "!" 38 f90-next-statement " 	0-9&" command "\\(where\\|forall\\)[ 	]*(" "\\(!\\|$\\)" "\\(\\(\\sw+\\)[ 	]*:\\)?[ 	]*\\(select\\)[ 	]*case[ 	]*(" f90-type-def-re "\\(interface\\|block[	]*data\\)\\>" "\\(program\\)[ 	]+\\(\\sw+\\)\\>" 2 "module[ 	]*procedure\\>" "\\(module\\)[ 	]+\\(\\sw+\\)\\>" "\\(pure\\|recursive\\|extrinsic([^)]+)\\)?[ 	]*" "\\(subroutine\\)[ 	]+\\(\\sw+\\)" "end[ 	]*function" "[^!\"&\\n]*\\(function\\)[ 	]+\\(\\sw+\\)" "\\b" message "No matching beginning." eol f90-auto-keyword-case f90-change-keywords f90-smart-end blink "Matches %d: %s" what-line sit-for f90-block-match] 11 (#$ . 47290) nil])
#@72 Inserts an complete end statement matching beginning of present block.
(defalias 'f90-insert-end #[nil " 	 c )" [f90-smart-end blink "end" f90-indent-new-line] 1 (#$ . 49480) nil])
#@107 Typing `\[help-command] or `? lists all the F90 abbrevs. 
Any other key combination is executed normally.
(defalias 'f90-abbrev-start #[nil "c\"  \n!  	U) 	=.  B \"= \nB 	C*" [nil c e last-command-char string-match "XEmacs" emacs-version next-command-event event-to-character read-event 63 help-char f90-abbrev-help unread-command-event unread-command-events] 3 (#$ . 49679) nil])
#@49 List the currently defined abbrevs in F90 mode.
(defalias 'f90-abbrev-help #[nil "! !!" [message "Listing abbrev table..." display-buffer f90-prepare-abbrev-list-buffer "Listing abbrev table...done"] 2 (#$ . 50106) nil])
(defalias 'f90-prepare-abbrev-list-buffer #[nil "!q \"eb! )!" [get-buffer-create "*Abbrevs*" erase-buffer insert-abbrev-table-description f90-mode-abbrev-table t set-buffer-modified-p nil edit-abbrevs-mode] 3])
#@40 Upcase all F90 keywords in the buffer.
(defalias 'f90-upcase-keywords #[nil "!" [f90-change-keywords upcase-word] 2 (#$ . 50572) nil])
#@44 Capitalize all F90 keywords in the buffer.
(defalias 'f90-capitalize-keywords #[nil "!" [f90-change-keywords capitalize-word] 2 (#$ . 50716) nil])
#@42 Downcase all F90 keywords in the buffer.
(defalias 'f90-downcase-keywords #[nil "!" [f90-change-keywords downcase-word] 2 (#$ . 50872) nil])
#@40 Upcase all F90 keywords in the region.
(defalias 'f90-upcase-region-keywords #[(beg end) "\n#" [f90-change-keywords upcase-word beg end] 4 (#$ . 51022) "*r"])
#@44 Capitalize all F90 keywords in the region.
(defalias 'f90-capitalize-region-keywords #[(beg end) "\n#" [f90-change-keywords capitalize-word beg end] 4 (#$ . 51191) "*r"])
#@42 Downcase all F90 keywords in the region.
(defalias 'f90-downcase-region-keywords #[(beg end) "\n#" [f90-change-keywords downcase-word beg end] 4 (#$ . 51372) "*r"])
(defalias 'f90-change-keywords #[(change-word &optional beg end) "	 \n e	 	 dȰ	e ɉ\fbю	# `\"89 89 yw!)9 `!`){\f!\f{9 9 ." [beg end "\\(" f90-keywords-re "\\|" f90-procedures-re f90-hpf-keywords-re f90-operators-re "\\)" nil buffer-modified-p back-point saveword modified state ref-point keyword-re ((byte-code " !" [modified set-buffer-modified-p nil] 2)) re-search-forward t parse-partial-sexp 3 4 0 " 	0-9" looking-at "#" backward-word 1 change-word -1] 10])
(provide (quote f90))
