[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/progmodes/f90.el
From: |
Glenn Morris |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/progmodes/f90.el |
Date: |
Thu, 25 Apr 2002 17:55:40 -0400 |
Index: emacs/lisp/progmodes/f90.el
diff -c emacs/lisp/progmodes/f90.el:1.37 emacs/lisp/progmodes/f90.el:1.38
*** emacs/lisp/progmodes/f90.el:1.37 Wed Apr 24 18:13:45 2002
--- emacs/lisp/progmodes/f90.el Thu Apr 25 17:55:39 2002
***************
*** 25,48 ****
;;; Commentary:
! ;; Smart mode for editing F90 programs in FREE FORMAT.
;; Knows about continuation lines, named structured statements, and other
! ;; new features in F90 including HPF (High Performance Fortran) structures.
! ;; The basic feature is to provide an accurate indentation of F90 programs.
;; In addition, there are many more features like automatic matching of all
;; end statements, an auto-fill function to break long lines, a join-lines
! ;; function which joins continued lines etc etc.
! ;; To facilitate typing, a fairly complete list of abbreviations is provided.
! ;; For example, `i is short-hand for integer (if abbrev-mode is on).
! ;; There are two separate features for highlighting the code.
;; 1) Upcasing or capitalizing of all keywords.
! ;; 2) Colors/fonts using font-lock-mode. (only when using X-windows)
! ;; Automatic upcase of downcase of keywords is controlled by the parameter
! ;; f90-auto-keyword-case.
;; The indentations of lines starting with ! is determined by the first of the
! ;; following matches (the values in the left column are the default values):
;; start-string/regexp indent variable holding start-string/regexp
;; !!! 0
--- 25,53 ----
;;; Commentary:
! ;; Major mode for editing F90 programs in FREE FORMAT.
! ;; The minor language revision F95 is also supported (with font-locking).
!
;; Knows about continuation lines, named structured statements, and other
! ;; features in F90 including HPF (High Performance Fortran) structures.
! ;; The basic feature provides accurate indentation of F90 programs.
;; In addition, there are many more features like automatic matching of all
;; end statements, an auto-fill function to break long lines, a join-lines
! ;; function which joins continued lines, etc.
!
! ;; To facilitate typing, a fairly complete list of abbreviations is provided.
! ;; All abbreviations begin with the backquote character "`"
! ;; (this requires modification of the syntax-table).
! ;; For example, `i expands to integer (if abbrev-mode is on).
! ;; There are two separate features for altering the appearance of code:
;; 1) Upcasing or capitalizing of all keywords.
! ;; 2) Colors/fonts using font-lock-mode.
! ;; Automatic upcase or downcase of keywords is controlled by the variable
! ;; f90-auto-keyword-case.
;; The indentations of lines starting with ! is determined by the first of the
! ;; following matches (values in the left column are the defaults):
;; start-string/regexp indent variable holding start-string/regexp
;; !!! 0
***************
*** 56,80 ****
;; ! as code as code
;; !! comment-column as code
;; ![^!] as code comment-column
! ;; Trailing comments are indented to comment-column with indent-for-comment
M-;
! ;; f90-comment-region (C-c;) toggles insertion of f90-comment-region in
region.
;; One common convention for free vs. fixed format is that free-format files
! ;; have the ending .f90 while the fixed format files have the ending .f.
! ;; To make f90-mode work, put this file in, for example, your directory
! ;; ~/lisp, and be sure that you have the following in your .emacs-file
! ;; (setq load-path (append load-path '("~/lisp")))
! ;; (autoload 'f90-mode "f90"
! ;; "Major mode for editing Fortran 90 code in free format." t)
! ;; (setq auto-mode-alist (append auto-mode-alist
! ;; (list '("\\.f90$" . f90-mode))))
! ;; Once you have entered f90-mode, you may get more info by using
! ;; the command describe-mode (C-h m). For online help describing various
! ;; functions use C-h f <Name of function you want described>
! ;; To customize the f90-mode for your taste, use, for example:
! ;; (you don't have to specify values for all the parameters below)
;;(add-hook 'f90-mode-hook
;; '(lambda () (setq f90-do-indent 3
;; f90-if-indent 3
;; f90-type-indent 3
--- 61,87 ----
;; ! as code as code
;; !! comment-column as code
;; ![^!] as code comment-column
! ;; Trailing comments are indented to comment-column with indent-for-comment.
! ;; The function f90-comment-region toggles insertion of
! ;; the variable f90-comment-region in every line of the region.
;; One common convention for free vs. fixed format is that free-format files
! ;; have the ending .f90 or .f95 while fixed format files have the ending .f.
! ;; Emacs automatically loads Fortran files in the appropriate mode based
! ;; on extension. You can modify this by adjusting the variable
auto-mode-alist.
! ;; For example:
! ;; (add-to-list 'auto-mode-alist '("\\.f\\'" . f90-mode))
! ;; Once you have entered f90-mode, you may get more info by using
! ;; the command describe-mode (C-h m). For online help use
! ;; C-h f <Name of function you want described>, or
! ;; C-h v <Name of variable you want described>.
!
! ;; To customize f90-mode for your taste, use, for example:
! ;; (you don't have to specify values for all the parameters below)
! ;;
;;(add-hook 'f90-mode-hook
+ ;; ;; These are the default values.
;; '(lambda () (setq f90-do-indent 3
;; f90-if-indent 3
;; f90-type-indent 3
***************
*** 83,115 ****
;; f90-comment-region "!!$"
;; f90-directive-comment-re "!hpf\\$"
;; f90-indented-comment-re "!"
! ;; f90-break-delimiters "[-+\\*/,><=% \t]"
;; f90-break-before-delimiters t
;; f90-beginning-ampersand t
;; f90-smart-end 'blink
;; f90-auto-keyword-case nil
! ;; f90-leave-line-no nil
;; indent-tabs-mode nil
;; f90-font-lock-keywords f90-font-lock-keywords-2
;; )
! ;; ;;The rest is not default.
;; (abbrev-mode 1) ; turn on abbreviation mode
;; (f90-add-imenu-menu) ; extra menu with functions etc.
;; (if f90-auto-keyword-case ; change case of all keywords on startup
;; (f90-change-keywords f90-auto-keyword-case))
;; ))
! ;; in your .emacs file (the shown values are the defaults). You can also
! ;; change the values of the lists f90-keywords etc.
! ;; The auto-fill and abbreviation minor modes are accessible from the menu,
;; or by using M-x auto-fill-mode and M-x abbrev-mode, respectively.
;; Remarks
;; 1) Line numbers are by default left-justified. If f90-leave-line-no is
;; non-nil, the line numbers are never touched.
! ;; 2) Multi-; statements like > do i=1,20 ; j=j+i ; end do < are not handled
;; correctly, but I imagine them to be rare.
;; 3) Regexps for hilit19 are no longer supported.
! ;; 4) For FIXED FORMAT code, use the ordinary fortran mode.
;; 5) This mode does not work under emacs-18.x.
;; 6) Preprocessor directives, i.e., lines starting with # are left-justified
;; and are untouched by all case-changing commands. There is, at present,
no
--- 90,124 ----
;; f90-comment-region "!!$"
;; f90-directive-comment-re "!hpf\\$"
;; f90-indented-comment-re "!"
! ;; f90-break-delimiters "[-+\\*/><=,% \t]"
;; f90-break-before-delimiters t
;; f90-beginning-ampersand t
;; f90-smart-end 'blink
;; f90-auto-keyword-case nil
! ;; f90-leave-line-no nil
;; indent-tabs-mode nil
;; f90-font-lock-keywords f90-font-lock-keywords-2
;; )
! ;; ;; These are not default.
;; (abbrev-mode 1) ; turn on abbreviation mode
;; (f90-add-imenu-menu) ; extra menu with functions etc.
;; (if f90-auto-keyword-case ; change case of all keywords on startup
;; (f90-change-keywords f90-auto-keyword-case))
;; ))
! ;;
! ;; in your .emacs file. You can also customize the lists
! ;; f90-font-lock-keywords, etc.
! ;;
! ;; The auto-fill and abbreviation minor modes are accessible from the F90
menu,
;; or by using M-x auto-fill-mode and M-x abbrev-mode, respectively.
;; Remarks
;; 1) Line numbers are by default left-justified. If f90-leave-line-no is
;; non-nil, the line numbers are never touched.
! ;; 2) Multi-; statements like "do i=1,20 ; j=j+i ; end do" are not handled
;; correctly, but I imagine them to be rare.
;; 3) Regexps for hilit19 are no longer supported.
! ;; 4) For FIXED FORMAT code, use fortran mode.
;; 5) This mode does not work under emacs-18.x.
;; 6) Preprocessor directives, i.e., lines starting with # are left-justified
;; and are untouched by all case-changing commands. There is, at present,
no
***************
*** 134,155 ****
;; f90-add-imenu-menu
;; f90-font-lock-1, f90-font-lock-2, f90-font-lock-3, f90-font-lock-4
;; Thanks to all the people who have tested the mode. Special thanks to Jens
;; Bloch Helmers for encouraging me to write this code, for creative
;; suggestions as well as for the lists of hpf-commands.
;; Also thanks to the authors of the fortran and pascal modes, on which some
;; of this code is built.
;;; Code:
;; User options
(defgroup f90 nil
! "Fortran-90 mode"
:group 'languages)
(defgroup f90-indent nil
! "Fortran-90 indentation"
:prefix "f90-"
:group 'f90)
--- 143,169 ----
;; f90-add-imenu-menu
;; f90-font-lock-1, f90-font-lock-2, f90-font-lock-3, f90-font-lock-4
+ ;; Original author's thanks
;; Thanks to all the people who have tested the mode. Special thanks to Jens
;; Bloch Helmers for encouraging me to write this code, for creative
;; suggestions as well as for the lists of hpf-commands.
;; Also thanks to the authors of the fortran and pascal modes, on which some
;; of this code is built.
+ ;; TODO
+ ;; Support for hideshow, align.
+ ;; OpenMP, preprocessor highlighting.
+
;;; Code:
;; User options
(defgroup f90 nil
! "Major mode for editing Fortran 90,95 code."
:group 'languages)
(defgroup f90-indent nil
! "Indentation in free-format Fortran."
:prefix "f90-"
:group 'f90)
***************
*** 180,192 ****
:group 'f90-indent)
(defcustom f90-comment-region "!!$"
! "*String inserted by \\[f90-comment-region]\
! at start of each line in region."
:type 'string
:group 'f90-indent)
(defcustom f90-indented-comment-re "!"
! "*Regexp saying which comments to be indented like code."
:type 'regexp
:group 'f90-indent)
--- 194,205 ----
:group 'f90-indent)
(defcustom f90-comment-region "!!$"
! "*String inserted by \\[f90-comment-region] at start of each line in
region."
:type 'string
:group 'f90-indent)
(defcustom f90-indented-comment-re "!"
! "*Regexp saying which comments to indent like code."
:type 'regexp
:group 'f90-indent)
***************
*** 196,202 ****
:group 'f90-indent)
(defcustom f90-beginning-ampersand t
! "*t makes automatic insertion of \& at beginning of continuation line."
:type 'boolean
:group 'f90)
--- 209,215 ----
:group 'f90-indent)
(defcustom f90-beginning-ampersand t
! "*Non-nil gives automatic insertion of \& at start of continuation line."
:type 'boolean
:group 'f90)
***************
*** 219,231 ****
(defcustom f90-auto-keyword-case nil
"*Automatic case conversion of keywords.
! The options are 'downcase-word, 'upcase-word, 'capitalize-word and nil"
:type '(choice (const downcase-word) (const upcase-word)
(const capitalize-word) (const nil))
:group 'f90)
(defcustom f90-leave-line-no nil
! "*If nil, left-justify linenumbers."
:type 'boolean
:group 'f90)
--- 232,244 ----
(defcustom f90-auto-keyword-case nil
"*Automatic case conversion of keywords.
! The options are 'downcase-word, 'upcase-word, 'capitalize-word and nil."
:type '(choice (const downcase-word) (const upcase-word)
(const capitalize-word) (const nil))
:group 'f90)
(defcustom f90-leave-line-no nil
! "*If non-nil, line numbers are not left justified."
:type 'boolean
:group 'f90)
***************
*** 259,265 ****
"elemental" "pure") 'words)
"Keyword-regexp for font-lock level >= 3.")
-
(defconst f90-procedures-re
(concat "\\<"
(regexp-opt
--- 272,277 ----
***************
*** 356,362 ****
(1 font-lock-keyword-face) (2 font-lock-constant-face))
;; line numbers (lines whose first character after number is letter)
'("^[ \t]*\\([0-9]+\\)[ \t]*[a-z]+" (1 font-lock-constant-face t))))
! "Highlights declarations, do-loops and other constructions")
(defvar f90-font-lock-keywords-3
(append f90-font-lock-keywords-2
--- 368,374 ----
(1 font-lock-keyword-face) (2 font-lock-constant-face))
;; line numbers (lines whose first character after number is letter)
'("^[ \t]*\\([0-9]+\\)[ \t]*[a-z]+" (1 font-lock-constant-face t))))
! "Highlights declarations, do-loops and other constructs.")
(defvar f90-font-lock-keywords-3
(append f90-font-lock-keywords-2
***************
*** 374,380 ****
"Highlights all F90 and HPF keywords.")
(defvar f90-font-lock-keywords
! f90-font-lock-keywords-2
"*Default expressions to highlight in F90 mode.")
;; syntax table
--- 386,392 ----
"Highlights all F90 and HPF keywords.")
(defvar f90-font-lock-keywords
! f90-font-lock-keywords-2
"*Default expressions to highlight in F90 mode.")
;; syntax table
***************
*** 644,654 ****
"\\)"
"[ \t]*\\(function\\|subroutine\\)[ \t]+\\(\\sw+\\)")
4)))
! "imenu generic expression for F90 mode.")
(defun f90-add-imenu-menu ()
- (interactive)
"Add an imenu menu to the menubar."
(if (not f90-imenu)
(progn
(imenu-add-to-menubar "F90-imenu")
--- 656,666 ----
"\\)"
"[ \t]*\\(function\\|subroutine\\)[ \t]+\\(\\sw+\\)")
4)))
! "Generic imenu expression for F90 mode.")
(defun f90-add-imenu-menu ()
"Add an imenu menu to the menubar."
+ (interactive)
(if (not f90-imenu)
(progn
(imenu-add-to-menubar "F90-imenu")
***************
*** 735,746 ****
;;;###autoload
(defun f90-mode ()
! "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.
--- 747,758 ----
;;;###autoload
(defun f90-mode ()
! "Major mode for editing Fortran 90,95 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.
***************
*** 750,793 ****
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-keywords-re
List of keywords used for highlighting/upcase-keywords etc.
Turning on F90 mode calls the value of the variable `f90-mode-hook'
--- 762,805 ----
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-keywords-re'
List of keywords used for highlighting/upcase-keywords etc.
Turning on F90 mode calls the value of the variable `f90-mode-hook'
***************
*** 877,883 ****
(defsubst f90-indent-to (col &optional no-line-number)
"Indent current line to column COL.
! If no-line-number nil, jump over a possible line-number."
(beginning-of-line)
(if (not no-line-number)
(skip-chars-forward " \t0-9"))
--- 889,895 ----
(defsubst f90-indent-to (col &optional no-line-number)
"Indent current line to column COL.
! If optional argument NO-LINE-NUMBER is nil, jump over a possible line-number."
(beginning-of-line)
(if (not no-line-number)
(skip-chars-forward " \t0-9"))
***************
*** 1040,1047 ****
(f90-change-keywords f90-auto-keyword-case bol eol))))))
(defun f90-electric-insert ()
(interactive)
- "Calls f90-do-auto-fill at each operator insertion."
(self-insert-command 1)
(f90-update-line)
(if auto-fill-function (f90-do-auto-fill)))
--- 1052,1059 ----
(f90-change-keywords f90-auto-keyword-case bol eol))))))
(defun f90-electric-insert ()
+ "Call `f90-do-auto-fill' at each operator insertion."
(interactive)
(self-insert-command 1)
(f90-update-line)
(if auto-fill-function (f90-do-auto-fill)))
***************
*** 1241,1247 ****
(set-marker end nil)))
(defun f90-indent-line (&optional no-update)
! "Indent current line as F90 code."
(interactive)
(let (indent (no-line-number nil) (pos (make-marker)) (case-fold-search t))
(set-marker pos (point))
--- 1253,1261 ----
(set-marker end nil)))
(defun f90-indent-line (&optional no-update)
! "Indent current line as F90 code.
! Unless optional argument NO-UPDATE is non-nil, call `f90-update-line'
! after indenting."
(interactive)
(let (indent (no-line-number nil) (pos (make-marker)) (case-fold-search t))
(set-marker pos (point))
***************
*** 1266,1273 ****
(set-marker pos nil)))
(defun f90-indent-new-line ()
! "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."
(interactive)
(let (string cont (case-fold-search t))
--- 1280,1287 ----
(set-marker pos nil)))
(defun f90-indent-new-line ()
! "Reindent current line, insert a newline and indent the newline.
! An abbrev before point is expanded if the variable `abbrev-mode' is non-nil.
If run in the middle of a line, the line is not broken."
(interactive)
(let (string cont (case-fold-search t))
***************
*** 1408,1414 ****
;; autofill and break-line
(defun f90-break-line (&optional no-update)
! "Break line at point, insert continuation marker(s) and indent."
(interactive)
(let (ctype)
(cond ((f90-in-string)
--- 1422,1430 ----
;; autofill and break-line
(defun f90-break-line (&optional no-update)
! "Break line at point, insert continuation marker(s) and indent.
! Unless in a string or comment, or if the optional argument NO-UPDATE
! is non-nil, call `f90-update-line' after inserting the continuation marker."
(interactive)
(let (ctype)
(cond ((f90-in-string)
***************
*** 1424,1430 ****
(indent-according-to-mode))
(defun f90-find-breakpoint ()
! "From fill-column, search backward for break-delimiter."
(let ((bol (line-beginning-position)))
(re-search-backward f90-break-delimiters bol)
(if f90-break-before-delimiters
--- 1440,1446 ----
(indent-according-to-mode))
(defun f90-find-breakpoint ()
! "From `fill-column', search backward for break-delimiter."
(let ((bol (line-beginning-position)))
(re-search-backward f90-break-delimiters bol)
(if f90-break-before-delimiters
***************
*** 1436,1442 ****
(forward-char)))))
(defun f90-do-auto-fill ()
! "Break line if non-white characters beyond fill-column. Also, update line. "
(interactive)
;; Break the line before or after the last delimiter (non-word char) if
;; position is beyond fill-column.
--- 1452,1458 ----
(forward-char)))))
(defun f90-do-auto-fill ()
! "Break line if non-white characters beyond `fill-column'. Also, update
line."
(interactive)
;; Break the line before or after the last delimiter (non-word char) if
;; position is beyond fill-column.
***************
*** 1585,1591 ****
(f90-block-match beg-block beg-name end-block end-name)))))))
(defun f90-insert-end ()
! "Inserts an complete end statement matching beginning of present block."
(interactive)
(let ((f90-smart-end (if f90-smart-end f90-smart-end 'blink)))
(insert "end")
--- 1601,1607 ----
(f90-block-match beg-block beg-name end-block end-name)))))))
(defun f90-insert-end ()
! "Insert a complete end statement matching beginning of present block."
(interactive)
(let ((f90-smart-end (if f90-smart-end f90-smart-end 'blink)))
(insert "end")
- [Emacs-diffs] Changes to emacs/lisp/progmodes/f90.el, Stefan Monnier, 2002/04/02
- [Emacs-diffs] Changes to emacs/lisp/progmodes/f90.el, Stefan Monnier, 2002/04/02
- [Emacs-diffs] Changes to emacs/lisp/progmodes/f90.el, Eli Zaretskii, 2002/04/19
- [Emacs-diffs] Changes to emacs/lisp/progmodes/f90.el, Glenn Morris, 2002/04/24
- [Emacs-diffs] Changes to emacs/lisp/progmodes/f90.el, Glenn Morris, 2002/04/24
- [Emacs-diffs] Changes to emacs/lisp/progmodes/f90.el,
Glenn Morris <=
- [Emacs-diffs] Changes to emacs/lisp/progmodes/f90.el, Glenn Morris, 2002/04/28
- [Emacs-diffs] Changes to emacs/lisp/progmodes/f90.el, Glenn Morris, 2002/04/28
- [Emacs-diffs] Changes to emacs/lisp/progmodes/f90.el, Glenn Morris, 2002/04/28
- [Emacs-diffs] Changes to emacs/lisp/progmodes/f90.el, Glenn Morris, 2002/04/28
- [Emacs-diffs] Changes to emacs/lisp/progmodes/f90.el, Glenn Morris, 2002/04/29
- [Emacs-diffs] Changes to emacs/lisp/progmodes/f90.el, Glenn Morris, 2002/04/29