From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: Implementing child frames on terminal Date: Tue, 12 Jul 2022 16:19:43 +0300 Message-ID: <83o7xuxyc0.fsf@gnu.org> References: <87czfxu7be.fsf@disroot.org> <874k19tya1.fsf@disroot.org> <83h759lb6f.fsf@gnu.org> <87tu99s860.fsf@disroot.org> <838rqklurd.fsf@gnu.org> <87tu7n10hr.fsf@disroot.org> <87h73mykv6.fsf@yahoo.com> <87h73m20fg.fsf@disroot.org> Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="3128"; mail-complaints-to="usenet@ciao.gmane.io" Cc: luangruo@yahoo.com, monnier@iro.umontreal.ca, emacs-devel@gnu.org, ibluefocus@outlook.com To: Akib Azmain Turja Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Jul 12 15:35:53 2022 Return-path: Envelope-to: ged-emacs-devel@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 1oBG3N-0000WP-GD for ged-emacs-devel@m.gmane-mx.org; Tue, 12 Jul 2022 15:35:53 +0200 Original-Received: from localhost ([::1]:40020 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oBG3L-0001wQ-W5 for ged-emacs-devel@m.gmane-mx.org; Tue, 12 Jul 2022 09:35:52 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:34652) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oBFnv-0003se-7D for emacs-devel@gnu.org; Tue, 12 Jul 2022 09:19:55 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:41712) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oBFnu-0005yZ-P8; Tue, 12 Jul 2022 09:19:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=cBvpG3XYrufGsm8RwhDZF2svGnwQDDXvfnZf5pW3jok=; b=MDSiJSVt4IuY 0HqTx2qHAGZ0uRAqUtS/nX8LGkdD4H0FctKqInL1GHEKZNNytBe7Picj2YmXLOyO8QKyIuRiOOd+L XAVeRzlgbpsbqJtkULGyoA/pPc4W9AzFysaTEvG2ErBI8sHs3DpHWT7SWshQ9RFACRYmSNhVfikET gApPXiLFZNOI4EdltKdYhXSzL10lLr5ZQCiuArD5th7uVrlsC45TO4MOdkAYUuBEE6h+ZoKLQL3k9 moxMDAQ3jjWFabxVEPIiVN5eA7pK3D1RPZVZkbo39k0ApEtOBshXOGuR3DvLULf8nuuVZRH+aRHc2 U+O/f9nxUwkfuQi8amSFhw==; Original-Received: from [87.69.77.57] (port=2795 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oBFnu-0004pN-5S; Tue, 12 Jul 2022 09:19:54 -0400 In-Reply-To: <87h73m20fg.fsf@disroot.org> (message from Akib Azmain Turja on Tue, 12 Jul 2022 14:35:31 +0600) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:292075 Archived-At: > From: Akib Azmain Turja > Cc: Eli Zaretskii , monnier@iro.umontreal.ca, > emacs-devel@gnu.org, ibluefocus@outlook.com > Date: Tue, 12 Jul 2022 14:35:31 +0600 > > > Fixing that (assuming you clip the contents of the child frame to the > > parent) sounds easier than what you propose further on here: > > > >> I think we should somehow render the child frame glyph matrix before > >> processing it's parents. Then we can copy the it's glyph matrix to it's > >> parent's one. And, in case the child frame doesn't cross parent's > >> edges, we can use a floating window (as you suggested) as an > >> optimization (although I don't think we need this optimization, since > >> terminal don't usually have many characters). > > Really? It looks like it would require to modify whole redisplay logic > to make sure whether a glyph is inside edges and write to it only if it > is. Actually, the current redisplay code does this all the time: that's how we know when to continue or truncate a too-long line, or where to wrap a long line under visual-line-mode.