emacs-devel
[Top][All Lists]
Advanced

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

Re: Fwd: overlay face property not used for after-string property


From: Joe Wells
Subject: Re: Fwd: overlay face property not used for after-string property
Date: Wed, 24 Oct 2007 10:49:06 +0100
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.1 (gnu/linux)

Stefan Monnier writes:

>> Would someone please fix this, then ack?
>
> I don't think I can fix it, but I remember discussion of something
> similar a few years ago where the conclusion was that it was better
> to not apply a property of the overlay (e.g. `face' although I
> believe the discussion was about `invisible') to the
> (after|before)-string because it's easier to add this property
> manually to the relevant string than to "undo" the effect of the
> overlay's property from the string.

For what it is worth, I agree that it might be better if the face
property (and similar properties like invisible) did not affect the
before-string and after-string properties.  In fact, I think it might
be better if the face property also did not affect the display
property.

However, there is clearly a bug here because before-string is affected
by face while after-string is not.  Either both should be affected or
neither.

Also, it is not straightforward to add the face property manually to
the relevant string, because the string may already contain face
properties.  Doing

  (propertize STRING 'face FACE)

will blast any face properties already on STRING.  If recursive
display properties were allowed, doing

  (propertize " " 'face FACE display STRING)

would do the right thing even if STRING already had face and/or
display properties.  But recursive display properties are not allowed.
And going through the string modifying each face property to add the
correct attributes is a real pain.

It would make my life much easier if recursive display properties were
allowed.  It would be enough in practice to allow recursion to some
small fixed level, like 10 or so.

Joe

P.S.  By the way, when forwarding messages from address@hidden,
it would be a big help if the original poster was CC-ed.  I'm not on
the address@hidden mailing list, and it is a real pain to have to
scan through the web mailing list archives to see if anything is
happening with my bug report.  Also, it is an additional pain to
extract the Message-ID and References headers for the message I am
replying to from the web mailing list archives in order to make a
proper reply.  It would have been much easier (and I would have
replied days ago) if I had just been CC-ed.

P.P.S.  Actually, the issue in the above P.S. would be handled much
better by simply using a proper bug tracker for Emacs.  Aren't you
folks tired of bugs being dropped (in some cases for many years)
because of the lack of a bug tracker?

>> ------- Start of forwarded message -------
>> From: Joe Wells <address@hidden>
>> Date: Sun, 21 Oct 2007 04:14:55 +0100
>> Subject: overlay face property not used for after-string property
>
>> BUG:  An overlay's face property is applied to its before-string
>> and display properties, but not to its after-string property.
>
>> Reproduce with this expression (see below for definition of
>> test-in-fresh-buffer-and-window):
>
>>   (test-in-fresh-buffer-and-window
>>    (insert "123")
>>    (let ((o (make-overlay 2 3)))
>>      (overlay-put o 'before-string "B")
>
>>      (overlay-put o 'after-string "A")
>>      (overlay-put o 'display "D")
>>      (overlay-put o 'face 'highlight)))
>
>> This displays “1BDA3”.  The “BDA?” portion should be displayed
>
>> with face “highlight”, which means that the background should be
>> colored “darkseagreen2”.  However, only the “BD” portion is
>> displayed with face “highlight” and the “A” portion is wrongly
>> not displayed with any special face.
>
>> I'm assuming the following macro definition in my reproduction
>> code above:
>
>>   (defmacro test-in-fresh-buffer-and-window (&amp;rest body)
>>     `(progn
>>        (delete-other-windows)
>>        (kill-buffer (get-buffer-create "xyzzy"))
>>        (let ((xyzzy-buf (get-buffer-create "xyzzy")))
>
>>          (set-buffer xyzzy-buf)
>>          (display-buffer xyzzy-buf)
>>          ,@body
>>          )))
>
>> I hope this bug report is helpful.
>
>> Joe
>
>> ======================================================================
>> In GNU Emacs 22.1.1 (i686-pc-linux-gnu, GTK+ Version 2.8.20)
>>  of 2007-06-27 on artemis
>> Windowing system distributor `The X.Org Foundation', version 11.0.70000000
>> configured using `configure  '--prefix=/home/jbw/local2' '--enable-debug' 
>
>> '--disable-nls' '--with-x-toolkit=gtk' 'CFLAGS=-O0 -g3 -ggdb''
>
>> Important settings:
>>   value of $LC_ALL: nil
>>   value of $LC_COLLATE: nil
>>   value of $LC_CTYPE: en_US.UTF-8
>>   value of $LC_MESSAGES: nil
>
>>   value of $LC_MONETARY: nil
>>   value of $LC_NUMERIC: nil
>>   value of $LC_TIME: jbw
>>   value of $LANG: nil
>>   locale-coding-system: utf-8
>>   default-enable-multibyte-characters: t
>
>> Minor modes in effect:
>>   TeX-source-specials-mode: t
>>   outline-minor-mode: t
>>   desktop-save-mode: t
>>   url-handler-mode: t
>>   tooltip-mode: t
>
>>   mouse-wheel-mode: t
>>   file-name-shadow-mode: t
>>   global-font-lock-mode: t
>>   font-lock-mode: t
>>   blink-cursor-mode: t
>>   unify-8859-on-encoding-mode: t
>
>>   utf-translate-cjk-mode: t
>>   auto-compression-mode: t
>>   temp-buffer-resize-mode: t
>>   size-indication-mode: t
>>   line-number-mode: t
>>   transient-mark-mode: t
>
>> ------- End of forwarded message -------




reply via email to

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