* bug#34715: 26.1; (1) Add `clone-frame', (2) bind it to `C-x 5 2'
@ 2019-03-03 0:47 Drew Adams
2019-03-04 16:12 ` Eli Zaretskii
` (2 more replies)
0 siblings, 3 replies; 24+ messages in thread
From: Drew Adams @ 2019-03-03 0:47 UTC (permalink / raw)
To: 34715
Enhancement request:
1. Add a `clone-frame' command such as this one, which is similar to
what I've been using:
(defun clone-frame (&optional frame no-clone)
"Make a new frame with the same parameters as FRAME.
With a prefix arg, don't clone - just call `make-frame-command'.
FRAME defaults to the selected frame. The frame is created on the
same terminal as FRAME. If the terminal is a text-only terminal then
also select the new frame."
(interactive "i\nP")
(if no-clone
(make-frame-command)
(let* ((default-frame-alist (frame-parameters frame))
(new-fr (make-frame)))
(unless (display-graphic-p) (select-frame new-fr))
new-fr)))
2. Use it, not `make-frame-command', as the binding of `C-x 5 2'.
Why change the default behavior of `C-x 5 2'? If I want the buffer
of the selected window shown in another frame then I typically want
that frame to have the same parameters.
It's true that I often have only one window in the selected frame,
which is not typical of other users, and in that case it perhaps
makes even more sense that I want `C-x 5 2' to duplicate the frame's
parameters. But I think that most users are likely to prefer, as the
default behavior, keeping the same parameters. (`C-u' gives
`make-frame-command', i.e., the frame parameters are not cloned.) An
open question, I guess.
3. BTW, I think it would be good to add this to the doc string of
`make-frame-command':
Return the new frame.
In GNU Emacs 26.1 (build 1, x86_64-w64-mingw32)
of 2018-05-30
Repository revision: 07f8f9bc5a51f5aa94eb099f3e15fbe0c20ea1ea
Windowing system distributor `Microsoft Corp.', version 10.0.17134
Configured using:
`configure --without-dbus --host=x86_64-w64-mingw32
--without-compress-install 'CFLAGS=-O2 -static -g3''
^ permalink raw reply [flat|nested] 24+ messages in thread
* bug#34715: 26.1; (1) Add `clone-frame', (2) bind it to `C-x 5 2'
2019-03-03 0:47 bug#34715: 26.1; (1) Add `clone-frame', (2) bind it to `C-x 5 2' Drew Adams
@ 2019-03-04 16:12 ` Eli Zaretskii
2019-03-08 9:46 ` Eli Zaretskii
2021-09-01 9:43 ` bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default Lars Ingebrigtsen
2 siblings, 0 replies; 24+ messages in thread
From: Eli Zaretskii @ 2019-03-04 16:12 UTC (permalink / raw)
To: Drew Adams; +Cc: 34715
> Date: Sat, 2 Mar 2019 16:47:47 -0800 (PST)
> From: Drew Adams <drew.adams@oracle.com>
>
> 1. Add a `clone-frame' command such as this one, which is similar to
> what I've been using:
>
> (defun clone-frame (&optional frame no-clone)
> "Make a new frame with the same parameters as FRAME.
> With a prefix arg, don't clone - just call `make-frame-command'.
>
> FRAME defaults to the selected frame. The frame is created on the
> same terminal as FRAME. If the terminal is a text-only terminal then
> also select the new frame."
> (interactive "i\nP")
> (if no-clone
> (make-frame-command)
> (let* ((default-frame-alist (frame-parameters frame))
> (new-fr (make-frame)))
> (unless (display-graphic-p) (select-frame new-fr))
> new-fr)))
>
> 2. Use it, not `make-frame-command', as the binding of `C-x 5 2'.
I'm okay with adding a new command, but rebinding "C-x 5 2" by default
at the same time is a non-starter. We should first let people use the
new command, and should see how many of them ask to change the default
binding.
> Why change the default behavior of `C-x 5 2'? If I want the buffer
> of the selected window shown in another frame then I typically want
> that frame to have the same parameters.
That's what default-frame-alist is for. If you are used to change the
parameters of your frames a lot during their lifetime, which
presumably means each of your frames might look and work differently,
it is not entirely clear to me that "C-x 5 2" should produce a clone
of the random frame where you just happened to type the command. It
could even cause trouble/unexpected behavior, with some exotic
parameters, at least in principle.
So I think we definitely should collect more experience before
changing this veteran binding.
> 3. BTW, I think it would be good to add this to the doc string of
> `make-frame-command':
>
> Return the new frame.
"When called from Lisp, return the new frame."
^ permalink raw reply [flat|nested] 24+ messages in thread
* bug#34715: 26.1; (1) Add `clone-frame', (2) bind it to `C-x 5 2'
2019-03-03 0:47 bug#34715: 26.1; (1) Add `clone-frame', (2) bind it to `C-x 5 2' Drew Adams
2019-03-04 16:12 ` Eli Zaretskii
@ 2019-03-08 9:46 ` Eli Zaretskii
2021-09-01 9:43 ` bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default Lars Ingebrigtsen
2 siblings, 0 replies; 24+ messages in thread
From: Eli Zaretskii @ 2019-03-08 9:46 UTC (permalink / raw)
To: Drew Adams; +Cc: 34715
> Date: Sat, 2 Mar 2019 16:47:47 -0800 (PST)
> From: Drew Adams <drew.adams@oracle.com>
>
> 3. BTW, I think it would be good to add this to the doc string of
> `make-frame-command':
>
> Return the new frame.
Done.
^ permalink raw reply [flat|nested] 24+ messages in thread
* bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default
2019-03-03 0:47 bug#34715: 26.1; (1) Add `clone-frame', (2) bind it to `C-x 5 2' Drew Adams
2019-03-04 16:12 ` Eli Zaretskii
2019-03-08 9:46 ` Eli Zaretskii
@ 2021-09-01 9:43 ` Lars Ingebrigtsen
2021-09-01 12:47 ` bug#34715: " Eli Zaretskii
2 siblings, 1 reply; 24+ messages in thread
From: Lars Ingebrigtsen @ 2021-09-01 9:43 UTC (permalink / raw)
To: Drew Adams; +Cc: 34715, 32736
Drew Adams <drew.adams@oracle.com> writes:
> 1. Add a `clone-frame' command such as this one, which is similar to
> what I've been using:
>
> (defun clone-frame (&optional frame no-clone)
I've now added this to Emacs 28 (with some trivial changes) -- bound to
`C-x 5 c'.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 24+ messages in thread
* bug#34715: bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default
2021-09-01 9:43 ` bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default Lars Ingebrigtsen
@ 2021-09-01 12:47 ` Eli Zaretskii
2021-09-01 12:53 ` bug#32736: " Lars Ingebrigtsen
0 siblings, 1 reply; 24+ messages in thread
From: Eli Zaretskii @ 2021-09-01 12:47 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: 34715, 32736
> From: Lars Ingebrigtsen <larsi@gnus.org>
> Date: Wed, 01 Sep 2021 11:43:34 +0200
> Cc: 34715@debbugs.gnu.org, 32736@debbugs.gnu.org
>
> Drew Adams <drew.adams@oracle.com> writes:
>
> > 1. Add a `clone-frame' command such as this one, which is similar to
> > what I've been using:
> >
> > (defun clone-frame (&optional frame no-clone)
>
> I've now added this to Emacs 28 (with some trivial changes) -- bound to
> `C-x 5 c'.
Did you try that command in a -nw session? It has some bug with
faces.
^ permalink raw reply [flat|nested] 24+ messages in thread
* bug#32736: bug#34715: bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default
2021-09-01 12:47 ` bug#34715: " Eli Zaretskii
@ 2021-09-01 12:53 ` Lars Ingebrigtsen
2021-09-01 13:38 ` Eli Zaretskii
0 siblings, 1 reply; 24+ messages in thread
From: Lars Ingebrigtsen @ 2021-09-01 12:53 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 34715, 32736
Eli Zaretskii <eliz@gnu.org> writes:
> Did you try that command in a -nw session? It has some bug with
> faces.
Nope; didn't try it with -nw, but I see the problem. Any idea what's
causing that?
Here's frame-parameters in the initial frame:
((buried-buffer-list)
(buffer-list #<buffer *scratch*> #<buffer *Minibuf-1*>)
(name . "F1")
(tab-bar-lines . 0)
(menu-bar-lines . 1)
(unsplittable)
(modeline . t)
(width . 80)
(height . 23)
(font . "tty")
(background-color . "unspecified-bg")
(foreground-color . "unspecified-fg")
(scroll-bar-foreground . "white")
(cursor-color . "white")
(background-mode . dark)
(display-type . color)
(tty . "/dev/tty")
(tty-type . "xterm-256color")
(minibuffer . t))
And here's the one after C-x 5 c:
((tab-bar-lines . 0)
(menu-bar-lines . 1)
(buried-buffer-list #<buffer *Completions*>)
(buffer-list #<buffer *scratch*> #<buffer *Minibuf-1*>)
(unsplittable)
(modeline . t)
(width . 80)
(height . 23)
(font . "tty")
(background-color . "unspecified-bg")
(foreground-color . "unspecified-fg")
(name . "F2")
(minibuffer . t))
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 24+ messages in thread
* bug#32736: bug#34715: bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default
2021-09-01 12:53 ` bug#32736: " Lars Ingebrigtsen
@ 2021-09-01 13:38 ` Eli Zaretskii
2021-09-01 13:40 ` Lars Ingebrigtsen
0 siblings, 1 reply; 24+ messages in thread
From: Eli Zaretskii @ 2021-09-01 13:38 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: 34715, 32736
> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: drew.adams@oracle.com, 34715@debbugs.gnu.org, 32736@debbugs.gnu.org
> Date: Wed, 01 Sep 2021 14:53:05 +0200
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
> > Did you try that command in a -nw session? It has some bug with
> > faces.
>
> Nope; didn't try it with -nw, but I see the problem. Any idea what's
> causing that?
There are error messages in *Messages* that could give a clue; did you
see them? (No, I didn't yet think about that more than 3 sec, so have
no ideas yet.)
^ permalink raw reply [flat|nested] 24+ messages in thread
* bug#32736: bug#34715: bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default
2021-09-01 13:38 ` Eli Zaretskii
@ 2021-09-01 13:40 ` Lars Ingebrigtsen
2021-09-01 13:41 ` Lars Ingebrigtsen
0 siblings, 1 reply; 24+ messages in thread
From: Lars Ingebrigtsen @ 2021-09-01 13:40 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 34715, 32736
Eli Zaretskii <eliz@gnu.org> writes:
> There are error messages in *Messages* that could give a clue; did you
> see them? (No, I didn't yet think about that more than 3 sec, so have
> no ideas yet.)
Ah, didn't notice the messages:
Invalid face reference: font-lock-comment-delimiter-face
Invalid face reference: font-lock-comment-face
Invalid face reference: font-lock-comment-delimiter-face
Invalid face reference: font-lock-comment-face
Invalid face reference: font-lock-comment-delimiter-face
Invalid face reference: font-lock-comment-face
Invalid face reference: font-lock-comment-delimiter-face
Invalid face reference: font-lock-comment-face
Invalid face reference: mode-line-buffer-id
Invalid face reference: minibuffer-prompt [7 times]
Invalid face reference: mode-line-buffer-id [2 times]
So basically all the fonts are gone? Well, that's a clue; I'll try to
debug...
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 24+ messages in thread
* bug#32736: bug#34715: bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default
2021-09-01 13:40 ` Lars Ingebrigtsen
@ 2021-09-01 13:41 ` Lars Ingebrigtsen
2021-09-01 13:55 ` Lars Ingebrigtsen
0 siblings, 1 reply; 24+ messages in thread
From: Lars Ingebrigtsen @ 2021-09-01 13:41 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 34715, 32736
Lars Ingebrigtsen <larsi@gnus.org> writes:
> So basically all the fonts are gone? Well, that's a clue; I'll try to
> debug...
(I mean faces.)
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 24+ messages in thread
* bug#32736: bug#34715: bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default
2021-09-01 13:41 ` Lars Ingebrigtsen
@ 2021-09-01 13:55 ` Lars Ingebrigtsen
2021-09-01 14:11 ` Eli Zaretskii
0 siblings, 1 reply; 24+ messages in thread
From: Lars Ingebrigtsen @ 2021-09-01 13:55 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 34715, 32736
If I filter out the `name' and `background-color' elements, then it
works. I can kinda see the first one, but...
Hm... no, it's `background-color' in combination with something else;
just background-color works fine.
I wonder whether this is points to a bug somewhere in the tty frame
mechanism...
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 24+ messages in thread
* bug#32736: bug#34715: bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default
2021-09-01 13:55 ` Lars Ingebrigtsen
@ 2021-09-01 14:11 ` Eli Zaretskii
2021-09-01 14:18 ` Lars Ingebrigtsen
0 siblings, 1 reply; 24+ messages in thread
From: Eli Zaretskii @ 2021-09-01 14:11 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: 34715, 32736
> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: 34715@debbugs.gnu.org, 32736@debbugs.gnu.org
> Date: Wed, 01 Sep 2021 15:55:29 +0200
>
> If I filter out the `name' and `background-color' elements, then it
> works. I can kinda see the first one, but...
>
> Hm... no, it's `background-color' in combination with something else;
> just background-color works fine.
>
> I wonder whether this is points to a bug somewhere in the tty frame
> mechanism...
If the problem is background-color, why does redisplay complain about
faces saying they are *invalid*? I could understand if it said it
cannot load some color, but why "invalid face"?
The only funky thing about background-color on TTY I can think of is
the unspecified-bg thingy.
^ permalink raw reply [flat|nested] 24+ messages in thread
* bug#32736: bug#34715: bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default
2021-09-01 14:11 ` Eli Zaretskii
@ 2021-09-01 14:18 ` Lars Ingebrigtsen
2021-09-01 14:28 ` bug#34715: " Lars Ingebrigtsen
2021-09-01 15:57 ` Eli Zaretskii
0 siblings, 2 replies; 24+ messages in thread
From: Lars Ingebrigtsen @ 2021-09-01 14:18 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 34715, 32736
Eli Zaretskii <eliz@gnu.org> writes:
> If the problem is background-color, why does redisplay complain about
> faces saying they are *invalid*? I could understand if it said it
> cannot load some color, but why "invalid face"?
>
> The only funky thing about background-color on TTY I can think of is
> the unspecified-bg thingy.
The following is the minimal case for reproduction here:
(let ((default-frame-alist
'((background-color . "red"))))
(make-frame))
This reliably makes all the faces go AWOL on the new frame. (It doesn't
matter what the colour is.)
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 24+ messages in thread
* bug#34715: bug#32736: bug#34715: bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default
2021-09-01 14:18 ` Lars Ingebrigtsen
@ 2021-09-01 14:28 ` Lars Ingebrigtsen
2021-09-01 15:57 ` Eli Zaretskii
1 sibling, 0 replies; 24+ messages in thread
From: Lars Ingebrigtsen @ 2021-09-01 14:28 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 34715, 32736
Lars Ingebrigtsen <larsi@gnus.org> writes:
> (let ((default-frame-alist
> '((background-color . "red"))))
> (make-frame))
>
> This reliably makes all the faces go AWOL on the new frame. (It doesn't
> matter what the colour is.)
And it is indeed the problem. If I remove this:
if (EQ (prop, Qforeground_color)
|| EQ (prop, Qbackground_color))
update_face_from_frame_parameter (f, prop, val);
Then the faces aren't destroyed... So the bug is in
update_face_from_frame_parameter somewhere, I think.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 24+ messages in thread
* bug#34715: bug#32736: bug#34715: bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default
2021-09-01 14:18 ` Lars Ingebrigtsen
2021-09-01 14:28 ` bug#34715: " Lars Ingebrigtsen
@ 2021-09-01 15:57 ` Eli Zaretskii
2021-09-02 7:44 ` Lars Ingebrigtsen
1 sibling, 1 reply; 24+ messages in thread
From: Eli Zaretskii @ 2021-09-01 15:57 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: 34715, 32736
> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: 34715@debbugs.gnu.org, 32736@debbugs.gnu.org
> Date: Wed, 01 Sep 2021 16:18:13 +0200
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
> > If the problem is background-color, why does redisplay complain about
> > faces saying they are *invalid*? I could understand if it said it
> > cannot load some color, but why "invalid face"?
> >
> > The only funky thing about background-color on TTY I can think of is
> > the unspecified-bg thingy.
>
> The following is the minimal case for reproduction here:
>
> (let ((default-frame-alist
> '((background-color . "red"))))
> (make-frame))
>
> This reliably makes all the faces go AWOL on the new frame. (It doesn't
> matter what the colour is.)
Shouldn't we copy the parameters alist? Maybe even deep-copy? And
faces are supposed to be frame-local, so maybe faces also need to be
copied? Otherwise, you are basically manipulating faces that don't
"belong" to the frame, no? And likewise with frame's parameters
alist, I think.
^ permalink raw reply [flat|nested] 24+ messages in thread
* bug#34715: bug#32736: bug#34715: bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default
2021-09-01 15:57 ` Eli Zaretskii
@ 2021-09-02 7:44 ` Lars Ingebrigtsen
2021-09-02 7:51 ` Eli Zaretskii
0 siblings, 1 reply; 24+ messages in thread
From: Lars Ingebrigtsen @ 2021-09-02 7:44 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 34715, 32736
Eli Zaretskii <eliz@gnu.org> writes:
>> The following is the minimal case for reproduction here:
>>
>> (let ((default-frame-alist
>> '((background-color . "red"))))
>> (make-frame))
>>
>> This reliably makes all the faces go AWOL on the new frame. (It doesn't
>> matter what the colour is.)
>
> Shouldn't we copy the parameters alist? Maybe even deep-copy?
Do you mean in this particular test case or in `clone-frame'? If it's
the latter, the list we get is fresh (but not very deep).
If it's this particular test case, then I don't understand what you mean.
> And faces are supposed to be frame-local, so maybe faces also need to
> be copied? Otherwise, you are basically manipulating faces that don't
> "belong" to the frame, no? And likewise with frame's parameters
> alist, I think.
Anyway, debugging further shows that the problem seems to be in
`frame-set-background-mode', but I've yet to isolate what exactly is
triggering the bug.
(dolist (face (face-list))
(and (not (get face 'face-override-spec))
[...]
(face-spec-match-p face
(face-user-default-spec face)
frame)))
(push face locally-modified-faces)))
;; Now change to the new frame parameters
(modify-frame-parameters frame params)
;; For all unmodified named faces, choose face specs
;; matching the new frame parameters.
(dolist (face (face-list))
(unless (memq face locally-modified-faces)
(face-spec-recalc face frame)))))))))
The face-spec-recalc messes up the face... but so does the call to
face-spec-match-p, apparently?
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 24+ messages in thread
* bug#32736: bug#34715: bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default
2021-09-02 7:44 ` Lars Ingebrigtsen
@ 2021-09-02 7:51 ` Eli Zaretskii
2021-09-02 8:01 ` bug#34715: " Lars Ingebrigtsen
0 siblings, 1 reply; 24+ messages in thread
From: Eli Zaretskii @ 2021-09-02 7:51 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: 34715, 32736
> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: 34715@debbugs.gnu.org, 32736@debbugs.gnu.org
> Date: Thu, 02 Sep 2021 09:44:24 +0200
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
> > Shouldn't we copy the parameters alist? Maybe even deep-copy?
>
> Do you mean in this particular test case or in `clone-frame'? If it's
> the latter, the list we get is fresh (but not very deep).
You mean, we get a fresh list because of the call to seq-filter?
(Which btw means we now need to preload seq.el?) Is that guaranteed
to return a copy of the original alist?
And the faces aren't copied, I think, they reference the same faces
the original frame had.
^ permalink raw reply [flat|nested] 24+ messages in thread
* bug#34715: bug#32736: bug#34715: bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default
2021-09-02 7:51 ` Eli Zaretskii
@ 2021-09-02 8:01 ` Lars Ingebrigtsen
2021-09-02 8:19 ` Eli Zaretskii
0 siblings, 1 reply; 24+ messages in thread
From: Lars Ingebrigtsen @ 2021-09-02 8:01 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 34715, 32736
Eli Zaretskii <eliz@gnu.org> writes:
> You mean, we get a fresh list because of the call to seq-filter?
No, because of this:
DEFUN ("frame-parameters", Fframe_parameters, Sframe_parameters, 0, 1, 0,
doc: /* Return the parameters-alist of frame FRAME.
[...]
alist = Fcopy_alist (f->param_alist);
> (Which btw means we now need to preload seq.el?)
No, it's autoloaded.
> And the faces aren't copied, I think, they reference the same faces
> the original frame had.
Right -- I don't really know how the face/frame stuff actually works.
If it was a very general problem, then surely we'd stumble across this
whenever we make a new frame. But the bug seems to manifest only on
terminal frames -- when we change the background mode.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 24+ messages in thread
* bug#34715: bug#32736: bug#34715: bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default
2021-09-02 8:01 ` bug#34715: " Lars Ingebrigtsen
@ 2021-09-02 8:19 ` Eli Zaretskii
2021-09-02 8:57 ` Lars Ingebrigtsen
0 siblings, 1 reply; 24+ messages in thread
From: Eli Zaretskii @ 2021-09-02 8:19 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: 34715, 32736
> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: 34715@debbugs.gnu.org, 32736@debbugs.gnu.org
> Date: Thu, 02 Sep 2021 10:01:27 +0200
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
> > You mean, we get a fresh list because of the call to seq-filter?
>
> No, because of this:
>
> DEFUN ("frame-parameters", Fframe_parameters, Sframe_parameters, 0, 1, 0,
> doc: /* Return the parameters-alist of frame FRAME.
>
> [...]
> alist = Fcopy_alist (f->param_alist);
Ah, right.
> > (Which btw means we now need to preload seq.el?)
>
> No, it's autoloaded.
But frame.el is preloaded, so won't that get in the way during
bootstrap?
> > And the faces aren't copied, I think, they reference the same faces
> > the original frame had.
>
> Right -- I don't really know how the face/frame stuff actually works.
> If it was a very general problem, then surely we'd stumble across this
> whenever we make a new frame. But the bug seems to manifest only on
> terminal frames -- when we change the background mode.
That's true, but it doesn't mean we don't have a deeper problem.
^ permalink raw reply [flat|nested] 24+ messages in thread
* bug#32736: bug#34715: bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default
2021-09-02 8:19 ` Eli Zaretskii
@ 2021-09-02 8:57 ` Lars Ingebrigtsen
2021-09-02 12:03 ` Eli Zaretskii
0 siblings, 1 reply; 24+ messages in thread
From: Lars Ingebrigtsen @ 2021-09-02 8:57 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 34715, 32736
Eli Zaretskii <eliz@gnu.org> writes:
>> > (Which btw means we now need to preload seq.el?)
>>
>> No, it's autoloaded.
>
> But frame.el is preloaded, so won't that get in the way during
> bootstrap?
It won't get loaded until the user uses the `C-x 5 c' command.
>> > And the faces aren't copied, I think, they reference the same faces
>> > the original frame had.
>>
>> Right -- I don't really know how the face/frame stuff actually works.
>> If it was a very general problem, then surely we'd stumble across this
>> whenever we make a new frame. But the bug seems to manifest only on
>> terminal frames -- when we change the background mode.
>
> That's true, but it doesn't mean we don't have a deeper problem.
True. I'll continue to debug this, but won't have time today, I
think... If you want to have a look meanwhile, please go ahead. :-)
It reproduces easily, and the bug seems to be caused by something called
by `frame-set-background-mode', but that may or may not be correct
(perhaps it's just doing something that triggers the real problem caused
somewhere else).
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 24+ messages in thread
* bug#32736: bug#34715: bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default
2021-09-02 8:57 ` Lars Ingebrigtsen
@ 2021-09-02 12:03 ` Eli Zaretskii
2021-09-02 16:05 ` bug#34715: " Lars Ingebrigtsen
0 siblings, 1 reply; 24+ messages in thread
From: Eli Zaretskii @ 2021-09-02 12:03 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: 34715, 32736
> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: 34715@debbugs.gnu.org, 32736@debbugs.gnu.org
> Date: Thu, 02 Sep 2021 10:57:24 +0200
>
> >> > And the faces aren't copied, I think, they reference the same faces
> >> > the original frame had.
> >>
> >> Right -- I don't really know how the face/frame stuff actually works.
> >> If it was a very general problem, then surely we'd stumble across this
> >> whenever we make a new frame. But the bug seems to manifest only on
> >> terminal frames -- when we change the background mode.
> >
> > That's true, but it doesn't mean we don't have a deeper problem.
>
> True. I'll continue to debug this, but won't have time today, I
> think... If you want to have a look meanwhile, please go ahead. :-)
> It reproduces easily, and the bug seems to be caused by something called
> by `frame-set-background-mode', but that may or may not be correct
> (perhaps it's just doing something that triggers the real problem caused
> somewhere else).
I think I fixed this. The problem was indeed with letting the new
frame manipulate a separate set of faces: we arrange for that in
make-terminal-frame, but we were doing that a tad too late.
^ permalink raw reply [flat|nested] 24+ messages in thread
* bug#34715: bug#32736: bug#34715: bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default
2021-09-02 12:03 ` Eli Zaretskii
@ 2021-09-02 16:05 ` Lars Ingebrigtsen
0 siblings, 0 replies; 24+ messages in thread
From: Lars Ingebrigtsen @ 2021-09-02 16:05 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 34715, 32736
Eli Zaretskii <eliz@gnu.org> writes:
> I think I fixed this. The problem was indeed with letting the new
> frame manipulate a separate set of faces: we arrange for that in
> make-terminal-frame, but we were doing that a tad too late.
Ah, I see! And I can confirm that this fixes the problem here, too.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 24+ messages in thread
[parent not found: <<17bef02b-7dd4-4086-828f-59488a836ac1@default>]
end of thread, other threads:[~2021-09-02 16:05 UTC | newest]
Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-03-03 0:47 bug#34715: 26.1; (1) Add `clone-frame', (2) bind it to `C-x 5 2' Drew Adams
2019-03-04 16:12 ` Eli Zaretskii
2019-03-08 9:46 ` Eli Zaretskii
2021-09-01 9:43 ` bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default Lars Ingebrigtsen
2021-09-01 12:47 ` bug#34715: " Eli Zaretskii
2021-09-01 12:53 ` bug#32736: " Lars Ingebrigtsen
2021-09-01 13:38 ` Eli Zaretskii
2021-09-01 13:40 ` Lars Ingebrigtsen
2021-09-01 13:41 ` Lars Ingebrigtsen
2021-09-01 13:55 ` Lars Ingebrigtsen
2021-09-01 14:11 ` Eli Zaretskii
2021-09-01 14:18 ` Lars Ingebrigtsen
2021-09-01 14:28 ` bug#34715: " Lars Ingebrigtsen
2021-09-01 15:57 ` Eli Zaretskii
2021-09-02 7:44 ` Lars Ingebrigtsen
2021-09-02 7:51 ` Eli Zaretskii
2021-09-02 8:01 ` bug#34715: " Lars Ingebrigtsen
2021-09-02 8:19 ` Eli Zaretskii
2021-09-02 8:57 ` Lars Ingebrigtsen
2021-09-02 12:03 ` Eli Zaretskii
2021-09-02 16:05 ` bug#34715: " Lars Ingebrigtsen
[not found] <<17bef02b-7dd4-4086-828f-59488a836ac1@default>
[not found] ` <<83sgw2ehzu.fsf@gnu.org>
2019-03-04 17:25 ` bug#34715: 26.1; (1) Add `clone-frame', (2) bind it to `C-x 5 2' Drew Adams
2019-03-04 18:14 ` Eli Zaretskii
2019-03-30 21:58 ` Juri Linkov
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).