From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: [Emacs-diffs] master 29d1c72: Introduce new value t for compilation-context-lines to eliminate scrolling Date: Thu, 29 Aug 2019 21:22:06 +0300 Message-ID: <8336hjbzn5.fsf@gnu.org> References: <20190825102322.19558.22771@vcs0.savannah.gnu.org> <20190825102323.5080620CD5@vcs0.savannah.gnu.org> <20190825190637.GE4724@ACM> <838srhghoc.fsf@gnu.org> <20190826162651.GA4137@ACM> <83ef17gaar.fsf@gnu.org> <20190827200520.GC20676@ACM> Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="9286"; mail-complaints-to="usenet@blaine.gmane.org" Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org To: Alan Mackenzie Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Aug 29 20:22:23 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1i3P3u-0002Hd-Eo for ged-emacs-devel@m.gmane.org; Thu, 29 Aug 2019 20:22:22 +0200 Original-Received: from localhost ([::1]:53244 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i3P3s-0001UN-3M for ged-emacs-devel@m.gmane.org; Thu, 29 Aug 2019 14:22:21 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:43699) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i3P3a-0001T2-Ot for emacs-devel@gnu.org; Thu, 29 Aug 2019 14:22:05 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:43627) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1i3P3a-0001zC-8V; Thu, 29 Aug 2019 14:22:02 -0400 Original-Received: from [176.228.60.248] (port=2195 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1i3P3W-0001GS-Pl; Thu, 29 Aug 2019 14:22:00 -0400 In-reply-to: <20190827200520.GC20676@ACM> (message from Alan Mackenzie on Tue, 27 Aug 2019 20:05:20 +0000) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] 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.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:239685 Archived-At: > Date: Tue, 27 Aug 2019 20:05:20 +0000 > Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org > From: Alan Mackenzie > > > > Should I have been aware of this? > > > What is "this" in this context? The display margins or how to use > > them with overlays? > > I think, more the first of these. > > > > Somehow, in the elisp manual, it seems buried under several levels > > > of chapters, sections, and sub-sections. The subsection describing the display margins is part of the section which documents the 'display' properties in general, so I think it's in a correct and logical place. Where would you expect it to be mentioned, not to be "buried"? > I found implementing these margins (see patch in separate post) to be > particularly difficult. There is no complete example of how to do this > on the "Display Margins" elisp manual page. Feel free to provide an example. The simplest way, one that doesn't use an overlay string, is just setting a display property on buffer text, something that hardly needs an example. > There, the word "property" is used, rather than "text property or > overlay property", leaving me uncertain of whether I could have > implemented this "=>" in the margin solely with overlays. This is a subsection of a section about 'display' property, which is only available for text in buffers and Lisp strings, not for overlays. One should read the manual in the context of the parent sections. > I was uncertain, right up till near when I had the thing ready, > whether the variables implementing this need to be buffer local or > not. Which variables? And why did you think they need to be buffer-local? Text properties already localize their values enough, so there should be no need for anything buffer-local. That's in general, not only for the display properties. > Also, the setup seems wierd. Why isn't there a direct `margin' overlay > property, much the same way there's a `before-string' overlay property? Because no one wrote the code to do that. This is a display property, so you can put it on buffer text or on a Lisp string, in particular on a Lisp string that is before- or after-string of an overlay. > Instead, what we have is a required "dummy" `before-string', which is > supplanted by a `display' text property on it. It just seems a strange > way of implementing it. This certainly doesn't promote easy > understanding. IMHO, of course. Display properties (really, any "replacing" properties) are tricky in implementation, you should look up the code some day. Then you will maybe understand why no one ever wanted to add one more such facility. The way of using the display properties to display in the margins was originally implemented only for buffer text; placing it on overlay strings had bugs until Emacs 24 or 25, I think. In any case, the ELisp manual describes this possibility, precisely because it is not easy to come up on one's own. So I think we are OK here, documentation-wise.