Subject: 24.0.90; f90 mode incorrectly indents top-level preprocessor directives

From: Lawrence Mitchell <[email-masked]>
Date: Fri, 07 Oct 2011 12:37:50 +0100

emacs -Q

C-x b *tmp* RET

M-x f90-mode RET

M-: (insert "#include "foo.h") RET

TAB

Note how the preprocessor directive is indented by
f90-program-indent, rather than 0 spaces.

Patch and commit message

Cheers,
Lawrence

f90: Don't indent top-level preprocessor directives

* lisp/progmodes/f90.el (f90-calculate-indent): Special case
preprocessor directives and give them 0 indent.

diff --git a/lisp/progmodes/f90.el b/lisp/progmodes/f90.el
index eb33822..95caf3a 100644
--- a/lisp/progmodes/f90.el
+++ b/lisp/progmodes/f90.el
@@ -1820,11 +1820,14 @@ after indenting."
         (f90-indent-line-no)
       (setq no-line-number t)
       (skip-chars-forward " \t"))
-    (if (looking-at "!")
-        (setq indent (f90-comment-indent))
-      (and f90-smart-end (looking-at "end")
-           (f90-match-end))
-      (setq indent (f90-calculate-indent)))
+    (cond ((looking-at "!")
+           (setq indent (f90-comment-indent)))
+          ((looking-at "#")
+           (setq indent 0))
+          (t
+           (and f90-smart-end (looking-at "end")
+                (f90-match-end))
+           (setq indent (f90-calculate-indent))))
     (or (= indent (current-column))
         (f90-indent-to indent no-line-number))
     ;; If initial point was within line's indentation,