emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Propertizing the minor-mode-alist


From: Kim F. Storm
Subject: Re: Propertizing the minor-mode-alist
Date: Fri, 17 Sep 2004 23:52:29 +0200
User-agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3.50 (gnu/linux)

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 <address@hidden> 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
> address@hidden
> http://lists.gnu.org/mailman/listinfo/emacs-devel

-- 
Kim F. Storm <address@hidden> http://www.cua.dk





reply via email to

[Prev in Thread] Current Thread [Next in Thread]