summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Bernoulli <jonas@bernoul.li>2024-10-03 21:06:07 +0200
committerJonas Bernoulli <jonas@bernoul.li>2024-10-03 21:06:07 +0200
commit61ac5906dfa5d98c5cec5b71ea7a7adea2f89f29 (patch)
tree895d89f9d4be9a3e202b9dd9a498e06e3aa90458
parent5db4ead41eee5d44616553ff66c7f9d92604540a (diff)
llama--collect: Support splice
-rw-r--r--llama-test.el4
-rw-r--r--llama.el18
2 files changed, 17 insertions, 5 deletions
diff --git a/llama-test.el b/llama-test.el
index 7ae87f4..792d32e 100644
--- a/llama-test.el
+++ b/llama-test.el
@@ -388,6 +388,10 @@
(should (equal (##`(,%1 %2 (,%3) ,%4 . ,%5))
(lambda (%1 _%2 %3 %4 %5)
`(,%1 %2 (,%3) ,%4 . ,%5))))
+
+ (should (equal (##list `(,@%1 %2 ,%3 (,@%3 ,%1)))
+ (lambda (%1 _%2 %3)
+ (list `(,@%1 %2 ,%3 (,@%3 ,%1))))))
)
(ert-deftest llama-test-701-llama nil
diff --git a/llama.el b/llama.el
index e8af17e..dfd75de 100644
--- a/llama.el
+++ b/llama.el
@@ -187,11 +187,16 @@ to view this docstring.)"
(cond
((memq (car-safe expr) (list (intern "") 'llama 'quote)) expr)
((and backquoted (symbolp expr)) expr)
- ((and backquoted (eq (car-safe expr) backquote-unquote-symbol))
- (list backquote-unquote-symbol
+ ((and backquoted
+ (memq (car-safe expr)
+ (list backquote-unquote-symbol
+ backquote-splice-symbol)))
+ (list (car expr)
(llama--collect (cadr expr) args)))
- ((eq (car-safe expr) backquote-backquote-symbol)
- (list backquote-backquote-symbol
+ ((memq (car-safe expr)
+ (list backquote-backquote-symbol
+ backquote-splice-symbol))
+ (list (car expr)
(llama--collect (cadr expr) args nil t)))
((symbolp expr)
(let ((name (symbol-name expr)))
@@ -398,7 +403,10 @@ expansion, and the looks of this face should hint at that.")
((eq (ignore-errors (bare-symbol (car-safe expr))) 'quote))
((and (memq (car-safe expr) (list (intern "") 'llama)) (not top)))
((and backquoted (symbol-with-pos-p expr)))
- ((and backquoted (eq (car-safe expr) backquote-unquote-symbol))
+ ((and backquoted
+ (memq (car-safe expr)
+ (list backquote-unquote-symbol
+ backquote-splice-symbol)))
(llama--fontify expr))
((symbol-with-pos-p expr)
(save-match-data