Subject: 25.0.50; nested backquotes: recent changes not backward compatible

From: Michael Heerdegen <[email-masked]>
Date: Fri, 30 Jan 2015 18:49:52 +0100

Hello,

Recent changes in backquote.el, I guess especially in this commit:

86009dd5d886f1101358990e4f8f69a5d1467eb8
Author: Stefan Monnier <[email-masked]>
Date:   Sat Nov 15 23:59:50 2014 -0500

    * lisp/emacs-lisp/backquote.el (backquote-process): Optimize away
      the ,' case.

were not backwards compatible.  If this was intended (?), it should be
mentioned in the news I think.

Here is an example.  In Emacs 24, I had something like this in my config
(massively shortened):

--8<---------------cut here---------------start------------->8---
(defun my-make-feh-cmd ()
  "Return a feh command line suitble for dired.
Take the current screen resolution at account."
  (if (not window-system)
      "feh"
    (let* ((display-pixel-width (display-pixel-width))
           (width (- display-pixel-width (frame-pixel-width))))
      (format "feh -Z -g %sx%s+%s *"
              width
              (- (x-display-pixel-height) 30)
              (min (+ (frame-pixel-width) 2) (- display-pixel-width width))))))

(require 'dired-x)

(let ((programs '("vlc *" "smplayer *")))
  (setq-default
   dired-guess-shell-alist-user
   `((".*" (if (file-directory-p file)
               `(,,'(my-make-feh-cmd) ;compute at runtime!
                 ,@',programs)
             ',programs)))))
--8<---------------cut here---------------end--------------->8---

In trunk, the backquote expression evals to something different now, and
AFAICT

    ,,'(my-make-feh-cmd)

from above must now be

      ,(my-make-feh-cmd)

That looks less frightening, but I had to find this out myself because
my code was broken and there was no news entry.

Thanks,

Michael.

In GNU Emacs 25.0.50.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.14.5)
 of 2015-01-29 on drachen
Repository revision: 1dc1959ebf50401c69adeb6d182950b59835f94d
Windowing system distributor `The X.Org Foundation', version 11.0.11602901
System Description:	Debian GNU/Linux 8.0 (jessie)

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND DBUS GSETTINGS NOTIFY
LIBXML2 FREETYPE XFT ZLIB