emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Dan Davison <davison@stats.ox.ac.uk>
To: Jambunathan K <kjambunathan@gmail.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: [BABEL] [PROPOSAL] Seemless editing of Babel Blocks
Date: Thu, 02 Sep 2010 16:41:07 -0700	[thread overview]
Message-ID: <878w3j1zos.fsf@stats.ox.ac.uk> (raw)
In-Reply-To: <8139ueykvc.fsf_-_@gmail.com> (Jambunathan K.'s message of "Mon, 16 Aug 2010 14:50:23 +0530")

Hi Jambunathan,

>   The primary motivation is that I find transitioning from and to an
>   org-src buffer a bit of a psychological drag. It would be good if I
>   don't leave the current buffer as such and still be able to edit
>   babel blocks.
[...]
> 4 Crux of the idea 
> ~~~~~~~~~~~~~~~~~~~
[...]
>   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. 

My vote is that this proposal is too drastic.


>   This way I never leave the buffer and I don't have to contend
>   anymore with pop-ups
> 

Have you investigated the different settings of the
`org-src-window-setup' variable?

> (and importantly syncing of parent and daughter
>   buffers).

Could you expand on that a little bit? What syncing problems are you
having?

> Yet I have 'all' the contexts available for my viewing and
>   editing pleasure.


There have been some recent changes with the aim of making code blocks
more pleasant to use in Org, such as fontification and making TAB and
other major-mode commands available in the Org buffer (with a current
master branch, see the variable `org-src-tab-acts-natively' and
`org-babel-do-key-sequence-in-edit-buffer' which is bound to key
bindings C-c C-v x and C-c C-v C-x)

If you really want to use language major mode commands without leaving
the Org buffer, I suggest investigating Lennart Borgman's nxhtml
package[1]. This features a function `org-mumamo-mode' which
automatically switches Org code blocks into native major modes. I have
encountered one bug whch makes R code blocks hard to use, but the author
is responding to them at the bug tracker[2], so I think we should help
out by reporting any bugs there. Here's my config for nxhtml/mumamo (the
third line is just personal taste):

--8<---------------cut here---------------start------------->8---
(load "/usr/local/src/emacs/nxhtml/autostart.el")
(require 'mumamo)
(add-hook 'org-mumamo-mode-hook (lambda () (mumamo-no-chunk-coloring +1)))
--8<---------------cut here---------------end--------------->8---


Dan

Footnotes:

[1] http://www.emacswiki.org/emacs/NxhtmlMode

[2] https://bugs.launchpad.net/nxhtml


> 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))))
>
> 6 Illustration 
> ~~~~~~~~~~~~~~~
>
>   For the sake of illustration, consider an org-mode buffer like this.
>   
>   
> * Heading0
> ** Heading00
>    Print Heading00.
>    
> #+begin_src emacs-lisp
>    (message "Heading00")
> #+end_src   
>    
> ** Heading01
>    
>    Print Heading01.
>    #+begin_src emacs-lisp
>      (message "Heading01")
>    #+end_src   
>   
>   org-to-org-src-view on this buffer puts it in emacs-lisp mode with
>   the following content.
>   
> ;; * Heading0
> ;; ** Heading00
> ;;    Print Heading00.
>    
> #+begin_src emacs-lisp
>    (message "Heading00")
> #+end_src   
>    
> ;; ** Heading01
>    
> ;;    Print Heading01.
>    #+begin_src emacs-lisp
>      (message "Heading01")
>    #+end_src   
>      
>   For the sake of brevity, I have left out the commenting of
>   meta-lines in the prototype code.
>   
> Thanks for your consideration,
> Jambunathan K.
>
> _______________________________________________
> 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

  reply	other threads:[~2010-09-02 23:41 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-20 12:10 [BABEL] Seemless editing of Babel Blocks Jambunathan K
2010-07-20 22:58 ` Eric Schulte
2010-08-16  8:38   ` Jambunathan K
2010-08-16  9:20     ` [BABEL] [PROPOSAL] " Jambunathan K
2010-09-02 23:41       ` Dan Davison [this message]
2010-09-02 23:50         ` Erik Iverson
2010-09-03 19:08         ` Tom Short
2010-09-03 20:45           ` Dan Davison
2010-09-04  8:58         ` Jambunathan K
2010-09-04 15:04           ` Eric Schulte
2010-09-05  9:55             ` Jambunathan K
2010-09-05 15:58               ` Dan Davison
2010-09-05 19:12                 ` Eric Schulte
2010-09-05 20:22               ` Eric Schulte

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=878w3j1zos.fsf@stats.ox.ac.uk \
    --to=davison@stats.ox.ac.uk \
    --cc=emacs-orgmode@gnu.org \
    --cc=kjambunathan@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).