[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] Feature Request: Allow Tangling Named INCLUDEs
From: |
Eric Schulte |
Subject: |
Re: [O] Feature Request: Allow Tangling Named INCLUDEs |
Date: |
Mon, 20 Jan 2014 09:20:04 -0700 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) |
Nick Daly <address@hidden> writes:
> Hi folks, I have a situation where I have many named code snippets
> currently available in external files, and would like to tangle them
> into an Org mode file. Is it currently possible to tangle included
> files? If not, could that feature be added to a new version of Org
> mode? I've looked through the mailing list history a bit and couldn't
> find this specific request.
>
> - What exactly did you do? :: I created the three files shown below.
> I then tangled the searches.org file (~C-c C-v C-t~).
>
> For convenience, all three files can be created by tangling this
> email.
>
> - What did you expect to happen? :: I expected the contents of the files
> searchItems(8|12).m to appear in lines [[search-08][(search-08)]]
> and [[search-12][(search-12)]].
>
> - What happened instead? :: The templates on lines
> [[search-08][(search-08)]] and [[search-12][(search-12)]] were
> empty.
>
The following function works for me on a simple example file.
;; -*- emacs-lisp -*-
(defun trial-expand-and-tangle ()
(interactive)
(save-window-excursion
(let ((text (buffer-string))
(org-babel-pre-tangle-hook nil))
(unwind-protect
(progn
(org-export-expand-include-keyword)
(org-babel-tangle))
(delete-region (point-min) (point-max))
(goto-char (point-min))
(insert text)))))
I'm not sure if this is common enough to have functionality added to the
core. Maybe adding a `with-expanded-includes' macro would be useful
though.
Best,
>
> Thanks for your time,
> Nick
>
> ----
>
> If you don't understand the code below, that's because it's MUMPS. Be
> happy that you don't understand.
>
> #+begin_src org :noweb tangle :tangle searches.org -s -n :padline no
> ,# -*- mode: org -*-
> ,* Searches
>
> ,#+name: search-main
> ,#+begin_src text :noweb tangle :tangle searchAllItems.m
> , searches(pId)
> , n pDate,i08,i12
> , f pDate=$$idForwardDate(pId,pDate) q:pDate="" d
> , . <<searchItem08>> ; (ref:search-08)
> , . <<searchItem12>> ; (ref:search-12)
> , . ; and about 30 more of these named searches.
> ,#+end_src
>
> ,#+name: searchItem08
> ,#+INCLUDE: "searchItem08.m" src text
>
> ,#+name: searchItem12
> ,#+INCLUDE: "searchItem12.m" src text
>
> #+end_src
> #+begin_src text :tangle searchItem08.m :padline no
> s i08=$$zgetnp(pId,pDate,08) i i08="" d LogIcErr("i08",i08)
> #+end_src
> #+begin_src text :tangle searchItem12.m :padline no
> s i12=$$zgetnp(pId,pDate,12) i
> $$zgetnp(pId,pDate,$$zgetnp(pId,pDate,i12))'=i12 d LogIcErr("i12",i12)
> #+end_src
--
Eric Schulte
https://cs.unm.edu/~eschulte
PGP: 0x614CA05D