From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joost Helberg Subject: Bug: code blocks with multiple word names create single word result-blocks leading to collisions [8.2.10 (8.2.10-elpaplus @ ~/.emacs.d/elpa/org-plus-contrib-20141013/)] Date: Wed, 18 Feb 2015 13:54:12 +0100 Message-ID: <87vbizidmz.fsf@snow.nl> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:46203) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YO49A-0003jL-8F for emacs-orgmode@gnu.org; Wed, 18 Feb 2015 07:54:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YO495-0002nY-8M for emacs-orgmode@gnu.org; Wed, 18 Feb 2015 07:54:32 -0500 Received: from mx.snow.nl ([213.154.248.146]:41294) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YO494-0002nD-V0 for emacs-orgmode@gnu.org; Wed, 18 Feb 2015 07:54:27 -0500 Received: from imap.snow.nl (imap.snow.nl [213.154.248.156]) by mx.snow.nl (Postfix) with ESMTP id 359534027C for ; Wed, 18 Feb 2015 13:53:40 +0100 (CET) Received: from w520jo (neerijnen.snow.nl [213.154.248.134]) by imap.snow.nl (Postfix) with ESMTPSA id 7A6A22D663A for ; Wed, 18 Feb 2015 13:54:12 +0100 (CET) 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: emacs-orgmode@gnu.org hi, noweb-syntax allows blanks in names of code blocks. The result-blocks of these code blocks are named as well, but have everything behind the first word stripped. This leads to result-block collisions in case there are two code blocks starting with the same word. Is this intentional? Why doesn't org-mode support sentences for code block names? It boils down to the regexp /org-babel-src-name-w-name-regexp/. It matches a name; the match-string function is used for retrieving this name. The regexp should obviously match the rest of the text too. The original ob-core.el uses: ="\\([^ ()\f\t\n\r\v]+\\)"= to match the name. Check the ' ' behind the caret. The regexp I tested has the space removed. Hence, it will match the full length name. #+begin_src emacs-lisp (setq org-babel-src-name-w-name-regexp (concat org-babel-src-name-regexp "\\(" org-babel-multi-line-header-regexp "\\)*" "\\([^()\f\t\n\r\v]+\\)")) #+end_src Will this just fix or also break things? Was the blank deliberately added? If all OK, can someone please commit/push it? Example code below: The following snippet can be executed (C-c C-c) and included in some script down at the bottom of this file. #+NAME: echo the stuff #+BEGIN_SRC sh echo "ape nut miss" #+END_SRC #+RESULTS: echo the stuff : ape nut miss Do names with only one word still work? #+NAME: doit #+BEGIN_SRC sh echo "cat boom spoil" #+END_SRC #+RESULTS: doit : cat boom spoil The next snippet will leave it's result after being executed in the above #+RESULT: line, not the result below the code. It can be included however in the bottom-script using noweb notation. #+NAME: echo other stuff #+BEGIN_SRC sh echo "tune fire goat" #+END_SRC #+RESULTS: echo other stuff : tune fire goat We use this shell-snippet in the following script and execute it, noweb works fine: #+BEGIN_SRC sh :noweb yes <> <> #+END_SRC #+RESULTS: | ape | nut | miss | | tune | fire | goat | many regards, Joost Emacs : GNU Emacs 25.0.50.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.4.2) of 2014-10-13 on w520jo Package: Org-mode version 8.2.10 (8.2.10-elpaplus @ /home/joost/.emacs.d/elpa/org-plus-contrib-20141013/) -- Snow B.V.