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

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

[elpa] externals/org e7454ce: oc: Call select-style function with a cita


From: ELPA Syncer
Subject: [elpa] externals/org e7454ce: oc: Call select-style function with a citation argument
Date: Wed, 11 Aug 2021 06:57:16 -0400 (EDT)

branch: externals/org
commit e7454ceb79a51de8e79492fc30a1f4e2ab3414bd
Author: Nicolas Goaziou <mail@nicolasgoaziou.fr>
Commit: Nicolas Goaziou <mail@nicolasgoaziou.fr>

    oc: Call select-style function with a citation argument
    
    * lisp/oc.el (org-cite--keys-to-citation): New function.
    (org-cite-make-insert-processor): Use new function.  Change signature
    of SELECT-STYLE.
    
    Reported-by: "Bruce D'Arcus" <bdarcus@gmail.com>
    <http://lists.gnu.org/r/emacs-orgmode/2021-07/msg00638.html>
---
 lisp/oc-basic.el |  2 +-
 lisp/oc.el       | 17 ++++++++++++++---
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/lisp/oc-basic.el b/lisp/oc-basic.el
index 7f4c6e7..f16eb25 100644
--- a/lisp/oc-basic.el
+++ b/lisp/oc-basic.el
@@ -682,7 +682,7 @@ present in the citation."
 
 
 ;;; "Insert" capability
-(defun org-cite-basic--complete-style ()
+(defun org-cite-basic--complete-style (_)
   "Offer completion for style.
 Return chosen style as a string."
   (let* ((styles
diff --git a/lisp/oc.el b/lisp/oc.el
index 04e0c9b..5fcb9da 100644
--- a/lisp/oc.el
+++ b/lisp/oc.el
@@ -1449,6 +1449,16 @@ ARG is the prefix argument received when calling 
`org-open-at-point', or nil."
         (insert-before-markers  string ";")
       (insert-before-markers ";" string))))
 
+(defun org-cite--keys-to-citation (keys)
+  "Build a citation object from a list of citation KEYS.
+Citation keys are strings without the leading \"@\"."
+  (apply #'org-element-create
+         'citation
+         nil
+         (mapcar (lambda (k)
+                   (org-element-create 'citation-reference (list :key k)))
+                 keys)))
+
 (defun org-cite-make-insert-processor (select-key select-style)
   "Build a function appropriate as an insert processor.
 
@@ -1457,8 +1467,8 @@ should return a citation key as a string, or nil.  
Otherwise, the function
 should return a list of such keys, or nil.  The keys should not have any 
leading
 \"@\" character.
 
-SELECT-STYLE is a function called without any argument.  It should return a
-style string, or nil.
+SELECT-STYLE is a function called with one argument, the citation object being
+edited or constructed so far.  It should return a style string, or nil.
 
 The return value is a function of two arguments: CONTEXT and ARG.  CONTEXT is
 either a citation reference, a citation object, or nil.  ARG is a prefix
@@ -1541,7 +1551,8 @@ The generated function inserts or edit a citation at 
point.  More specifically,
          (insert
           (format "[cite%s:%s]"
                   (if arg
-                      (let ((style (funcall select-style)))
+                      (let ((style (funcall select-style
+                                            (org-cite--keys-to-citation 
keys))))
                         (if (org-string-nw-p style)
                             (concat "/" style)
                           ""))



reply via email to

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