all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Undo manipulation
@ 2003-08-14 10:06 Bill Wohler
  2003-08-14 16:56 ` Kevin Rodgers
  0 siblings, 1 reply; 4+ messages in thread
From: Bill Wohler @ 2003-08-14 10:06 UTC (permalink / raw)


I don't want to add some manipulation to buffer-undo-list. For
example, let's say I have:

  1. blah
  2. blah
  xyz
  3. blah

and I want an undo to hit #3, then #2 and then #1, leaving xyz alone.
Are there normal ways to do this? Like inserting markers in
buffer-undo-list to later remove desired elements.

It just occurred to me that I could save buffer-undo-list into a
temporory variable, do my thing, and then restore the variable.

Thoughts?

-- 
Bill Wohler <wohler@newt.com>  http://www.newt.com/wohler/  GnuPG ID:610BD9AD
Maintainer of comp.mail.mh FAQ and MH-E. Vote Libertarian!
If you're passed on the right, you're in the wrong lane.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Undo manipulation
  2003-08-14 10:06 Undo manipulation Bill Wohler
@ 2003-08-14 16:56 ` Kevin Rodgers
  2003-08-14 20:29   ` Bill Wohler
  0 siblings, 1 reply; 4+ messages in thread
From: Kevin Rodgers @ 2003-08-14 16:56 UTC (permalink / raw)


Bill Wohler wrote:

> I don't want to add some manipulation to buffer-undo-list. For
> example, let's say I have:
> 
>   1. blah
>   2. blah
>   xyz
>   3. blah
> 
> and I want an undo to hit #3, then #2 and then #1, leaving xyz alone.
> Are there normal ways to do this? Like inserting markers in
> buffer-undo-list to later remove desired elements.
> 
> It just occurred to me that I could save buffer-undo-list into a
> temporory variable, do my thing, and then restore the variable.


Exactly:

(let ((buffer-undo-list t))
   (insert "xyz\n"))

-- 
Kevin Rodgers

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Undo manipulation
  2003-08-14 16:56 ` Kevin Rodgers
@ 2003-08-14 20:29   ` Bill Wohler
  2003-08-18 16:42     ` Kevin Rodgers
  0 siblings, 1 reply; 4+ messages in thread
From: Bill Wohler @ 2003-08-14 20:29 UTC (permalink / raw)


Kevin Rodgers <ihs_4664@yahoo.com> writes:

> Bill Wohler wrote:
>
>> I don't want to add some manipulation to buffer-undo-list. For
>> example, let's say I have:
>>   1. blah
>>   2. blah
>>   xyz
>>   3. blah
>> and I want an undo to hit #3, then #2 and then #1, leaving xyz alone.
>> Are there normal ways to do this? Like inserting markers in
>> buffer-undo-list to later remove desired elements.
>> It just occurred to me that I could save buffer-undo-list into a
>> temporory variable, do my thing, and then restore the variable.
>
>
> Exactly:
>
> (let ((buffer-undo-list t))
>    (insert "xyz\n"))

Cool, thanks.

However, I was not pleased with the results in my case since the
ignored manipulations occurred near the top and near the bottom of the
buffer. So subsequent undos were very confused.

Here's a little more info. We have a radio button menu item that
performs these actions I've described. Currently, the undo will undo
the action stepwise, but the radio button will no longer represent
reality. Ideally, an undo would undo the entire set of actions in one
swoop, and set the radio button back to its previous setting. Is this
possible?

Otherwise, would it be better or worse for us to set buffer-undo-list
to nil to prevent the radio button from getting out of sync?

-- 
Bill Wohler <wohler@newt.com>  http://www.newt.com/wohler/  GnuPG ID:610BD9AD
Maintainer of comp.mail.mh FAQ and MH-E. Vote Libertarian!
If you're passed on the right, you're in the wrong lane.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Undo manipulation
  2003-08-14 20:29   ` Bill Wohler
@ 2003-08-18 16:42     ` Kevin Rodgers
  0 siblings, 0 replies; 4+ messages in thread
From: Kevin Rodgers @ 2003-08-18 16:42 UTC (permalink / raw)


Bill Wohler wrote:

> Kevin Rodgers <ihs_4664@yahoo.com> writes:
>>(let ((buffer-undo-list t))
>>   (insert "xyz\n"))
>>
> 
> Cool, thanks.
> 
> However, I was not pleased with the results in my case since the
> ignored manipulations occurred near the top and near the bottom of the
> buffer. So subsequent undos were very confused.
> 
> Here's a little more info. We have a radio button menu item that
> performs these actions I've described. Currently, the undo will undo
> the action stepwise, but the radio button will no longer represent
> reality. Ideally, an undo would undo the entire set of actions in one
> swoop, and set the radio button back to its previous setting. Is this
> possible?


I don't knw -- isn't that what the undo-boundary function is for?


> Otherwise, would it be better or worse for us to set buffer-undo-list
> to nil to prevent the radio button from getting out of sync?

I think that would cause the changes to be recorded, but only in the

temporary buffer-undo-list binding, which would be lost when the
let form returns.

-- 
Kevin Rodgers

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2003-08-18 16:42 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-08-14 10:06 Undo manipulation Bill Wohler
2003-08-14 16:56 ` Kevin Rodgers
2003-08-14 20:29   ` Bill Wohler
2003-08-18 16:42     ` Kevin Rodgers

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.