25 |
|
|
26 |
;;; Commentary: |
;;; Commentary: |
27 |
|
|
28 |
|
;; When the Lisp reader sees `(...), it generates (\` (...)). |
29 |
|
;; When it sees ,... inside such a backquote form, it generates (\, ...). |
30 |
|
;; For ,@... it generates (\,@ ...). |
31 |
|
|
32 |
;; This backquote will generate calls to the backquote-list* form. |
;; This backquote will generate calls to the backquote-list* form. |
33 |
;; Both a function version and a macro version are included. |
;; Both a function version and a macro version are included. |
34 |
;; The macro version is used by default because it is faster |
;; The macro version is used by default because it is faster |
142 |
;; Scan this list-level, setting LISTS to a list of forms, |
;; Scan this list-level, setting LISTS to a list of forms, |
143 |
;; each of which produces a list of elements |
;; each of which produces a list of elements |
144 |
;; that should go in this level. |
;; that should go in this level. |
145 |
;; The order of LISTS is backwards. |
;; The order of LISTS is backwards. |
146 |
;; If there are non-splicing elements (constant or variable) |
;; If there are non-splicing elements (constant or variable) |
147 |
;; at the beginning, put them in FIRSTLIST, |
;; at the beginning, put them in FIRSTLIST, |
148 |
;; as a list of tagged values (TAG . FORM). |
;; as a list of tagged values (TAG . FORM). |
172 |
(if (or rest list) |
(if (or rest list) |
173 |
(setq lists (cons (backquote-listify list (backquote-process rest)) |
(setq lists (cons (backquote-listify list (backquote-process rest)) |
174 |
lists))) |
lists))) |
175 |
;; Turn LISTS into a form that produces the combined list. |
;; Turn LISTS into a form that produces the combined list. |
176 |
(setq expression |
(setq expression |
177 |
(if (or (cdr lists) |
(if (or (cdr lists) |
178 |
(eq (car-safe (car lists)) backquote-splice-symbol)) |
(eq (car-safe (car lists)) backquote-splice-symbol)) |