Hi list, hi Eric, I've been using ob-C to go through the K&R book, and I've noticed a few annoyances along the way.
* Use of the captial C identifier Support functions are defined as ob-C-*. In consequence, I need to #+begin_src C to get a block to execute, because #+begin_src c fails with "No org-babel-execute function for c!". The problem is that I can't edit the block since there is no C-mode. Defining an alias fixed the issue, but it doesn't work OOTB, and doesn't feel like a good solution at all. Is there a reasoning behind this, or where you, as I suspect, trying to define some support functions that would work for both C and C++ ? * Feeding text into blocks This is not directly related to ob-C.el, but I was looking for a way to feed some text to a block's STDIN while it was executed by babel. I wanted to specifiy this text either inline from the block's header arguments or from a dedicated text block. It'd ideally look like this : ** Inline #+begin_src c :feed foo bar int main(void) { while ((c = getchar()) != EOF) { putchar(c); } return 0; } #+end_src #+results: : foo bar ** From a text block #+source: my-stdin #+begin_src text foo bar #+end_src #+begin_src c :feed my-stdin int main(void) { while ((c = getchar()) != EOF) { putchar(c); } return 0; } #+end_src #+results: : foo bar TL;DR if this is already possible somehow please skip the following and let me know :) I couldn't figure out how to pipe the text from within babel though. So I resorted to tangling the text blocks, and redefined org-babel-C-execute to use that new header argument :feed. It gets prepended to the cmdline in the org-babel-eval function call ; if foo is an existing file it gets cat'ed through a pipe to the rest of the cmdline in org-babel-eval, otherwise it is simply echo'ed. This is not as good as what I described above, but after getting to use it, I really think a generalization of this use-case is desirable. Please let me know whar you think. Regards, Julien.