org-persist--gc-orphan-p: Fix Emacs 26.1 compatibility

* lisp/org-compat: Add org-assoc-delete-all from compat/compat-27.el.
* lisp/org-persist.el (org-persist--gc-orphan-p): Use
org-assoc-delete-all.

TINYCHANGE
This commit is contained in:
Justin Vallon 2023-12-28 17:16:45 -05:00 committed by Ihor Radchenko
parent 80ce6152ba
commit 684aff8eeb
No known key found for this signature in database
GPG Key ID: 6470762A7DA11D8B
2 changed files with 19 additions and 1 deletions

View File

@ -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

View File

@ -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)))