unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Overlay insertion types, markers, etc.
@ 2019-11-12  0:09 Drew Adams
  2019-11-13 15:36 ` Drew Adams
  2019-11-15 10:33 ` Eli Zaretskii
  0 siblings, 2 replies; 13+ messages in thread
From: Drew Adams @ 2019-11-12  0:09 UTC (permalink / raw)
  To: emacs-devel

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?



^ permalink raw reply	[flat|nested] 13+ messages in thread
[parent not found: <<20c74b83-6272-44e9-b4ac-829fd4cd0143@default>]
[parent not found: <<<20c74b83-6272-44e9-b4ac-829fd4cd0143@default>]

end of thread, other threads:[~2019-11-20 17:38 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-11-12  0:09 Overlay insertion types, markers, etc Drew Adams
2019-11-13 15:36 ` 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

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