# HG changeset patch # User Glenn Morris # Date 1021210291 0 # Node ID 52d991be069855660be525ac039dada6cf2d225e # Parent 4f4c7b244570c3c757f93324a92eac9233d82bf7 (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. diff -r 4f4c7b244570 -r 52d991be0698 lisp/progmodes/fortran.el --- a/lisp/progmodes/fortran.el Sat May 11 22:50:54 2002 +0000 +++ b/lisp/progmodes/fortran.el Sun May 12 13:31:31 2002 +0000 @@ -139,6 +139,13 @@ :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 @@ '("^\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 @@ (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 @@ (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 @@ (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 @@ 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