From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.bugs Subject: bug#64596: 30.0.50; On FIXME: in src/buffer.c:1481 (force-mode-line-update) Date: Mon, 17 Jul 2023 10:30:23 +0200 Message-ID: References: <877cr4nez9.fsf@localhost> <83lefj4okb.fsf@gnu.org> <83fs5r3tqv.fsf@gnu.org> <834jm6fppc.fsf@gnu.org> <87a5vyidy6.fsf@localhost> <83sf9qe2ip.fsf@gnu.org> <83a5vxejz6.fsf@gnu.org> <83r0p9b3om.fsf@gnu.org> <83jzv1b152.fsf@gnu.org> <83a5vxas9k.fsf@gnu.org> <877cr1nep6.fsf@localhost> <835y6kbgik.fsf@gnu.org> <682666d3-51f3-9097-1eff-c2c6c6bc5ac4@gmx.at> <83fs5o9r5l.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="31641"; mail-complaints-to="usenet@ciao.gmane.io" Cc: yantar92@posteo.net, monnier@iro.umontreal.ca, 64596@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Jul 17 10:32:13 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qLJeN-0007vc-8n for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 17 Jul 2023 10:32:11 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qLJdq-0004Q9-6E; Mon, 17 Jul 2023 04:31:39 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qLJdH-0004Dz-VW for bug-gnu-emacs@gnu.org; Mon, 17 Jul 2023 04:31:04 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qLJdF-0006ca-Pe for bug-gnu-emacs@gnu.org; Mon, 17 Jul 2023 04:31:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qLJdF-0000Mu-LK for bug-gnu-emacs@gnu.org; Mon, 17 Jul 2023 04:31:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 17 Jul 2023 08:31:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 64596 X-GNU-PR-Package: emacs Original-Received: via spool by 64596-submit@debbugs.gnu.org id=B64596.168958264031552 (code B ref 64596); Mon, 17 Jul 2023 08:31:01 +0000 Original-Received: (at 64596) by debbugs.gnu.org; 17 Jul 2023 08:30:40 +0000 Original-Received: from localhost ([127.0.0.1]:49020 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qLJcu-0008BU-8X for submit@debbugs.gnu.org; Mon, 17 Jul 2023 04:30:40 -0400 Original-Received: from mout.gmx.net ([212.227.17.22]:44757) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qLJcq-0007mW-7o for 64596@debbugs.gnu.org; Mon, 17 Jul 2023 04:30:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.at; s=s31663417; t=1689582625; x=1690187425; i=rudalics@gmx.at; bh=RW3Dfxm+BcU5w8WgAuokLAKH42vd3tkBjuZ17YjU4AU=; h=X-UI-Sender-Class:Date:Subject:To:Cc:References:From:In-Reply-To; b=UrMVDPqqKGfDNbbKdsrTKBUMOGkHUJ5ePZPJPBdCHgfdO4mbYbXigK/XQ/qKXsDr6hhbdnf Lz+WLTiizldrv7GuPUELfiioLxG/2ZE9l8ck4TEQqdZsDvvPfcz5f/cu/t93026akW6ary67I FwO2LM1ihLQy/Zr6Ky/7279y+ccsA6Je76tImkqEqSccxrUgPaFADFd8GaFWupVZgFPTGU2MC 3JzcraqKKiVYU28WvBYMe3dnqiT2Tpx2QsJWL9gZX0oZya42M3Hx34Yhaj/RUvMifq/LTbr+F oxkpHQvKLJQxVVkPXyQ6sMofVty6BLckWSTOi1Yn43VhCIzCqAaQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Original-Received: from [192.168.1.100] ([46.125.249.31]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mxm3K-1q0jXj1zjC-00zJMC; Mon, 17 Jul 2023 10:30:25 +0200 Content-Language: en-US In-Reply-To: <83fs5o9r5l.fsf@gnu.org> X-Provags-ID: V03:K1:g/lqA41Wg46TV5QKcKk0ATukofKczgB1Xlx43QkB5nyIfXDdLGB G+Y1YqYEVypiimZbzKpLAHCKVwAlYInXlhb9GBRbR9RgzdULz4puAO0ZwI8PeFkHrDhIYpa 6RmDD5m8cg0w2CcwY2CoQ9ys9XLF9TBbOdQvZJri/dLrH8UqA5QA5soQh7K64Z+9Xu63Ejw +4yFGS+HCCuXyWghi1epQ== UI-OutboundReport: notjunk:1;M01:P0:B0DGzwH/Mbc=;rWqhcpUfGU1VQxQQdNHGDOdsBJm 5YniWqzIv9suwBXSOE7RTZ5dxkPhhJNw631irX/ONdcXXhsLwNfgeXyuGtAnDdhEls709ZmGG NOF+IrsLLVdr9Kdeik6B+zczNfeasl2+WMSuesSDgIm0MMl7J5URp18TFiiEt0OB/IorzpliJ yLhKn/nNqKYbH6WA81OWrZE44+b4Q5WtVyEeckeW8P1Velj1pLcIO0EvlrLUHqK2oUWAlNMGu +vBoqJJwdHqCG7LonjI8dA2aLmUapRSU+3DqlwGne5D/c3H04l3kiBffvrLl+3FyUch2Xbrw6 nJXUsOkHM3oE9iHOpWWT9Pj6FllTJ5/bLHwBkKomX6nuzTaYZtuqFhLp9oNtjjIlXvZxO9kuZ Y5IEi9TvGnaKZ/ABtOtPF0LYiYvsD87o+IsqhVzUgyRHALEtNrjVArJZERzUf6k1vOMovE/yk d8TyDEBb4VAIpkyN+xlvX4r8fVz0LevrU+IFVgjtxnyLzzN9dXwFr/DlSF3l4TCQxDhxmT4WM ZRrie3KKC2Lq4nr/yeD+c6U8oQ4MOEcm/VvbnN4asYaeSc3T2YG30o8fYW4Qcjry6XhX3aB0S 1xoOZbzSDBLseZdUekHaloRwL4YfknYXvIfO/yau6ysA+TbU2hFasTujP4EIWVryHRAceOhPU dGKZ/+00mdGIpC3NTtVtIqYyt3yv6yRHY1soiC2ogqZGQv6FRgbnDFbvSF9Bo4qiEYOWrq8HO j9UzCxBuUULmqssUSPQjRXN+6vz7UAjS6QarcAaLUun6o8BAwhsELbAxu5t8811WMzArRQoM X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list 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-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:265375 Archived-At: > The information flow is > unidirectional: the functions which change the windows should tell > what they changed, and redisplay will then decide what that requires. > For example, if some windows changed their dimensions, redisplay would > need to know which dimension changed. The window code should have all necessary information at hand (but for the final height of the mode lines) when redisplay starts but would have to know what redisplay wants it to tell. It would be easy to reserve one bit on each window to tell that its width, left scroll bar, left margin, left fringe, body width, right fringe, right margin, right scroll bar or the height, header, tab, mode line, body and scroll bar height changed. And one bit for each of font, line spacing, start and point position and the scrolling statuses of the window. Maybe also one bit for the left and top edge within the frame and the left and top body edge of the window. Once it has been established what redisplay wants to know, it would be easy to transfer practically all notifications currently performed by frame.c to window.c. That is, gui_set_left_fringe would no longer SET_FRAME_GARBAGED because the window code would decide whether the width of any left fringe of any window affected should really change and set the left_fringe_width_changed, the body_width_changed and maybe also the left_body_edge_changed bit accordingly. In addition there would probably be one window_changed bit per window to tell redisplay that one of the bits above changed and one frame_changed bit to tell redisplay that at least one window has its window_changed bit set. Then we probably should try to remove any special treatment of the selected window in this regard, since with all our excursions, code can never tell anyway which window will be the selected one at the time redisplay starts. Finally, redisplay would have to merge in all buffer text and position changes for each window showing that buffer mostly as it does now and separately consider a few frame changes like visibility. Information flow would still be bidirectional for the mode lines: As soon as redisplay has calculated their respective heights and these should change (a rare case), the window code would have to be informed about that, store the new heights, adjust the body height, recalculate scroll bar dimensions and leave it to redisplay to decide whether to calculate mode line heights again to avoid infinite recursion. martin