From 89d13998bd6ad4144d383ede16ff71cfaae439b3 Mon Sep 17 00:00:00 2001 From: Ihor Radchenko Date: Thu, 12 Jan 2023 12:18:34 +0300 Subject: [PATCH 1/2] org-element-fixed-width-parser: Fix when :value is empty * lisp/org-element.el (org-element-fixed-width-interpreter): Interpret fixed-width element with :value "" as ":\n", not as empty string. * testing/lisp/test-org-element.el (test-org-element/fixed-width-interpreter): Fixed the test. The previous test, albeit intentionally asserting "" result, breaks reversibility of parse-interpret sequence. --- lisp/org-element.el | 4 +++- testing/lisp/test-org-element.el | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lisp/org-element.el b/lisp/org-element.el index f787fb1f7..389acf825 100644 --- a/lisp/org-element.el +++ b/lisp/org-element.el @@ -2382,7 +2382,9 @@ Assume point is at the beginning of the fixed-width area." (defun org-element-fixed-width-interpreter (fixed-width _) "Interpret FIXED-WIDTH element as Org syntax." (let ((value (org-element-property :value fixed-width))) - (and value (replace-regexp-in-string "^" ": " value)))) + (and value + (if (string-empty-p value) ":\n" + (replace-regexp-in-string "^" ": " value))))) ;;;; Horizontal Rule diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el index 2d67cc871..43f1d860f 100644 --- a/testing/lisp/test-org-element.el +++ b/testing/lisp/test-org-element.el @@ -3099,7 +3099,7 @@ CLOCK: [2012-01-01 sun. 00:01]--[2012-01-01 sun. 00:02] => 0:01")))) (should (equal (org-element-fixed-width-interpreter '(fixed-width (:value "")) nil) - "")) + ":\n")) ;; Handle nil value. (should-not (org-element-fixed-width-interpreter From a52d0f09181d8d21170717c3ad5e4a4b3908b22e Mon Sep 17 00:00:00 2001 From: Ihor Radchenko Date: Thu, 12 Jan 2023 12:20:08 +0300 Subject: [PATCH 2/2] org-export-as: Fix subtree export when metadata ends right before heading * lisp/ox.el (org-export-as): Only include first newline after heading line when the metadata is non-empty. * testing/lisp/test-ox.el (test-org-export/export-scope): Add test. Reported-by: Kaushal Modi Link: https://orgmode.org/list/CAFyQvY1d=UEJ-6ZPG1X+st=fCfBAnTfgbVNhxyxH_xKcLGG4cQ@mail.gmail.com --- lisp/ox.el | 2 +- testing/lisp/test-ox.el | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lisp/ox.el b/lisp/ox.el index 12767267a..a5f2249ca 100644 --- a/lisp/ox.el +++ b/lisp/ox.el @@ -3040,7 +3040,7 @@ Return code as a string." ;; This way, we will be able to retrieve its export ;; options when calling ;; `org-export--get-subtree-options'. - (backward-char) + (when (bolp) (backward-char)) (narrow-to-region (point) (point-max)))) ;; Initialize communication channel with original buffer ;; attributes, unavailable in its copy. diff --git a/testing/lisp/test-ox.el b/testing/lisp/test-ox.el index cdb549df4..99f5c0f0f 100644 --- a/testing/lisp/test-ox.el +++ b/testing/lisp/test-ox.el @@ -1113,6 +1113,16 @@ Text" (org-export-as (org-test-default-backend) 'subtree nil nil '(:with-planning t :with-properties t))))) + (should + (equal "" + (org-test-with-temp-text " +* H +:PROPERTIES: +:A: 1 +:END: +* H2" + (org-export-as (org-test-default-backend) + 'subtree)))) ;; Visible. (should (equal "* H1\n"