From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Schulte Subject: Re: Feature Request: Allow Tangling Named INCLUDEs Date: Mon, 20 Jan 2014 09:19:03 -0700 Message-ID: <87d2jmy6bs.fsf@gmail.com> References: <87ob3ifcx4.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:55851) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W5HcB-0001nc-6U for emacs-orgmode@gnu.org; Mon, 20 Jan 2014 11:22:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W5Hc3-00040w-6g for emacs-orgmode@gnu.org; Mon, 20 Jan 2014 11:22:19 -0500 Received: from mail-pa0-x233.google.com ([2607:f8b0:400e:c03::233]:62008) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W5Hc2-00040f-VR for emacs-orgmode@gnu.org; Mon, 20 Jan 2014 11:22:11 -0500 Received: by mail-pa0-f51.google.com with SMTP id ld10so4927339pab.10 for ; Mon, 20 Jan 2014 08:22:10 -0800 (PST) In-Reply-To: <87ob3ifcx4.fsf@gmail.com> (Nick Daly's message of "Sat, 11 Jan 2014 15:04:23 -0600") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Nick Daly Cc: emacs-orgmode@gnu.org Nick Daly 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 > , . <> ; (ref:search-08) > , . <> ; (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