unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Joe Wells <jbw@macs.hw.ac.uk>
To: emacs-devel@gnu.org
Subject: Re: Fwd: overlay face property not used for after-string property
Date: Wed, 24 Oct 2007 10:49:06 +0100	[thread overview]
Message-ID: <86d4v46dwt.fsf@macs.hw.ac.uk> (raw)
In-Reply-To: <jwv4pgjrwal.fsf-monnier+emacs@gnu.org>

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 bug-gnu-emacs@gnu.org,
it would be a big help if the original poster was CC-ed.  I'm not on
the emacs-devel@gnu.org 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	other threads:[~2007-10-24  9:49 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-22  9:00 [jbw@macs.hw.ac.uk: overlay face property not used for after-string property] Richard Stallman
2007-10-22 15:44 ` Fwd: overlay face property not used for after-string property Stefan Monnier
2007-10-24  9:49   ` Joe Wells [this message]
     [not found]   ` <E1Im8Y2-0000zW-Tn@fencepost.gnu.org>
2007-10-28 15:06     ` Joe Wells
2007-10-28 15:21       ` Johan Bockgård
2007-10-29  9:22       ` Richard Stallman
2007-10-29  9:57         ` Joe Wells
2007-11-03  3:58           ` Richard Stallman
2007-11-03 16:03             ` Joe Wells
2007-11-04 19:56               ` Richard Stallman
2007-11-04 23:03                 ` Joe Wells
2007-11-05  8:47                   ` Richard Stallman
2007-11-05  9:30                     ` David Kastrup
2007-11-05 11:51                       ` Joe Wells
2007-11-05 12:05                         ` Joe Wells
2007-11-06  2:16                           ` Richard Stallman
2007-11-06  3:30                             ` Joe Wells
2007-11-06  8:30                               ` Stefan Monnier
2007-11-06  9:18                                 ` David Kastrup
2007-11-06 10:05                                   ` Stefan Monnier
2007-11-07  0:15                                 ` Richard Stallman
2007-11-07  0:15                               ` Richard Stallman
2007-11-06  2:15                         ` Richard Stallman
2007-11-06  3:19                           ` Joe Wells
2007-11-05 14:55                       ` Stefan Monnier
2007-11-05 15:04                         ` David Kastrup
2007-11-05 16:35                           ` Joe Wells
2007-11-05 16:53                             ` David Kastrup
2007-11-05 22:06                               ` Joe Wells
2007-11-05 16:29                         ` Joe Wells
2007-11-05 19:38                           ` Stefan Monnier
2007-11-05 21:59                             ` Joe Wells
2007-11-06  8:37                               ` Richard Stallman
2007-11-06  2:16                         ` Richard Stallman
2007-11-05 11:55                     ` Joe Wells
2007-11-06  2:16                       ` Richard Stallman
2007-11-04 19:56               ` Richard Stallman
2007-11-04 23:10                 ` Joe Wells
2007-11-03 19:21             ` Stefan Monnier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=86d4v46dwt.fsf@macs.hw.ac.uk \
    --to=jbw@macs.hw.ac.uk \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).