;;; fortran.el --- Fortran mode for GNU Emacs
-;; Copyright (C) 1986, 1993-1995, 1997-2011 Free Software Foundation, Inc.
+;; Copyright (C) 1986, 1993-1995, 1997-2015 Free Software Foundation,
+;; Inc.
;; Author: Michael D. Prange <prange@erl.mit.edu>
;; Maintainer: Glenn Morris <rgm@gnu.org>
;; form. For editing Fortran 90 free format source, use `f90-mode'
;; (f90.el). It is meant to support the GNU Fortran language
;; implemented by g77 (its extensions to Fortran77 and
-;; interpretations, e.g. of blackslash in strings).
+;; interpretations, e.g. of backslash in strings).
;;; History:
(defcustom fortran-directive-re
"^[ \t]*#.*"
"Regexp to match a directive line.
-The matching text will be fontified with `font-lock-keyword-face'.
+The matching text will be fontified with `font-lock-preprocessor-face'.
The matching line will be given zero indentation."
:version "22.1"
:type 'regexp
(defcustom fortran-column-ruler-fixed
"0 4 6 10 20 30 40 5\
0 60 70\n\
-\[ ]|{ | | | | | | | | \
-\| | | | |}\n"
+[ ]|{ | | | | | | | | \
+| | | | |}\n"
"String displayed above current line by \\[fortran-column-ruler].
This variable is used in fixed format mode.
See the variable `fortran-column-ruler-tab' for TAB format mode."
(defcustom fortran-column-ruler-tab
"0 810 20 30 40 5\
0 60 70\n\
-\[ ]| { | | | | | | | | \
-\| | | | |}\n"
+[ ]| { | | | | | | | | \
+| | | | |}\n"
"String displayed above current line by \\[fortran-column-ruler].
This variable is used in TAB format mode.
See the variable `fortran-column-ruler-fixed' for fixed format mode."
;; Standard continuation character and in a TAB-formatted line.
'("^ \\{5\\}\\([^ 0\n]\\)" 1 font-lock-string-face)
'("^\t\\([1-9]\\)" 1 font-lock-string-face))
- `((,fortran-directive-re (0 font-lock-keyword-face t)))
+ `((,fortran-directive-re (0 font-lock-preprocessor-face t)))
;; `fortran-font-lock-keywords-2' without types (see above).
(cdr (nthcdr (length fortran-font-lock-keywords-1)
fortran-font-lock-keywords-2)))
;; An alternative is to match on THEN at a line end, eg:
;; ".*)[ \t]*then[ \t]*\\($\\|!\\)"
;; This would also match ELSE branches, though. This does not seem
- ;; right to me, because then one has neighbouring blocks that are
+ ;; right to me, because then one has neighboring blocks that are
;; not nested in each other.
"\\(if[ \t]*(\\(.*\\|"
".*\n\\([^if]*\\([^i].\\|.[^f]\\|.\\>\\)\\)\\)\\<then\\|"
["Reset to Saved" Custom-reset-saved :active t
:help "Reset all edited or set settings to saved"]
["Reset to Standard Settings" Custom-reset-standard :active t
- :help "Erase all cusomizations in buffer"]
+ :help "Erase all customizations in buffer"]
)
"--"
["Comment Region" fortran-comment-region mark-active]
Amount of extra indentation for text in full-line comments (default 0).
`fortran-comment-indent-style'
How to indent the text in full-line comments. Allowed values are:
- nil don't change the indentation
- fixed indent to `fortran-comment-line-extra-indent' beyond the
+ nil don't change the indentation
+ `fixed' indent to `fortran-comment-line-extra-indent' beyond the
value of either
`fortran-minimum-statement-indent-fixed' (fixed format) or
`fortran-minimum-statement-indent-tab' (TAB format),
depending on the continuation format in use.
- relative indent to `fortran-comment-line-extra-indent' beyond the
+ `relative' indent to `fortran-comment-line-extra-indent' beyond the
indentation for a line of code.
- (default 'fixed)
+ (default `fixed')
`fortran-comment-indent-char'
Single-character string to be inserted instead of space for
full-line comment indentation (default \" \").
\f
(defun fortran-line-length (nchars &optional global)
"Set the length of fixed-form Fortran lines to NCHARS.
-This normally only affects the current buffer, which must be in
-Fortran mode. If the optional argument GLOBAL is non-nil, it
-affects all Fortran buffers, and also the default.
-If a numeric prefix argument is specified, it will be used as NCHARS,
-otherwise is a non-numeric prefix arg is specified, the length will be
-provided via the minibuffer, and otherwise the current column is used."
+By default this only affects the current buffer, which must be in
+Fortran mode. If the optional argument GLOBAL is non-nil, it affects
+all Fortran buffers, and also the default. The default value of NCHARS
+is the current column. A numeric prefix argument specifies a value to
+use instead of the current column. A non-numeric prefix argument prompts
+for the value to use."
(interactive
(list (cond
((numberp current-prefix-arg) current-prefix-arg)
fortran-column-ruler-fixed)
(save-excursion
(beginning-of-line)
- (if (eq (window-start (selected-window))
- (window-point (selected-window)))
+ (if (eq (window-start) (window-point))
(line-beginning-position 2)
(point)))
nil "Type SPC or any command to erase ruler."))
(scroll-bar-width (- (nth 2 window-edges)
(car window-edges)
(window-width))))
- (split-window-horizontally (+ fortran-line-length scroll-bar-width)))
+ (split-window-right (+ fortran-line-length scroll-bar-width)))
(other-window 1)
(switch-to-buffer " fortran-window-extra" t)
(select-window (previous-window))))
(message "Type SPC to continue editing.")
(let ((char (read-event)))
(or (equal char ?\s)
- (setq unread-command-events (list char))))))
+ (push char unread-command-events)))))
(fortran-window-create)))
(defun fortran-split-line ()
(defun fortran-previous-statement ()
"Move point to beginning of the previous Fortran statement.
-Returns 'first-statement if that statement is the first
+Returns `first-statement' if that statement is the first
non-comment Fortran statement in the file, and nil otherwise.
Directive lines are treated as comments."
(interactive)
(defun fortran-next-statement ()
"Move point to beginning of the next Fortran statement.
-Returns 'last-statement if that statement is the last
+Returns `last-statement' if that statement is the last
non-comment Fortran statement in the file, and nil otherwise.
Directive lines are treated as comments."
(interactive)
(defun fortran-beginning-do ()
"Search backwards for first unmatched DO [WHILE].
-Return point or nil. Ignores labelled DO loops (ie DO 10 ... 10 CONTINUE)."
+Return point or nil. Ignores labeled DO loops (ie DO 10 ... 10 CONTINUE)."
(let ((case-fold-search t)
(dostart-re "\\(\\(\\sw\\|\\s_\\)+:[ \t]*\\)?do[ \t]+[^0-9]"))
(if (save-excursion
(skip-chars-forward " \t0-9")
(cond ((looking-at dostart-re)
(setq count (1- count)))
- ;; Note labelled loop ends not considered.
+ ;; Note labeled loop ends not considered.
((looking-at "end[ \t]*do\\b")
(setq count (1+ count)))))
(and (zerop count)