# HG changeset patch # User Glenn Morris # Date 1139385913 0 # Node ID d7669e5fe59fe5085f983fb0eb1bd4b5de9d89ad # Parent e2188be06b266348a7c833f4e4f999a8a8e9c31a Revert previous inadvertent check-in of local changes. diff -r e2188be06b26 -r d7669e5fe59f lisp/progmodes/f90.el --- a/lisp/progmodes/f90.el Wed Feb 08 07:54:54 2006 +0000 +++ b/lisp/progmodes/f90.el Wed Feb 08 08:05:13 2006 +0000 @@ -991,16 +991,6 @@ "?\\([ \t]+\\(\\sw+\\)\\)?\\>")) (list (match-string 1) (match-string 3)))) -(defsubst f90-looking-at-else-like () - "Return KIND if an ELSE or CASE statement starts after point. -Returns \"selectcase\", \"elseif\", \"elsewhere\", \"else\", or nil." - (when (looking-at f90-else-like-re) - (cond ((looking-at "case[ \t]*\\(default\\|\(\\)") - "selectcase") - ((or (looking-at "else[ \t]*\\(if\\)\\>") - (looking-at "else\\(where\\)?\\>")) - (concat "else" (match-string 1)))))) - (defsubst f90-comment-indent () "Return the indentation to be used for a comment starting at point. Used for `comment-indent-function' by F90 mode. @@ -1440,7 +1430,7 @@ (skip-chars-forward " \t")) (if (looking-at "!") (setq indent (f90-comment-indent)) - (and f90-smart-end (looking-at (concat "end\\|" f90-else-like-re)) + (and f90-smart-end (looking-at "end") (f90-match-end)) (setq indent (f90-calculate-indent))) (or (= indent (current-column)) @@ -1729,29 +1719,6 @@ (replace-match "")))) (or (looking-at "[ \t]*!") (delete-horizontal-space)))) -(defun f90-else-like-match (beg-block else-block) - "Match else-struct with beg-struct and complete else-struct if possible. -BEG-BLOCK is the type of block as indicated at the start (e.g., if). -ELSE-BLOCK is the type of block as indicated at the else (may be nil)." - (if (not (member beg-block '("if" "where" "select"))) - (if beg-block - (message "%s block cannot have a %s." beg-block else-block) - (message "No beginning for %s." else-block)) - (let ((else-type (cond - ((string-equal else-block "selectcase") "select") - ((string-match "else\\(if\\|where\\)" else-block) - (match-string 1 else-block))))) - (unless (f90-equal-symbols beg-block else-type) - (if (or else-type - (f90-equal-symbols beg-block "select")) - (progn - (message "%s does not match %s." else-block beg-block) - (end-of-line)) - (cond ((string-equal beg-block "where") - (message "Inserting %s." beg-block) - (search-forward "else" (line-end-position)) - (insert beg-block)))))))) - (defun f90-match-end () "From an end block statement, find the corresponding block and name." (interactive) @@ -1759,11 +1726,11 @@ (top-of-window (window-start)) (end-point (point)) (case-fold-search t) - matching-beg beg-name beg-block end-struct else-struct) + matching-beg beg-name end-name beg-block end-block end-struct) (when (save-excursion (beginning-of-line) (skip-chars-forward " \t0-9") - (or (setq end-struct - (f90-looking-at-program-block-end)) - (setq else-struct (f90-looking-at-else-like)))) + (setq end-struct (f90-looking-at-program-block-end))) + (setq end-block (car end-struct) + end-name (car (cdr end-struct))) (save-excursion (beginning-of-line) (while (and (> count 0) @@ -1806,10 +1773,7 @@ beg-name (car (cdr matching-beg))) (goto-char end-point) (beginning-of-line) - (if else-struct - (f90-else-like-match beg-block else-struct) - (f90-block-match beg-block beg-name - (car end-struct) (cadr end-struct)))))))) + (f90-block-match beg-block beg-name end-block end-name)))))) (defun f90-insert-end () "Insert a complete end statement matching beginning of present block."