From ab2ad947bc741ca42700dfa05bb2ce00903f8db8 Mon Sep 17 00:00:00 2001 From: Andrew Arensburger Date: Wed, 6 Apr 2022 17:02:19 -0400 Subject: [PATCH 2/2] org-macs.el: Fix template expansion. * lisp/org-macs.el (org-fill-template): Fix a bug in template expansion: if one key is a substring of another key (like "noweb" and "noweb-ref", or "tangle" and "tangle-mode"), the second key wouldn't get expanded properly. The problem was that keys were processed in order of increasing length; they are now sorted in order of descending length. --- lisp/org-macs.el | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lisp/org-macs.el b/lisp/org-macs.el index b39af9103..f85e1f758 100644 --- a/lisp/org-macs.el +++ b/lisp/org-macs.el @@ -1058,7 +1058,10 @@ as-is if removal failed." "Find each %key of ALIST in TEMPLATE and replace it." (let ((case-fold-search nil)) (dolist (entry (sort (copy-sequence alist) - (lambda (a b) (< (length (car a)) (length (car b)))))) + ; Sort from longest key to shortest, so that + ; "noweb-ref" and "tangle-mode" get processed + ; before "noweb" and "tangle", respectively. + (lambda (a b) (< (length (car b)) (length (car a)))))) (setq template (replace-regexp-in-string (concat "%" (regexp-quote (car entry))) -- 2.25.1