Subject: bug#74090: 31.0.50; Problems with dabbrev-expand

From: Stephen Berman <[email-masked]>
Date: Sat, 30 Nov 2024 23:30:21 +0100

On Sat, 30 Nov 2024 22:07:27 +0200 Eli Zaretskii <[email-masked]> wrote:

>> From: Juri Linkov <[email-masked]>
>> Cc: Eli Zaretskii <[email-masked]>,  [email-masked]
>> Date: Sat, 30 Nov 2024 19:51:38 +0200
>> 
>> >>> 1. C-x b foo RET
>> >>> 2. Type: abc SPC abd
>> >>> 3. C-x b *scratch* RET
>> >>> 4. Type: ab M-/
>> >>> 5. C-x k foo RET
>> >>> 6. Type: SPC ab M-/
>> >>
>> >> Sorry, I meant emacs-30, not emacs-29.
>> >
>> > Thanks, I can reproduce it.  With the attached patch (against emacs-30)
>> > I don't get the error; instead, at step 6 "ab" expands to "abc", which I
>> > suppose is what's expected, and then typing `M-/' again shows the
>> > message "No further dynamic expansion for ‘ab’ found", which also seems
>> > as expected.  And with the patch, all current dabbrev regression tests
>> > pass with ert-run-tests-batch-and-exit.  Does anyone see a problem with
>> > the patch?
>> 
>> Thanks, I confirm it works now.

Thanks!

> Thanks for testing.  Stephen, you have green light for installing this
> on the emacs-30 branch.

Thanks, done in commit bd8a6f70fb9.

>> Would it be nice to have a new test that covers this case?
>
> Definitely.  But it is less urgent than fixing the bug itself.

I've added a test but I'm somewhat dissatisfied with it.  I wanted to
essentially reproduce the behavior I see with the patch, described
above.  However, after killing buffer "foo", the message about no
further expansion is from a user-error in dabbrev-expand, and on hitting
this in the test run, the test immediately finishes.  So I used
should-error with :type 'user-error and the test succeeds, but I cannot
test for the final buffer content nor the message displayed by
user-error.  If anyone has an idea how to do that or otherwise improve
the test, please chime in.

Steve Berman