From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Arthur Miller Newsgroups: gmane.emacs.bugs Subject: bug#25408: Remove Decorations Around Emacs Frame (Windows OS) Date: Wed, 11 Jan 2017 08:48:31 +0100 Message-ID: References: <587499E6.9030205@gmx.at> <838tqietdj.fsf@gnu.org> <587522DB.2050105@gmx.at> <831swaepnc.fsf@gnu.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=001a11443f12c48c0b0545ccd340 X-Trace: blaine.gmane.org 1484120971 31898 195.159.176.226 (11 Jan 2017 07:49:31 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 11 Jan 2017 07:49:31 +0000 (UTC) Cc: 25408@debbugs.gnu.org To: =?UTF-8?Q?Cl=C3=A9ment?= Pit--Claudel Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Jan 11 08:49:27 2017 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRDef-0005yN-7j for geb-bug-gnu-emacs@m.gmane.org; Wed, 11 Jan 2017 08:49:09 +0100 Original-Received: from localhost ([::1]:52029 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRDej-000601-QR for geb-bug-gnu-emacs@m.gmane.org; Wed, 11 Jan 2017 02:49:13 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:41045) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cRDec-0005zk-UW for bug-gnu-emacs@gnu.org; Wed, 11 Jan 2017 02:49:08 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cRDeY-00089e-5D for bug-gnu-emacs@gnu.org; Wed, 11 Jan 2017 02:49:06 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:33935) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cRDeY-00089S-0m for bug-gnu-emacs@gnu.org; Wed, 11 Jan 2017 02:49:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1cRDeX-0006np-NK for bug-gnu-emacs@gnu.org; Wed, 11 Jan 2017 02:49:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Arthur Miller Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 11 Jan 2017 07:49:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 25408 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 25408-submit@debbugs.gnu.org id=B25408.148412092026119 (code B ref 25408); Wed, 11 Jan 2017 07:49:01 +0000 Original-Received: (at 25408) by debbugs.gnu.org; 11 Jan 2017 07:48:40 +0000 Original-Received: from localhost ([127.0.0.1]:49334 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRDeB-0006nD-E3 for submit@debbugs.gnu.org; Wed, 11 Jan 2017 02:48:39 -0500 Original-Received: from mail-wm0-f47.google.com ([74.125.82.47]:38280) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cRDe9-0006n0-Ot for 25408@debbugs.gnu.org; Wed, 11 Jan 2017 02:48:38 -0500 Original-Received: by mail-wm0-f47.google.com with SMTP id r144so19523372wme.1 for <25408@debbugs.gnu.org>; Tue, 10 Jan 2017 23:48:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=JmCwO2cI/1n+kXpfCyIkY5vl/laXgIqHnhmiRhXq+1s=; b=PtkIq2iMiCqWl6sAK0nYqydxBrmCEzEOjtj395k7UffxGjU/q//LkxGVL0a88aJDMc XsqTV913gLTp78vCfXWgIfFT4OgXS4WFazJCpjh6PORAxiX/3laEiTgi3cD6REoHFk0j Z5UAMKV8GWJ65ADYCueDPhmeB+otE2J+a2xoU3EMokLv/J22TFyc/8LgFR6IoLu0nBUu zDKy2rd4DSDbF3fJgujPwBHNT436c9ei31x3L049tbf6QKreuBHhEc1VCnIl5DpcFKeD a/CI6GQPQMAqoAdRitpz49sDLZEPApM42NKCr7zAxZPcOwB7Tr1RIrmMxgZczlAyaxcJ rXOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=JmCwO2cI/1n+kXpfCyIkY5vl/laXgIqHnhmiRhXq+1s=; b=iz6TdpkWOKvEWoVcTOFcgLZ+it1dJ/IyAUVCx/Fz0RwD5HwiJk18FL1rJ3+LB5Vya1 96Nqs6puU93D/iNufyTjQFJVVk69WfzIjZr8oWxQAuRgQQDSdxe8OkUMA8ZWuuhVSmXo jrN8mZgV7n8ifFArrekFhaB00BXVaSRDSV7IuEoH86UD2paLHQ+4ezYCUJzmXO1dD731 77gvacYRUUq8ZTpYzzD5SfJrmiRA9qhpXkvcwD67kL8Myyr+EnNi2GcgVHcF6O4JhMsE I4QyTZUE7kMQBGD/s1JllH8N08w8MXF1CVapP5CkgyOF6u4QFRC3b/J9OJdup14zaCAr nZ5w== X-Gm-Message-State: AIkVDXLkgyQW7c3g7av8erm0IkMUNDlsBAT4/g2qXKLL8Ma8w+9xzs+GEwxG3mxIVYZLtyFWKRBv27OVD4yW4w== X-Received: by 10.28.138.79 with SMTP id m76mr3824199wmd.2.1484120912070; Tue, 10 Jan 2017 23:48:32 -0800 (PST) Original-Received: by 10.194.169.98 with HTTP; Tue, 10 Jan 2017 23:48:31 -0800 (PST) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:127986 Archived-At: --001a11443f12c48c0b0545ccd340 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable There is a slightly cosmetic issue with above function. When one switches back on decorations, the frame will not resize properly and minibuffer will be not visible. It's there but just covered by frame. Just resizing emacs framefixes it. Adding call to PostMessage(hwnd, WM_SIZE,0,0) in Martins function fixes it. void x_set_undecorated (struct frame *f, Lisp_Object new_value, Lisp_Object old_value) { HWND hwnd =3D FRAME_W32_WINDOW (f); DWORD dwStyle =3D GetWindowLong (hwnd, GWL_STYLE); /*Lisp_Object border_width =3D Fcdr (Fassq (Qborder_width, f->param_alist));*/ /*Lisp_Object undecorated =3D Fcdr (Fassq (Qundecorated, f->param_alist))= ;*/ block_input (); if (!NILP (new_value) && !FRAME_UNDECORATED (f)) { dwStyle =3D (dwStyle & ~WS_THICKFRAME & ~WS_CAPTION); SetWindowLong (hwnd, GWL_STYLE, dwStyle); SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED); FRAME_UNDECORATED (f) =3D true; } else if (!NILP (new_value) && FRAME_UNDECORATED (f)) { SetWindowLong (hwnd, GWL_STYLE, dwStyle | WS_THICKFRAME | WS_CAPTION | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU); SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED); PostMessage(hwnd, WM_SIZE,0,0); FRAME_UNDECORATED (f) =3D false; } unblock_input (); } 2017-01-11 8:24 GMT+01:00 Arthur Miller : > I appologize, I was too fast to answer, I made a bad call from > modify-frame-parameters > when I tested it. It works like a charm as you say it in english. I have > also changed > the else-if statement in Martins method to else if (!NILP (new_value) && > FRAME_UNDECORATED (f)) > (check for !NILP) so I can switch back decorations. It works. Thanks all, > it was great > exercise to learn a bit of emacs internals and to make a simple hack. > > 2017-01-11 8:08 GMT+01:00 Arthur Miller : > >> "We call it "Losedows" or "Lose OS", because if you use it, you lose >> your freedom. >> >> We're glad if Emacs gives you a taste of freedom, but a taste is >> all it can give you. To escape from Microsoft's power, you need to >> stop using Losedows." >> >> Haha :-) Indeed. >> >> I do run Arch Linux otherwise, but I do some consulting with programming >> databases and GUIs in access & spss and I also play some games >> occasionally, so I still need losedows. I know I could run it in wine an= d >> pass through vga, but I feel a bit too old for that :). >> >> This was a great excursion in Emacs src code. I added above mention >> method to my w32fns.c, added FRAME_DECORATED() macro to frame.h >> a boolean_bf undecorated :1, to frame struct, initiated it to false in >> "make_frame" >> added an entry to frame_parms: {"undecorated", SYMBOL_INDEX >> (Qundecorated)}, >> added connecction to w32_frame_parm_handlers[] to x_set_undecorated at >> same >> place where symbol is declared in frame_parms (last in the list), added = an >> INLINE void fset_undecorated( ... ) to frame.h (not sure if it is >> needed), and now >> I can change my new param with lisp from emacs, but my connection seem >> never to be called. >> >> By the way, I think world is better without borders, so I have modified >> Martin's >> x_set_undecorated to >> >> void >> x_set_undecorated (struct frame *f, Lisp_Object new_value, Lisp_Object >> old_value) >> { >> HWND hwnd =3D FRAME_W32_WINDOW (f); >> DWORD dwStyle =3D GetWindowLong (hwnd, GWL_STYLE); >> /*Lisp_Object border_width =3D Fcdr (Fassq (Qborder_width, >> f->param_alist));*/ >> /*Lisp_Object undecorated =3D Fcdr (Fassq (Qundecorated, >> f->param_alist));*/ >> >> block_input (); >> if (!NILP (new_value) && !FRAME_UNDECORATED (f)) >> { >> dwStyle =3D (dwStyle & ~WS_THICKFRAME & ~WS_CAPTION); >> SetWindowLong (hwnd, GWL_STYLE, dwStyle); >> SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, >> SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | >> SWP_NOACTIVATE >> | SWP_FRAMECHANGED); >> FRAME_UNDECORATED (f) =3D true; >> } >> else if (NILP (new_value) && FRAME_UNDECORATED (f)) >> { >> SetWindowLong (hwnd, GWL_STYLE, dwStyle | WS_THICKFRAME | WS_CAPTI= ON >> | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU); >> SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, >> SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | >> SWP_NOACTIVATE >> | SWP_FRAMECHANGED); >> FRAME_UNDECORATED (f) =3D false; >> } >> unblock_input (); >> } >> >> So it should just switch on "undecorated" param and ignore borders (at >> least I hope). I am not sure where do >> I have to make change more to get it to work. >> >> 2017-01-10 21:39 GMT+01:00 Cl=C3=A9ment Pit--Claudel : >> >>> On 2017-01-10 13:27, Eli Zaretskii wrote: >>> > Then I suggest to add this to Emacs. That some wm's ignore it is not >>> > a reason to avoid having the feature for those that don't ignore it. >>> >>> Indeed, it would be wonderful! >>> >>> >> > --001a11443f12c48c0b0545ccd340 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
There is a slightly cosmetic issue with abo= ve function. When one switches back on decorations,
the frame will= not resize properly and minibuffer will be not visible. It's there but= just
covered by frame. Just resizing emacs framefixes it.

Addin= g call to PostMessage(hwnd, WM_SIZE,0,0) in Martins function fixes it.
<= /div>
void
x_set_undecorated (struct frame *= f, Lisp_Object new_value, Lisp_Object old_value)
{
=C2=A0 HWND hwnd =3D FRAME_W32_WINDOW (f);
=C2=A0 DWORD dw= Style =3D GetWindowLong (hwnd, GWL_STYLE);
=C2=A0 /*Lisp_Object b= order_width =3D Fcdr (Fassq (Qborder_width, f->param_alist));*/
=C2= =A0 /*Lisp_Object undecorated =3D Fcdr (Fassq (Qundecorated, f->param_al= ist));*/

=C2=A0 block_input ();
=C2=A0 i= f (!NILP (new_value) && !FRAME_UNDECORATED (f))
=C2=A0=C2=A0=C2= =A0 {
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 dwStyle =3D (dwStyle & ~= WS_THICKFRAME & ~WS_CAPTION);
=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 SetWindowLong (hwnd, GWL_STYLE, dwStyle);
=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0,
=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | = SWP_NOACTIVATE
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | SWP_FRAMECHANGE= D);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FRAME_UNDECORATED (f) =3D true;
= =C2=A0=C2=A0=C2=A0 }
=C2=A0 else if (!NILP (new_value) && FRAME_= UNDECORATED (f))
=C2=A0=C2=A0=C2=A0 {
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 = SetWindowLong (hwnd, GWL_STYLE, dwStyle | WS_THICKFRAME | WS_CAPTION
=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | WS_MAXIMIZEBOX | WS_MINIMIZEBO= X | WS_SYSMENU);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SetWindowPos (hwnd, HWND= _TOP, 0, 0, 0, 0,
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SWP_NOSIZE | S= WP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 | SWP_FRAMECHANGED);
=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 PostMessage(hwnd, WM_SIZE,0,0);
= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FRAME_UNDECORATED (= f) =3D false;
=C2=A0=C2=A0=C2=A0 }
=C2=A0 unblock_input ();
}


2017-01-11 8:24 GMT+01:00 Arthur Miller <arthur.miller.no1@gmai= l.com>:
I appologize, I was too fast to answer, I made a bad call from= modify-frame-parameters
when I tested it. It works like a charm as you= say it in english. I have also changed
the else-if statement in M= artins method to else if (!NILP (new_value) && FRAME_UNDECORATED (f= ))
(check for !NILP) so I can switch back decorations. It works. T= hanks all, it was great
exercise to learn a bit of emacs internal= s and to make a simple hack.

2017-01-11 8:0= 8 GMT+01:00 Arthur Miller <arthur.miller.no1@gmail.com>:
"We call it "Losedows" or = "Lose OS", because if you use it, you lose
your freedom.

We're glad if Emacs gives you a taste of freedom, but a taste is
all it can give you.=C2=A0 To escape from Microsoft's power, you need t= o
stop using Losedows."

Haha :-) Indeed.

I do run Arch Linux otherwise, but I do some consulting with programming=
databases and GUIs in access & spss and I also play some games occasionally, so I still need losedows. I know I could run it in wine and =
pass through vga, but I feel a bit too old for that :).
<= /div>

This was a great excursion in Emacs src code. I added a= bove mention
method to my w32fns.c, added FRAME_DECORATED() macro = to frame.h
a boolean_bf undecorated :1, to frame struct, initiated= it to false in "make_frame"
added an entry to frame_par= ms: {"undecorated",=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 SYMBOL_I= NDEX (Qundecorated)},
added connecction to w32_frame_parm_handlers= [] to x_set_undecorated at same
place where symbol is declared in = frame_parms (last in the list), added an
INLINE void fset_undecorated( .= .. ) to frame.h (not sure if it is needed), and now
I can change my new= param with lisp from emacs, but my connection seem
never to = be called.

By the way, I think world is better without b= orders, so I have modified Martin's
x_set_undecorated to =

void
x_set_undecorated (struct frame *f, Lisp_Object new_v= alue, Lisp_Object old_value)
{
=C2=A0 HWND hwnd =3D FRAM= E_W32_WINDOW (f);
=C2=A0 DWORD dwStyle =3D GetWindowLong (hwnd, GWL_STYL= E);
=C2=A0 /*Lisp_Object border_width =3D Fcdr (Fassq (Qborder_wi= dth, f->param_alist));*/
=C2=A0 /*Lisp_Object undecorated =3D Fcdr (F= assq (Qundecorated, f->param_alist));*/

=C2=A0 block_input = ();
=C2=A0 if (!NILP (new_value) && !FRAME_UNDECORATED (f))
= =C2=A0=C2=A0=C2=A0 {
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 dwStyle =3D (= dwStyle & ~WS_THICKFRAME & ~WS_CAPTION);
=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 SetWindowLong (hwnd, GWL_STYLE, dwStyle);
=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0,
=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP= _NOACTIVATE
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | SWP_FRAMECHANGED);=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FRAME_UNDECORATED (f) =3D true;
=C2= =A0=C2=A0=C2=A0 }
=C2=A0 else if (NILP (new_value) && FRAME_UNDE= CORATED (f))
=C2=A0=C2=A0=C2=A0 {
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SetW= indowLong (hwnd, GWL_STYLE, dwStyle | WS_THICKFRAME | WS_CAPTION
=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | WS_MAXIMIZEBOX | WS_MINIMIZEBOX |= WS_SYSMENU);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SetWindowPos (hwnd, HWND_TO= P, 0, 0, 0, 0,
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SWP_NOSIZE | SWP_= NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 | SWP_FRAMECHANGED);
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FRAME_UNDECOR= ATED (f) =3D false;
=C2=A0=C2=A0=C2=A0 }
=C2=A0 unblock_input ();
= }

So it should just switch on "unde= corated" param and ignore borders (at least I hope). I am not sure whe= re do
I have to make change more to get it to work.

2017-01-10 21:39 GMT+01:00 Cl=C3=A9ment Pit--Claudel <clement.pit@gmail.com>:
On 2017-01-10 13:27, Eli Zaretskii wrote:
> Then I suggest to add this to Emacs.=C2=A0 That some wm's ignore i= t is not
> a reason to avoid having the feature for those that don't ignore i= t.

Indeed, it would be wonderful!




--001a11443f12c48c0b0545ccd340--