From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: storm@cua.dk (Kim F. Storm) Newsgroups: gmane.emacs.devel Subject: Re: Propertizing the minor-mode-alist Date: Fri, 17 Sep 2004 23:52:29 +0200 Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Message-ID: References: <1095335866.7357.83.camel@pineapple.bkk.thaiopensource.com> <1095388341.7357.93.camel@pineapple.bkk.thaiopensource.com> NNTP-Posting-Host: deer.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: sea.gmane.org 1095457996 13945 80.91.229.6 (17 Sep 2004 21:53:16 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Fri, 17 Sep 2004 21:53:16 +0000 (UTC) Cc: "emacs-devel@gnu.org" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Sep 17 23:53:00 2004 Return-path: Original-Received: from lists.gnu.org ([199.232.76.165]) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1C8Qf6-0006eT-00 for ; Fri, 17 Sep 2004 23:53:00 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1C8Qkq-0001Fs-A0 for ged-emacs-devel@m.gmane.org; Fri, 17 Sep 2004 17:58:56 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1C8Qkk-0001Fm-BH for emacs-devel@gnu.org; Fri, 17 Sep 2004 17:58:50 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1C8Qkj-0001Fa-On for emacs-devel@gnu.org; Fri, 17 Sep 2004 17:58:50 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1C8Qkj-0001FX-Kt for emacs-devel@gnu.org; Fri, 17 Sep 2004 17:58:49 -0400 Original-Received: from [195.41.46.235] (helo=pfepa.post.tele.dk) by monty-python.gnu.org with esmtp (Exim 4.34) id 1C8Qed-000547-9n for emacs-devel@gnu.org; Fri, 17 Sep 2004 17:52:31 -0400 Original-Received: from kfs-l.imdomain.dk.cua.dk (0x503e2644.bynxx3.adsl-dhcp.tele.dk [80.62.38.68]) by pfepa.post.tele.dk (Postfix) with SMTP id 1CAA047FE82; Fri, 17 Sep 2004 23:52:27 +0200 (CEST) Original-To: James Clark In-Reply-To: <1095388341.7357.93.camel@pineapple.bkk.thaiopensource.com> (James Clark's message of "Fri, 17 Sep 2004 09:32:22 +0700") User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3.50 (gnu/linux) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 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 Xref: main.gmane.org gmane.emacs.devel:27202 X-Report-Spam: http://spam.gmane.org/gmane.emacs.devel:27202 Hi James, I see you have signed legal papers for specific contributions to emacs, but I cannot find a general assignment that covers past and future changes. Combined with your other tiny patches that are already installed in emacs, I think we need such legal papers before we can install further patches from you. But I may be mistaken -- Richard? James Clark writes: > On Thu, 2004-09-16 at 21:00, Stefan wrote: >> > Perhaps there could be a new keyword :propertize-default that changes >> > the text properties of only those characters in the string that do not >> > already have a value for any of the specified properties. Or maybe this >> > should be the behavior of :propertize. >> >> I think it makes sense to change the behavior of `:propertize' here. > > It turns out that the existing code already tries to merge the existing > properties of the string with the properties specified in :propertize, > but it doesn't work in this case for two reasons: > > - the code gets the existing properties just by looking at the first > character of the string; in my case the first character is a space which > doesn't have any properties, i.e. my code does > > (concat " " > (propertize "Invalid" > 'help-echo "mouse-1: go to first error" > 'local-map (make-mode-line-mouse-map > 'mouse-1 > 'rng-mouse-first-error))) > > - the code gives the new properties priority over the existing > properties > > Attached is a patch that > > - when the first character has no properties, gets the properties from > the last character; > > - gives priority to the existing properties over the new properties. > > James > -- > To send me mail, replace auth-only by public in the from address. > > --- src/xdisp.c.~1.908.~ 2004-09-16 02:12:32.000000000 +0700 > +++ src/xdisp.c 2004-09-17 09:17:14.626506584 +0700 > @@ -15335,23 +15335,34 @@ > Lisp_Object oprops, aelt; > oprops = Ftext_properties_at (make_number (0), elt); > > + /* If the first character doesn't have any properties, try > + the last character instead, since user code might not > + propertize a leading space character. */ > + > + if (NILP (oprops)) > + { > + int length; > + > + length = XFASTINT (Flength (elt)); > + if (length > 0) > + oprops = Ftext_properties_at (make_number (length - 1), elt); > + } > + > + > if (NILP (Fequal (props, oprops)) || risky) > { > /* If the starting string has properties, > - merge the specified ones onto the existing ones. */ > + merge the specified ones onto the existing ones. > + Give priority to the existing one. */ > if (! NILP (oprops) && !risky) > { > - Lisp_Object tem; > - > - oprops = Fcopy_sequence (oprops); > - tem = props; > - while (CONSP (tem)) > + props = Fcopy_sequence (props); > + while (CONSP (oprops)) > { > - oprops = Fplist_put (oprops, XCAR (tem), > - XCAR (XCDR (tem))); > - tem = XCDR (XCDR (tem)); > + props = Fplist_put (props, XCAR (oprops), > + XCAR (XCDR (oprops))); > + oprops = XCDR (XCDR (oprops)); > } > - props = oprops; > } > > aelt = Fassoc (elt, mode_line_proptrans_alist); > _______________________________________________ > Emacs-devel mailing list > Emacs-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-devel -- Kim F. Storm http://www.cua.dk