GNU bug report logs -
#56643
29.0.50; Help-mode bookmarks not loading with native compilation
Previous Next
Reported by: defun.foo <at> proton.me
Date: Tue, 19 Jul 2022 16:12:02 UTC
Severity: normal
Found in version 29.0.50
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Eli Zaretskii <eliz <at> gnu.org> writes:
>> Date: Thu, 21 Jul 2022 10:01:57 +0000
>> From: defun.foo <at> proton.me
>> Cc: Michael Heerdegen <michael_heerdegen <at> web.de>, akrl <at> sdf.org, 56643 <at> debbugs.gnu.org
>>
>> > > Alternatively we could introduce a named helper function. Note there
>> > > are more calls of `help-setup-xref' using lambdas in arguments.
>> >
>> >
>> > And that would solve the problem? Did you try that?
>>
>> I tried it with describe-function and it does solve the problem,
>> although as noted above there are many other functions that generate
>> help buffers and pass in a lambda.
>
> I know very well there are other instances, I just wanted us to stay
> focused.
>
>> Named helper:
>>
>> (defun describe-function-xref-func (function buffer)
>> (let ((describe-function-orig-buffer
>> (if (buffer-live-p buffer) buffer)))
>> (describe-function function)))
>>
>> Revised describe-function snippet:
>>
>> (help-setup-xref
>> (list 'describe-function-xref-func function describe-function-orig-buffer)
>> (called-interactively-p 'interactive))
>>
>> This produces the following bookmark, which I confirmed still works after restarting Emacs:
>>
>> ("named-function-help-bookmark"
>> (position . 1)
>> (last-modified 25305 7198 806743 243000)
>> (help-fn . describe-function-xref-func)
>> (help-args completing-read "*scratch*")
>> (position . 1)
>> (handler . help-bookmark-jump))
>
> Thanks. If Andrea confirms that this won't have any problems with
> native-compilation, I will install such changes on the release branch
> (since AFAIU this issue is a regression in Emacs 28).
I confirm it should just work.
Actually I think the use of a lambda there was not really optimal in
first place as is not capturing anything and we were serializing and
deserializing the same code over and over again for no good reason.
BTW, I mention this for other similar cases, another fix would be to add
(declare (speed -1)) to `describe-function'. Ideally would be _really_
nice to add it directly to the lambda we want to be able to
se/deserialize, but AFAIK the declare semantinc is not available to
lambdas :( Probably an improvement to keep in mind...
Thanks
Andrea
This bug report was last modified 2 years and 360 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.