aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris2002-10-06 14:57:38 +0000
committerGlenn Morris2002-10-06 14:57:38 +0000
commit845d331ee65885f025af238b2b9b6c07684bbca4 (patch)
treeed576abcb8493dd43a4ac50c284f380e42cd2314
parentf7d4343819e4d205ce7c6c6115ed237ef454d7e9 (diff)
downloademacs-845d331ee65885f025af238b2b9b6c07684bbca4.tar.gz
emacs-845d331ee65885f025af238b2b9b6c07684bbca4.zip
(fortran-beginning-do): Ignore labelled DO loops altogether.
-rw-r--r--lisp/ChangeLog5
-rw-r--r--lisp/progmodes/fortran.el11
2 files changed, 11 insertions, 5 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index f95feb07b55..2d5865c7c3f 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
12002-10-06 Glenn Morris <gmorris@ast.cam.ac.uk>
2
3 * progmodes/fortran.el (fortran-beginning-do): Ignore labelled DO
4 loops.
5
12002-10-04 Markus Rost <rost@math.ohio-state.edu> 62002-10-04 Markus Rost <rost@math.ohio-state.edu>
2 7
3 * vc.el (vc-default-show-log-entry): Fix typo. 8 * vc.el (vc-default-show-log-entry): Fix typo.
diff --git a/lisp/progmodes/fortran.el b/lisp/progmodes/fortran.el
index 6d40fe154d2..af9f9d1fb18 100644
--- a/lisp/progmodes/fortran.el
+++ b/lisp/progmodes/fortran.el
@@ -1104,12 +1104,13 @@ Return point or nil."
1104 1104
1105(defun fortran-beginning-do () 1105(defun fortran-beginning-do ()
1106 "Search backwards for first unmatched DO [WHILE]. 1106 "Search backwards for first unmatched DO [WHILE].
1107Return point or nil." 1107Return point or nil. Ignores labelled DO loops (ie DO 10 ... 10 CONTINUE)."
1108 (let ((case-fold-search t)) 1108 (let ((case-fold-search t)
1109 (dostart-re "\\(\\(\\sw\\|\\s_\\)+:[ \t]*\\)?do[ \t]+[^0-9]"))
1109 (if (save-excursion 1110 (if (save-excursion
1110 (beginning-of-line) 1111 (beginning-of-line)
1111 (skip-chars-forward " \t0-9") 1112 (skip-chars-forward " \t0-9")
1112 (looking-at "\\(\\(\\sw\\|\\s_\\)+:[ \t]*\\)?do[ \t]+")) 1113 (looking-at dostart-re))
1113 ;; Sitting on one. 1114 ;; Sitting on one.
1114 (match-beginning 0) 1115 (match-beginning 0)
1115 ;; Search for one. 1116 ;; Search for one.
@@ -1121,9 +1122,9 @@ Return point or nil."
1121 (not (and (looking-at fortran-end-prog-re) 1122 (not (and (looking-at fortran-end-prog-re)
1122 (fortran-check-end-prog-re)))) 1123 (fortran-check-end-prog-re))))
1123 (skip-chars-forward " \t0-9") 1124 (skip-chars-forward " \t0-9")
1124 (cond ((looking-at 1125 (cond ((looking-at dostart-re)
1125 "\\(\\(\\sw\\|\\s_\\)+:[ \t]*\\)?do[ \t]+")
1126 (setq count (1- count))) 1126 (setq count (1- count)))
1127 ;; Note labelled loop ends not considered.
1127 ((looking-at "end[ \t]*do\\b") 1128 ((looking-at "end[ \t]*do\\b")
1128 (setq count (1+ count))))) 1129 (setq count (1+ count)))))
1129 (and (= count 0) 1130 (and (= count 0)