Subject: bug#3467: 23.0.94; let + make-local-variable => let value made

From: Stefan Monnier <[email-masked]>
Date: Sat, 27 Jun 2009 02:24:00 +0200

> The first problem is that the semantics of let,
> make-variable-buffer-local etc are not clearly defined. I suggest the
> following semantics (instead of the one I proposed before):

That's the intuitive semantics, indeed.

> I have made a patch for this with some comments and questions. I have
> included this in my patched version of Emacs+EmacsW32 and have been
> using it myself for a couple of days without any problems.

- NULL is equal to 0 by definition.
- Why do you check

             if (!NILP (Flocal_variable_p (symbol, where)) ||
                 !NILP (Flocal_variable_if_set_p (symbol, where)))
  i.s.o.
             if (!NILP (Flocal_variable_p (symbol, where)))
  That looks wrong since it would undo a kill-local-variable that was
  performed within the let.
- Regarding "Case 1 in specbind", I have (in my local changes)
  completely rewritten the variable-binding code so as not to use
  special MISCP values.  I find it makes the code clearer, tho maybe
  others will disagree.  I intend to install it in the trunk for 23.2
  and it of course conflicts completely with your patch ;-)
  If you want, I can try and extract the corresponding patch and send it
  to you.

        Stefan