* Preloading xwidget.el on xwidget builds?
[not found] <87v8zpml5d.fsf.ref@yahoo.com>
@ 2021-12-16 0:46 ` Po Lu
2021-12-16 4:33 ` Stefan Monnier
2021-12-16 7:39 ` Eli Zaretskii
0 siblings, 2 replies; 13+ messages in thread
From: Po Lu @ 2021-12-16 0:46 UTC (permalink / raw)
To: emacs-devel
xwidget.el defines various parts of the internal xwidget machinery, such
as the `xwidget-event' handler, and pieces of Lisp code that keep
xwidget display working correctly.
Using xwidget-related C functions without xwidget.el loaded can lead to
crashes and display problems, so I propose to preload that file on
xwidget builds.
Thanks.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Preloading xwidget.el on xwidget builds?
2021-12-16 0:46 ` Preloading xwidget.el on xwidget builds? Po Lu
@ 2021-12-16 4:33 ` Stefan Monnier
2021-12-16 4:41 ` Po Lu
2021-12-16 7:39 ` Eli Zaretskii
1 sibling, 1 reply; 13+ messages in thread
From: Stefan Monnier @ 2021-12-16 4:33 UTC (permalink / raw)
To: Po Lu; +Cc: emacs-devel
> xwidget.el defines various parts of the internal xwidget machinery, such
> as the `xwidget-event' handler, and pieces of Lisp code that keep
> xwidget display working correctly.
>
> Using xwidget-related C functions without xwidget.el loaded can lead to
> crashes and display problems, so I propose to preload that file on
> xwidget builds.
IME files that are preloaded in some config and not on others are
a source of trouble. I'd rather we fix this some other way, e.g. by
autoloading those function.
Stefan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Preloading xwidget.el on xwidget builds?
2021-12-16 4:33 ` Stefan Monnier
@ 2021-12-16 4:41 ` Po Lu
2021-12-16 4:50 ` Stefan Monnier
2021-12-16 7:46 ` Eli Zaretskii
0 siblings, 2 replies; 13+ messages in thread
From: Po Lu @ 2021-12-16 4:41 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> xwidget.el defines various parts of the internal xwidget machinery, such
>> as the `xwidget-event' handler, and pieces of Lisp code that keep
>> xwidget display working correctly.
>>
>> Using xwidget-related C functions without xwidget.el loaded can lead to
>> crashes and display problems, so I propose to preload that file on
>> xwidget builds.
>
> IME files that are preloaded in some config and not on others are
> a source of trouble. I'd rather we fix this some other way, e.g. by
> autoloading those function.
How would autoloading solve that problem though: `make-xwidget' and such
are defined in C code, but their display depends on xwidget.el to work
correctly.
Thanks.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Preloading xwidget.el on xwidget builds?
2021-12-16 4:41 ` Po Lu
@ 2021-12-16 4:50 ` Stefan Monnier
2021-12-16 4:51 ` Stefan Monnier
2021-12-16 7:46 ` Eli Zaretskii
1 sibling, 1 reply; 13+ messages in thread
From: Stefan Monnier @ 2021-12-16 4:50 UTC (permalink / raw)
To: Po Lu; +Cc: emacs-devel
>>> xwidget.el defines various parts of the internal xwidget machinery, such
>>> as the `xwidget-event' handler, and pieces of Lisp code that keep
>>> xwidget display working correctly.
>>>
>>> Using xwidget-related C functions without xwidget.el loaded can lead to
>>> crashes and display problems, so I propose to preload that file on
>>> xwidget builds.
>>
>> IME files that are preloaded in some config and not on others are
>> a source of trouble. I'd rather we fix this some other way, e.g. by
>> autoloading those function.
>
> How would autoloading solve that problem though: `make-xwidget' and such
> are defined in C code, but their display depends on xwidget.el to work
> correctly.
Depends on details I don't know, but presumably `make-xwidget` could
explicitly require/load `xwidget.el`. Or the display could end up
loading `xwidget.el` when it calls a function defined there in (by
marking those functions as autoloaded).
Stefan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Preloading xwidget.el on xwidget builds?
2021-12-16 4:50 ` Stefan Monnier
@ 2021-12-16 4:51 ` Stefan Monnier
2021-12-16 4:52 ` Po Lu
0 siblings, 1 reply; 13+ messages in thread
From: Stefan Monnier @ 2021-12-16 4:51 UTC (permalink / raw)
To: Po Lu; +Cc: emacs-devel
> Depends on details I don't know, but presumably `make-xwidget` could
> explicitly require/load `xwidget.el`. Or the display could end up
> loading `xwidget.el` when it calls a function defined there in (by
> marking those functions as autoloaded).
Or we could move `make-xwidget` to `xwidget.el` and rename the
C function to something like `internal--make-widget`.
Stefan
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Preloading xwidget.el on xwidget builds?
2021-12-16 4:51 ` Stefan Monnier
@ 2021-12-16 4:52 ` Po Lu
2021-12-16 5:06 ` Lars Ingebrigtsen
0 siblings, 1 reply; 13+ messages in thread
From: Po Lu @ 2021-12-16 4:52 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel
Stefan Monnier <monnier@iro.umontreal.ca> writes:
> Or we could move `make-xwidget` to `xwidget.el` and rename the
> C function to something like `internal--make-widget`.
Hmm, good idea.
How can I make autoloads conditional on a build configuration though? A
very large amount of code uses (fboundp 'make-xwidget) to detect xwidget
support, and breaking that would be very inconvenient.
Thanks.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Preloading xwidget.el on xwidget builds?
2021-12-16 4:52 ` Po Lu
@ 2021-12-16 5:06 ` Lars Ingebrigtsen
2021-12-16 5:10 ` Po Lu
0 siblings, 1 reply; 13+ messages in thread
From: Lars Ingebrigtsen @ 2021-12-16 5:06 UTC (permalink / raw)
To: Po Lu; +Cc: Stefan Monnier, emacs-devel
Po Lu <luangruo@yahoo.com> writes:
>> Or we could move `make-xwidget` to `xwidget.el` and rename the
>> C function to something like `internal--make-widget`.
>
> Hmm, good idea.
>
> How can I make autoloads conditional on a build configuration though? A
> very large amount of code uses (fboundp 'make-xwidget) to detect xwidget
> support, and breaking that would be very inconvenient.
We've been trying to move to a different architecture for detecting
whether Emacs has been built with, and currently has access to, external
libraries -- `*-available-p'. It'd be nice if xwidget had that
function, too.
But as you point out, people test for `make-xwidget' today, so we can't
really move it to Lisp, I think. So I think Stefan's first
suggestion -- make `make-xwidget' require widget.el -- is the way to go.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Preloading xwidget.el on xwidget builds?
2021-12-16 5:06 ` Lars Ingebrigtsen
@ 2021-12-16 5:10 ` Po Lu
2021-12-16 5:46 ` Lars Ingebrigtsen
0 siblings, 1 reply; 13+ messages in thread
From: Po Lu @ 2021-12-16 5:10 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: Stefan Monnier, emacs-devel
Lars Ingebrigtsen <larsi@gnus.org> writes:
> We've been trying to move to a different architecture for detecting
> whether Emacs has been built with, and currently has access to, external
> libraries -- `*-available-p'. It'd be nice if xwidget had that
> function, too.
The problem is `xwidget' isn't really a library, it's a feature that
makes use of many different external libraries. Ideally, people would
test for the named feature `xwidget-internal', but the amount of people
who refrained from reading the first paragraph of the xwidget node in
the Lisp reference manual is astonishing.
> suggestion -- make `make-xwidget' require widget.el -- is the way to go.
Is calling require okay from C code? If so, that's what I'll do.
Thanks.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Preloading xwidget.el on xwidget builds?
2021-12-16 5:10 ` Po Lu
@ 2021-12-16 5:46 ` Lars Ingebrigtsen
0 siblings, 0 replies; 13+ messages in thread
From: Lars Ingebrigtsen @ 2021-12-16 5:46 UTC (permalink / raw)
To: Po Lu; +Cc: Stefan Monnier, emacs-devel
Po Lu <luangruo@yahoo.com> writes:
>> We've been trying to move to a different architecture for detecting
>> whether Emacs has been built with, and currently has access to, external
>> libraries -- `*-available-p'. It'd be nice if xwidget had that
>> function, too.
>
> The problem is `xwidget' isn't really a library, it's a feature that
> makes use of many different external libraries.
Sorry, I mean "optionally build features".
> Ideally, people would test for the named feature `xwidget-internal',
> but the amount of people who refrained from reading the first
> paragraph of the xwidget node in the Lisp reference manual is
> astonishing.
The first rule of programming is that nobody reads the manual.
(xwidget-available-p 'webkit) could say whether webkit was available,
etc.
>> suggestion -- make `make-xwidget' require widget.el -- is the way to go.
>
> Is calling require okay from C code? If so, that's what I'll do.
It's unusual, but to work around unfortunate dependencies like this, it
should be OK.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Preloading xwidget.el on xwidget builds?
2021-12-16 0:46 ` Preloading xwidget.el on xwidget builds? Po Lu
2021-12-16 4:33 ` Stefan Monnier
@ 2021-12-16 7:39 ` Eli Zaretskii
2021-12-16 7:47 ` Po Lu
1 sibling, 1 reply; 13+ messages in thread
From: Eli Zaretskii @ 2021-12-16 7:39 UTC (permalink / raw)
To: Po Lu; +Cc: emacs-devel
> From: Po Lu <luangruo@yahoo.com>
> Date: Thu, 16 Dec 2021 08:46:38 +0800
>
> xwidget.el defines various parts of the internal xwidget machinery, such
> as the `xwidget-event' handler, and pieces of Lisp code that keep
> xwidget display working correctly.
>
> Using xwidget-related C functions without xwidget.el loaded can lead to
> crashes and display problems, so I propose to preload that file on
> xwidget builds.
I don't think I understand the problem you are describing. Can you
please describe the situations in which the xwidget-related C
functions would be invoked without xwidget.el being loaded?
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Preloading xwidget.el on xwidget builds?
2021-12-16 4:41 ` Po Lu
2021-12-16 4:50 ` Stefan Monnier
@ 2021-12-16 7:46 ` Eli Zaretskii
2021-12-16 7:54 ` Po Lu
1 sibling, 1 reply; 13+ messages in thread
From: Eli Zaretskii @ 2021-12-16 7:46 UTC (permalink / raw)
To: Po Lu; +Cc: monnier, emacs-devel
> From: Po Lu <luangruo@yahoo.com>
> Cc: emacs-devel@gnu.org
> Date: Thu, 16 Dec 2021 12:41:43 +0800
>
> > IME files that are preloaded in some config and not on others are
> > a source of trouble. I'd rather we fix this some other way, e.g. by
> > autoloading those function.
>
> How would autoloading solve that problem though: `make-xwidget' and such
> are defined in C code, but their display depends on xwidget.el to work
> correctly.
Which code could call make-xwidget when xwidget.el is not loaded?
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Preloading xwidget.el on xwidget builds?
2021-12-16 7:39 ` Eli Zaretskii
@ 2021-12-16 7:47 ` Po Lu
0 siblings, 0 replies; 13+ messages in thread
From: Po Lu @ 2021-12-16 7:47 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: emacs-devel
Eli Zaretskii <eliz@gnu.org> writes:
> I don't think I understand the problem you are describing. Can you
> please describe the situations in which the xwidget-related C
> functions would be invoked without xwidget.el being loaded?
(This has been fixed now: see the other replies to this thread.)
For instance, `make-xwidget' can be called to create xwidgets, and they
can be displayed on screen, all without xwidget.el being loaded.
A package that uses xwidgets to preview LaTeX does this, and that
package brought this problem to my attention.
Thanks.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Preloading xwidget.el on xwidget builds?
2021-12-16 7:46 ` Eli Zaretskii
@ 2021-12-16 7:54 ` Po Lu
0 siblings, 0 replies; 13+ messages in thread
From: Po Lu @ 2021-12-16 7:54 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: monnier, emacs-devel
Eli Zaretskii <eliz@gnu.org> writes:
> Which code could call make-xwidget when xwidget.el is not loaded?
Any Lisp code was able to do that.
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2021-12-16 7:54 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <87v8zpml5d.fsf.ref@yahoo.com>
2021-12-16 0:46 ` Preloading xwidget.el on xwidget builds? Po Lu
2021-12-16 4:33 ` Stefan Monnier
2021-12-16 4:41 ` Po Lu
2021-12-16 4:50 ` Stefan Monnier
2021-12-16 4:51 ` Stefan Monnier
2021-12-16 4:52 ` Po Lu
2021-12-16 5:06 ` Lars Ingebrigtsen
2021-12-16 5:10 ` Po Lu
2021-12-16 5:46 ` Lars Ingebrigtsen
2021-12-16 7:46 ` Eli Zaretskii
2021-12-16 7:54 ` Po Lu
2021-12-16 7:39 ` Eli Zaretskii
2021-12-16 7:47 ` Po Lu
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).