>> 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)))) _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode