unofficial mirror of emacs-devel@gnu.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: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <86d4w2y1ej.fsf@macs.hw.ac.uk>
2007-10-02 15:29 ` Emacs Lisp manual issues regarding overlays, display properties, margins, etc 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

  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=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 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).