* lisp/org-compat: add org-assoc-delete-all from compat/compat-27.el * lisp/org-persist: use org-assoc-delete-all ---  lisp/org-compat.el  | 18 ++++++++++++++++++  lisp/org-persist.el |  2 +-  2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lisp/org-compat.el b/lisp/org-compat.el index 8b1f16355..6fcea1837 100644 --- a/lisp/org-compat.el +++ b/lisp/org-compat.el @@ -348,6 +348,24 @@ Execute BODY, and unwind connection-local variables."      `(with-connection-local-profiles (connection-local-get-profiles nil)         ,@body))) +;; assoc-delete-all missing from 26.1 +(if (fboundp 'assoc-delete-all) +    (defalias 'org-assoc-delete-all 'assoc-delete-all) +  ;; from compat/compat-27.el +  (defun org-assoc-delete-all (key alist &optional test) +    "Delete all matching key from alist, default test equal" +    (unless test (setq test #'equal)) +    (while (and (consp (car alist)) +        (funcall test (caar alist) key)) +      (setq alist (cdr alist))) +    (let ((tail alist) tail-cdr) +      (while (setq tail-cdr (cdr tail)) +    (if (and (consp (car tail-cdr)) +         (funcall test (caar tail-cdr) key)) +            (setcdr tail (cdr tail-cdr)) +          (setq tail tail-cdr)))) +    alist)) +    ;;; Emacs < 26.1 compatibility diff --git a/lisp/org-persist.el b/lisp/org-persist.el index 82c31144a..229957fb0 100644 --- a/lisp/org-persist.el +++ b/lisp/org-persist.el @@ -1216,7 +1216,7 @@ Remove expired sessions timestamps."  Remove current sessions from `org-persist-gc-lock-file'."    (let* ((file (org-file-name-concat org-persist-directory org-persist-gc-lock-file))           (alist (when (file-exists-p file) (org-persist--read-elisp-file file)))) -    (setq alist (assoc-delete-all before-init-time alist)) +    (setq alist (org-assoc-delete-all before-init-time alist))      (org-persist--write-elisp-file file alist)      ;; Only GC orphan files when there are no active sessions.      (not alist))) base-commit: 80ce6152ba915b7c53d239f2b030f7afb8e70e8e -- 2.20.1