diff options
| author | Glenn Morris | 2002-10-06 14:57:38 +0000 |
|---|---|---|
| committer | Glenn Morris | 2002-10-06 14:57:38 +0000 |
| commit | 845d331ee65885f025af238b2b9b6c07684bbca4 (patch) | |
| tree | ed576abcb8493dd43a4ac50c284f380e42cd2314 | |
| parent | f7d4343819e4d205ce7c6c6115ed237ef454d7e9 (diff) | |
| download | emacs-845d331ee65885f025af238b2b9b6c07684bbca4.tar.gz emacs-845d331ee65885f025af238b2b9b6c07684bbca4.zip | |
(fortran-beginning-do): Ignore labelled DO loops altogether.
| -rw-r--r-- | lisp/ChangeLog | 5 | ||||
| -rw-r--r-- | lisp/progmodes/fortran.el | 11 |
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 @@ | |||
| 1 | 2002-10-06 Glenn Morris <gmorris@ast.cam.ac.uk> | ||
| 2 | |||
| 3 | * progmodes/fortran.el (fortran-beginning-do): Ignore labelled DO | ||
| 4 | loops. | ||
| 5 | |||
| 1 | 2002-10-04 Markus Rost <rost@math.ohio-state.edu> | 6 | 2002-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]. |
| 1107 | Return point or nil." | 1107 | Return 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) |