aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/progmodes
diff options
context:
space:
mode:
authorGlenn Morris <[email protected]>2002-05-12 13:31:31 +0000
committerGlenn Morris <[email protected]>2002-05-12 13:31:31 +0000
commit8edfcc7dddddc07cfc64ccd7c3950fc1e29a304d (patch)
tree74229da456f62c7179b197a086872494b22b3fa6 /lisp/progmodes
parentfe72c9047d54384e8853310f4232812ab67ade71 (diff)
(fortran-preprocessor-re): New variable. Use it for font-locking.
(fortran-previous-statement, fortran-next-statement): Make them skip over preprocessor lines as they do with comment lines. (fortran-calculate-indent): Use fortran-preprocessor-re.
Diffstat (limited to 'lisp/progmodes')
-rw-r--r--lisp/progmodes/fortran.el25
1 files changed, 19 insertions, 6 deletions
diff --git a/lisp/progmodes/fortran.el b/lisp/progmodes/fortran.el
index b172d1f325..4e5e6144e6 100644
--- a/lisp/progmodes/fortran.el
+++ b/lisp/progmodes/fortran.el
@@ -139,6 +139,13 @@ You might want to change this to \"*\", for instance."
:type 'regexp
:group 'fortran-comment)
+(defcustom fortran-preprocessor-re
+ "^[ \t]*#.*"
+ "*Regexp to match the whole of a preprocessor line."
+ :version "21.3"
+ :type 'regexp
+ :group 'fortran-indent)
+
(defcustom fortran-minimum-statement-indent-fixed 6
"*Minimum statement indentation for fixed format continuation style."
:type 'integer
@@ -368,7 +375,8 @@ These get fixed-format comments fontified.")
'("^\t\\([1-9]\\)" 1 font-lock-string-face))
(list
;; cpp stuff (ugh)
- '("^# *[a-z]+" . font-lock-keyword-face))
+;;; '("^# *[a-z]+" . font-lock-keyword-face))
+ `(,fortran-preprocessor-re (0 font-lock-keyword-face t)))
;; The list `fortran-font-lock-keywords-2' less that for types
;; (see above).
(cdr (nthcdr (length fortran-font-lock-keywords-1)
@@ -970,20 +978,23 @@ Auto-indent does not happen if a numeric ARG is used."
(defun fortran-previous-statement ()
"Move point to beginning of the previous Fortran statement.
-Returns `first-statement' if that statement is the first
-non-comment Fortran statement in the file, and nil otherwise."
+Returns 'first-statement if that statement is the first
+non-comment Fortran statement in the file, and nil otherwise.
+Preprocessor lines are treated as comments."
(interactive)
(let (not-first-statement continue-test)
(beginning-of-line)
(setq continue-test
(and
(not (looking-at fortran-comment-line-start-skip))
+ (not (looking-at fortran-preprocessor-re))
(or (looking-at
(concat "[ \t]*"
(regexp-quote fortran-continuation-string)))
(looking-at " \\{5\\}[^ 0\n]\\|\t[1-9]"))))
(while (and (setq not-first-statement (= (forward-line -1) 0))
(or (looking-at fortran-comment-line-start-skip)
+ (looking-at fortran-preprocessor-re)
(looking-at "[ \t]*$\\| \\{5\\}[^ 0\n]\\|\t[1-9]")
(looking-at (concat "[ \t]*" comment-start-skip)))))
(cond ((and continue-test
@@ -996,8 +1007,9 @@ non-comment Fortran statement in the file, and nil otherwise."
(defun fortran-next-statement ()
"Move point to beginning of the next Fortran statement.
-Returns `last-statement' if that statement is the last
-non-comment Fortran statement in the file, and nil otherwise."
+Returns 'last-statement if that statement is the last
+non-comment Fortran statement in the file, and nil otherwise.
+Preprocessor lines are treated as comments."
(interactive)
(let (not-last-statement)
(beginning-of-line)
@@ -1005,6 +1017,7 @@ non-comment Fortran statement in the file, and nil otherwise."
(and (= (forward-line 1) 0)
(not (eobp))))
(or (looking-at fortran-comment-line-start-skip)
+ (looking-at fortran-preprocessor-re)
(looking-at "[ \t]*$\\| [^ 0\n]\\|\t[1-9]")
(looking-at (concat "[ \t]*" comment-start-skip)))))
(if (not not-last-statement)
@@ -1356,7 +1369,7 @@ Return point or nil."
fortran-continuation-string)))
(looking-at " \\{5\\}[^ 0\n]\\|\t[1-9]"))
(setq icol (+ icol fortran-continuation-indent)))
- ((looking-at "[ \t]*#") ; Check for cpp directive.
+ ((looking-at fortran-preprocessor-re) ; Check for cpp directive.
(setq fortran-minimum-statement-indent 0 icol 0))
(first-statement)
((and fortran-check-all-num-for-matching-do