[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/lisp/progmodes/fortran.el,v,
Glenn Morris <=