From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: Autocollapse of outline nodes Date: Fri, 12 May 2006 06:35:17 +0200 Message-ID: <58e023ea25ca8bf21c319c581dc71430@gmail.com> References: <3c12eb8d0604240515l3313b552o2ba25db2e7012f97@mail.gmail.com> <39e6a980b34a61ebb4e57f452699359c@science.uva.nl> <3c12eb8d0605111826m7ebdf5d5mdab748c16f04a225@mail.gmail.com> Mime-Version: 1.0 (Apple Message framework v623) Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1FePN2-0002JU-AZ for emacs-orgmode@gnu.org; Fri, 12 May 2006 00:35:20 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1FePN0-0002If-Hw for emacs-orgmode@gnu.org; Fri, 12 May 2006 00:35:20 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1FePN0-0002IY-CC for emacs-orgmode@gnu.org; Fri, 12 May 2006 00:35:18 -0400 Received: from [194.134.35.149] (helo=smtp08.wanadoo.nl) by monty-python.gnu.org with esmtp (Exim 4.52) id 1FePOf-0007P2-5C for emacs-orgmode@gnu.org; Fri, 12 May 2006 00:37:01 -0400 In-Reply-To: <3c12eb8d0605111826m7ebdf5d5mdab748c16f04a225@mail.gmail.com> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Piotr Zielinski Cc: emacs-orgmode@gnu.org Great. I did no know about get-buffer-window-list, this makes it a lot easier. - Carsten On May 12, 2006, at 3:26, Piotr Zielinski wrote: > Below is a version of autocollapse that works correctly even if > several windows show the same buffer. It periodically collapses > outline nodes that are far from the current point position [1]. > > Piotr > > [1] > http://zerotau.blogspot.com/2006/04/autocollapse-mode-for-emacs.html > > (defun local-fold-from-level (beg end level) > (hide-region-body beg end) > (goto-char beg) > (unless (looking-at outline-regexp) > (outline-next-visible-heading 1)) > (while (and (<= (point) end) (not (eobp))) > (when (> (outline-level) level) > (hide-subtree)) > (outline-next-visible-heading 1))) > > > (defun local-contains-point (beg end pointlist) > (let ((result)) > (dolist (point pointlist result) > (setq result (or result (and (>= point beg) (<= point end))))))) > > (defun local-auto-fold () > (save-excursion > (let ((pointlist (mapcar 'window-point > (get-buffer-window-list (current-buffer) nil t)))) > (message "fold: %S: %S" (current-buffer) pointlist) > (beginning-of-buffer) > (unless (looking-at outline-regexp) > (outline-next-visible-heading 1)) > (while (not (eobp)) > (let ((end (save-excursion (outline-end-of-subtree) (point)))) > (if (local-contains-point (point) end pointlist) > (outline-next-visible-heading 1) > (local-fold-from-level (point) end (outline-level)))))))) > > (defun local-auto-fold-all () > (save-excursion > (dolist (buffer (buffer-list)) > (set-buffer buffer) > (when (eq major-mode 'org-mode) > (local-auto-fold))))) > > (run-with-idle-timer 60 t 'local-auto-fold-all) > > -- Carsten Dominik Sterrenkundig Instituut "Anton Pannekoek" Universiteit van Amsterdam Kruislaan 403 NL-1098SJ Amsterdam phone: +31 20 525 7477