branch: externals/org
commit 1c83f6fa02eac3ce95e99583210a315afc579710
Author: Ihor Radchenko <yanta...@gmail.com>
Commit: Bastien <b...@gnu.org>

    Allow sexps with nested parenthesis in org-agenda-prefix-format
    
    * lisp/org-agenda.el (org-compile-prefix-format): Use `read' instead
    of pure regexp matching to determine bounds of %(sexp) expressions in
    `org-agenda-prefix-format'.
    
    Fixes https://orgmode.org/list/87fsy8yi1e.fsf@localhost/
---
 lisp/org-agenda.el | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 4ee3623..02c13ff 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -6947,7 +6947,7 @@ and stored in the variable `org-prefix-format-compiled'."
                  (and (string-match "\\.[0-9]+" x)
                       (string-to-number (substring (match-string 0 x) 1)))))))
       (if (eq var 'eval)
-         (setq varform `(format ,f (org-eval ,(read (match-string 4 s)))))
+         (setq varform `(format ,f (org-eval ,(read (substring s 
(match-beginning 4))))))
        (if opt
            (setq varform
                  `(if (member ,var '("" nil))
@@ -6956,7 +6956,12 @@ and stored in the variable `org-prefix-format-compiled'."
          (setq varform
                `(format ,f (if (member ,var '("" nil)) ""
                              (concat ,var ,c (get-text-property 0 'extra-space 
,var)))))))
-      (setq s (replace-match "%s" t nil s))
+      (if (eq var 'eval)
+          (setf (substring s (match-beginning 0)
+                           (+ (match-beginning 4)
+                              (length (format "%S" (read (substring s 
(match-beginning 4)))))))
+                "%s")
+        (setq s (replace-match "%s" t nil s)))
       (push varform vars))
     (setq vars (nreverse vars))
     (with-current-buffer (or org-agenda-buffer (current-buffer))

Reply via email to