(defun backquote-list*-function (first &rest list)
"Like `list' but the last argument is the tail of the new list.
-For example (backquote-list* 'a 'b 'c) => (a b . c)"
+For example (backquote-list* \\='a \\='b \\='c) => (a b . c)"
;; The recursive solution is much nicer:
;; (if list (cons first (apply 'backquote-list*-function list)) first))
;; but Emacs is not very good at efficiently processing recursion.
(defmacro backquote-list*-macro (first &rest list)
"Like `list' but the last argument is the tail of the new list.
-For example (backquote-list* 'a 'b 'c) => (a b . c)"
+For example (backquote-list* \\='a \\='b \\='c) => (a b . c)"
;; The recursive solution is much nicer:
;; (if list (list 'cons first (cons 'backquote-list*-macro list)) first))
;; but Emacs is not very good at efficiently processing such things.
For example:
b => (ba bb bc) ; assume b has this value
-`(a b c) => (a b c) ; backquote acts like quote
-`(a ,b c) => (a (ba bb bc) c) ; insert the value of b
-`(a ,@b c) => (a ba bb bc c) ; splice in the value of b
+\\=`(a b c) => (a b c) ; backquote acts like quote
+\\=`(a ,b c) => (a (ba bb bc) c) ; insert the value of b
+\\=`(a ,@b c) => (a ba bb bc c) ; splice in the value of b
Vectors work just like lists. Nested backquotes are permitted."
(cdr (backquote-process structure)))
This simply recurses through the body."
(let ((exp (backquote-listify (list (cons 0 (list 'quote (car s))))
(backquote-process (cdr s) level))))
- (if (eq (car-safe exp) 'quote)
- (cons 0 (list 'quote s))
- (cons 1 exp))))
+ (cons (if (eq (car-safe exp) 'quote) 0 1) exp)))
(defun backquote-process (s &optional level)
"Process the body of a backquote.