[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: narrow-to-defun has changed since 21.3
From: |
Richard Stallman |
Subject: |
Re: narrow-to-defun has changed since 21.3 |
Date: |
Mon, 17 May 2004 18:57:32 -0400 |
I was fixing mark-defun instead of narrow-to-defun.
This should fix narrow-to-defun in the same way.
Does it work?
Thanks.
(defun narrow-to-defun (&optional arg)
"Make text outside current defun invisible.
The defun visible is the one that contains point or follows point.
Optional ARG is ignored."
(interactive)
(save-excursion
(widen)
(let ((opoint (point))
beg end)
;; Try first in this order for the sake of languages with nested
;; functions where several can end at the same place as with
;; the offside rule, e.g. Python.
(beginning-of-defun)
(setq beg (point))
(end-of-defun)
(setq end (point))
(while (looking-at "^\n")
(forward-line 1))
(unless (> (point) opoint)
;; beginning-of-defun moved back one defun
;; so we got the wrong one.
(goto-char opoint)
(end-of-defun)
(setq end (point))
(beginning-of-defun)
(setq beg (point)))
(goto-char end)
(re-search-backward "^\n" (- (point) 1) t)
(narrow-to-region beg end))))