]> git.eshelyaron.com Git - emacs.git/commitdiff
(f90-equal-symbols, f90-looking-at-do, f90-looking-at-select-case)
authorGlenn Morris <rgm@gnu.org>
Sun, 19 May 2002 23:19:42 +0000 (23:19 +0000)
committerGlenn Morris <rgm@gnu.org>
Sun, 19 May 2002 23:19:42 +0000 (23:19 +0000)
(f90-looking-at-if-then): Remove lets.
(f90-looking-at-where-or-forall): Handle if split over lines.

lisp/ChangeLog
lisp/progmodes/f90.el

index 7537eed4ecb58a679753c12ac490ee6f7680647c..83239ea6903657f53c3a75040f05c4879f89e307 100644 (file)
@@ -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  <rms@gnu.org>
 
index fe5134c086e192c228947d71858cbe38bdf53f57..3f8478c19f07e68bdba8716d77a93a10cf37c0ad 100644 (file)
@@ -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.