Commit 6d0b2a60 authored by Lars Ingebrigtsen's avatar Lars Ingebrigtsen

Fix narrow-to-defun in f90-mode

* lisp/progmodes/f90.el (f90-beginning-of-subprogram): Make
narrow-to-defun work better (bug#44042).
parent 86dd9d12
Pipeline #7384 passed with stage
in 82 minutes and 52 seconds
......@@ -1649,25 +1649,28 @@ Return (TYPE NAME), or nil if not found."
(interactive)
(let ((count 1) (case-fold-search t) matching-beg)
(beginning-of-line)
(while (and (> count 0)
(re-search-backward f90-program-block-re nil 'move))
(beginning-of-line)
(skip-chars-forward " \t0-9")
;; Check if in string in case using non-standard feature where
;; continued strings do not need "&" at start of continuations.
(cond ((f90-in-string))
((setq matching-beg (f90-looking-at-program-block-start))
(setq count (1- count)))
((f90-looking-at-program-block-end)
(setq count (1+ count)))))
(beginning-of-line)
(if (zerop count)
matching-beg
;; Note this includes the case of an un-named main program,
;; in which case we go to (point-min).
(if (called-interactively-p 'interactive)
(message "No beginning found"))
nil)))
;; Check whether we're already at the start of a subprogram.
(or (f90-looking-at-program-block-start)
;; We're not; search backwards.
(while (and (> count 0)
(re-search-backward f90-program-block-re nil 'move))
(beginning-of-line)
(skip-chars-forward " \t0-9")
;; Check if in string in case using non-standard feature where
;; continued strings do not need "&" at start of continuations.
(cond ((f90-in-string))
((setq matching-beg (f90-looking-at-program-block-start))
(setq count (1- count)))
((f90-looking-at-program-block-end)
(setq count (1+ count)))))
(beginning-of-line)
(if (zerop count)
matching-beg
;; Note this includes the case of an un-named main program,
;; in which case we go to (point-min).
(if (called-interactively-p 'interactive)
(message "No beginning found"))
nil))))
(defun f90-end-of-subprogram ()
"Move point to the end of the current subprogram.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment