emacs-orgmode
[Top][All Lists]
Advanced

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

citations: rx problems with emacs-26.3


From: Maxim Nikulin
Subject: citations: rx problems with emacs-26.3
Date: Sun, 11 Jul 2021 17:36:59 +0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0

I think citation support is a great feature. (Sorry, I do not work with references now, so I can tell nothing concerning implementation for org.)

It seems, rx e.g. in emacs-26.3 does not support all features used in oc.el and oc-csl.el. Loading an org file using git master, I get a warning

Eager macro-expansion failure: (error "rx form ‘regexp’ requires args satisfying 
‘stringp’")

It looks like (rx (regexp ...)) require namely literal, variables are not supported yet. In additional (rx (literal ...)) is not supported as well.

Eager macro-expansion failure: (error "Unknown rx form ‘literal’")

In a couple of places `rx-to-string' likely could be used instead of just `rx'. I have no idea yet what could be done with (pcase-let* ((rx ...))) in `org-cite-adjust-note'.

diff --git a/lisp/oc-basic.el b/lisp/oc-basic.el
index 4e9d2e562..2ac601f34 100644
--- a/lisp/oc-basic.el
+++ b/lisp/oc-basic.el
@@ -656,7 +656,7 @@ present in the citation."
     (org-open-file file '(4))
     (if (not (equal "json" (file-name-extension file)))
         (bibtex-search-entry key)
-      (let ((regexp (rx "\"id\":" (0+ (any "[ \t]")) "\"" (literal key) "\"")))
+      (let ((regexp (rx-to-string `(seq "\"id\":" (0+ (any "[ \t]")) "\"" ,key 
"\"") t)))
         (goto-char (point-min))
         (re-search-forward regexp)
         (search-backward "{")))))
diff --git a/lisp/oc-csl.el b/lisp/oc-csl.el
index a7a2a6042..f3c2fd901 100644
--- a/lisp/oc-csl.el
+++ b/lisp/oc-csl.el
@@ -248,10 +248,10 @@ If nil then the Chicago author-date style is used as a 
fallback.")
   "Alist mapping locator names to locators.")
(defconst org-cite-csl--label-regexp
-  (rx word-start
-      (regexp (regexp-opt (mapcar #'car org-cite-csl--label-alist) t))
-      (0+ digit)
-      (or word-start line-end (any ?\s ?\t)))
+  (rx-to-string `(seq word-start
+                  (regexp ,(regexp-opt (mapcar #'car 
org-cite-csl--label-alist) t))
+                  (0+ digit)
+                  (or word-start line-end (any ?\s ?\t))) t)
   "Regexp matching a label in a citation reference suffix.
 Label is in match group 1.")
diff --git a/lisp/oc.el b/lisp/oc.el
index 1d704fb03..43a3bb444 100644
--- a/lisp/oc.el
+++ b/lisp/oc.el
@@ -924,7 +924,7 @@ the same object, call `org-cite-adjust-punctuation' first."
                      (concat final-punct "\"") previous nil nil 2))
                    (new-next
                     (replace-regexp-in-string
-                     (rx string-start (literal final-punct))
+                     (rx-to-string `(seq string-start ,final-punct) t)
                      "" next)))
                (org-element-set-element previous new-prev)
                (org-element-set-element next new-next)

Maybe I have missed other similar problems.

Does someone have better ideas how to restore compatibility with older emacs versions? 24.3 is declared in org.el. Ubuntu 20.04 (latest long time support release) has 26.3.




reply via email to

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