emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] Cycling visibility of blocks


From: Carsten Dominik
Subject: Re: [Orgmode] Cycling visibility of blocks
Date: Mon, 25 May 2009 09:25:24 +0200


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"

- Carsten



Thanks for this wonderfull snippet!


 Sebastian


"Eric Schulte" <address@hidden> 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)


address@hidden 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.
address@hidden
http://lists.gnu.org/mailman/listinfo/emacs-orgmode


_______________________________________________
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
address@hidden
http://lists.gnu.org/mailman/listinfo/emacs-orgmode





reply via email to

[Prev in Thread] Current Thread [Next in Thread]