abo-abo / lispy

Short and sweet LISP editing
http://oremacs.com/lispy/
1.2k stars 132 forks source link

Bug? lispy-unbind-variable does not replace the unbound variable with its value as described in docs #576

Open pierre-rouleau opened 3 years ago

pierre-rouleau commented 3 years ago

Start with the following code and placing the cursor at the same position as described in the linked document above:

defun foobar ()
  (let ((x 10)
    (y 20)
    (z 30))
    (foo1 x y z)
    (foo2 x z y)
    (foo3 y x z)
    (foo4 y z x)
    (foo5 z x y)
    (foo6 z y x)))

Type xu and the result currently is:

(defun foobar ()
  (let ((y 20)
        (z 30))
    (foo1 x y z)
    (foo2 x z y)
    (foo3 y x z)
    (foo4 y z x)
    (foo5 z x y)
    (foo6 z y x)))

Notice that the variable x has been left as-is inside the code instead of being replaced by it's previously bound value of 10 as described in the documentation.

I have not yet looked into the code, but is it possible some statements were removed since the original code tested to write the documentation was done?

--

Despite this minor problem, this package is great! Thanks!!

ComedyTomedy commented 3 years ago

xu works fine for me - Emacs 28, current lispy 0.27.0 (from git or melpa).

pierre-rouleau commented 3 years ago

Good to know, thanks. It would seem to mean that a regression showed up between 0.27.0 done on May 8, 2019 and the version I use, which goes to Jan 21 2021.

contrapunctus-1 commented 3 years ago

I too am facing this bug.

Lispy version 0.27.0 (20210702.1206 from MELPA)

GNU Emacs 27.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.24, cairo version 1.16.0) of 2021-03-28, modified by Debian

joshcho commented 2 years ago

Still an issue, Emacs 29.0.50 and lispy-20211020.907. The pull request doesn't quite fix it. Something about (iedit-mode) is off, evaluating it manually after previous lines in the function has the intended effect.

abo-abo commented 2 years ago

You're right, it's related to iedit-mode. I noticed just now that I'm using a pretty old fork: https://github.com/abo-abo/iedit. lispy-unbind-variable works fine for me with that fork.