From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: Emacs canvas support Date: Wed, 29 Apr 2020 19:54:02 +0300 Message-ID: <83lfmexmfp.fsf@gnu.org> References: <875zdikdge.fsf.ref@yahoo.com> <875zdikdge.fsf@yahoo.com> <834kt21yyo.fsf@gnu.org> <87zhau1uog.fsf@yahoo.com> <83sggmzjp8.fsf@gnu.org> <87mu6u1tii.fsf@yahoo.com> <83o8raziis.fsf@gnu.org> <877dxy1smz.fsf@yahoo.com> <87o8rae0ao.fsf@randomsample> Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="15922"; mail-complaints-to="usenet@ciao.gmane.io" Cc: luangruo@yahoo.com, emacs-devel@gnu.org To: David Engster Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Apr 29 18:56:01 2020 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 1jTq09-00042V-D7 for ged-emacs-devel@m.gmane-mx.org; Wed, 29 Apr 2020 18:56:01 +0200 Original-Received: from localhost ([::1]:54158 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jTq08-0000zB-Bt for ged-emacs-devel@m.gmane-mx.org; Wed, 29 Apr 2020 12:56:00 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:50730) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jTpyX-00006t-RJ for emacs-devel@gnu.org; Wed, 29 Apr 2020 12:55:15 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:59193) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jTpyX-0007UI-64; Wed, 29 Apr 2020 12:54:21 -0400 Original-Received: from [176.228.60.248] (port=4916 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1jTpyW-00086k-Gh; Wed, 29 Apr 2020 12:54:21 -0400 In-Reply-To: <87o8rae0ao.fsf@randomsample> (message from David Engster on Wed, 29 Apr 2020 18:14:55 +0200) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 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:248163 Archived-At: > From: David Engster > Cc: Eli Zaretskii , emacs-devel@gnu.org > Date: Wed, 29 Apr 2020 18:14:55 +0200 > > IMHO, What would be much more exciting, is if you could draw directly > over normal text. This would enable a whole new set of > possibilities. For instance, I always liked visual diff tools like > 'Meld' or 'Code Compare', but I don't see how you could do this with > Emacs. Or things like proper indentation guides, or widgets inside text > for code folding. Yes, those can be done in Emacs today, but it is very > difficult to get right and often not really satisfactory (weird > interactions between packages, too slow, etc.). AFAIU, Meld seems to draw the graphics _between_ windows, and only highlights the source lines with background colors. I think we can do that if we use an extra window in-between the two being compared, and put images in that extra window to show the graphical description of the changes between the two versions. Drawing over normal text, if we don't want to redesign the entire display engine, needs some new kind of "display element" ( a sibling to "character", "image", "stretch", etc.), one that doesn't necessarily have any effect on the metrics of the screen lines it is drawn upon. I'm not sure I have a clear idea about what features such a drawing will need to support, but it could be possible to add such an element with not too much effort. Would someone want to come up with a reasonable list of requirements for such a feature?