diff options
| author | Daniel Mendler <mail@daniel-mendler.de> | 2023-01-17 18:55:09 +0100 |
|---|---|---|
| committer | Daniel Mendler <mail@daniel-mendler.de> | 2023-01-17 19:04:06 +0100 |
| commit | 97a492b4246b9a8ae8c710263e78735e0ae88c99 (patch) | |
| tree | b63eb8c5fc63371c13372e5e67db1aad30148c3f /compat-29.el | |
| parent | 66fc73a53519907c6efc332705ed650888952bdb (diff) | |
compat-29: Add plist-get generalized variable
Diffstat (limited to 'compat-29.el')
| -rw-r--r-- | compat-29.el | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/compat-29.el b/compat-29.el index adca217..27edaaa 100644 --- a/compat-29.el +++ b/compat-29.el @@ -120,6 +120,24 @@ Unibyte strings are converted to multibyte for comparison." (throw 'found plist)) (setq plist (cddr plist)))))) +;;;; Defined in gv.el + +(compat-guard t + (gv-define-expander compat--plist-get ;; <compat-tests:plist-get-gv> + (lambda (do plist prop &optional predicate) + (macroexp-let2 macroexp-copyable-p key prop + (gv-letplace (getter setter) plist + (macroexp-let2 nil p `(cdr (compat--plist-member ,getter ,key ,predicate)) + (funcall do + `(car ,p) + (lambda (val) + `(if ,p + (setcar ,p ,val) + ,(funcall setter + `(cons ,key (cons ,val ,getter))))))))))) + (unless (get 'plist-get 'gv-expander) + (put 'plist-get 'gv-expander (get 'compat--plist-get 'gv-expander)))) + ;;;; Defined in editfns.c (compat-defun pos-bol (&optional n) ;; <compat-tests:pos-bol> |
