From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sebastian Rose Subject: Re: Cycling visibility of blocks Date: Mon, 25 May 2009 11:19:21 +0200 Message-ID: <87y6slmteu.fsf@kassiopeya.MSHEIMNETZ> References: <87skiuryr2.fsf@selenimh.orion.org> <87ljomnfni.fsf@kassiopeya.MSHEIMNETZ> <04195B46-5D81-4E64-8315-CD2085E49357@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1M8WHX-0000XA-M9 for emacs-orgmode@gnu.org; Mon, 25 May 2009 05:15:43 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1M8WHS-0000RJ-47 for emacs-orgmode@gnu.org; Mon, 25 May 2009 05:15:42 -0400 Received: from [199.232.76.173] (port=50611 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1M8WHR-0000RB-IK for emacs-orgmode@gnu.org; Mon, 25 May 2009 05:15:37 -0400 Received: from mail.gmx.net ([213.165.64.20]:37940) by monty-python.gnu.org with smtp (Exim 4.60) (envelope-from ) id 1M8WHR-0001xv-1H for emacs-orgmode@gnu.org; Mon, 25 May 2009 05:15:37 -0400 In-Reply-To: <04195B46-5D81-4E64-8315-CD2085E49357@gmail.com> (Carsten Dominik's message of "Mon, 25 May 2009 09:25:24 +0200") 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: Carsten Dominik Cc: emacs-orgmode@gnu.org Carsten Dominik writes: > On May 25, 2009, at 3:18 AM, Sebastian Rose wrote: > >> Wow, this is great! >> >> And yes, it indeed makes sense to hide other blocks too, e.g. big ditaa >> blocks or #+BEGIN_HTML when working on LaTeX stuff (here a `S-TAB' >> action would be great, that hides all blocks of that sort at once). >> >> In fact, I changed the `org-block-hide-src-block-regexp' to >> >> "#\\+begin_\\w+ \\(.+\\)[ \t]*\\([ \t]+\\([^\n]+\\)\\)?\n\\([^ >> \000]+?\\)#\\+end_src" > > > :-) This is not going to work. You need to capture the block type into a > regexp group and then use a back reference like "#\\+end_\\1" at the end. > > "#\\+begin_\\w+ \\(.+\\)[ \t]*\\([ \t]+\\([^\n]+\\)\\)?\n\\([^ > \000]+?\\)#\\+end_src" aaahh, now that you say this, it does not work anymore ;-( It seemed to work, but I had several blocks in that file .... Now it doesn't ... I'll have to read the manual again ... Puuuhaa - I'll never ever love regexps in elisp :-D OK, I found it works now if I change (let ((start (- (match-beginning 4) 1)) ;; beginning of body to (let ((start (- (match-beginning 5) 1)) ;; beginning of body and use "#\\+begin_\\([^ ]+\\) \\(.+\\)[ \t]*\\([ \t]+\\([^\n]+\\)\\)?\n\\([^\000]+?\\)#\\+end_\\1" :) Sebastian > > - Carsten > >> >> >> Thanks for this wonderfull snippet! >> >> >> Sebastian >> >> >> "Eric Schulte" writes: >>> Hi, >>> >>> The attached file should implement this feature, just load the file and >>> then press tab while at the beginning of a source block. Note that it >>> requires a newish version of org-mode which includes the >>> `org-tab-first-hook' variable. >>> >>> Maybe this would make sense for all org blocks, not just src blocks? >>> >>> Cheers -- Eric >>> >>> >>> ;;; org-block-hide --- hide src blocks in org-mode files >>> >>> (defvar org-block-hide-src-block-regexp "#\\+begin_src \\(.+\\) >>> [ \t]*\\([ \t]+\\([^\n]+\\)\\)?\n\\([^\000]+?\\)#\\+end_src") >>> >>> (defun org-block-hide-ui-src-block-cycle-maybe () >>> (let ((case-fold-search t)) >>> (if (save-excursion >>> (beginning-of-line 1) >>> (looking-at org-block-hide-src-block-regexp)) >>> (progn (call-interactively 'org-block-hide-ui-src-block-cycle) >>> t) ;; to signal that we took action >>> nil))) ;; to signal that we did not >>> >>> (defun org-block-hide-ui-src-block-cycle () >>> "Cycle the visibility of the current source code block" >>> (interactive) >>> ;; should really do this once in an (org-mode hook) >>> (add-to-invisibility-spec '(org-block-hide-ui . t)) >>> (message "trying out source block") >>> (save-excursion >>> (beginning-of-line) >>> (if (re-search-forward org-block-hide-src-block-regexp nil t) >>> (let ((start (- (match-beginning 4) 1)) ;; beginning of body >>> (end (match-end 0))) ;; end of entire body >>> (if (memq t (mapcar (lambda (overlay) >>> (eq (overlay-get overlay 'invisible) >>> org-block-hide-ui)) >>> (overlays-at start))) >>> (remove-overlays start end 'invisible 'org-block-hide- >>> ui) >>> (overlay-put (make-overlay start end) 'invisible 'org- >>> block-hide-ui))) >>> (error "not looking at a source block")))) >>> >>> ;; org-tab-after-check-for-cycling-hook >>> (add-hook 'org-tab-first-hook 'org-block-hide-ui-src-block-cycle- >>> maybe) >>> >>> >>> emacs-orgmode@gnu.org writes: >>> >>>> Hello, >>>> >>>> I perhaps have missed it in the manual, but, would it be possible to >>>> cycle visibility in blocks like in the example below ? >>>> >>>> #+BEGIN_something >>>> blah blah blah >>>> blah >>>> blah blah >>>> and so much blah yet to come >>>> #+END_something >>>> >>>> becomes >>>> >>>> #+BEGIN_something >>>> ... >>>> #+END_something >>>> >>>> It could help when you have those big BEGIN_SRC getting in the way. >>>> >>>> Thanks. >>> _______________________________________________ >>> Emacs-orgmode mailing list >>> Remember: use `Reply All' to send replies to the list. >>> Emacs-orgmode@gnu.org >>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode >> >> >> _______________________________________________ >> Emacs-orgmode mailing list >> Remember: use `Reply All' to send replies to the list. >> Emacs-orgmode@gnu.org >> http://lists.gnu.org/mailman/listinfo/emacs-orgmode > -- Sebastian Rose, EMMA STIL - mediendesign, Niemeyerstr.6, 30449 Hannover Tel.: +49 (0)511 - 36 58 472 Fax: +49 (0)1805 - 233633 - 11044 mobil: +49 (0)173 - 83 93 417 Email: s.rose@emma-stil.de, sebastian_rose@gmx.de Http: www.emma-stil.de