emacs-orgmode
[Top][All Lists]
Advanced

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

[Orgmode] Re: org-babel - utility to ease chopping src chunks into small


From: Richard Riley
Subject: [Orgmode] Re: org-babel - utility to ease chopping src chunks into smaller org entries
Date: Mon, 20 Sep 2010 07:18:52 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux)

"Eric Schulte" <address@hidden> writes:

> Hi Richard,
>
> Richard Riley <address@hidden> writes:
>
>> Richard Riley <address@hidden> writes:
>>
>>> "Eric Schulte" <address@hidden> 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.


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).
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.

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

-- 
☘ http://www.shamrockirishbar.com, http://splash-of-open-sauce.blogspot.com/ 
http://www.richardriley.net




reply via email to

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