Re: [O] [babel][patch] BUG in inline source blocks
Thanks. But out of interest why were the tests discarded? They are after all the proof that the code works, and the `living specification' of expected behavior. Just wondering My apologies, I didn't see the tests when looking at your patch and didn't realize they were there. Thanks for mentioning this, I have now applied them. BTW: the only reason I didn't apply your patch outright was because by the time I got to your message in the thread I had already pushed up my own (less comprehensive) patch which conflicted with your own. Also, as a more general note to everyone who works with and submits patches. It is worthwhile to review the text of a patch before submitting because often trivial things like changed indentation can add many lines to a patch file hiding the actual code changes. Cheers, -- Eric Schulte http://cs.unm.edu/~eschulte/
Re: [O] [babel][patch] BUG in inline source blocks
Eric Schulte eric.schu...@gmx.com writes: Andreas Leha andreas.l...@med.uni-goettingen.de writes: Martyn Jago martyn.j...@btinternet.com writes: Martyn Jago martyn.j...@btinternet.com writes: Hi, Andreas Leha andreas.l...@med.uni-goettingen.de writes: Hi all, I experience unexpected behaviour when an inline source block is not preceded by whitespace. Example: === * Test inline This is a functional inline src_R{print(source block)}. This (src_R{print(here)}) is not. === Regards, Andreas I can confirm this behaviour and provide a patch to allow for inline source blocks to be preceded by punctuation, or, for instance, enclosed in parenthesis, as in Andreas' example. Patch is attached for consideration. Best, Martyn This is an updated version of the previous patch, with debug noise removed, and a couple of extra tests. Best, Martyn Thanks for this patch Martyn, I just pushed up your [:punct:] change. Hi Martyn, thanks for this patch! It does half the job for me. Now export (or evaluation) already work. But in the export I get a space inserted. I my example, I'd expect (here) to appear in the export, but I get ( here). This should now be fixed. Thanks, Martyn and Eric! Indeed both issues are fixed now. Regards, Andreas
Re: [O] [babel][patch] BUG in inline source blocks
Hi Eric Andreas Leha andreas.l...@med.uni-goettingen.de writes: [...] Thanks for this patch Martyn, I just pushed up your [:punct:] change. Hi Martyn, thanks for this patch! It does half the job for me. Now export (or evaluation) already work. But in the export I get a space inserted. I my example, I'd expect (here) to appear in the export, but I get ( here). This should now be fixed. Thanks, Martyn and Eric! Indeed both issues are fixed now. Regards, Andreas Thanks. But out of interest why were the tests discarded? They are after all the proof that the code works, and the `living specification' of expected behavior. Just wondering Best, Martyn
Re: [O] [babel][patch] BUG in inline source blocks
Martyn Jago martyn.j...@btinternet.com writes: Martyn Jago martyn.j...@btinternet.com writes: Hi, Andreas Leha andreas.l...@med.uni-goettingen.de writes: Hi all, I experience unexpected behaviour when an inline source block is not preceded by whitespace. Example: === * Test inline This is a functional inline src_R{print(source block)}. This (src_R{print(here)}) is not. === Regards, Andreas I can confirm this behaviour and provide a patch to allow for inline source blocks to be preceded by punctuation, or, for instance, enclosed in parenthesis, as in Andreas' example. Patch is attached for consideration. Best, Martyn This is an updated version of the previous patch, with debug noise removed, and a couple of extra tests. Best, Martyn Hi Martyn, thanks for this patch! It does half the job for me. Now export (or evaluation) already work. But in the export I get a space inserted. I my example, I'd expect (here) to appear in the export, but I get ( here). Best, Andreas
Re: [O] [babel][patch] BUG in inline source blocks
Andreas Leha andreas.l...@med.uni-goettingen.de writes: Martyn Jago martyn.j...@btinternet.com writes: Martyn Jago martyn.j...@btinternet.com writes: Hi, Andreas Leha andreas.l...@med.uni-goettingen.de writes: Hi all, I experience unexpected behaviour when an inline source block is not preceded by whitespace. Example: === * Test inline This is a functional inline src_R{print(source block)}. This (src_R{print(here)}) is not. === Regards, Andreas I can confirm this behaviour and provide a patch to allow for inline source blocks to be preceded by punctuation, or, for instance, enclosed in parenthesis, as in Andreas' example. Patch is attached for consideration. Best, Martyn This is an updated version of the previous patch, with debug noise removed, and a couple of extra tests. Best, Martyn Thanks for this patch Martyn, I just pushed up your [:punct:] change. Hi Martyn, thanks for this patch! It does half the job for me. Now export (or evaluation) already work. But in the export I get a space inserted. I my example, I'd expect (here) to appear in the export, but I get ( here). This should now be fixed. Best, Best, Andreas -- Eric Schulte http://cs.unm.edu/~eschulte/
Re: [O] [babel][patch] BUG in inline source blocks
Hi, Andreas Leha andreas.l...@med.uni-goettingen.de writes: Hi all, I experience unexpected behaviour when an inline source block is not preceded by whitespace. Example: === * Test inline This is a functional inline src_R{print(source block)}. This (src_R{print(here)}) is not. === Regards, Andreas I can confirm this behaviour and provide a patch to allow for inline source blocks to be preceded by punctuation, or, for instance, enclosed in parenthesis, as in Andreas' example. Patch is attached for consideration. Best, Martyn From ce7ccfe97ce640f47ed83cdb2fdb6ffa8a6d3c54 Mon Sep 17 00:00:00 2001 From: Martyn Jago martyn.j...@btinternet.com Date: Thu, 26 Jan 2012 13:22:25 + Subject: [PATCH] Fix for where inline source block is not preceded by whitespace but by punctuation (reported by Andreas Leha). * lisp/ob.el: Fix for where inline source block is not preceded by whitespace but by punctuation. * testing/lisp/test-ob.el: Regression test, testing inline source block preceded by point, equality, and enclosed in parenthesis and brackets. --- lisp/ob.el | 21 - testing/lisp/test-ob.el | 44 2 files changed, 56 insertions(+), 9 deletions(-) diff --git a/lisp/ob.el b/lisp/ob.el index 70c258f..fbf032b 100644 --- a/lisp/ob.el +++ b/lisp/ob.el @@ -170,24 +170,27 @@ not match KEY should be returned. (defun org-babel-get-inline-src-block-matches() Set match data if within body of an inline source block. Returns non-nil if match-data set - (let ((src-at-0-p (save-excursion + (let* ((src-at-0-p (save-excursion (beginning-of-line 1) (string= src (thing-at-point 'word (first-line-p (= 1 (line-number-at-pos))) - (orig (point))) -(let ((search-for (cond ((and src-at-0-p first-line-p src_)) - (first-line-p [ \t]src_) - (t [ \f\t\n\r\v]src_))) - (lower-limit (if first-line-p - nil - (- (point-at-bol) 1 + (orig (point)) + (search-for (cond ((and src-at-0-p first-line-p src_)) + (first-line-p [ \t[:punct:]]src_) + (t [ \f\t\n\r\v[:punct:]]src_))) + (lower-limit (if first-line-p + nil + (- (point-at-bol) 1 + (message src-at-0-p = %S src-at-0-p) + (message first-line-p = %S src-at-0-p) + (message search-for = %S search-for) (save-excursion (when (or (and src-at-0-p (bobp)) (and (re-search-forward } (point-at-eol) t) (re-search-backward search-for lower-limit t) ( orig (point (when (looking-at org-babel-inline-src-block-regexp) - t )) + t ) (defvar org-babel-inline-lob-one-liner-regexp) (defun org-babel-get-lob-one-liner-matches() diff --git a/testing/lisp/test-ob.el b/testing/lisp/test-ob.el index 7dccd22..fb38ead 100644 --- a/testing/lisp/test-ob.el +++ b/testing/lisp/test-ob.el @@ -430,6 +430,50 @@ this is simple (buffer-substring-no-properties (point-min) (point-max))) +(ert-deftest test-org-babel/inline-src_blk-preceded-punct () + Test inline source block where preceded by punctuation + + ;; inline-src-blk preceded by point + (let ((test-line .src_emacs-lisp[ :results verbatim ]{ \x\ })) +(org-test-with-temp-text + test-line + (forward-char 1) + (org-ctrl-c-ctrl-c) + (should (string= (concat test-line =\x\=) + (buffer-substring-no-properties + (point-min) (point-max)) + + ;; inline-src-blk preceded by equality + (let ((test-line =src_emacs-lisp[ :results verbatim ]{ \x\ })) +(org-test-with-temp-text + test-line + (forward-char 1) + (org-ctrl-c-ctrl-c) + (should (string= (concat test-line =\x\=) + (buffer-substring-no-properties + (point-min) (point-max)) + + ;; inline-src-blk enclosed within parenthesis + (let ((test-line (src_emacs-lisp[ :results verbatim ]{ \x\ })) +(org-test-with-temp-text + (concat test-line )) + (forward-char 1) + (org-ctrl-c-ctrl-c) + (should (string= (concat test-line =\x\=) ) + (buffer-substring-no-properties + (point-min) (point-max)) + + ;; inline-src-blk enclosed within parenthesis + (let ((test-line {src_emacs-lisp[ :results verbatim ]{ \x\ })) +(org-test-with-temp-text + (concat test-line }) + (forward-char 1) + (org-ctrl-c-ctrl-c) + (should (string= (concat test-line =\x\=}) + (buffer-substring-no-properties + (point-min) (point-max)) + + ) (ert-deftest test-org-babel/combining-scalar-and-raw-result-types () (org-test-with-temp-text-in-file -- 1.7.3.4
Re: [O] [babel][patch] BUG in inline source blocks
Martyn Jago martyn.j...@btinternet.com writes: Hi, Andreas Leha andreas.l...@med.uni-goettingen.de writes: Hi all, I experience unexpected behaviour when an inline source block is not preceded by whitespace. Example: === * Test inline This is a functional inline src_R{print(source block)}. This (src_R{print(here)}) is not. === Regards, Andreas I can confirm this behaviour and provide a patch to allow for inline source blocks to be preceded by punctuation, or, for instance, enclosed in parenthesis, as in Andreas' example. Patch is attached for consideration. Best, Martyn This is an updated version of the previous patch, with debug noise removed, and a couple of extra tests. Best, Martyn From b46e7a496c30f683c50759013ad39a9d8c6ff42b Mon Sep 17 00:00:00 2001 From: Martyn Jago martyn.j...@btinternet.com Date: Thu, 26 Jan 2012 19:48:35 + Subject: [PATCH] Fix for where inline source block is not preceded by whitespace but by punctuation (reported by Andreas Leha). * lisp/ob.el: Fix for where inline source block is not preceded by whitespace but by punctuation. * testing/lisp/test-ob.el: Regression tests. --- lisp/ob.el | 30 ++-- testing/lisp/test-ob.el | 69 +++ 2 files changed, 84 insertions(+), 15 deletions(-) diff --git a/lisp/ob.el b/lisp/ob.el index 70c258f..fd6a897 100644 --- a/lisp/ob.el +++ b/lisp/ob.el @@ -170,24 +170,24 @@ not match KEY should be returned. (defun org-babel-get-inline-src-block-matches() Set match data if within body of an inline source block. Returns non-nil if match-data set - (let ((src-at-0-p (save-excursion + (let* ((src-at-0-p (save-excursion (beginning-of-line 1) (string= src (thing-at-point 'word (first-line-p (= 1 (line-number-at-pos))) - (orig (point))) -(let ((search-for (cond ((and src-at-0-p first-line-p src_)) - (first-line-p [ \t]src_) - (t [ \f\t\n\r\v]src_))) - (lower-limit (if first-line-p - nil - (- (point-at-bol) 1 - (save-excursion - (when (or (and src-at-0-p (bobp)) - (and (re-search-forward } (point-at-eol) t) - (re-search-backward search-for lower-limit t) - ( orig (point - (when (looking-at org-babel-inline-src-block-regexp) - t )) + (orig (point)) + (search-for (cond ((and src-at-0-p first-line-p src_)) + (first-line-p [ \t[:punct:]]src_) + (t [ \f\t\n\r\v[:punct:]]src_))) + (lower-limit (if first-line-p + nil + (- (point-at-bol) 1 +(save-excursion + (when (or (and src-at-0-p (bobp)) + (and (re-search-forward } (point-at-eol) t) + (re-search-backward search-for lower-limit t) + ( orig (point + (when (looking-at org-babel-inline-src-block-regexp) + t ) (defvar org-babel-inline-lob-one-liner-regexp) (defun org-babel-get-lob-one-liner-matches() diff --git a/testing/lisp/test-ob.el b/testing/lisp/test-ob.el index 7dccd22..f4363f6 100644 --- a/testing/lisp/test-ob.el +++ b/testing/lisp/test-ob.el @@ -430,6 +430,75 @@ this is simple (buffer-substring-no-properties (point-min) (point-max))) +(ert-deftest test-org-babel/inline-src_blk-preceded-punct () + Test inline source block where preceded by punctuation + + ;; inline-src-blk preceded by point + (let ((test-line .src_emacs-lisp[ :results verbatim ]{ \x\ })) +(org-test-with-temp-text + test-line + (forward-char 1) + (org-ctrl-c-ctrl-c) + (should (string= (concat test-line =\x\=) + (buffer-substring-no-properties + (point-min) (point-max)) + + ;; inline-src-blk preceded by equality + (let ((test-line =src_emacs-lisp[ :results verbatim ]{ \x\ })) +(org-test-with-temp-text + test-line + (forward-char 1) + (org-ctrl-c-ctrl-c) + (should (string= (concat test-line =\x\=) + (buffer-substring-no-properties + (point-min) (point-max)) + + ;; inline-src-blk enclosed within parenthesis + (let ((test-line (src_emacs-lisp[ :results verbatim ]{ \x\ })) +(org-test-with-temp-text + (concat test-line )) + (forward-char 1) + (org-ctrl-c-ctrl-c) + (should (string= (concat test-line =\x\=) ) + (buffer-substring-no-properties + (point-min) (point-max)) + + ;; inline-src-blk enclosed within parenthesis + (let ((test-line {src_emacs-lisp[ :results verbatim ]{ \x\ })) +(org-test-with-temp-text + (concat test-line }) + (forward-char 1) + (org-ctrl-c-ctrl-c) + (should (string= (concat test-line =\x\=}) + (buffer-substring-no-properties + (point-min) (point-max))) + +(ert-deftest test-org-babel/inline-src_blk-preceded-by-letter () + Test inline source block invalid where preceded by letter + + ;; inline-src-blk preceded by letter + (org-test-with-temp-text + asrc_emacs-lisp[ :results verbatim ]{ \x\ } +(forward-char 1) +(let ((error-result +