all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Joe Wells <jbw@macs.hw.ac.uk>
To: rms@gnu.org
Cc: emacs-devel@gnu.org
Subject: Re: Emacs Lisp manual issues regarding overlays, display properties, margins, etc.
Date: Tue, 02 Oct 2007 17:23:54 +0100	[thread overview]
Message-ID: <86tzp9v61x.fsf@macs.hw.ac.uk> (raw)
In-Reply-To: <E1IcjgF-0003op-Tk@fencepost.gnu.org> (Richard Stallman's message of "Tue\, 02 Oct 2007 11\:29\:03 -0400")

Richard Stallman <rms@gnu.org> writes:

> There seems to be something totally fishy with the way margin display
> properties work:
>
>       (test-overlays
>        (insert "ABC")
>        (let ((o1 (make-overlay 2 3)))
> 	 (overlay-put o1 'display '((margin left-margin) "Z")))
>        (set-window-margins (get-buffer-window (current-buffer)) 8))
>
> this causes Z to appear in the margin and causes B not to appear
> in the body of the text.
>
> That seems like a bug to me.  It seems to me that a property that puts
> something in the margin should not alter the appearance of the text
> it is on.

It seems to follow the definition though.  The current definition
seems to be that a display spec of the form ((margin MARGIN) SPEC)
works when SPEC is a display spec that causes something to be
displayed instead of the text that has the display property and the
(margin MARGIN) part acts as a modifier that additionally moves the
replacement material into the margin.

The documentation of margin display spec modifiers is a bit confusing.

> Does anyone think the current behavior is desirable?

I find the current definition of the margin display spec modifier
awkward.  I think part of the reason for the way the current margin
modifier definition is designed is that (image ...) display specs are
not strings and thus can not have display properties of their own.
Also, the only current way to display an image is to have it _replace_
characters (at least one) in a string or in the buffer.

Maybe there should be a margin property (distinct from the current
margin display spec) which specifies material to go in the margin
(like the way the overlay before-string property works).

-- 
Joe

P.S.  For people who want to try the sexp above, the test-overlays
macro is this:

  (defmacro test-overlays (&rest body)
    `(let ((buf (get-buffer-create "xyzzy")))
      (with-current-buffer buf
        (display-buffer buf)
        (erase-buffer)
        (dolist (o (overlays-in (point-min) (point-max)))
          (delete-overlay o))
        ,@body)))

  parent reply	other threads:[~2007-10-02 16:23 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-28 20:34 Emacs Lisp manual issues regarding overlays, display properties, margins, etc Joe Wells
2007-09-29 11:44 ` Johan Bockgård
     [not found] ` <mailman.1468.1191066364.18990.bug-gnu-emacs@gnu.org>
2007-09-29 16:38   ` Joe Wells
2007-10-01 13:47     ` Johan Bockgård
2007-10-01 17:40     ` Richard Stallman
2007-10-01 17:57       ` Joe Wells
2007-10-02 15:29 ` Richard Stallman
2007-10-02 16:07   ` Johan Bockgård
2007-10-08 18:04     ` Richard Stallman
2007-10-02 16:23   ` Joe Wells [this message]
2007-10-02 19:20     ` Stefan Monnier
2007-10-03 18:38       ` Richard Stallman

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

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

  git send-email \
    --in-reply-to=86tzp9v61x.fsf@macs.hw.ac.uk \
    --to=jbw@macs.hw.ac.uk \
    --cc=emacs-devel@gnu.org \
    --cc=rms@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 external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.