Re: [O] [PATCH] ox-extra.el: Fix filtering of latex header blocks

2015-12-08 Thread Sebastian Christ
BUMP ???

Best wishes,
Sebastian 




Re: [O] [PATCH] ox-extra.el: Fix filtering of latex header blocks

2015-11-12 Thread Sebastian Christ
Hi Aaron,

thanks for the tip with (org-element-property :value X). I also got rid
of the let*. Actually, the previous patch is buggy and I've thought had
submitted another patch to fix that. But unfortunately it seems it got
lost in the interwebs.

Best wishes,
Sebastian

>From a814380158de6185747975848533e3bd6e675afd Mon Sep 17 00:00:00 2001
From: Sebastian Christ 
Date: Thu, 12 Nov 2015 19:23:05 +0100
Subject: [PATCH] ox-extra.el: Fix filtering of latex header blocks

* contrib/lisp/ox-extra.el (org-latex-header-blocks-filter): Use `org-element' API to
  find beginning, end and contents of latex header blocks.

`org-latex-header-blocks-filter' still called
`org-edit-src-find-region-and-lang' and raised an undefined function
error because the funtion was removed from org-mode. This is fixed by determining the
begin and end of the latex block via `org-element'.
---
 contrib/lisp/ox-extra.el | 29 -
 1 file changed, 12 insertions(+), 17 deletions(-)

diff --git a/contrib/lisp/ox-extra.el b/contrib/lisp/ox-extra.el
index e6d45cc..232f623 100644
--- a/contrib/lisp/ox-extra.el
+++ b/contrib/lisp/ox-extra.el
@@ -60,7 +60,7 @@
 
 (defun org-latex-header-blocks-filter (backend)
   (when (org-export-derived-backend-p backend 'latex)
-(let ((positions
+(let ((blocks
 	   (org-element-map (org-element-parse-buffer 'greater-element nil) 'export-block
 	 (lambda (block)
 	   (when (and (string= (org-element-property :type block) "LATEX")
@@ -69,23 +69,18 @@
    "yes"))
 		 (list (org-element-property :begin block)
 		   (org-element-property :end block)
-		   (org-element-property :post-affiliated block)))
-  (mapc (lambda (pos)
-	  (goto-char (nth 2 pos))
-	  (destructuring-bind
-		  (beg end  ignore)
-		  (org-edit-src-find-region-and-lang)
-		(let ((contents-lines (split-string
-   (buffer-substring-no-properties beg end)
-   "\n")))
-		  (delete-region (nth 0 pos) (nth 1 pos))
-		  (dolist (line contents-lines)
-		(insert (concat "#+latex_header: "
-(replace-regexp-in-string "\\` *" "" line)
-"\n"))
-	;; go in reverse, to avoid wrecking the numeric positions
+		   (org-element-property :value block)))
+  (mapc (lambda (block)
+	  (goto-char (nth 0 block))
+	  (let ((contents-lines (split-string (nth 2 block) "\n" t)))
+(delete-region (nth 0 block) (nth 1 block))
+(dolist (line contents-lines)
+  (insert (concat "#+latex_header: "
+  (replace-regexp-in-string "\\` *" "" line)
+  "\n")
+	;; go in reverse, to avoid wrecking the numeric blocks
 	;; earlier in the file
-	(reverse positions)
+	(reverse blocks)
 
 
 ;; During export headlines which have the "ignore" tag are removed
-- 
2.6.3



Re: [O] [PATCH] ox-extra.el: Fix filtering of latex header blocks

2015-11-12 Thread Sebastian Christ
Hi Kyle,

you're completely right. This is a bug in the provided patch. I've
thought I had submitted another patch to fix that, but it seems that it
got lost somewhere on the interwebs. It took some time until I've
realized this.

I've submitted an new patch already.

Thanks.

-Sebastian




Re: [O] [PATCH] ox-extra.el: Fix filtering of latex header blocks

2015-11-10 Thread Aaron Ecay
Hi Sebastian,

Thanks for the patch.  In addition to Kyle’s comments:

2015ko urriak 9an, Sebastian Christ-ek idatzi zuen:
> 
> Hi group,
> 
> I'd like to provide a patch to
> ox-extra.el. `org-latex-header-blocks-filter' still calls
> `org-edit-src-find-region-and-lang' and raises therefore an undefined
> function error.
> 
> Best wishes,
> Sebastian
> 
> From 34b76e06bda5739e433c95b451915c8b804a1733 Mon Sep 17 00:00:00 2001
> From: Sebastian Christ 
> Date: Fri, 9 Oct 2015 17:37:39 +0200
> Subject: [PATCH] ox-extra.el: Fix filtering of latex header blocks
> 
> * ox-extra.el (org-latex-header-blocks-filter): Use `org-element' API to
>   find begin and end of latex header blocks.
> 
> `org-latex-header-blocks-filter' still called
> `org-edit-src-find-region-and-lang' and raised an undefined function
> error because the funtion was removed from org-mode. This is fixed by 
> determining the
> begin and end of the latex block via `org-element'.
> ---
>  contrib/lisp/ox-extra.el | 28 
>  1 file changed, 16 insertions(+), 12 deletions(-)
> 
> diff --git a/contrib/lisp/ox-extra.el b/contrib/lisp/ox-extra.el
> index e6d45cc..bb838fc 100644
> --- a/contrib/lisp/ox-extra.el
> +++ b/contrib/lisp/ox-extra.el
> @@ -71,18 +71,22 @@
>  (org-element-property :end block)
>  (org-element-property :post-affiliated block)))
>(mapc (lambda (pos)
> -   (goto-char (nth 2 pos))
> -   (destructuring-bind
> -   (beg end  ignore)
> -   (org-edit-src-find-region-and-lang)
> - (let ((contents-lines (split-string
> -(buffer-substring-no-properties beg end)
> -"\n")))
> -   (delete-region (nth 0 pos) (nth 1 pos))
> -   (dolist (line contents-lines)
> - (insert (concat "#+latex_header: "
> - (replace-regexp-in-string "\\` *" "" line)
> - "\n"))
> +  (let* ((beg (third pos))
> + (end (second pos))
> + (post-affiliated (first pos))
> + (contents-lines
> +  (cdr (butlast
> +(split-string
> + (buffer-substring-no-properties post-affiliated
> + end)
> + "\n")
> +2

Here I think you should use (org-element-property :value X) to get the
contents-lines.  This means that it should be added to the list that’s
constructed from :begin, :end, and :post-affiliated higher up.  (And
then I think :post-affiliated can be dropped from that list.)

I’m not sure why I didn’t do it that way in the first place, actually.

-- 
Aaron Ecay



Re: [O] [PATCH] ox-extra.el: Fix filtering of latex header blocks

2015-11-10 Thread Kyle Meyer
Sebastian Christ  writes:

[...]

>   >> +  (let* ((beg (third pos))
>   >> + (end (second pos))
>   >> + (post-affiliated (first pos))
>   Kyle>
>   Kyle> Hmm, the pos items are constructed as
>   Kyle>
>   Kyle> (list (org-element-property :begin block)
>   Kyle>   (org-element-property :end block)
>   Kyle>   (org-element-property :post-affiliated block)))
>   Kyle>
>   Kyle> so shouldn't beg be the first element and post-affiliated the third?
>
> I thought it would be better to change as little as
> possible. Rearranging the list is obviously the cleaner solution. I'll
> change that.

Sorry, my question wasn't clear.  I wasn't concerned about arrangement,
but about whether you're accessing the correct element of the list.  If
the list is constructed as (:begin :end :post-affiliated), why does your
let-binding above take the third element as beg and the first element as
post-affiliated?

--
Kyle



Re: [O] [PATCH] ox-extra.el: Fix filtering of latex header blocks

2015-11-10 Thread Sebastian Christ
> On Mon, 09 Nov 2015 01:30:23 -0500, Kyle Meyer  said:
  >> * ox-extra.el (org-latex-header-blocks-filter): Use `org-element' API to
  >> find begin and end of latex header blocks.
  Kyle> 
  Kyle> s|ox-extra.el|contrib/lisp/ox-extra.el|
  Kyle> s/begin/beginning/
  Kyle> 

Thanks. I'll change that.

  >> (mapc (lambda (pos)
  >> -(goto-char (nth 2 pos))
  >> -(destructuring-bind
  >> -(beg end  ignore)
  >> -(org-edit-src-find-region-and-lang)
  >> -  (let ((contents-lines (split-string
  >> - (buffer-substring-no-properties beg end)
  >> - "\n")))
  >> -(delete-region (nth 0 pos) (nth 1 pos))
  >> -(dolist (line contents-lines)
  >> -  (insert (concat "#+latex_header: "
  >> -  (replace-regexp-in-string "\\` *" "" line)
  >> -  "\n"))
  >> +  (let* ((beg (third pos))
  >> + (end (second pos))
  >> + (post-affiliated (first pos))
  Kyle> 
  Kyle> Hmm, the pos items are constructed as
  Kyle> 
  Kyle> (list (org-element-property :begin block)
  Kyle>   (org-element-property :end block)
  Kyle>   (org-element-property :post-affiliated block)))
  Kyle> 
  Kyle> so shouldn't beg be the first element and post-affiliated the third?

I thought it would be better to change as little as
possible. Rearranging the list is obviously the cleaner solution. I'll
change that.

Thanks for the review.

-Sebastian







Re: [O] [PATCH] ox-extra.el: Fix filtering of latex header blocks

2015-11-08 Thread Kyle Meyer
Hello,

Sebastian Christ  writes:

> Hi group,
>
> I'd like to provide a patch to
> ox-extra.el. `org-latex-header-blocks-filter' still calls
> `org-edit-src-find-region-and-lang' and raises therefore an undefined
> function error.

Thanks for the patch.  Sorry for the delayed response.

> * ox-extra.el (org-latex-header-blocks-filter): Use `org-element' API to
>   find begin and end of latex header blocks.

s|ox-extra.el|contrib/lisp/ox-extra.el|
s/begin/beginning/

[...]

>(mapc (lambda (pos)
> -   (goto-char (nth 2 pos))
> -   (destructuring-bind
> -   (beg end  ignore)
> -   (org-edit-src-find-region-and-lang)
> - (let ((contents-lines (split-string
> -(buffer-substring-no-properties beg end)
> -"\n")))
> -   (delete-region (nth 0 pos) (nth 1 pos))
> -   (dolist (line contents-lines)
> - (insert (concat "#+latex_header: "
> - (replace-regexp-in-string "\\` *" "" line)
> - "\n"))
> +  (let* ((beg (third pos))
> + (end (second pos))
> + (post-affiliated (first pos))

Nitpick: nth is more commonly used in the Org code base.

Hmm, the pos items are constructed as

(list (org-element-property :begin block)
  (org-element-property :end block)
  (org-element-property :post-affiliated block)))

so shouldn't beg be the first element and post-affiliated the third?

Hopefully Aaron will get a chance to have a look.

--
Kyle



Re: [O] [PATCH] ox-extra.el: Fix filtering of latex header blocks

2015-10-11 Thread Sebastian Christ
And of course,

the previous patch contains a bug. I should have tested it with multiple
latex header blocks. Sorry for the inconvenience. The attached patch
should (hopefully) fix that.

Best wishes,
Sebastian

>From d9890ab84c92ec60e76913d2a1b3967353819500 Mon Sep 17 00:00:00 2001
From: Sebastian Christ 
Date: Fri, 9 Oct 2015 17:37:39 +0200
Subject: [PATCH] ox-extra.el: Fix filtering of latex header blocks

* ox-extra.el (org-latex-header-blocks-filter): Use `org-element' API to
  find begin and end of latex header blocks.

`org-latex-header-blocks-filter' still called
`org-edit-src-find-region-and-lang' and raised an undefined function
error because the funtion was removed from org-mode. This is fixed by determining the
begin and end of the latex block via `org-element'.
---
 contrib/lisp/ox-extra.el | 30 ++
 1 file changed, 18 insertions(+), 12 deletions(-)

diff --git a/contrib/lisp/ox-extra.el b/contrib/lisp/ox-extra.el
index e6d45cc..669d54f 100644
--- a/contrib/lisp/ox-extra.el
+++ b/contrib/lisp/ox-extra.el
@@ -71,18 +71,24 @@
 		   (org-element-property :end block)
 		   (org-element-property :post-affiliated block)))
   (mapc (lambda (pos)
-	  (goto-char (nth 2 pos))
-	  (destructuring-bind
-		  (beg end  ignore)
-		  (org-edit-src-find-region-and-lang)
-		(let ((contents-lines (split-string
-   (buffer-substring-no-properties beg end)
-   "\n")))
-		  (delete-region (nth 0 pos) (nth 1 pos))
-		  (dolist (line contents-lines)
-		(insert (concat "#+latex_header: "
-(replace-regexp-in-string "\\` *" "" line)
-"\n"))
+  (let* ((beg (first pos))
+ (end (second pos))
+ (post-affiliated (third pos))
+ (contents-lines (split-string
+  (buffer-substring-no-properties beg
+  end)
+  "\n")))
+(goto-char post-affiliated)
+(delete-region beg end)
+(dolist (line (remove-if (lambda (line)
+   (or
+(string-prefix-p "#+HEADER:" line)
+(string-prefix-p "#+BEGIN_LaTeX" line)
+(string-prefix-p "#+END_LaTeX" line)))
+ contents-lines))
+  (insert (concat "#+latex_header: "
+  (replace-regexp-in-string "\\` *" "" line)
+  "\n")
 	;; go in reverse, to avoid wrecking the numeric positions
 	;; earlier in the file
 	(reverse positions)
-- 
2.6.1



[O] [PATCH] ox-extra.el: Fix filtering of latex header blocks

2015-10-09 Thread Sebastian Christ
Hi group,

I'd like to provide a patch to
ox-extra.el. `org-latex-header-blocks-filter' still calls
`org-edit-src-find-region-and-lang' and raises therefore an undefined
function error.

Best wishes,
Sebastian

>From 34b76e06bda5739e433c95b451915c8b804a1733 Mon Sep 17 00:00:00 2001
From: Sebastian Christ 
Date: Fri, 9 Oct 2015 17:37:39 +0200
Subject: [PATCH] ox-extra.el: Fix filtering of latex header blocks

* ox-extra.el (org-latex-header-blocks-filter): Use `org-element' API to
  find begin and end of latex header blocks.

`org-latex-header-blocks-filter' still called
`org-edit-src-find-region-and-lang' and raised an undefined function
error because the funtion was removed from org-mode. This is fixed by determining the
begin and end of the latex block via `org-element'.
---
 contrib/lisp/ox-extra.el | 28 
 1 file changed, 16 insertions(+), 12 deletions(-)

diff --git a/contrib/lisp/ox-extra.el b/contrib/lisp/ox-extra.el
index e6d45cc..bb838fc 100644
--- a/contrib/lisp/ox-extra.el
+++ b/contrib/lisp/ox-extra.el
@@ -71,18 +71,22 @@
 		   (org-element-property :end block)
 		   (org-element-property :post-affiliated block)))
   (mapc (lambda (pos)
-	  (goto-char (nth 2 pos))
-	  (destructuring-bind
-		  (beg end  ignore)
-		  (org-edit-src-find-region-and-lang)
-		(let ((contents-lines (split-string
-   (buffer-substring-no-properties beg end)
-   "\n")))
-		  (delete-region (nth 0 pos) (nth 1 pos))
-		  (dolist (line contents-lines)
-		(insert (concat "#+latex_header: "
-(replace-regexp-in-string "\\` *" "" line)
-"\n"))
+  (let* ((beg (third pos))
+ (end (second pos))
+ (post-affiliated (first pos))
+ (contents-lines
+  (cdr (butlast
+(split-string
+ (buffer-substring-no-properties post-affiliated
+ end)
+ "\n")
+2
+(goto-char beg)
+(delete-region beg end)
+(dolist (line contents-lines)
+  (insert (concat "#+latex_header: "
+  (replace-regexp-in-string "\\` *" "" line)
+  "\n")
 	;; go in reverse, to avoid wrecking the numeric positions
 	;; earlier in the file
 	(reverse positions)
-- 
2.6.1