emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: "Eric Schulte" <schulte.eric@gmail.com>
To: Richard Riley <rileyrg@gmail.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: Re: org-babel - utility to ease chopping src chunks into smaller org entries
Date: Mon, 20 Sep 2010 08:30:18 -0600	[thread overview]
Message-ID: <87fwx4sco2.fsf@gmail.com> (raw)
In-Reply-To: i76qrt$7t5$1@dough.gmane.org

Richard Riley <rileyrg@gmail.com> writes:

> "Eric Schulte" <schulte.eric@gmail.com> writes:
>
>> Hi Richard,
>>
>> Richard Riley <rileyrg@gmail.com> writes:
>>
>>> Richard Riley <rileyrg@gmail.com> writes:
>>>
>>>> "Eric Schulte" <schulte.eric@gmail.com> writes:
>>>>
>>>>>
>>>>> Let me know what you think.  I notice your implementation uses
>>>>> regions,
>>>>
>>>> It puts the begin/src markers around the region if selected or current word.
>>>>
>>>>> where as this one does not, so it's possible I left out some
>>>>> functionality.  I'd like to include some version of this functionality
>>>>> into Org-mode core.
>>>
>>> using your lang selection example
>>>
>>> If not in a source block then just surround current region with
>>> #+begin/end_src. If no region just put in markers around empty
>>> area. Dont create new org items since probably just including src code
>>> in an existing org item.
>>>
>>> If in a source block with region create new region with current
>>> region. If no region just create new empty block. previous src blocks
>>> delimited and marked as org items at current level (because almost
>>> certainly splitting the code to maintain it in discreate titled blocks.
>>>
>>>
>>
>> I was just pulling up my email to share my next iteration when I saw
>> your next iteration.  They look very similar.  If my version covers all
>> of your use cases, then I'd like to add it to the Babel key map,
>> probably under "d" for demarcate or delimit, unless you can think of a
>> better mnemonic.
>
>

I've just added this to the org-mode repo.

>
> Not in the babel key map - in the org key map (I use it most in normal
> non src org entries to mark a block of elisp as src for samples/examples).

For now it still lives in the babel keymap behind (C-c C-v d) since it
is fundamentally code-block related, however it can be called from
anywhere in an org-mode file, and could of course be bound to any other
key sequence in a personal config.

> 
> But,yes I suspect your code is better ;) Note my func works in two
> fundamentally different ways - in a babel src block where it creates
> new org items and also in normal (non src) modes where it just creates
> a src block.
>

I believe both of those use cases are supported by the current version
of the function.

Thanks -- Eric

>
>>
>>
>>
>>
>> --8<---------------cut here---------------start------------->8---
>> (defun org-babel-demarcate-block (&optional arg)
>>   "Wrap or split the code in the region or on the point."
>>   (interactive "P")
>>   (let ((info (org-babel-get-src-block-info)))
>>     (if info
>>         (mapc
>>          (lambda (place)
>>            (save-excursion
>>              (goto-char place)
>>              (let ((lang (nth 0 info))
>>                    (indent (make-string (nth 6 info) ? ))
>>                    (stars (concat (make-string (org-current-level) ?*) " ")))
>>                (insert (concat (if (looking-at "^") "" "\n")
>>                                indent "#+end_src\n"
>>                                (if arg stars indent) "\n"
>>                                indent "#+begin_src " lang
>>                                (if (looking-at "[\n\r]") "" "\n")))
>>                (when arg (previous-line) (move-end-of-line 1)))))
>>          (sort (if (region-active-p) (list (mark) (point)) (list (point))) #'>))
>>       (insert (concat (if (looking-at "^") "" "\n")
>>                       (if arg (concat stars "\n") "")
>>                       "#+begin_src " (read-from-minibuffer "Lang: ") "\n"
>>                       (delete-and-extract-region (or (mark) (point)) (point))
>>                       "\n#+end_src"))
>>       (previous-line) (move-end-of-line 1))))
>> --8<---------------cut here---------------end--------------->8---
>>
>>
>>
>> Cheers -- Eric
>>
>>>
>>>
>>> (define-key org-mode-map (kbd "C-c C-b") 'rgr/org-split-src)
>>>
>>> (defun rgr/org-split-src(&optional arg)
>>>   (interactive "P")
>>>   (beginning-of-line)
>>>   (save-excursion((lambda(info)
>>>      (if info
>>>          (let ((lang (nth 0 info))
>>>                (stars (make-string (org-current-level) ?*)))
>>>            (insert 
>>>             (format 
>>>              "%s\n%s\n#+begin_src %s\n%s#+end_src\n%s\n#+begin_src %s\n" 
>>>              "#+end_src"
>>>              stars
>>>              lang
>>>              (if (region-active-p) 
>>>                  (delete-and-extract-region (region-beginning) (region-end)) "\n")
>>>              stars
>>>              lang)))
>>>        (insert 
>>> 	(format 
>>> 	 "\n#+begin_src\n%s\n#+end_src\n" 
>>> 	 (if (region-active-p) 
>>> 	     (delete-and-extract-region (region-beginning) (region-end)) "")))))
>>>    (org-babel-get-src-block-info))))
>>>

  reply	other threads:[~2010-09-20 14:38 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-19  1:48 org-babel - utility to ease chopping src chunks into smaller org entries Richard Riley
2010-09-19 18:21 ` Eric Schulte
2010-09-19 22:03   ` Richard Riley
2010-09-19 23:20     ` Richard Riley
2010-09-20  3:41       ` Eric Schulte
2010-09-20  5:18         ` Richard Riley
2010-09-20 14:30           ` Eric Schulte [this message]
2010-09-20 15:15             ` Sébastien Vauban
2010-09-20 22:21               ` Sébastien Vauban
2010-09-21 12:46                 ` Eric Schulte
2010-09-21 13:49                   ` Dan Davison
2010-09-21 14:37                   ` Sébastien Vauban
2010-09-21 12:44               ` Eric Schulte
2010-09-21 15:19                 ` Sébastien Vauban
2010-09-20 20:09             ` Dan Davison
2010-09-21  7:58               ` Christian Moe
2010-09-21 11:17                 ` Richard Riley
2010-09-21 13:04                 ` Eric Schulte
2010-09-21 14:35                   ` Christian Moe
2010-09-21 14:50                     ` Dan Davison
2010-09-21 15:35                       ` Eric Schulte
2010-09-24 13:24                         ` Requests about the code demarcation Sébastien Vauban
2010-09-27 13:18                           ` Eric Schulte
2010-09-27 13:47                             ` Sébastien Vauban
2010-09-27 14:36                               ` Sébastien Vauban
2010-09-27 14:58                                 ` Eric Schulte
2010-09-30 18:17                             ` Achim Gratz
2010-09-30 22:19                               ` Eric Schulte
2010-10-01 19:28                                 ` Achim Gratz
2010-10-17 11:53                               ` Richard Riley
2010-09-21  6:33         ` org-babel - utility to ease chopping src chunks into smaller org entries Achim Gratz
2010-09-21 13:01           ` Eric Schulte
2010-09-21 17:03             ` Achim Gratz
2010-09-19 21:24 ` Sébastien Vauban
2010-09-19 21:44   ` Richard Riley
2010-09-19 21:52     ` Sébastien Vauban

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=87fwx4sco2.fsf@gmail.com \
    --to=schulte.eric@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=rileyrg@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).