emacs-orgmode
[Top][All Lists]
Advanced

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

[Orgmode] Re: [BABEL] [PROPOSAL] Seemless editing of Babel Blocks


From: Jambunathan K
Subject: [Orgmode] Re: [BABEL] [PROPOSAL] Seemless editing of Babel Blocks
Date: Sat, 04 Sep 2010 14:28:39 +0530
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.91 (windows-nt)

    >> Offer a command say 'org-to-org-src-view' which when invoked
    >> switches the org-mode buffer to target language mode and comments
    >> out all the non-src blocks.
    >> 
    >> Offer a reverse command 'org-src-to-org-view' that switches the
    >> buffer to org-mode and uncomments the non-src blocks.

    Dan> My vote is that this proposal is too drastic.

What I am proposing is tangling albeit in a loose sense of the word.

Would it sound as drastic if one were to divorce the consideration of
how often this operation gets performed - one time only or very often -
during the lifetime of the org file.

How about providing user-accessible tapping points within
'org-babel-map-src-blocks' (or a variation thereof) that would enable me
have a custom command in my .emacs.

For the sake of record, my suggestion is very closely related to what is
discussed here.

http://eschulte.github.com/babel-dev/PROPOSED-tangle-entire-org-mode-file-in-comments.html

Thanks,
Jambunathan K.

> 5 Gross code 
> ~~~~~~~~~~~~~
>
>
> diff --git a/lisp/ob.el b/lisp/ob.el
> index b5b9d8f..613139e 100644
> --- a/lisp/ob.el
> +++ b/lisp/ob.el
> @@ -662,19 +662,52 @@ portions of results lines."
>           (lambda () (org-add-hook 'change-major-mode-hook
>                               'org-babel-show-result-all 'append 'local)))
>  
> -(defmacro org-babel-map-src-blocks (file &rest body)
> +
> +(defun org-to-org-src-view () 
> +  ""
> +  (interactive)
> +
> +  (emacs-lisp-mode)
> +  (org-babel-map-src-blocks (buffer-file-name)
> +      (
> +       (comment-region beg-org end-org)
> +       )
> +      )
> +  )
> +
> +(defmacro org-babel-map-src-blocks (file body1 &rest body)
>    "Evaluate BODY forms on each source-block in FILE."
>    (declare (indent 1))
>    `(let ((visited-p (get-file-buffer (expand-file-name ,file)))
> -        to-be-removed)
> +        to-be-removed
> +        (beg-org (make-marker))
> +        (end-org (make-marker))
> +        (beg-babel (make-marker))
> +        (end-babel (make-marker))
> +        )
> +     
>       (save-window-excursion
>         (find-file ,file)
>         (setq to-be-removed (current-buffer))
> +
> +       (move-marker end-babel (point-min))
>         (goto-char (point-min))
> +       
>         (while (re-search-forward org-babel-src-block-regexp nil t)
> -         (goto-char (match-beginning 0))
> -         (save-match-data ,@body)
> -         (goto-char (match-end 0))))
> +
> +        (move-marker beg-org end-babel)
> +        (move-marker end-org (match-beginning 0))
> +        (move-marker beg-babel (match-beginning 0))
> +        (move-marker end-babel (match-end 0))
> +
> +        (goto-char beg-org)
> +        ,@body1
> +
> +        (goto-char beg-babel)
> +         ,@body
> +        
> +
> +         (goto-char end-babel)))
>       (unless visited-p
>         (kill-buffer to-be-removed))))






reply via email to

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