emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/org 1acacd6: Merge branch 'bugfix'


From: ELPA Syncer
Subject: [elpa] externals/org 1acacd6: Merge branch 'bugfix'
Date: Sun, 3 Oct 2021 18:57:19 -0400 (EDT)

branch: externals/org
commit 1acacd604938b673cef2f86c6fc361df5b63a2a3
Merge: 6cb9d2f d68d8bc
Author: Nicolas Goaziou <mail@nicolasgoaziou.fr>
Commit: Nicolas Goaziou <mail@nicolasgoaziou.fr>

    Merge branch 'bugfix'
---
 lisp/oc.el              | 28 +++++++++++++++++-----------
 testing/lisp/test-oc.el | 25 ++++++++++++++++++++++++-
 2 files changed, 41 insertions(+), 12 deletions(-)

diff --git a/lisp/oc.el b/lisp/oc.el
index fd80ba9..17b5775 100644
--- a/lisp/oc.el
+++ b/lisp/oc.el
@@ -152,10 +152,10 @@ triplet following the pattern
   (NAME BIBLIOGRAPHY-STYLE CITATION-STYLE)
 
 There, NAME is the name of a registered citation processor providing export
-functionality, as a symbol.  BIBLIOGRAPHY-STYLE (resp. CITATION-STYLE) is the
-desired default style to use when printing a bibliography (resp. exporting a
-citation), as a string or nil.  Both BIBLIOGRAPHY-STYLE and CITATION-STYLE are
-optional.  NAME is mandatory.
+functionality, as a symbol.  BIBLIOGRAPHY-STYLE (respectively CITATION-STYLE)
+is the desired default style to use when printing a bibliography (respectively
+exporting a citation), as a string or nil.  Both BIBLIOGRAPHY-STYLE and
+CITATION-STYLE are optional.  NAME is mandatory.
 
 The export process selects the citation processor associated to the current
 export back-end, or the most specific back-end the current one is derived from,
@@ -502,8 +502,8 @@ This function assumes S precedes CITATION."
 
 (defun org-cite--move-punct-before (punct citation s info)
   "Move punctuation PUNCT before CITATION object.
-String S contains PUNCT.  The function assumes S follows CITATION.
-Parse tree is modified by side-effect."
+String S contains PUNCT.  INFO is the export state, as a property list.
+The function assumes S follows CITATION.  Parse tree is modified by 
side-effect."
   (if (equal s punct)
       (org-element-extract-element s)   ;it would be empty anyway
     (org-element-set-element s (substring s (length punct))))
@@ -877,6 +877,9 @@ modified by side-effect."
 
 INFO is the export state, as a property list.
 
+Optional argument RULE is the punctuation rule used, as a triplet.  When nil,
+rule is determined according to `org-cite-note-rules', which see.
+
 Optional argument PUNCT is a list of punctuation marks to be considered.
 When nil, it defaults to `org-cite-punctuation-marks'.
 
@@ -1274,11 +1277,13 @@ by side-effect."
           ;; Before removing the citation, transfer its `:post-blank'
           ;; property to the object before, if any.
           (org-cite--set-previous-post-blank cite blanks info)
-        ;; We want to be sure any non-note citation is preceded by
-        ;; a space.  This is particularly important when using
+        ;; Make sure there is a space between a quotation mark and
+        ;; a citation.  This is particularly important when using
         ;; `adaptive' note rule.  See `org-cite-note-rules'.
-        (unless (org-cite-inside-footnote-p cite t)
-          (org-cite--set-previous-post-blank cite 1 info))
+        (let ((previous (org-export-get-previous-element cite info)))
+          (when (and (org-string-nw-p previous)
+                     (string-suffix-p "\"" previous))
+            (org-cite--set-previous-post-blank cite 1 info)))
         (pcase replacement
           ;; String.
           ((pred stringp)
@@ -1384,7 +1389,8 @@ ARG is the prefix argument received when calling 
`org-open-at-point', or nil."
 
 ;;; Meta-command for citation insertion (insert capability)
 (defun org-cite--allowed-p (context)
-  "Non-nil when a citation can be inserted at point."
+  "Non-nil when a citation can be inserted at point.
+CONTEXT is the element or object at point, as returned by 
`org-element-context'."
   (let ((type (org-element-type context)))
     (cond
      ;; No citation in attributes, except in parsed ones.
diff --git a/testing/lisp/test-oc.el b/testing/lisp/test-oc.el
index fc90a21..995559b 100644
--- a/testing/lisp/test-oc.el
+++ b/testing/lisp/test-oc.el
@@ -1273,7 +1273,7 @@ arguments.  Replace citation with \"@\" character in the 
output."
                   (list "b" (org-element-create 'bold nil "c"))) " ")))))
 
 
-;;; TEST capabilities.
+;;; Test capabilities.
 (ert-deftest test-org-cite/activate-capability ()
   "Test \"activate\" capability."
   ;; Standard test.
@@ -1393,6 +1393,29 @@ arguments.  Replace citation with \"@\" character in the 
output."
                               '((section . (lambda (_ c _) c))
                                 (paragraph . (lambda (_ c _) c))
                                 (bold . (lambda (&rest _) "bold")))))))))
+  ;; Make sure to have a space between a quote and a citation.
+  (should
+   (equal "\"quotation\" citation\n"
+          (org-test-with-temp-text "\"quotation\"[cite:@key]"
+            (let ((org-cite--processors nil)
+                  (org-cite-export-processors '((t . (foo nil nil)))))
+              (org-cite-register-processor 'foo
+                :export-citation (lambda (&rest _) "citation"))
+              (org-export-as (org-export-create-backend
+                              :transcoders
+                              '((section . (lambda (_ c _) c))
+                                (paragraph . (lambda (_ c _) c)))))))))
+  (should
+   (equal "\"quotation\"  citation\n"
+          (org-test-with-temp-text "\"quotation\"  [cite:@key]"
+            (let ((org-cite--processors nil)
+                  (org-cite-export-processors '((t . (foo nil nil)))))
+              (org-cite-register-processor 'foo
+                :export-citation (lambda (&rest _) "citation"))
+              (org-export-as (org-export-create-backend
+                              :transcoders
+                              '((section . (lambda (_ c _) c))
+                                (paragraph . (lambda (_ c _) c)))))))))
   ;; Regular bibliography export.
   (should
    (eq 'success



reply via email to

[Prev in Thread] Current Thread [Next in Thread]