emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/progmodes/fortran.el,v


From: Glenn Morris
Subject: [Emacs-diffs] Changes to emacs/lisp/progmodes/fortran.el,v
Date: Wed, 11 Jun 2008 02:56:03 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Glenn Morris <gm>       08/06/11 02:56:03

Index: fortran.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/progmodes/fortran.el,v
retrieving revision 1.148
retrieving revision 1.149
diff -u -b -r1.148 -r1.149
--- fortran.el  17 May 2008 20:08:37 -0000      1.148
+++ fortran.el  11 Jun 2008 02:56:03 -0000      1.149
@@ -1187,12 +1187,12 @@
                  (fortran-check-end-prog-re)))
           (forward-line)
         (beginning-of-line 2)
-        (catch 'ok
+        (when (catch 'ok
           (while (re-search-forward fortran-end-prog-re nil 'move)
             (if (fortran-check-end-prog-re)
                 (throw 'ok t))))
         (goto-char (match-beginning 0))
-        (forward-line)))))
+          (forward-line))))))
 
 (defun fortran-previous-statement ()
   "Move point to beginning of the previous Fortran statement.
@@ -1651,7 +1651,17 @@
               ((and (looking-at fortran-end-prog-re1)
                     (fortran-check-end-prog-re))
                ;; Previous END resets indent to minimum.
-               (setq icol fortran-minimum-statement-indent)))))
+               (setq icol fortran-minimum-statement-indent))
+              ;; Previous statement was a numbered DO loop without a
+              ;; closing CONTINUE or END DO, so we indented the
+              ;; terminator like the loop body.
+              ((and fortran-check-all-num-for-matching-do
+                    (not (looking-at "\\(continue\\|end[ \t]*do\\)\\>"))
+                    (progn
+                      (beginning-of-line)
+                      (and (looking-at "[ \t]*[0-9]+")
+                           (fortran-check-for-matching-do))))
+               (setq icol (- icol fortran-do-indent))))))
     (save-excursion
       (beginning-of-line)
       (cond ((looking-at "[ \t]*$"))
@@ -1676,8 +1686,12 @@
                        6
                      (+ icol fortran-continuation-indent))))
             (first-statement)
+            ;; The terminating statement is actually part of the
+            ;; loop body, so unless it is a CONTINUE or END DO, we
+            ;; indent it like the loop body (see above).
             ((and fortran-check-all-num-for-matching-do
-                  (looking-at "[ \t]*[0-9]+")
+                  (looking-at "[ \t]*[0-9]+[ \t]*\
+\\(continue\\|end[ \t]*do\\)\\>")
                   (fortran-check-for-matching-do))
              (setq icol (- icol fortran-do-indent)))
             (t




reply via email to

[Prev in Thread] Current Thread [Next in Thread]