;ELC ;;; compiled by kwzh@hal.gnu.ai.mit.edu on Tue May 30 19:48:16 1995 ;;; from file /gd/gnu/emacs/19.0/lisp/f90.el ;;; emacs version 19.28.92.13. ;;; 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.28.90"))) (error "`f90.el' was compiled for Emacs 19.29 or later")) #@44 Address of mailing list for F90 mode bugs. (defconst bug-f90-mode "tfkte@fy.chalmers.se" (#$ . 469)) #@42 *Extra indentation applied to DO blocks. (defvar f90-do-indent 3 (#$ . -576)) #@73 *Extra indentation applied to IF, SELECT CASE, WHERE and FORALL blocks. (defvar f90-if-indent 3 (#$ . -660)) #@70 *Extra indentation applied to TYPE, INTERFACE and BLOCK DATA blocks. (defvar f90-type-indent 3 (#$ . -775)) #@74 *Extra indentation applied to PROGRAM/MODULE/SUBROUTINE/FUNCTION blocks. (defvar f90-program-indent 2 (#$ . -889)) #@55 *Extra indentation applied to F90 continuation lines. (defvar f90-continuation-indent 5 (#$ . -1010)) #@76 *String inserted by \[f90-comment-region] at start of each line in region. (defvar f90-comment-region "!!$" (#$ . -1118)) #@37 *Comments to be indented like code. (defvar f90-indented-comment "!" (#$ . -1246)) #@69 *String of comment-like directive like "!HPF$", not to be indented. (defvar f90-directive-comment nil (#$ . -1335)) #@70 *t makes automatic insertion of & at beginning of continuation line. (defvar f90-beginning-ampersand t (#$ . -1457)) #@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) (#$ . -1581)) #@66 *Regexp holding list of delimiters at which lines may be broken. (defvar f90-break-delimiters "[-+\\*/><=,% ]" (#$ . -1816)) #@70 *Non-nil causes `f90-do-auto-fill' to break lines before delimiters. (defvar f90-break-before-delimiters t (#$ . -1948)) #@114 *Automatic case conversion of keywords. The options are 'downcase-word, 'upcase-word, 'capitalize-word and nil (defvar f90-auto-keyword-case nil (#$ . -2076)) #@72 *Automatic highlight of line at every indent or newline (for hilit19). (defvar f90-auto-hilit19 t (#$ . -2243)) #@36 *If nil, left-justify linenumbers. (defvar f90-leave-line-no nil (#$ . -2361)) #@68 *Non-nil displays a startup message when F90 mode is first called. (defvar f90-startup-message t (#$ . -2446)) #@24 *List of f90-keywords. (defvar f90-keywords (quote ("allocate" "allocatable" "assign" "assignment" "backspace" "block" "call" "case" "character" "close" "common" "complex" "contains" "continue" "cycle" "data" "deallocate" "dimension" "do" "double" "else" "elseif" "elsewhere" "end" "enddo" "endfile" "endif" "entry" "equivalence" "exit" "external" "forall" "format" "function" "goto" "if" "implicit" "include" "inquire" "integer" "intent" "interface" "intrinsic" "logical" "module" "namelist" "none" "nullify" "only" "open" "optional" "parameter" "pause" "pointer" "precision" "print" "private" "procedure" "program" "public" "read" "real" "recursive" "return" "rewind" "save" "select" "sequence" "stop" "subroutine" "target" "then" "type" "use" "where" "while" "write")) (#$ . -2563)) #@36 *List of F90 intrinsic procedures. (defvar f90-intrinsic-procedures (quote ("abs" "achar" "acos" "adjustl" "adjustr" "aimag" "aint" "all" "allocated" "anint" "any" "asin" "associated" "atan" "atan2" "bit_size" "btest" "ceiling" "char" "cmplx" "conjg" "cos" "cosh" "count" "cshift" "date_and_time" "dble" "digits" "dim" "dot_product" "dprod" "eoshift" "epsilon" "exp" "exponent" "floor" "fraction" "huge" "iachar" "iand" "ibclr" "ibits" "ibset" "ichar" "ieor" "index" "int" "ior" "ishft" "ishftc" "kind" "lbound" "len" "len_trim" "lge" "lgt" "lle" "llt" "log" "logical" "log10" "matmul" "max" "maxexponent" "maxloc" "maxval" "merge" "min" "minexponent" "minloc" "minval" "mod" "modulo" "mvbits" "nearest" "nint" "not" "pack" "precision" "present" "product" "radix" "random_number" "random_seed" "range" "real" "repeat" "reshape" "rrspacing" "scale" "scan" "selected_int_kind" "selected_real_kind" "set_exponent" "shape" "sign" "sin" "sinh" "size" "spacing" "spread" "sqrt" "sum" "system_clock" "tan" "tanh" "tiny" "transfer" "transpose" "trim" "ubound" "unpack" "verify")) (#$ . -3355)) #@36 *List of hpf intrinsic procedures. (defvar f90-hpf-procedures (quote ("all_prefix" "all_scatter" "all_suffix" "any_prefix" "any_scatter" "any_suffix" "copy_prefix" "copy_scatter" "copy_suffix" "count_prefix" "count_scatter" "count_suffix" "grade_down" "grade_up" "hpf_alignment" "hpf_template" "hpf_distribution" "iall" "iall_prefix" "iall_scatter" "iall_suffix" "iany" "iany_prefix" "iany_scatter" "iany_suffix" "iparity" "iparity_prefix" "iparity_scatter" "iparity_suffix" "leadz" "maxval_prefix" "maxval_scatter" "maxval_suffix" "minval_prefix" "minval_scatter" "minval_suffix" "parity" "parity_prefix" "parity_scatter" "parity_suffix" "popcnt" "poppar" "product_prefix" "product_scatter" "product_suffix" "sum_prefix" "sum_scatter" "sum_suffix" "ilen" "number_of_processors" "processors_shape")) (#$ . -4447)) #@26 *List of hpf directives. (defvar f90-hpf-directives (quote ("align" "distribute" "dynamic" "inherit" "template" "processors" "realign" "redistribute" "independent")) (#$ . -5267)) #@24 *List of hpf keywords. (defvar f90-hpf-keywords (quote ("pure" "extrinsic" "new" "with" "onto" "block" "cyclic")) (#$ . -5453)) #@131 For consideration as a value of `f90-font-lock-keywords-1'. This does fairly subdued highlighting of comments and function names. (defconst f90-font-lock-keywords-1 (byte-code "PEϯ\f!" [purecopy ("^[ ]*\\(program\\|module\\)[ ]+\\sw+" 1 font-lock-keyword-face) ("^[ ]*\\(program\\|module\\)[ ]+\\(\\sw+\\)" 2 font-lock-function-name-face) ("\\(^.*\\(function\\|subroutine\\)\\)[ ]+\\sw+" 1 font-lock-keyword-face) ("^.*\\(function\\|subroutine\\)[ ]+\\(\\sw+\\)" 2 font-lock-function-name-face) ("^[ ]*end[ ]*\\(program\\|module\\|function\\|subroutine\\|type\\)" . font-lock-keyword-face) "^[ ]*end[ ]*\\(program\\|module\\|function\\|" "subroutine\\|type\\)[ ]+\\(\\sw+\\)" 2 font-lock-function-name-face ("^[ ]*\\(type\\)[ ]+\\sw+" 1 font-lock-keyword-face) ("^[ ]*type[ ]+\\(\\sw+\\)" 1 font-lock-function-name-face) ("^[ ]*\\(type[ ]*,[ ]*\\(private\\|public\\)\\)[ ]*::[ ]*\\(\\sw+\\)" 1 font-lock-keyword-face) ("^[ ]*\\(type[ ]*,[ ]*\\(private\\|public\\)\\)[ ]*::[ ]*\\(\\sw+\\)" 3 font-lock-function-name-face) ("^[ ]*\\(end[ ]*\\)?interface\\>" . font-lock-keyword-face) ("^[ ]*contains\\>" . font-lock-keyword-face)] 13) (#$ . 5588)) #@108 For consideration as a value of `f90-font-lock-keywords'. This highlights variable types, "keywords," etc. (defconst f90-font-lock-keywords-2 (byte-code "\n#Q#Q #Q!#Q\"#Q\"!" [purecopy append f90-font-lock-keywords-1 ("\\(\\(real\\|integer\\|character\\|complex\\|logical\\|type[ ]*(\\sw+)\\).*\\)::" 1 font-lock-type-face) ("implicit[ ]*none" . font-lock-keyword-face) ("^[ ]*\\(\\sw+[ ]*:[ ]*\\)?\\(do\\([ ]*while\\)?\\)\\>" 2 font-lock-keyword-face) ("^[ ]*\\(\\sw+\\)[ ]*:[ ]*\\(do\\([ ]*while\\)?\\)\\>" 1 font-lock-function-name-face) ("^[ ]*\\(end[ ]*do\\)\\>" 1 font-lock-keyword-face) ("^[ ]*end[ ]*do[ ]+\\(\\sw+\\)" 1 font-lock-function-name-face) ("^[ ]*\\(\\sw+[ ]*:[ ]*\\)?\\(if\\)\\>" 2 font-lock-keyword-face) ("^[ ]*\\(\\sw+\\)[ ]*:[ ]*if\\>" 1 font-lock-function-name-face) ("^[ ]*\\(end[ ]*if\\)\\>" 1 font-lock-keyword-face) ("^[ ]*end[ ]*if[ ]+\\(\\sw+\\)" 1 font-lock-function-name-face) ("^[ ]*\\(\\sw+[ ]*:[ ]*\\)?\\(select[ ]*case\\)\\>" 2 font-lock-keyword-face) ("^[ ]*\\(\\sw+\\)[ ]*:[ ]*\\(select[ ]*case\\)\\>" 1 font-lock-function-name-face) ("^[ ]*end[ ]*select\\>" . font-lock-keyword-face) ("^[ ]*end[ ]*select\\>[ ]+\\(\\sw+\\)" 1 font-lock-function-name-face) ("\\(where\\|forall\\)[ ]*(" 1 font-lock-keyword-face) ("\\<\\(elsewhere\\|else\\|else[ ]*if\\)\\>" . font-lock-keyword-face) ("\\" . font-lock-keyword-face) ("\\" . font-lock-keyword-face) ("\\<\\(exit\\|cycle\\)\\>" . font-lock-keyword-face) ("\\<\\(exit\\|cycle\\)[ ]*\\(\\sw+\\)\\>" 2 font-lock-function-name-face) ("\\<\\(stop\\|return\\)\\>" . font-lock-keyword-face) ("^[ ]*\\(case\\)[ ]*\\((\\|default\\)" 1 font-lock-keyword-face) "\\<\\(" mapconcat identity f90-keywords "\\|" "\\)\\>" f90-intrinsic-procedures f90-hpf-procedures f90-hpf-directives f90-hpf-keywords] 34) (#$ . 6786)) #@51 *Additional expressions to highlight in F90 mode. (defvar f90-font-lock-keywords (byte-code " \n" [font-lock-maximum-decoration f90-font-lock-keywords-2 f90-font-lock-keywords-1] 1) (#$ . -8725)) #@20 *Face for strings. (defvar f90-face-string (quote named-param) (#$ . -8933)) #@21 *Face for comments. (defvar f90-face-comment (quote comment) (#$ . -9016)) #@25 *Face for declarations. (defvar f90-face-decl (quote include) (#$ . -9097)) #@27 *Face for program blocks. (defvar f90-face-prog (quote defun) (#$ . -9179)) #@19 *Face for labels. (defvar f90-face-label (quote Tomato-bold) (#$ . -9261)) #@24 *Face for type blocks. (defvar f90-face-type (quote defun) (#$ . -9342)) #@29 *Face for interface blocks. (defvar f90-face-interface (quote defun) (#$ . -9421)) #@31 *Face for contains statement. (defvar f90-face-contains (quote defun) (#$ . -9510)) #@25 *Face for do-structure. (defvar f90-face-do (quote SteelBlue-bold) (#$ . -9600)) #@25 *Face for if-structure. (defvar f90-face-if (quote define) (#$ . -9687)) #@34 *Face for select-case structure. (defvar f90-face-select (quote define) (#$ . -9766)) #@28 *Face for stop and return. (defvar f90-face-stop (quote defun) (#$ . -9858)) #@27 *Face for exit and cycle. (defvar f90-face-exit (quote SteelBlue-bold) (#$ . -9941)) #@21 *Face for keywords. (defvar f90-face-keyword (quote struct) (#$ . -10032)) #@33 *Face for intrinsic procedures. (defvar f90-face-intrinsics (quote struct) (#$ . -10113)) #@27 *Face for hpf procedures. (defvar f90-face-hpf-procedures (quote struct) (#$ . -10209)) #@27 *Face for hpf directives. (defvar f90-face-hpf-directives (quote struct) (#$ . -10303)) #@25 *Face for hpf keywords. (defvar f90-face-hpf-keywords (quote struct) (#$ . -10397)) (byte-code "! PE E\fE\fEEEEEEPEEEEEE E\"EE\"EE'EE'EE,EE,EE'E'E'E'E5EE8E,E=#Q@EA#QBEC#QDEE#QFEG#QHE)ŁI$Ň" [fboundp hilit-set-mode-patterns f90-mode "\\(\"[^\"\n]*\\(&[ ]*\\(![^\n]*\\)?\n[ ]*&[^\"\n]*\\)*\"" "\\|'[^'\n]*\\(&[ ]*\\(![^\n]*\\)?\n[ ]*&[^'\n]*\\)*'\\)" nil f90-face-string "!" "$" f90-face-comment "\\(\\(real\\|integer\\|character\\|complex\\|logical\\|type[ ]*(\\sw+)\\).*\\)::" 1 f90-face-decl "implicit[ ]*none" "^[ ]*\\(program\\|module\\)[ ]+\\sw+" f90-face-prog "^[ ]*\\(program\\|module\\)[ ]+\\(\\sw+\\)" 2 f90-face-label "\\(^.*\\(function\\|subroutine\\)\\)[ ]+\\sw+" "^.*\\(function\\|subroutine\\)[ ]+\\(\\sw+\\)" "^[ ]*end[ ]*\\(program\\|module\\|function\\|subroutine\\|type\\)" "^[ ]*end[ ]*\\(program\\|module\\|function\\|" "subroutine\\|type\\)[ ]+\\(\\sw+\\)" "^[ ]*\\(type\\)[ ]+\\sw+" f90-face-type "^[ ]*type[ ]+\\(\\sw+\\)" "^[ ]*\\(type[ ]*,[ ]*\\(private\\|public\\)\\)[ ]*::[ ]*\\(\\sw+\\)" 3 "^[ ]*\\(end[ ]*\\)?interface\\>" f90-face-interface "^[ ]*contains\\>" f90-face-contains "^[ ]*\\(\\sw+[ ]*:[ ]*\\)?\\(do\\([ ]*while\\)?\\)\\>" f90-face-do "^[ ]*\\(\\sw+\\)[ ]*:[ ]*\\(do\\([ ]*while\\)?\\)\\>" "^[ ]*\\(end[ ]*do\\)\\>" "^[ ]*end[ ]*do[ ]+\\(\\sw+\\)" "^[ ]*\\(\\sw+[ ]*:[ ]*\\)?\\(if\\)\\>" f90-face-if "^[ ]*\\(\\sw+\\)[ ]*:[ ]*if\\>" "^[ ]*\\(end[ ]*if\\)\\>" "^[ ]*end[ ]*if[ ]+\\(\\sw+\\)" "^[ ]*\\(\\sw+[ ]*:[ ]*\\)?\\(select[ ]*case\\)\\>" f90-face-select "^[ ]*\\(\\sw+\\)[ ]*:[ ]*\\(select[ ]*case\\)\\>" "^[ ]*end[ ]*select\\>" "^[ ]*end[ ]*select\\>[ ]+\\(\\sw+\\)" "\\(where\\|forall\\)[ ]*(" "\\<\\(elsewhere\\|else\\|else[ ]*if\\)\\>" "\\" "\\" "\\<\\(exit\\|cycle\\)\\>" f90-face-exit "\\<\\(exit\\|cycle\\)[ ]*\\sw+\\>" "\\<\\(stop\\|return\\)\\>" f90-face-stop "^[ ]*\\(case\\)[ ]*\\((\\|default\\)" "\\<\\(" mapconcat identity f90-keywords "\\|" "\\)\\>" f90-face-keyword f90-intrinsic-procedures f90-face-intrinsics f90-hpf-procedures f90-face-hpf-procedures f90-hpf-directives f90-face-hpf-directives f90-hpf-keywords f90-face-hpf-keywords case-insensitive] 47) #@42 Syntax table in use in F90 mode buffers. (defvar f90-mode-syntax-table nil (#$ . 12811)) (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 (#$ . 13140)) (byte-code "a ################\"r#  #!B###########@#AB#CD#EF#GH#IJ#KL#MN#OPPQBQRSSQBQTUUQBQVWWQBQXYYQBQZ[[QBQ\\]]QBQ^_P`RaaQBQbc!ccQBQdc!be!eeQBQefghe\"iejk$ielm$ieno$iepq$iers$ietu$ievw$iexy$iez{$ie|}$ie~$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$ie$gf)" [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 "Lucid" emacs-version add-menu nil "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]) [menu-bar] [menu-bar 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) "[a-z_][a-z_0-9]*" f90-symbol-re current-load-list "\\(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\\|else[ ]*if\\|elsewhere\\|case[ ]*(\\|case[ ]*default\\)" f90-else-like-re "end[ ]*\\(if\\|select\\|where\\|forall\\)\\>" f90-end-if-re "end[ ]*\\(type\\|interface\\|block[ ]*data\\)\\>" f90-end-type-re "\\(\\*\\*\\|//\\|=>\\)" f90-no-break-re "\\(type\\)[ ]*,[ ]*\\(public\\|private\\)" "[ ]*::[ ]*\\(" "\\)\\>" f90-p-type-re boundp f90-cache-position make-variable-buffer-local f90-mode-abbrev-table abbrevs-changed ac define-abbrev-table define-abbrev "`al" "allocate" "`ab" "allocateable" "`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"] 6) #@2438 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 String holding the type of comment to be intended like code. This is a regular expression. (default "!") f90-directive-comment String of comment-like directive like "!HPF$", not to be indented. (default nil) 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-auto-hilit19 (default nil) Automatic highlighting (if hilit19 is used) at every indent or newline. 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 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!!!!!!\"Y#`! !!$v'\"ى$" [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 "Lucid" emacs-version put font-lock-keywords-case-fold-search font-lock-defaults (f90-font-lock-keywords t) run-hooks f90-mode-hook f90-startup-message message "Emacs F90 mode; please report bugs to %s" bug-f90-mode] 4 (#$ . 18901) 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 (#$ . 23145)]) (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 (#$ . 23422)]) (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 (#$ . 24272)]) (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 " R!< Ȕ  {) Q!9 ̔7  {)\n D*" [nil label struct looking-at "\\(\\(" f90-symbol-re "\\)[ ]*:\\)?" "[ ]*\\(do\\)\\b" 3 arg "\\(" "\\)[ ]*:" 1] 5 (#$ . 24529)]) (put (quote f90-looking-at-do) (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 " R! Ȕ  {) Q!: ̔8  {)`#bw!y`)h`Vhie`\"8)\"xWxhU* w!\n D+" [nil label struct looking-at "\\(\\(" f90-symbol-re "\\)[ ]*:\\)?" "[ ]*\\(if\\)\\b" 3 arg "\\(" "\\)[ ]*:" 1 scan-lists 0 " " "then\\b" bol f90-cache-position beg-pnt 4 parse-partial-sexp search-backward "!" 38 f90-next-statement " 0-9&"] 5 (#$ . 24958)]) (put (quote f90-looking-at-if-then) (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 " R!< Ȕ  {) Q!9 ̔7  {)\n D*" [nil label struct looking-at "\\(\\(" f90-symbol-re "\\)[ ]*:\\)?" "[ ]*\\(select\\)[ ]*case[ ]*(" 3 arg "\\(" "\\)[ ]*:" 1] 5 (#$ . 25637)]) (put (quote f90-looking-at-select-case) (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 (#$ . 26112)]) (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 "\nQ!%Ĕ {)Ɣ\" {)D!HĔ8 {)ȔE {)D!^ĔZ {)D!sĔp {)D" [looking-at "\\(type\\)[ ]+\\(" f90-symbol-re "\\)\\>" 1 arg 2 f90-p-type-re 3 "\\(interface\\)\\>" nil "\\(block[ ]*data\\)\\>"] 4 (#$ . 26487)]) (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 "\nQ!%Ĕ {)Ɣ\" {)D!P\nQ!PĔ@ {)ƔM {)D\nQ!uƔe {)˔r {)D\nQ!Ĕ {)Ɣ {)D" [looking-at "\\(program\\)[ ]+\\(" f90-symbol-re "\\)\\b" 1 arg 2 "module[ ]*procedure\\>" "\\(module\\)[ ]+\\(" "\\(recursive[ ]*\\)?\\(subroutine\\)[ ]+\\(" "\\)" 3 "[a-z0-9()_ ]*\\(function\\)[ ]+\\(" "\\)[ ]*("] 4 (#$ . 27003)]) (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 "\n\fŰ!-Ɣ{)Ȕ+{)D" [looking-at "end[ ]*" f90-blocks-re "?\\([ ]+\\(" f90-symbol-re "\\)\\)?\\>" 1 arg 3] 6 (#$ . 27644)]) (put (quote f90-looking-at-program-block-end) (quote byte-optimizer) (quote byte-compile-inline-expand)) (defalias 'f90-comment-indent #[nil "!‡  !!‡ !! ‡!* xn6‚8iT\n]" [looking-at "!!!" 0 f90-directive-comment regexp-quote f90-comment-region f90-indented-comment 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 (#$ . 28343)]) (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 "`)!2!2!2!2!2!2 #*?" [nil eol looking-at "end" "\\(do\\|if\\|else\\|select[ ]*case\\|case\\|where\\|forall\\)\\>" "\\(program\\|module\\|interface\\|block[ ]*data\\)\\>" "\\(contains\\|continue\\|\\sw+[ ]*:\\)" "type[ ]+\\sw+" f90-p-type-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 " \f\f3y`)`) $ \n #\f3!3\n #*" [nil eol bol f90-auto-keyword-case f90-auto-hilit19 0 f90-change-keywords fboundp hilit-rehighlight-region t] 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ي`)#}ywR!B\"ᔅ\"\"{)Q!=\"唅:\"\"{)D*N\n&\\zR!\"ᔅo\"\"{)Q!\"唅\"\"{)`#bw!y`)`Ve  `\"8)\"xxhU* w!D+u,!)\"唅\"\"{)D,`#bw!),*uR!q\"ᔅM\"\"{)Q!l\"唅i\"\"{)D*z\n0\\ #+ywR!\"ᔅ\"\"{)Q!\"唅\"\"{)D*\n&\\%R!\"ᔅ\"\"{)Q!\"唅\"\"{)`#bw!}y`)J`VJKe  `\"8)e\"x9xhU* w!D+,!\"唅\"\"{)D,`#bw!,*R!\"ᔅ\"\"{)Q!\"唅\"\"{)D* \n0\\%3!\n0Z%!%\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 label struct "\\(\\(" f90-symbol-re "\\)[ ]*:\\)?" "[ ]*\\(do\\)\\b" 3 arg "\\(" "\\)[ ]*:" 1 f90-do-indent "[ ]*\\(if\\)\\b" scan-lists "then\\b" f90-next-statement " 0-9&" command "\\(where\\|forall\\)[ ]*(" "\\(!\\|$\\)" "[ ]*\\(select\\)[ ]*case[ ]*(" f90-if-indent "\\(if\\|do\\|select\\|where\\|forall\\|continue\\)" " 0-9" f90-end-if-re "\\(end[ ]*do\\|continue\\)\\>"] 6 (#$ . 29914)]) #@59 Calculate the indent column based on previous statements. (defalias 'f90-calculate-indent #[nil "` v ^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)\\v\f= vywi)w!  R!$㔅$${) Q!/$甅,$${)`#bw!y`) \n]`\nV]\n^e  `\"8)x \"xLxhU* w!D+,!$甅$${)D,`#bw!,* R!$㔅$${) Q! $甅\n$${)D*0!% 1\\ R!i$㔅E$${) Q!d$甅a$${)D*u 3\\ Q!$甅$${)$$${)D7!$甅$${)$㔅$${)D!$甅$${)D!\f$甅$${)D\f :\\ Q!:$甅%$${)$5$${)D!n Q!n$甅Y$${)$i$${)D @Q!$$${)$㔅$${)DځA BQ!$甅$${)$$${)DځC! D\\\nbyځE!vځF!vw0!\nG! 1ZvځH!\" 3ZvI!1 :ZvځJ!qځKLM N!v$甅\\$${)$㔅l$${)Dv DZ) ," [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 "\\(\\(" f90-symbol-re "\\)[ ]*:\\)?" "[ ]*\\(if\\)\\b" 3 arg "\\(" "\\)[ ]*:" 1 scan-lists "then\\b" f90-next-statement " 0-9&" command "\\(where\\|forall\\)[ ]*(" "\\(!\\|$\\)" "[ ]*\\(select\\)[ ]*case[ ]*(" f90-else-like-re f90-if-indent "[ ]*\\(do\\)\\b" f90-do-indent "\\(type\\)[ ]+\\(" "\\)\\>" 2 f90-p-type-re "\\(interface\\)\\>" "\\(block[ ]*data\\)\\>" f90-type-indent "\\(program\\)[ ]+\\(" "\\)\\b" "module[ ]*procedure\\>" "\\(module\\)[ ]+\\(" "\\(recursive[ ]*\\)?\\(subroutine\\)[ ]+\\(" "\\)" "[a-z0-9()_ ]*\\(function\\)[ ]+\\(" "\\)[ ]*(" "contains[ ]*\\($\\|!\\)" f90-program-indent "[ ]*$" "[ ]*#" f90-end-if-re "\\(end[ ]*do\\|continue\\)\\>" f90-end-type-re "contains[ ]*\\(!\\|$\\)" "end[ ]*" f90-blocks-re "?\\([ ]+\\(" "\\)\\)?\\>"] 7 (#$ . 31874) 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 (#$ . 34523) 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 (#$ . 34781) nil]) #@84 Move point to the beginning of subprogram. Return (type name) or nil if not found. (defalias 'f90-beginning-of-subprogram #[nil "yw\nQ!;\f&\f\f{)\f͔6\f\f{)D!o\nQ!o\fZ\f\f{)\f͔j\f\f{)D\nQ!\f͔\f\f{)\fҔ\f\f{)D\nQ!\f\f\f{)\f͔\f\f{)D Z U#yw\nQ!\f\f\f{)\f͔\f\f{)D!I\nQ!I\f4\f\f{)\f͔D\f\f{)D\nQ!w\f͔b\f\f{)\fҔr\f\f{)D\nQ!\f\f\f{)\f͔\f\f{)D Z\n۰!\f\f\f{)\fҔ\f\f{)D \\y U !+" [1 t nil matching-beg case-fold-search count 0 " 0-9" looking-at "\\(program\\)[ ]+\\(" f90-symbol-re "\\)\\b" arg 2 "module[ ]*procedure\\>" "\\(module\\)[ ]+\\(" "\\(recursive[ ]*\\)?\\(subroutine\\)[ ]+\\(" "\\)" 3 "[a-z0-9()_ ]*\\(function\\)[ ]+\\(" "\\)[ ]*(" re-search-backward f90-program-block-re move "end[ ]*" f90-blocks-re "?\\([ ]+\\(" "\\)\\)?\\>" message "No beginning-found."] 7 (#$ . 35031) nil]) #@78 Move point to the end of subprogram. Return (type name) or nil if not found. (defalias 'f90-end-of-subprogram #[nil "yw\n\fͰ!<*{)ϔ:{)DD S U_#_yw\fQ!v{)Ք{)D!\fQ!{)Ք{)D\fQ!Ք{)ϔ{)D\fQ!\"{)Ք{)D\" \\Y\n\fͰ!Q?{)ϔO{)DY SGy Ul q!+" [1 t nil matching-end case-fold-search count 0 " 0-9" looking-at "end[ ]*" f90-blocks-re "?\\([ ]+\\(" f90-symbol-re "\\)\\)?\\>" arg 3 re-search-forward f90-program-block-re move "\\(program\\)[ ]+\\(" "\\)\\b" 2 "module[ ]*procedure\\>" "\\(module\\)[ ]+\\(" "\\(recursive[ ]*\\)?\\(subroutine\\)[ ]+\\(" "\\)" "[a-z0-9()_ ]*\\(function\\)[ ]+\\(" "\\)[ ]*(" message "No end found."] 6 (#$ . 36166) 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 "Lucid" emacs-version zmacs-activate-region mark-active deactivate-mark] 3 (#$ . 37092) 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 (#$ . 37484) "*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%f& '4(dy`) `)&'R' &#(d!d &#*,|i)-V| )\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 regexp-quote f90-comment-region f90-indented-comment 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-auto-hilit19 f90-change-keywords fboundp hilit-rehighlight-region auto-fill-function fill-column f90-do-auto-fill] 4 (#$ . 37910) 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-auto-hilit19 f90-change-keywords fboundp hilit-rehighlight-region newline f90-beginning-ampersand] 4 (#$ . 38995) 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‰&(R!T,딅2,,{)(Q!P,ԔM,,{)& &D*_/‰&(R!,딅,,{)(Q!,Ԕ,,{)&`#bw!y`)`Ve`\"8)\"xxhU* w! &D+‰&(R!I,딅',,{)(Q!E,ԔB,,{)& &D*6!,Ԕh,,{)D6`#bw!6*9!:(Q!,Ԕ,,{),,,{)D >!,Ԕ,,{),딅,,{)D !,Ԕ,,{)D Ё@! ,Ԕ,,{)D*AЁB(CQ!\\,ԔG,,{),W,,{)DЁD!ЁE(CQ!,Ԕ,,{),,,{)DЁF(GQ!,,,{),딅,,{)DЁH(IQ!,Ԕ,,{),,,{)DЁJ!K \\  \nB\ny`):`V:;e`\"8)U\"x)xhU*yU`\fWL M\\ZUM\\NOPyOwQ iUPjRP\"*yU `\fW ySwUЁT!Q w`ЁU!\nЁV!\n!YЁW!ςTX&ЁYX!!&ςTЁYZ!!5ςT[!C\\ TxnOςQiT]]\n`)^Ё_!Ё`!Ёa!Ёb!Ёc!>!de^f#* \n9! :Z\nЁJ! KZ\n‰&(R!\f,딅,,{)(Q!,Ԕ,,{)& &D*/ ‰&(R!,딅7,,{)(Q!U,ԔR,,{)&`#bw!y`)`Ve`\"8)\"xrxhU* w! &D+>‰&(R!,딅,,{)(Q!,Ԕ,,{)& &D*>6!8,Ԕ ,,{)D6`#bw!86*C: (Q!q,Ԕ\\,,{),l,,{)D>!,Ԕ,,{),딅,,{)D!,Ԕ,,{)DЁ@!,Ԕ,,{)DA ЁB(CQ! ,Ԕ,,{), ,,{)D ЁD!G ЁE(CQ!G ,Ԕ2 ,,{),B ,,{)D ЁF(GQ!y ,d ,,{),딅t ,,{)D ЁH(IQ! ,Ԕ ,,{), ,,{)D K    \\ \nB\n\nЁghi(j!\n,Ԕ ,,{),딅\n,,{)D\n\n@\nA\nk'\nl\f@\fA@ @ A@$)m!3\n:\nЁn!@\n/\no!L\nA\nЁghi(j!\n,Ԕo\n,,{),딅\n,,{)D\nK\n Z  \nЁp!\n /Z \nA\n\n iZU\nOPyO\nwQ iU\nPj\nRP\"*y`) `V \f e`\"8)& \"x\nxhU*yU`\fWL M\\ZU\nM\\NOPyOf wQ iUw Pj~ RP\"*\n b\f‰ ‰qrs\" t u vwx!.\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" label "\\(\\(" f90-symbol-re "\\)[ ]*:\\)?" "[ ]*\\(do\\)\\b" 3 arg "\\(" "\\)[ ]*:" f90-do-indent "[ ]*\\(if\\)\\b" scan-lists "then\\b" f90-next-statement " 0-9&" "[ ]*\\(select\\)[ ]*case[ ]*(" command "\\(where\\|forall\\)[ ]*(" "\\(!\\|$\\)" f90-else-like-re f90-if-indent "\\(type\\)[ ]+\\(" "\\)\\>" 2 f90-p-type-re "\\(interface\\)\\>" "\\(block[ ]*data\\)\\>" f90-type-indent "\\(program\\)[ ]+\\(" "\\)\\b" "module[ ]*procedure\\>" "\\(module\\)[ ]+\\(" "\\(recursive[ ]*\\)?\\(subroutine\\)[ ]+\\(" "\\)" "[a-z0-9()_ ]*\\(function\\)[ ]+\\(" "\\)[ ]*(" "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 regexp-quote f90-comment-region f90-indented-comment f90-calculate-indent comment-column eol "end" "\\(do\\|if\\|else\\|select[ ]*case\\|case\\|where\\|forall\\)\\>" "\\(program\\|module\\|interface\\|block[ ]*data\\)\\>" "\\(contains\\|continue\\|\\sw+[ ]*:\\)" "type[ ]+\\sw+" re-search-forward "\\(function\\|subroutine\\)" t "end[ ]*" f90-blocks-re "?\\([ ]+\\(" "\\)\\)?\\>" f90-smart-end f90-block-match f90-end-if-re "end[ ]*do\\>" f90-end-type-re "continue\\>" string-match "Lucid" emacs-version zmacs-deactivate-region transient-mark-mode mark-active run-hooks deactivate-mark-hook] 11 (#$ . 39910) "*r"]) #@54 Properly indent the subprogram which contains point. (defalias 'f90-indent-subprogram #[nil " , @ A@ư!` \" @ A@ɰ!;!` \"˰!*" [nil program f90-mark-subprogram message "Indenting " " " "." f90-indent-region mark "...done." "Indenting the whole file." "Indenting the whole file...done."] 7 (#$ . 44903) 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#!\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-auto-hilit19 f90-change-keywords fboundp hilit-rehighlight-region t f90-beginning-ampersand "& " f90-indent-line] 4 (#$ . 45248) 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 (#$ . 45978)]) #@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 (#$ . 46270) "P"]) #@56 Break line if non-white characters beyond fill-column. (defalias 'f90-do-auto-fill #[nil " !!'\f`\fV\fe `\"8)' " [move-to-column fill-column looking-at "[ ]*$" f90-cache-position beg-pnt 3 parse-partial-sexp delete-horizontal-space f90-find-breakpoint f90-break-line nil] 4 (#$ . 46664) 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 (#$ . 46995) nil]) #@71 Fill every line in region by forward parsing. Join lines if possible. (defalias 'f90-fill-region #[(beg-region end-region) "  \n \fb $ywi)\\i)V!!t``V`ae`\"8)t 8 !yw iUj\"*8`\n!WyU` \f%\" '(!." [make-marker nil t auto-fill-function af-function go-on indent f90-auto-hilit19 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 "Lucid" emacs-version zmacs-deactivate-region transient-mark-mode mark-active run-hooks deactivate-mark-hook] 9 (#$ . 47412) "*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 (#$ . 48342)]) #@71 From an end foo statement, find the corresponding foo including name. (defalias 'f90-match-end #[nil " `‰ \n \f ywհ!TB{)הR{)D)\"\f@\fA@y UwQ#wyw‰R!ה{)Q!{)D*?‰R!nה{)Q!{)`#bw!iy`)%&6`&V6&7e''`\"8)Q%\"x%xhU*n w!nD+?/!{)D/`#bw!/*?‰R!ה{)Q!{)D*?Q!{){)D{6!H3{)הC{)D{!c]{)D{!~x{)D?Q!{){)D;!Q!{){)D;Q!{)ה {)D;@Q!>){)9{)D?‰ O Z hAQ!e \\ hЁB!f \\ h UCD!!‰E%FGy`)%`)EFHF%E#GIJ!J%E#*KL=`\fWCMN Oy``{R!P! @ A@\nbyQ $).\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 "?\\([ ]+\\(" f90-symbol-re "\\)\\)?\\>" arg 3 re-search-backward "\\(" "\\|continue\\)" label struct "\\(\\(" "\\)[ ]*:\\)?" "[ ]*\\(do\\)\\b" "\\)[ ]*:" "[ ]*\\(if\\)\\b" scan-lists " " "then\\b" bol f90-cache-position beg-pnt 4 parse-partial-sexp search-backward "!" 38 f90-next-statement " 0-9&" command "\\(where\\|forall\\)[ ]*(" "\\(!\\|$\\)" "[ ]*\\(select\\)[ ]*case[ ]*(" "\\(type\\)[ ]+\\(" "\\)\\>" 2 f90-p-type-re "\\(interface\\)\\>" "\\(block[ ]*data\\)\\>" "\\(program\\)[ ]+\\(" "\\)\\b" "module[ ]*procedure\\>" "\\(module\\)[ ]+\\(" "\\(recursive[ ]*\\)?\\(subroutine\\)[ ]+\\(" "\\)" "[a-z0-9()_ ]*\\(function\\)[ ]+\\(" "\\)[ ]*(" "\\b" "continue\\>" message "No matching beginning." eol f90-auto-keyword-case f90-auto-hilit19 f90-change-keywords fboundp hilit-rehighlight-region f90-smart-end blink "Matches " what-line ": " sit-for f90-block-match] 11 (#$ . 49056) 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 (#$ . 51331) nil]) #@107 Typing `\[help-command] or `? lists all the F90 abbrevs. Any other key combination is executed normally. (defalias 'f90-abbrev-start #[nil "\nc \" ! =# \n=( ; \"6 \f; C )" [nil c last-command-char string-match "Lucid" emacs-version event-to-character next-command-event read-event 63 help-char f90-abbrev-help unread-command-event unread-command-events] 3 (#$ . 51530) 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 (#$ . 51948) 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 (#$ . 52414) nil]) #@44 Capitalize all F90 keywords in the buffer. (defalias 'f90-capitalize-keywords #[nil "!" [f90-change-keywords capitalize-word] 2 (#$ . 52558) nil]) #@42 Downcase all F90 keywords in the buffer. (defalias 'f90-downcase-keywords #[nil "!" [f90-change-keywords downcase-word] 2 (#$ . 52714) 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 (#$ . 52864) "*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 (#$ . 53033) "*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 (#$ . 53214) "*r"]) (defalias 'f90-change-keywords #[(change-word &optional beg end) " \ne  d ### #\n#˰ e b #}`\"  8E 8Eyw!)E`!E," [beg end "\\<\\(" mapconcat identity f90-keywords "\\|" f90-intrinsic-procedures f90-hpf-procedures f90-hpf-directives f90-hpf-keywords "\\)\\>" nil state ref-point keyword-re re-search-forward t parse-partial-sexp 3 4 0 " 0-9" looking-at "#" change-word -1] 13]) (provide (quote f90))