]> code.delx.au - gnu-emacs/commitdiff
* lisp/emacs-lisp/backquote.el (backquote-process): Optimize away the ,' case.
authorStefan Monnier <monnier@iro.umontreal.ca>
Sun, 16 Nov 2014 04:59:50 +0000 (23:59 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sun, 16 Nov 2014 04:59:50 +0000 (23:59 -0500)
lisp/ChangeLog
lisp/emacs-lisp/backquote.el

index 5eb4e3a8a7a157a602faf4ef59c423644b22bfcc..634412ec9891b4c66e104866718f2f5262cb8d19 100644 (file)
@@ -1,3 +1,7 @@
+2014-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/backquote.el (backquote-process): Optimize away the ,' case.
+
 2014-11-15  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
        * net/eww.el (eww-search-words): Mention `eww-search-prefix'.
@@ -11,8 +15,8 @@
 
        * progmodes/python.el (python-shell-font-lock-kill-buffer):
        (python-shell-font-lock-with-font-lock-buffer)
-       (python-shell-get-buffer, python-ffap-module-path): Use
-       `derived-mode-p' instead of equality test on `major-mode'.
+       (python-shell-get-buffer, python-ffap-module-path):
+       Use `derived-mode-p' instead of equality test on `major-mode'.
 
 2014-11-14  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 
index a497acd637ef5e60691df5e1883fbf49b2039aa1..5cecbcd4335b88cee25191fae58680933a60d107 100644 (file)
@@ -148,16 +148,19 @@ LEVEL is only used internally and indicates the nesting level:
                 (t
                  (list 'apply '(function vector) (cdr n))))))))
    ((atom s)
+    ;; FIXME: Use macroexp-quote!
     (cons 0 (if (or (null s) (eq s t) (not (symbolp s)))
                s
              (list 'quote s))))
    ((eq (car s) backquote-unquote-symbol)
     (if (<= level 0)
-        (if (> (length s) 2)
-            ;; We could support it with: (cons 2 `(list . ,(cdr s)))
-            ;; But let's not encourage such uses.
-            (error "Multiple args to , are not supported: %S" s)
-          (cons 1 (nth 1 s)))
+        (cond
+         ((> (length s) 2)
+          ;; We could support it with: (cons 2 `(list . ,(cdr s)))
+          ;; But let's not encourage such uses.
+          (error "Multiple args to , are not supported: %S" s))
+         (t (cons (if (eq (car-safe (nth 1 s)) 'quote) 0 1)
+                  (nth 1 s))))
       (backquote-delay-process s (1- level))))
    ((eq (car s) backquote-splice-symbol)
     (if (<= level 0)
@@ -215,9 +218,7 @@ LEVEL is only used internally and indicates the nesting level:
       ;; Tack on any initial elements.
       (if firstlist
          (setq expression (backquote-listify firstlist (cons 1 expression))))
-      (if (eq (car-safe expression) 'quote)
-         (cons 0 (list 'quote s))
-       (cons 1 expression))))))
+      (cons (if (eq (car-safe expression) 'quote) 0 1) expression)))))
 
 ;; backquote-listify takes (tag . structure) pairs from backquote-process
 ;; and decides between append, list, backquote-list*, and cons depending