Bug: No colors in first file opened [9.3.7 (9.3.7-dist @ c:/w/.emacs.d/org-9.3.7/lisp/)]

2020-09-02 Thread Dominick Samperi
No colors appear in first file opened. Must use (org-mode-restart) to
enable colors after
opening first file.



Re: ob-java and ob-haxe

2020-09-02 Thread Kyle Meyer
ian martins writes:

> I posted patches for ob-java and ob-haxe a couple months ago but there was
> no interest. I have been given access to push to contrib. If there's no
> objection I'll put them there.
>
> I'll rename my version ob-java-alt so it doesn't conflict with the official
> one. The contrib directory doesn't have a "testing" directory so I'll add
> one. I'll document them in worg.

My understanding is that there's been a move away from adding new
libraries to contrib/, instead preferring an ELPA for cases where core
isn't deemed appropriate.

Fixes and enhancements to ob-java are obviously appropriate for core.
And while it'd be fine to host ob-haxe separately, my impression is that
it too would be suitable for core.

I'm sorry your patches haven't gotten any reviews or other feedback.
I've sat down a couple of times to review the ob-haxe patch but haven't
ended up blocking off enough time to get anywhere.  I'll revisit it this
weekend.  Of course, any feedback from those that actually use haxe
would be appreciated.




Re: Headline generation as in diary?

2020-09-02 Thread Michael Heerdegen
Robert Pluim  writes:

> OK. Thatʼs as far as my org-hacking knowledge goes, so perhaps someone
> else here has an idea of the right way to invoke "tell me what heading
> Iʼm in, as a string".

The situation is actually like this: the empty string issue doesn't
happen with time stamps <%%(...)>, this always uses the correct
headline.  Seems %%() entries are expected to return a string OTOH since
the headline seems to be ignored.  I guess this is reasonable.  Dunno if
there is something to change here at all in the code.

Ok, the other thing: broken time stamps with line breaks:

> You've lost me. Can you show me an example?

The difference here is only a line break:

This doesn't work:

| ** APPT 17:00 Test
| SCHEDULED: <%%(and (or (diary-date 03 09 2020)
|(diary-date 04 09 2020)))>

But this works:

| ** APPT 17:00 Test
| SCHEDULED: <%%(and (or (diary-date 03 09 2020) (diary-date 04 09 2020)))>


Michael.



Re: [PATCH] babel latex headers and image generation commands

2020-09-02 Thread Matt Huszagh
Matt Huszagh  writes:

> I've added a few changes to the patch that additionally allow custom the
> begin and end document environments. The purpose here is to allow latex
> code within the document environment that is ignored by the body
> export. For instance, I can set the page color with
> {\color{some-color}...} and this doesn't mess up latex exports.

I've fixed a minor bug with the previous patch.

>From 1bcd1d28dde6625d0c648c92243260b46433e1eb Mon Sep 17 00:00:00 2001
From: Matt Huszagh 
Date: Fri, 28 Aug 2020 22:26:05 -0700
Subject: [PATCH] ob-latex.el: Make latex to svg compilation very customizable

* lisp/ob-latex.el (org-babel-latex-preamble): Add latex preamble
customization.
(org-babel-latex-begin-env): Add latex document environment begin
customization.
(org-babel-latex-end-env): Add latex document environment end
customization.
(org-babel-latex-pdf-svg-process): Add customization for converting a
pdf to svg.
(org-babel-execute:latex): Add specific case for svg generation from
latex block.
---
 lisp/ob-latex.el | 57 ++--
 1 file changed, 55 insertions(+), 2 deletions(-)

diff --git a/lisp/ob-latex.el b/lisp/ob-latex.el
index 4b343dd14..991873e2e 100644
--- a/lisp/ob-latex.el
+++ b/lisp/ob-latex.el
@@ -70,6 +70,45 @@
   :group 'org-babel
   :type 'string)
 
+(defcustom org-babel-latex-preamble
+  (lambda (_)
+"\\documentclass[preview]{standalone}
+\\def\\pgfsysdriver{pgfsys-tex4ht.def}
+")
+  "Closure which evaluates at runtime to the latex preamble.  It
+takes 1 argument which is the parameters of the source block."
+  :group 'org-babel
+  :type 'function)
+
+(defcustom org-babel-latex-begin-env
+  (lambda (_)
+"\\begin{document}")
+  "Closure which evaluates at runtime to the begin part of the
+document environment.  It takes 1 argument which is the
+parameters of the source block.  This allows adding additional
+code that will be ignored when exporting the literal latex
+source."
+  :group 'org-babel
+  :type 'function)
+
+(defcustom org-babel-latex-end-env
+  (lambda (_)
+"\\end{document}")
+  "Closure which evaluates at runtime to the end part of the
+document environment.  It takes 1 argument which is the
+parameters of the source block.  This allows adding additional
+code that will be ignored when exporting the literal latex
+source."
+  :group 'org-babel
+  :type 'function)
+
+(defcustom org-babel-latex-pdf-svg-process
+  "inkscape --pdf-poppler %f -T -l -o %O"
+  "Command used to convert a PDF file to an SVG file when
+executing a latex source block."
+  :group 'org-babel
+  :type 'string)
+
 (defcustom org-babel-latex-htlatex-packages
   '("[usenames]{color}" "{tikz}" "{color}" "{listings}" "{amsmath}")
   "Packages to use for htlatex export."
@@ -114,12 +153,26 @@ This function is called by `org-babel-execute-src-block'."
 			 (mapconcat #'identity headers "\n"
 	   (org-create-formula-image
 body out-file org-format-latex-options in-buffer)))
+	 ((string= "svg" extension)
+	  (with-temp-file tex-file
+		 (insert (concat (funcall org-babel-latex-preamble params)
+			 (mapconcat #'identity headers "\n")
+			 (funcall org-babel-latex-begin-env params)
+			 body
+			 (funcall org-babel-latex-end-env params
+	  (let ((tmp-pdf (org-babel-latex-tex-to-pdf tex-file)))
+  (let* ((log-buf (get-buffer-create "*Org Babel LaTeX Output*"))
+ (err-msg "org babel latex failed")
+ (img-out (org-compile-file
+	   tmp-pdf
+   (list org-babel-latex-pdf-svg-process)
+   extension err-msg log-buf)))
+(shell-command (format "mv %s %s" img-out out-file)
  ((string-suffix-p ".tikz" out-file)
 	  (when (file-exists-p out-file) (delete-file out-file))
 	  (with-temp-file out-file
 	(insert body)))
-	 ((and (or (string= "svg" extension)
-		   (string= "html" extension))
+	 ((and (string= "html" extension)
 	   (executable-find org-babel-latex-htlatex))
 	  ;; TODO: this is a very different way of generating the
 	  ;; frame latex document than in the pdf case.  Ideally, both
-- 
2.28.0



Re: [PATCH] babel latex headers and image generation commands

2020-09-02 Thread Matt Huszagh
Matt Huszagh  writes:

> Ok, I've finally gotten around to taking a crack at this. The patch is
> attached. Basically, it allows a lot more control when converting a
> latex source block into an svg image file.

I've added a few changes to the patch that additionally allow custom the
begin and end document environments. The purpose here is to allow latex
code within the document environment that is ignored by the body
export. For instance, I can set the page color with
{\color{some-color}...} and this doesn't mess up latex exports.

Please comment with any questions/concerns/thoughts.

Thanks!
>From 6dbd5ae840f02333f83d40a9c27be06968279563 Mon Sep 17 00:00:00 2001
From: Matt Huszagh 
Date: Fri, 28 Aug 2020 22:26:05 -0700
Subject: [PATCH] ob-latex.el: Make latex to svg compilation very customizable

* lisp/ob-latex.el (org-babel-latex-preamble): Add latex preamble
customization.
(org-babel-latex-begin-env): Add latex document environment begin
customization.
(org-babel-latex-end-env): Add latex document environment end
customization.
(org-babel-latex-pdf-svg-process): Add customization for converting a
pdf to svg.
(org-babel-execute:latex): Add specific case for svg generation from
latex block.
---
 lisp/ob-latex.el | 57 ++--
 1 file changed, 55 insertions(+), 2 deletions(-)

diff --git a/lisp/ob-latex.el b/lisp/ob-latex.el
index 4b343dd14..359179476 100644
--- a/lisp/ob-latex.el
+++ b/lisp/ob-latex.el
@@ -70,6 +70,45 @@
   :group 'org-babel
   :type 'string)
 
+(defcustom org-babel-latex-preamble
+  (lambda (_)
+"\\documentclass[preview]{standalone}
+\\def\\pgfsysdriver{pgfsys-tex4ht.def}
+")
+  "Closure which evaluates at runtime to the latex preamble.  It
+takes 1 argument which is the parameters of the source block."
+  :group 'org-babel
+  :type 'function)
+
+(defcustom org-babel-latex-begin-env
+  (lambda (_)
+"\\begin{document}")
+  "Closure which evaluates at runtime to the begin part of the
+document environment.  It takes 1 argument which is the
+parameters of the source block.  This allows adding additional
+code that will be ignored when exporting the literal latex
+source."
+  :group 'org-babel
+  :type 'function)
+
+(defcustom org-babel-latex-end-env
+  (lambda (_)
+"\\end{document}")
+  "Closure which evaluates at runtime to the end part of the
+document environment.  It takes 1 argument which is the
+parameters of the source block.  This allows adding additional
+code that will be ignored when exporting the literal latex
+source."
+  :group 'org-babel
+  :type 'function)
+
+(defcustom org-babel-latex-pdf-svg-process
+  "inkscape --pdf-poppler %f -T -l -o %O"
+  "Command used to convert a PDF file to an SVG file when
+executing a latex source block."
+  :group 'org-babel
+  :type 'string)
+
 (defcustom org-babel-latex-htlatex-packages
   '("[usenames]{color}" "{tikz}" "{color}" "{listings}" "{amsmath}")
   "Packages to use for htlatex export."
@@ -114,12 +153,26 @@ This function is called by `org-babel-execute-src-block'."
 			 (mapconcat #'identity headers "\n"
 	   (org-create-formula-image
 body out-file org-format-latex-options in-buffer)))
+	 ((string= "svg" extension)
+	  (with-temp-file tex-file
+		 (insert (concat (funcall org-babel-latex-preamble params)
+			 (mapconcat #'identity headers "\n")
+			 (funcall org-babel-latex-begin-env)
+			 body
+			 (funcall org-babel-latex-end-env
+	  (let ((tmp-pdf (org-babel-latex-tex-to-pdf tex-file)))
+  (let* ((log-buf (get-buffer-create "*Org Babel LaTeX Output*"))
+ (err-msg "org babel latex failed")
+ (img-out (org-compile-file
+	   tmp-pdf
+   (list org-babel-latex-pdf-svg-process)
+   extension err-msg log-buf)))
+(shell-command (format "mv %s %s" img-out out-file)
  ((string-suffix-p ".tikz" out-file)
 	  (when (file-exists-p out-file) (delete-file out-file))
 	  (with-temp-file out-file
 	(insert body)))
-	 ((and (or (string= "svg" extension)
-		   (string= "html" extension))
+	 ((and (string= "html" extension)
 	   (executable-find org-babel-latex-htlatex))
 	  ;; TODO: this is a very different way of generating the
 	  ;; frame latex document than in the pdf case.  Ideally, both
-- 
2.28.0



Re: babel default header args as functions

2020-09-02 Thread Matt Huszagh
Matt Huszagh  writes:

> I've generated a patch for this. Please let me know your thoughts. I
> believe this adds valuable flexibility to default header
> arguments.

I've added an additional fix that makes this work during export too.

>From aec4e905d5d72f9a124adfde877835a783bd637b Mon Sep 17 00:00:00 2001
From: Matt Huszagh 
Date: Fri, 28 Aug 2020 11:05:59 -0700
Subject: [PATCH] ob-core.el: Add ability to use closures as default header
 arguments

* lisp/ob-core.el (org-babel-default-header-args): Document ability to
use functions.
(eval-default-headers): New function to generate default header
arguments, which adds the ability to evaluate function arguments at
runtime.
(org-babel-get-src-block-info): Use new header argument evaluate
function when retreiving src block info.

* lisp/ob-exp.el (org-babel-exp-src-block): Must use new
eval-default-headers when exporting as well.

The closures are evaluated at runtime.
---
 lisp/ob-core.el | 32 ++--
 lisp/ob-exp.el  |  2 +-
 2 files changed, 31 insertions(+), 3 deletions(-)

diff --git a/lisp/ob-core.el b/lisp/ob-core.el
index 578622232..4a22f17e7 100644
--- a/lisp/ob-core.el
+++ b/lisp/ob-core.el
@@ -473,7 +473,23 @@ For the format of SAFE-LIST, see `org-babel-safe-header-args'."
 (defvar org-babel-default-header-args
   '((:session . "none") (:results . "replace") (:exports . "code")
 (:cache . "no") (:noweb . "no") (:hlines . "no") (:tangle . "no"))
-  "Default arguments to use when evaluating a source block.")
+  "Default arguments to use when evaluating a source block.
+
+This is a list in which each element is an alist.  Each key
+corresponds to a header argument, and each value to that header's
+value.  The value can either be a string or a closure that
+evaluates to a string at runtime.  For instance, imagine you'd
+like to set the file name output of a latex source block to a
+sha1 of its contents.  We could achieve this with:
+
+(defun org-src-sha ()
+  (let ((elem (org-element-at-point)))
+(concat (sha1 (org-element-property :value elem)) \".svg\")))
+
+(setq org-babel-default-header-args:latex
+  `((:results . \"file link replace\")
+(:file . (lambda () (org-src-sha)")
+
 (put 'org-babel-default-header-args 'safe-local-variable
  (org-babel-header-args-safe-fn org-babel-safe-header-args))
 
@@ -584,6 +600,18 @@ the outer-most code block.")
 
 (defvar *this*)
 
+(defun eval-default-headers (headers)
+  "Compute default header list set with HEADERS.
+
+  Evaluate all default header arguments set to functions prior to
+  returning the list of header arguments."
+  (let ((lst nil))
+(dolist (elem (eval headers t))
+  (if (listp (cdr elem))
+  (push `(,(car elem) . ,(funcall (cdr elem))) lst)
+(push elem lst)))
+lst))
+
 (defun org-babel-get-src-block-info ( light datum)
   "Extract information from a source block or inline source block.
 
@@ -615,7 +643,7 @@ a list with the following pattern:
 	   (apply #'org-babel-merge-params
 		  (if inline org-babel-default-inline-header-args
 			org-babel-default-header-args)
-		  (and (boundp lang-headers) (eval lang-headers t))
+		  (and (boundp lang-headers) (eval-default-headers lang-headers))
 		  (append
 		   ;; If DATUM is provided, make sure we get node
 		   ;; properties applicable to its location within
diff --git a/lisp/ob-exp.el b/lisp/ob-exp.el
index 34caf9546..13277f64f 100644
--- a/lisp/ob-exp.el
+++ b/lisp/ob-exp.el
@@ -103,7 +103,7 @@ Assume point is at block opening line."
 		   (apply #'org-babel-merge-params
 			  org-babel-default-header-args
 			  (and (boundp lang-headers)
-   (symbol-value lang-headers))
+   (eval-default-headers lang-headers))
 			  (append (org-babel-params-from-properties lang)
   (list raw-params)))
 	  (setf hash (org-babel-sha1-hash info :export)))
-- 
2.28.0



Re: Headline generation as in diary?

2020-09-02 Thread Robert Pluim
> On Wed, 02 Sep 2020 15:45:36 +0200, Michael Heerdegen 
>  said:

Michael> Robert Pluim  writes:
>> How about:
>> 
>> diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
>> index 78fe13303..9049b3a42 100644
>> --- a/lisp/org-agenda.el
>> +++ b/lisp/org-agenda.el
>> @@ -5772,7 +5772,7 @@ displayed in agenda view."
>> r (replace-match "" nil nil r)))
>> (if (string-match "\\S-" r)
>> (setq txt r)
>> -  (setq txt "SEXP entry returned empty string"))
>> +  (setq txt (org-no-properties (org-get-heading t t t t
>> (setq txt (org-agenda-format-item extra txt level category tags 'time))
>> (org-add-props txt props 'org-marker marker
>> 'date date 'todo-state todo-state

Michael> Thanks for looking at this.

Michael> Ok - That gives me a headline in the agenda, but a wrong one (more 
or
Michael> less, a random headline in the same file, at a seemingly unrelated
Michael> location).

OK. Thatʼs as far as my org-hacking knowledge goes, so perhaps someone
else here has an idea of the right way to invoke "tell me what heading
Iʼm in, as a string".

>> >> **  Just before midnight on a few days 23:00-24:00
>> >> <%%(org-block 2020 8 31 2020 9 2)>
>> >> <%%(org-block 2020 9 10 2020 9 12)>
>> 
Michael> But it seems those time stamps are not allowed to span
Michael> multiple lines
Michael> (at least I don't get it work).  Seems org doesn't
Michael> recognize them as
Michael> such?
>> 
>> Itʼs working fine for me in org-9.3.6. Note that I have my default
>> agenda view set to a fortnight, and those dates span two different
>> weeks.

Michael> I didn't mean time spans.  What doesn't work for me are time 
_stamps_
Michael> that span multiple text lines.

You've lost me. Can you show me an example?

Robert



Re: Headline generation as in diary?

2020-09-02 Thread Michael Heerdegen
Robert Pluim  writes:

> How about:
>
> diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
> index 78fe13303..9049b3a42 100644
> --- a/lisp/org-agenda.el
> +++ b/lisp/org-agenda.el
> @@ -5772,7 +5772,7 @@ displayed in agenda view."
>   r (replace-match "" nil nil r)))
>   (if (string-match "\\S-" r)
>   (setq txt r)
> -   (setq txt "SEXP entry returned empty string"))
> +   (setq txt (org-no-properties (org-get-heading t t t t
>   (setq txt (org-agenda-format-item extra txt level category tags 
> 'time))
>   (org-add-props txt props 'org-marker marker
>  'date date 'todo-state todo-state

Thanks for looking at this.

Ok - That gives me a headline in the agenda, but a wrong one (more or
less, a random headline in the same file, at a seemingly unrelated
location).

> (Iʼm guessing yet-another-config-variable is unnecessary)

I think so toom yes.

> >> You can use them in timestamps as well, which is useful for
> >> weird time
> >> periods
> >> 
> >> **  Just before midnight on a few days 23:00-24:00
> >> <%%(org-block 2020 8 31 2020 9 2)>
> >> <%%(org-block 2020 9 10 2020 9 12)>
>
> Michael> But it seems those time stamps are not allowed to span
> Michael> multiple lines
> Michael> (at least I don't get it work).  Seems org doesn't
> Michael> recognize them as
> Michael> such?
>
> Itʼs working fine for me in org-9.3.6. Note that I have my default
> agenda view set to a fortnight, and those dates span two different
> weeks.

I didn't mean time spans.  What doesn't work for me are time _stamps_
that span multiple text lines.


Thanks,

Michael.



ob-java and ob-haxe

2020-09-02 Thread ian martins
I posted patches for ob-java and ob-haxe a couple months ago but there was
no interest. I have been given access to push to contrib. If there's no
objection I'll put them there.

I'll rename my version ob-java-alt so it doesn't conflict with the official
one. The contrib directory doesn't have a "testing" directory so I'll add
one. I'll document them in worg.

-Ian


[PATCH] prevent mangled output in ob-J by allowing sit-time duration to be customized

2020-09-02 Thread Joseph Novakovich
Hello!

The problem is that we read the contents of the output after 0.1
seconds, which, for expensive computations, results in the mangling of
output.  Output from expensive computations gets propagated down to
subsequent code-blocks' outputs, producing a horrible mess.

Joseph
From ee08934a649b4a6c14d8b2ee1c24f849621284a9 Mon Sep 17 00:00:00 2001
From: Joseph Novakovich 
Date: Mon, 31 Aug 2020 10:14:15 -0400
Subject: [PATCH] ob-J.el: Add ability to customize sit duration

* lisp/ob-J.el (org-babel-execute:J, org-babel-J-eval-string): Add
customizability.

(org-babel-execute:J): Lookup optional parameter `:sit' to allow one
to wait for a specified amount of time before grabbing the output of
the J subprocess.  Pass this specified value or the previous default
of .1 to `org-babel-J-eval-string'.
(org-babel-eval-string): Pass new argument `sit-time' to `sit-for'
before grabbing output.

The problem is that we read the contents of the output after 0.1
seconds, which, for expensive computations, results in the mangling of
output.  Output from expensive computations gets propagated down to
subsequent code-blocks' outputs, producing a horrible mess.

TINYCHANGE
---
 lisp/ob-J.el | 8 +---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/lisp/ob-J.el b/lisp/ob-J.el
index c0145211b..f26e82ed9 100644
--- a/lisp/ob-J.el
+++ b/lisp/ob-J.el
@@ -76,6 +76,8 @@ This function is called by `org-babel-execute-src-block'."
   (message "executing J source code block")
   (let* ((processed-params (org-babel-process-params params))
 	 (sessionp (cdr (assq :session params)))
+	 (sit-time (let ((sit (assq :sit params)))
+		 (if sit (cdr sit) .1)))
  (full-body (org-babel-expand-body:J
  body params processed-params))
 	 (tmp-script-file (org-babel-temp-file "J-src")))
@@ -86,9 +88,9 @@ This function is called by `org-babel-execute-src-block'."
 	   (with-temp-file tmp-script-file
 	 (insert full-body))
 	   (org-babel-eval (format "%s < %s" org-babel-J-command tmp-script-file) ""))
-   (org-babel-J-eval-string full-body)
+   (org-babel-J-eval-string full-body sit-time)
 
-(defun org-babel-J-eval-string (str)
+(defun org-babel-J-eval-string (str sit-time)
   "Sends STR to the `j-console-cmd' session and executes it."
   (let ((session (j-console-ensure-session)))
 (with-current-buffer (process-buffer session)
@@ -96,7 +98,7 @@ This function is called by `org-babel-execute-src-block'."
   (insert (format "\n%s\n" str))
   (let ((beg (point)))
 	(comint-send-input)
-	(sit-for .1)
+	(sit-for sit-time)
 	(buffer-substring-no-properties
 	 beg (point-max))
 
-- 
2.28.0



Re: latex fragments compilation error when exporting to html

2020-09-02 Thread Thibault Marin
Hi,

I can't comment on the rest of the discussion but I think I added this
org-html--unlabel-latex-environment line.  It was part of a change
allowing links to equations in HTML export
(https://lists.gnu.org/archive/html/emacs-orgmode/2018-01/msg00120.html).

When removing the call to org-html--unlabel-latex-environment, exporting
the following org file to html results in double equation labels (one
from dvipng, one from org to allow links).

,
| #+OPTIONS: toc:nil html-postamble:nil tex:dvipng
|
| #+NAME: eq-test
| \begin{align}
| 1 + 1 = 0
| \end{align}
|
| link to equation [[eq-test]]
`
(one could play with tex:mathjax and replace align by align* to see the
possible modes)

If I understand the problem correctly, one solution would be to apply
the environment transformation from env to env* only for math
environments.  Something along the lines of
,
| (if (eq nil (org-html--math-environment-p latex-environment))
| latex-frag
|   (org-html--unlabel-latex-environment latex-frag))
`
may work (there may be a better way to do that).

I hope this helps.

Best,

thibault

On 2020-09-02T02:12:01-0400, Jeremie Juste wrote:


  Hello,

  I have found the culprit in the end. It was the function
  org-html--unlabel-latex-environment, int he ox-html.el file.

  I'm not sure this function is useful as I think it is better to give the
  user control on his environment (labelled or unlabelled) directly in his
  org file. I'm I missing something else about the use of this function?

  Anyway it was a good experience at debugging elisp.


  diff --git a/lisp/ox-html.el b/lisp/ox-html.el
  index 55d017529..b2a5d6d36 100644
  --- a/lisp/ox-html.el
  +++ b/lisp/ox-html.el
  @@ -2891,7 +2891,7 @@ CONTENTS is nil.  INFO is a plist holding contextual 
information."
((assq processing-type org-preview-latex-process-alist)
 (let ((formula-link
(org-html-format-latex
  -  (org-html--unlabel-latex-environment latex-frag)
  +  latex-frag
 processing-type info)))
   (when (and formula-link (string-match "file:\\([^]]*\\)" 
formula-link))
 (let ((source (org-export-file-uri (match-string 1 formula-link


  Best regards,
  Jeremie

  - GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.5, cairo 
version 1.16.0) of 2020-09-01
  - Org mode version 9.3.7 (release_9.3.7-725-g7bc18e @ 
/home/djj/src/org-mode/lisp/)



Re: Headline generation as in diary?

2020-09-02 Thread Robert Pluim
> On Tue, 01 Sep 2020 23:56:55 +0200, Michael Heerdegen 
>  said:

Michael> Robert Pluim  writes:
>> Itʼs triggered by the %%(, I believe, but not in headlines.

Michael> Yes, I see that in the code.

Michael> But actually I seem to have the opposite problem: I can't make the
Michael> original headline appear in the agenda.  When the sexp doesn't 
return a
Michael> string the agenda will contain a line saying "SEXP entry returned 
empty
Michael> string" instead of showing the headline.

It seems `org-anniversary' supports %d for year and thatʼs about it,
which is not surprising, since itʼs just a wrapper around
`diary-anniversary'.

How about:

diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 78fe13303..9049b3a42 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -5772,7 +5772,7 @@ displayed in agenda view."
r (replace-match "" nil nil r)))
(if (string-match "\\S-" r)
(setq txt r)
- (setq txt "SEXP entry returned empty string"))
+ (setq txt (org-no-properties (org-get-heading t t t t
(setq txt (org-agenda-format-item extra txt level category tags 
'time))
(org-add-props txt props 'org-marker marker
   'date date 'todo-state todo-state

(Iʼm guessing yet-another-config-variable is unnecessary)

>> You can use them in timestamps as well, which is useful for weird time
>> periods
>> 
>> **  Just before midnight on a few days 23:00-24:00
>> <%%(org-block 2020 8 31 2020 9 2)>
>> <%%(org-block 2020 9 10 2020 9 12)>

Michael> But it seems those time stamps are not allowed to span multiple 
lines
Michael> (at least I don't get it work).  Seems org doesn't recognize them 
as
Michael> such?

Itʼs working fine for me in org-9.3.6. Note that I have my default
agenda view set to a fortnight, and those dates span two different
weeks.

Robert



Re: latex fragments compilation error when exporting to html

2020-09-02 Thread Jeremie Juste


Hello,

I have found the culprit in the end. It was the function
org-html--unlabel-latex-environment, int he ox-html.el file.

I'm not sure this function is useful as I think it is better to give the
user control on his environment (labelled or unlabelled) directly in his
org file. I'm I missing something else about the use of this function?

Anyway it was a good experience at debugging elisp.


diff --git a/lisp/ox-html.el b/lisp/ox-html.el
index 55d017529..b2a5d6d36 100644
--- a/lisp/ox-html.el
+++ b/lisp/ox-html.el
@@ -2891,7 +2891,7 @@ CONTENTS is nil.  INFO is a plist holding contextual 
information."
  ((assq processing-type org-preview-latex-process-alist)
   (let ((formula-link
  (org-html-format-latex
-  (org-html--unlabel-latex-environment latex-frag)
+  latex-frag
   processing-type info)))
 (when (and formula-link (string-match "file:\\([^]]*\\)" formula-link))
   (let ((source (org-export-file-uri (match-string 1 formula-link


Best regards,
Jeremie

- GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.5, cairo 
version 1.16.0) of 2020-09-01
- Org mode version 9.3.7 (release_9.3.7-725-g7bc18e @ 
/home/djj/src/org-mode/lisp/)