aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris <[email protected]>2002-05-19 23:19:42 +0000
committerGlenn Morris <[email protected]>2002-05-19 23:19:42 +0000
commitf14ca2504b9cf10f17b4b3c4a2aeb088703d7e24 (patch)
tree72f5938c9fca009d53f8733afae1e6b6176ffce0
parent7340cc503b7543c86162a84c0f8bf98322450116 (diff)
(f90-equal-symbols, f90-looking-at-do, f90-looking-at-select-case)
(f90-looking-at-if-then): Remove lets. (f90-looking-at-where-or-forall): Handle if split over lines.
-rw-r--r--lisp/ChangeLog3
-rw-r--r--lisp/progmodes/f90.el55
2 files changed, 27 insertions, 31 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 7537eed4ec..83239ea690 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -3,6 +3,9 @@
* progmodes/f90.el (f90-match-end, f90-break-line): Simplify a bit.
(f90-get-present-comment-type): Fix earlier change.
(f90-comment-indent): Doc fix.
+ (f90-equal-symbols, f90-looking-at-do, f90-looking-at-select-case)
+ (f90-looking-at-if-then): Remove lets.
+ (f90-looking-at-where-or-forall): Handle if split over lines.
2002-05-19 Richard M. Stallman <[email protected]>
diff --git a/lisp/progmodes/f90.el b/lisp/progmodes/f90.el
index fe5134c086..3f8478c19f 100644
--- a/lisp/progmodes/f90.el
+++ b/lisp/progmodes/f90.el
@@ -377,7 +377,7 @@ do\\([ \t]*while\\)?\\|select[ \t]*case\\|where\\|forall\\)\\)\\>"
'("\\<\\(case\\)[ \t]*\\(default\\|(\\)" . 1)
'("\\<\\(do\\|go *to\\)\\>[ \t]*\\([0-9]+\\)"
(1 font-lock-keyword-face) (2 font-lock-constant-face))
- ;; line numbers (lines whose first character after number is letter)
+ ;; Line numbers (lines whose first character after number is letter).
'("^[ \t]*\\([0-9]+\\)[ \t]*[a-z]+" (1 font-lock-constant-face t))))
"Highlights declarations, do-loops and other constructs.")
@@ -918,44 +918,35 @@ For example, \"!\" or \"!!\"."
(defsubst f90-equal-symbols (a b)
"Compare strings A and B neglecting case and allowing for nil value."
- (let ((a-local (if a (downcase a) nil))
- (b-local (if b (downcase b) nil)))
- (equal a-local b-local)))
+ (equal (if a (downcase a) nil)
+ (if b (downcase b) nil)))
;; XEmacs 19.11 & 19.12 return a single char when matching an empty regexp.
;; The next 2 functions are therefore longer than necessary.
(defsubst f90-looking-at-do ()
"Return (\"do\" NAME) if a do statement starts after point.
NAME is nil if the statement has no label."
- (if (looking-at "\\(\\(\\sw+\\)[ \t]*\:\\)?[ \t]*\\(do\\)\\>")
- (let (label
- (struct (match-string 3)))
- (if (looking-at "\\(\\sw+\\)[ \t]*\:")
- (setq label (match-string 1)))
- (list struct label))))
+ (if (looking-at "\\(\\(\\sw+\\)[ \t]*:\\)?[ \t]*\\(do\\)\\>")
+ (list (match-string 3)
+ (if (looking-at "\\(\\sw+\\)[ \t]*:") (match-string 1)))))
(defsubst f90-looking-at-select-case ()
"Return (\"select\" NAME) if a select-case statement starts after point.
NAME is nil if the statement has no label."
- (if (looking-at "\\(\\(\\sw+\\)[ \t]*\:\\)?[ \t]*\
+ (if (looking-at "\\(\\(\\sw+\\)[ \t]*:\\)?[ \t]*\
\\(select\\)[ \t]*case[ \t]*(")
- (let (label
- (struct (match-string 3)))
- (if (looking-at "\\(\\sw+\\)[ \t]*\:")
- (setq label (match-string 1)))
- (list struct label))))
+ (list (match-string 3)
+ (if (looking-at "\\(\\sw+\\)[ \t]*:") (match-string 1)))))
(defsubst f90-looking-at-if-then ()
"Return (\"if\" NAME) if an if () then statement starts after point.
NAME is nil if the statement has no label."
(save-excursion
- (when (looking-at "\\(\\(\\sw+\\)[ \t]*\:\\)?[ \t]*\\(if\\)\\>")
- (let (label
- (struct (match-string 3)))
- (if (looking-at "\\(\\sw+\\)[ \t]*\:")
- (setq label (match-string 1)))
- (let ((pos (scan-lists (point) 1 0)))
- (and pos (goto-char pos)))
+ (when (looking-at "\\(\\(\\sw+\\)[ \t]*:\\)?[ \t]*\\(if\\)\\>")
+ (let ((struct (match-string 3))
+ (label (if (looking-at "\\(\\sw+\\)[ \t]*:") (match-string 1)))
+ (pos (scan-lists (point) 1 0)))
+ (and pos (goto-char pos))
(skip-chars-forward " \t")
(if (or (looking-at "then\\>")
(when (f90-line-continued)
@@ -964,16 +955,18 @@ NAME is nil if the statement has no label."
(looking-at "then\\>")))
(list struct label))))))
-(defsubst f90-looking-at-where-or-forall ()
+(defun f90-looking-at-where-or-forall ()
"Return (KIND NAME) if a where or forall block starts after point.
NAME is nil if the statement has no label."
- (if (looking-at "\\(\\(\\sw+\\)[ \t]*\:\\)?[ \t]*\
-\\(where\\|forall\\)[ \t]*(.*)[ \t]*\\(!\\|$\\)")
- (let (label
- (struct (match-string 3)))
- (if (looking-at "\\(\\sw+\\)[ \t]*\:")
- (setq label (match-string 1)))
- (list struct label))))
+ (save-excursion
+ (when (looking-at "\\(\\(\\sw+\\)[ \t]*:\\)?[ \t]*\
+\\(where\\|forall\\)\\>")
+ (let ((struct (match-string 3))
+ (label (if (looking-at "\\(\\sw+\\)[ \t]*:") (match-string 1)))
+ (pos (scan-lists (point) 1 0)))
+ (and pos (goto-char pos))
+ (skip-chars-forward " \t")
+ (if (looking-at "\\(!\\|$\\)") (list struct label))))))
(defsubst f90-looking-at-type-like ()
"Return (KIND NAME) if a type/interface/block-data block starts after point.