;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) "\\" "\\<\\(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) "\\"] 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#########@#AB#CD#EF#GH#IJ#KL#MN#OP#QR#STT'B'UVV'B'WXX'B'YZZ'B'[\\\\'B']^^'B'_``'B'a!baa'B'ca!" [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$ BC$ DE$ FG$ HI$ JK$ LM$ NO$ PQ$ RS$ TU$ VW$ XY$ Z[$ \\]$ ^_$ `a$ bc$ de$ fg$ hi$ jk$ lm$ no$ pq$ )‡" [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 "`Ve `\"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 "`Ve `\"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)Ty \" :` 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`Vabe`\"8)| \"xPxhU* 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‚6iT\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 " Hy`)&`V&'e`\"8)@ \"xxhU*)y`)f`Vfge`\"8) \"xUxhU*\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`V89e  `\"8)S\"x'xhU*)y`)z`Vz{e  `\"8)\"xixhU* Ђ т ҂ ӂ *=\f =\f!\f yي`)#\\yw!Bܔ{)!1ᔅ.{)*DB\n\"\\Y!ܔ^{)!yᔅv{)`#bw!y`)`Ve  `\"8)\"xxhU* w!D+T(!ᔅ{)D(`#bw!(*T!Yܔ.{)!KᔅH{)*DY\n,\\ #yw!ܔ{)!ᔅ{)*D\n\"\\!Lܔ{)!ᔅ{)`#bw!Gy`)`Ve  `\"8)/\"xxhU*L w!LD+(!ᔅ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~\ne  `\"8) \"xmxhU*\f҂\fӂ\fԂ\fՂ *= +y`) \n`\nV\n e  `\"8)# \"xxhU*)y`) \nK`\nVK\nLe  `\"8)f \"x:xhU*|\f|҂\fӂ\fԂ\fՂ *= \f=ywi)\\\f= ywi)w! c!! !!{)!&!㔅#!!{)`#bw!y`) \nT`\nVT\nUe  `\"8)o \"xCxhU* w!D+(!!㔅!!{)D(`#bw!(*!!!!{)!!㔅!!{)*D,! -\\c!T!&!!{)!C!㔅@!!{)*DT /\\c0!!㔅j!!{)!z!!{)D!!㔅!!{)D 2\\c!!㔅!!{)!!!{)DU!!!㔅!!{)!!!{)DUP!(!!!{)!#!!{)DU!X!X!㔅C!!{)!S!!{)D^!c <\\\nby!!zw,!?! -Zځ@! /ZA! 2ZځB!ځCDEQ!!㔅!!{)!!!{)D " 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 "yyUm?! )" [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{)DP!\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{)DP!f\n˔Q\n\n{)\nДa\n\n{)D!?!\n\n\n{)\n˔\n\n{)D ZQ!\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#Oyw!\fn\f\f{)\fҔ~\f\f{)D\f!!\f\f\f{)\fҔ\f\f{)D\fP!\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{)DI SCy 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 Xy`) \n5`\nV5\n6e  `\"8)P \"x$xhU*)ew{wU{!{ w!!ǂ!ǂ!!ǂ! xnǂiT]! iZU !y w iU !j!\"*`\f!W\f!b%L& 'Jy`) `)&'J' &#*)bi)*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`VKLe`\"8)y`)t`Vtue`\"8)\"xcxhU*\f cy`)`)#* \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`Vkle`\"8)\"xZxhU*)y`)`Ve`\"8)\"xxhU*       *== ‰ ny`)K`VKLe`\"8)f\"x:xhU*)y`)`Ve`\"8)\"x}xhU* *`!ywi) yw!J(甅)(({))!E(ԔB(({)) )*DT+‰)!(甅o(({)!(Ԕ(({))`#bw!y`)`Ve`\"8)\"xxhU* w! )D+n!+(甅\n(({))!&(Ԕ#(({)) )*Dn2!a(ԔI(({)D2`#bw!a2*n5!s67!(Ԕ(({)(甅(({)D!(Ԕ(({)D9!(Ԕ(({)((({)Dx!!(Ԕ(({)((({)DxP!F(1(({)(甅A(({)DxЁ@!?xЁA!x(Ԕf(({)(v(({)DЁB!C \\  \nB\ny`)`Ve`\"8)\"xxhU*3yU3`\fW3D E\\ZUE\\FGHyGwI iU'Hj.JH\"*yUS\n`\fWS\nyK^wU^ЁL!^I w`ЁM!s ЁN! !ЁO!ςPP!ςЁQR!!ςS!T xnςiTU] `)VЁW!ЁX!ЁY!ЁZ!7![\\V]#*  5!. 6Z ЁB!@ CZ !w(甅V(({))!r(Ԕo(({)) )*D+‰)!(甅(({)!(Ԕ(({))`#bw!y`)`Ve`\"8)\"xxhU* w! )D+!X(甅7(({))!S(ԔP(({)) )*D2!(Ԕv(({)D2`#bw!2*67!(Ԕ(({)(甅(({)D!(Ԕ(({)D9!(Ԕ(({)( (({)D!@!@(Ԕ+(({)(;(({)DP!l(W(({)(甅g(({)DЁ@!?ЁA!(Ԕ(({)((({)DC  \\ \nB\n Ё^_`Q!(Ԕ(({)(甅(({)D \n@\nA\na b\f@\fA@ @ A@$)c!# 6p Ёd!0 +p e!< 9p Ё^_`Q!p (ԔY (({)(甅i (({)Dp C}  Z    iZU GHyG wI iU Hj JH\"*y`) `V  e`\"8) \"x xhU*3yU3`\fW3D E\\ZU E\\FGHyG6\nwI iUG\nHjN\nJH\"*  b\f‰ ‰fgh\"y\ni \nj\nklm!.\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\ne `\"8)(c c\n6`\nV6\n7e `\"8) `)\n \n_`\nV_\n`e `\"8)y\n\"\n`\nV\ne `\"8)\n\"t̔̕{  + Pc c\ny`)`)\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 cei)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 !yw iUj\"*5` !WyU`\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,ss\"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 ywQ!P>{)ՔN{)D)\f@\fA@y UH‰Q#?Ép`Ve`\"8)`Ve`\"8)?s*Hyw!Ք{) !!\f {)! !*D$‰! !Ք1{) !LI{)!`#bw!y`)'z`Vz{e`\"8)'\"xixhU* w! !D+$-!{)D-`#bw!-*$!'Ք{) !!{)! !*D$1!R={)ՔM{)Dj!mg{)D$!{){)D !!{){)D P!{)Ք{)D !#!#{){)D$‰ 4 Z dQ!b \\ d UU!‰>'?y`)'`)>?@?'>#*AB=`\fWCD 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) " \ne  d Ȱ e ɉ \f bю #`\"8989yw!)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))