From: Drew Adams <drew.adams@oracle.com>
To: emacs-devel@gnu.org
Subject: Overlay insertion types, markers, etc.
Date: Tue, 12 Nov 2019 00:09:18 +0000 (UTC) [thread overview]
Message-ID: <20c74b83-6272-44e9-b4ac-829fd4cd0143@default> (raw)
From (elisp) `Overlays':
"An overlay uses markers to record its beginning and end."
1. You can create an overlay with `make-overlay',
passing it markers.
But the insertion types of those markers are not used
for that overlay. Instead, you can specify those types
for the overlay as optional `make-overlay' args. By
default, text you insert at the beginning, but not at
the end, of the overlay is included in the (extended)
overlay.
First question:
Why, if you pass markers, isn't the default to use
the insertion types of those markers?
2. `make-overlay' seems to be the only way to specify
the insertion types for an overlay. Is that right,
or did I miss something? `move-overlay' doesn't let
you specify them, nor does `copy-overlay'. (And I
don't see this being handled by `overlay-put'' - they
are not overlay properties.)
There are hook properties `insert-in-front-hooks'
and `insert-behind-hooks'. But that's not the same.
Second question:
Why isn't there (or is there?) a simple way to
change the "marker insertion types" of an existing
overlay?
Suppose you want to copy an existing overlay and
then change some things in the copy. You can't
change the insertion types for it, right?
I guess you need to use `make-overlay', specifying
insertion types, and then explicitly copy everything
else from the first overlay. Is that right?
3. Similarly, the default BUFFER for `make-overlay'
is the current buffer, even if you pass markers.
Third question (similar to the first):
Why, if you pass markers to `make-overlay', and
you don't pass arg BUFFER, isn't the default to
use the buffer of those markers?
4. (Repeating) "An overlay uses markers to record
its beginning and end."
It seems that an overlay "uses markers" but those
aren't the markers you passed to `make-overlay'.
Is that right?
Fourth question (also similar to the first):
Can you retrieve the markers that are "used by"
an overlay, i.e., as markers? I don't see that
you can. (`overlay-start' and `overlay-end',
for example, don't give you markers.) You can
of course create suitable (but separate) markers.
(elisp) `Managing Overlays' says, about
`move-overlay':
"This is the only valid way to change the endpoints
of an overlay. Do not try modifying the markers in
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
the overlay by hand, as that fails to update other
vital data structures and can cause some overlays
to be lost."
That makes me wonder. I don't even see how you
could try to "modify the markers of the overlay"
(with Lisp). How so? How to get those markers?
I feel like I'm probably missing something here,
but I don't notice it in the manual, doc strings,
or Lisp code (only `remove-overlay' and
`copy-overlay' are coded in Lisp, it seems).
Do I understand the situation correctly? If so,
what's the rationale for it? I'm guessing there
are good reasons?
next reply other threads:[~2019-11-12 0:09 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-12 0:09 Drew Adams [this message]
2019-11-13 15:36 ` Overlay insertion types, markers, etc Drew Adams
2019-11-15 10:33 ` Eli Zaretskii
[not found] <<20c74b83-6272-44e9-b4ac-829fd4cd0143@default>
[not found] ` <<83lfsh2zvf.fsf@gnu.org>
2019-11-15 16:54 ` Drew Adams
2019-11-15 17:12 ` Eli Zaretskii
[not found] <<<20c74b83-6272-44e9-b4ac-829fd4cd0143@default>
[not found] ` <<<83lfsh2zvf.fsf@gnu.org>
[not found] ` <<a2de3d64-2fb6-41e4-aabe-0be2ec404478@default>
[not found] ` <<83v9rl12t1.fsf@gnu.org>
2019-11-15 17:32 ` Drew Adams
2019-11-17 2:15 ` Richard Stallman
2019-11-17 2:26 ` Drew Adams
2019-11-17 15:55 ` Stefan Monnier
2019-11-17 17:35 ` Drew Adams
2019-11-20 16:17 ` Richard Stallman
2019-11-20 17:33 ` Eli Zaretskii
2019-11-20 17:38 ` Drew Adams
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=20c74b83-6272-44e9-b4ac-829fd4cd0143@default \
--to=drew.adams@oracle.com \
--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 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.