emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: An idea: combine-change-calls


From: Stefan Monnier
Subject: Re: An idea: combine-change-calls
Date: Wed, 28 Mar 2018 17:26:30 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux)

> It would need amendment, of course, but that wouldn't be difficult.

I'd rather try and avoid that.  And if we really do want to extent the
format because we consider that (apply ...) is not good enough here,
than I'd want this new extension to be generic rather than specific for
this particular use-case.

> But I suspect that the mechanism you suggested (an `apply' format
> element recursively calling primitive-undo), will break other packages
> too, even if the format of undo lists isn't changed.

Could be, indeed.

> What we've been discussing goes beyond hiding information, it is the
> destruction of information.  Users, maybe just a few, won't like that at
> all.

Not at all.  It's just optimizing the representation of the undo-log.
If there's an undo-boundary in there, then indeed, we'd be throwing away
a bit of information, but I assumed we wouldn't care about that case.

Whatever you decide to do with the undo-log, handling undo-boundary
pushed during the execution of `body` will be tricky I suspect (except
if we just don't touch the undo-list, of course).

> Incidentally, position elements in the undo list don't work: `undo'
> removes them from buffer-undo-list.

Are you sure they "don't work" (they seemed to work in my test)?

IIUC The code you cite only strips them from the undo elements added
while performing an undo (i.e. from "redo" elements), so they should
still work for a plain "edit .... undo".

> I think you amended that bit of code some years ago.  Can you say why
> this is done?  The comment in the code:
>
>     ;; Don't specify a position in the undo record for the undo command.
>     ;; Instead, undoing this should move point to where the change is.
>
> doesn't give any reason, and the various pertinent commit messages
> aren't any help either.

Hmm... good question.  I see this code basically dates back to

  commit 2512c9f0f0e6cc71c601ffdb0690b9cf5642734b
  Author: Richard M. Stallman <address@hidden>
  Date:   Wed Mar 16 23:41:32 1994 +0000

    (undo): Don't let the undo entries for the undo
    contain a specific buffer position.  Delete it if there is one.

and no, I don't know why we do this.


        Stefan



reply via email to

[Prev in Thread] Current Thread [Next in Thread]