I may try playing around with the sequential sections...since that's how I'm currently writing the majority of this file. Most of the pieces of code are simply defining functions that call other functions or macros and wouldn't be executed alone. However, I'm defining other blocks as tests for the functional sections. So I might do the following:
#+source: functional-definitions
#+begin_src emacs-lisp
(defn f1
#+end_src
#+source: functional-definitions
#+begin_src emacs-lisp
(defn f2
#+end_src
#+begin_src emacs-lisp
<<functional-definitions>>
(def xyz (f1 (f2 foo))) ; produces bar
#+end_src
#+results:
| bar |
I'm still pretty new to using babel, so I haven't figured out much other than the basic tangling capability. Maybe my example could be accomplished with something like a ':concatenate yes' option on the functional-definitions blocks.
Hi,
The setup you suggest below is not currently supported. I fear
implementing such a system could have some odd semantic extensions into
other parts of Org-mode code blocks, for example, would it then make
sense for the results of a code block to be collected over all code
blocks with that name? For example,
#+source: test2
#+begin_src emacs-lisp
1
#+end_src
#+source: test2
#+begin_src emacs-lisp
2
#+end_src
#+begin_src emacs-lisp :var data=test2
data
#+end_src
#+results:
| 1 | 2 |
Maybe, but this is certainly not possible under the current setup.
Anyways, back to your use case, maybe it would be equally convenient to
simply have a number of sequential code blocks in the Org-mode file all
tangle out, as they will be placed in the tangled file in the order they
appear in the Org-mode file, so your example below could be changed
to...
** tangling example
:PROPERTIES:
:tangle: test1.clj:END:
:exports: none
#+begin_src clojure
blah
#+end_src
#+begin_src clojure
foo
#+end_src
#+begin_src clojure#+begin_src clojure
bar
#+end_src
blah
#+end_src
While not the same as what you suggested this may be sufficient.
Best -- Eric
Nicholas Patrick <npatrick04@gmail.com> writes:
> I'm trying to figure out how to minimize the overhead with using babel to
> write some segments of code. I find myself writing short segments of a set
> of functionality, then writing a collector source block which is referred to
> later on in the code... e.g.
>
> *********************
> #+srcname: test1
> #+begin_src clojure :tangle test1.clj :exports none :noweb yes
> blah
> <<test2>>
> blah
> #+end_src
>
> #+srcname: test2
> #+begin_src clojure
> foo
> #+end_src
>
> #+srcname: test2
> #+begin_src clojure
> bar
> #+end_src
> *********************
> I'd like to see
> blah
> foo
> bar
> blah
>
> but I see
> blah
> foo
> blah
>
> What I'd like to see is a single srcname for the code that just concatenates
> the two different sections when it is referred by <<descriptive-name>>.
> That way I don't have to come up with different names and collectors and so
> on and so forth. Maybe I'm just not doing "literate programming" right, but
> when I'm hacking stuff together, I'd like to minimize the housekeeping.
> e.g.
>
> Is there a way to do this?