emacs-devel
[Top][All Lists]
Advanced

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

Re: kill ring menu


From: Colin Walters
Subject: Re: kill ring menu
Date: 30 May 2002 02:32:14 -0400

On Fri, 2002-05-24 at 17:12, Richard Stallman wrote:
>     For instance, here's a random idea (i.e., not well thought out!):
>     instead of hardwiring `font-lock-face', how about a buffer-local
>     variable that holds `alternative property mappings'?
> 
> That seems like a good idea, if it turns out to be clean enough to
> implement reliably.

I've started to implement it (i'm calling it
`char-property-alternatives-alist'), and it's not turning out to be as
clean as I would like.

For example, we need to change face_at_buffer_position in xfaces.c to
use Fget_char_property.  Right now, it uses Fget_text_property to
explicitly get text properties, and then uses overlays_at to get
overlays, and merges the face properties.

However, I can't just change the Fget_text_property call to
Fget_char_property, because that would incorrectly pick up any overlay
`face' property *before* a text property `face' value.

So we need new functions (or an optional argument to Fget_char_property)
which allows one to get the value of a text property or overlay, while
respecting `char-property-alternatives-alist'.  This seems pretty ugly. 
We could alternatively just change all the primitives so that they
always respect the alternatives alist; that probably has its own
drawbacks.

Perhaps the number of places which need to explicitly respect the
difference between text properties and overlays is small.  But I just
hate for there to have to be those places at all.

One other thing about this idea is that I find it a bit unintuitive that
(eq (plist-get (text-properties-at (point)) 'face)
    (get-text-property (point) 'face))
is not always true.




reply via email to

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