From xemacs-m  Tue Feb 11 16:21:19 1997
Received: from CNRI.Reston.VA.US (CNRI.Reston.VA.US [132.151.1.1])
	by xemacs.org (8.8.5/8.8.5) with SMTP id QAA25865
	for <xemacs-beta@xemacs.org>; Tue, 11 Feb 1997 16:21:18 -0600 (CST)
Received: from newcnri.cnri.reston.va.us by CNRI.Reston.VA.US id aa27581;
          11 Feb 97 17:20 EST
Received: from anthem.CNRI.Reston.Va.US by newcnri.CNRI.Reston.Va.US (SMI-8.6/SMI-SVR4)
	id RAA29578; Tue, 11 Feb 1997 17:20:31 -0500
Received: by anthem.CNRI.Reston.Va.US (SMI-8.6/SMI-SVR4)
	id RAA10182; Tue, 11 Feb 1997 17:20:30 -0500
Date: Tue, 11 Feb 1997 17:20:30 -0500
Message-Id: <199702112220.RAA10182@anthem.CNRI.Reston.Va.US>
From: "Barry A. Warsaw" <bwarsaw@anthem.cnri.reston.va.us>
MIME-Version: 1.0
Content-Type: multipart/mixed;
	boundary="WgO68GkM4BKCU9ALjfCRx+HwLGygtEQOhzPTtTGM"
Content-Transfer-Encoding: 7bit
To: Sudish Joseph <sudish@mindspring.com>
Cc: XEmacs beta <xemacs-beta@xemacs.org>
Subject: Re: A (possibly) clean solution for RET bound to `newline-and-indent'
References: <kiglo8w85cy.fsf@jagor.srce.hr>
	<yvia6800vxtk.fsf@atreides.mindspring.com>
Reply-To: "Barry A. Warsaw" <bwarsaw@CNRI.Reston.VA.US>
X-Attribution: BAW
X-Oblique-Strategy: What is the Reality of the situation?
X-WWW-Homepage: http://www.python.org/~bwarsaw


--WgO68GkM4BKCU9ALjfCRx+HwLGygtEQOhzPTtTGM
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit


>>>>> "SJ" == Sudish Joseph <sudish@mindspring.com> writes:

    SJ> Some modes solve this by providing a `hungry' delete.  It eats
    SJ> up all preceding whitespace.  I like this model and it has
    SJ> less magic in it's actions.  Mapped onto your 3 cases, it
    SJ> looks like:

As far as I know, cc-mode is the only mode that provides this
functionality right now.  You spurred me to get off my butt and
generalize this stuff once and for all (especially since I'm now
hacking much more Python than C and I want this in python-mode too
:-).

Attached is greedy-delete.el.  Just put 'gd-add-to-mode on any mode
hook you want this stuff.  I haven't yet integrated this with cc-mode
or python-mode, though I probably will after the dust settles.  I'm
interested in feedback, especially on the default key bindings.

-Barry

--WgO68GkM4BKCU9ALjfCRx+HwLGygtEQOhzPTtTGM
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64

Ozs7IGdyZWVkeS1kZWxldGUuZWwgLS0tIG1pbm9yIG1vZGUgZm9yIGEgYmV0dGVyIGJhY2tz
cGFjZQoKOzsgQ29weXJpZ2h0IChDKSAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLgoKOzsgQXV0aG9yOiAgMTk5NyBCYXJyeSBBLiBXYXJzYXcKOzsgQ3JlYXRlZDogMTEt
RmViLTE5OTcgKHRha2VuIG5lYXJseSB2ZXJiYXRpbSBmcm9tIGNjLW1vZGUuZWwpCjs7IFZl
cnNpb246IDEuNwo7OyBMYXN0IE1vZGlmaWVkOiAxOTk3LzAyLzExIDIyOjAwOjI0Cjs7IEtl
eXdvcmRzOiBsYW5ndWFnZXMgZGVsZXRlCgo7OyBUaGlzIGZpbGUgaXMgbm90IHBhcnQgb2Yg
R05VIEVtYWNzLgoKOzsgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKOzsgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IKOzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KOzsgCjs7
IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAo7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgo7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCjs7IEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCjs7IAo7OyBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo7OyBhbG9u
ZyB3aXRoIEdOVSBFbWFjczsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRl
IHRvIHRoZQo7OyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ
bGFjZSAtIFN1aXRlIDMzMCwKOzsgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCgo7Ozsg
Q29tbWVudGFyeToKCjs7IFRoaXMgcGFja2FnZSBpcyBjYWxsZWQgR3JlZWR5IERlbGV0ZS15
ISA6LSkKCjs7IFRoaXMgcGFja2FnZSBwcm92aWRlcyBhIG1ham9yLW1vZGUgaW5kZXBlbmRl
bnQgbWVjaGFuaXNtIGZvcgo7OyBkaWZmZXJlbnQgZGVsZXRpb24gcHJlZmVyZW5jZXMuICBJ
biBzb21lIG1ham9yLW1vZGVzIGl0IHR1cm5zIG91dAo7OyB0byBiZSBsZXNzIHVzZWZ1bCB0
byBtYXAgYmFja3NwYWNlIG9yIGRlbGV0ZSB0byBqdXN0IGRlbGV0aW5nIG9uZQo7OyBjaGFy
YWN0ZXIuICBJbnN0ZWFkLCBhIGBodW5ncnknIG9yIGBncmVlZHknIGRlbGV0aW9uIG1lY2hh
bmlzbSBpcwo7OyBtb3JlIHVzZWZ1bC4KOzsKOzsgVGhlIHZhcmlhYmxlIGBnZC1ob3ctbXVj
aCcgY29udHJvbHMgaG93IG11Y2ggcHJlY2VkaW5nIHdoaXRlc3BhY2UKOzsgaXMgY29uc3Vt
ZWQgd2hlbiB0aGUgZGVsZXRlIGtleSBpcyBoaXQuICBGb3Igbm9uLWdyZWVkeSBkZWxldGlv
bgo7OyB0aGUgYGdkLWRlbGV0ZS1mdW5jdGlvbicgdmFyaWFibGUgaXMgY29uc3VsdGVkLgo7
Owo7OyBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgeW91IG1pZ2h0IHVzZSBncmVlZHkgZGVs
ZXRlIGluIHB5dGhvbi1tb2RlOgo7Owo7OyAoYWRkLWhvb2sgJ3B5LW1vZGUtaG9vayAnZ2Qt
YWRkLXRvLW1vZGUpCgo7OyBZb3UgY2FuIGdldCB1cGRhdGVzIHRvIHRoaXMgZmlsZSBmcm9t
Ogo7Owo7OyAgICAgaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9lbWFjcy8KOzsKOzsgb3Ig
dmlhIGFub255bW91cyBmdHAgZnJvbToKOzsKOzsgICAgIGZ0cDovL2Z0cC5weXRob24ub3Jn
L3B1Yi9lbWFjcwoKOzs7IENvZGUKCgwKOzsgdXNlciBkZWZpbmFibGUgdmFyaWFibGVzCjs7
IHZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2
dnZ2dnZ2dgoKKGRlZnZhciBnZC1ob3ctbXVjaCAnYWxsCiAgIipDb250cm9scyBob3cgbXVj
aCBwcmVjZWRpbmcgd2hpdGVzcGFjZSB0byBjb25zdW1lLgpUaGUgdmFsdWUgJ2FsbCBzYXlz
IHRvIGNvbnN1bWUgYWxsIHdoaXRlc3BhY2UgcHJlY2VkaW5nIHBvaW50LiAgVGhlCnZhbHVl
ICdsaW5lIHNheXMgdG8gb25seSBjb25zdW1lIHByZWNlZGluZyB3aGl0ZXNwYWNlIHVwIHRo
ZSB0aGUKYmVnaW5uaW5nIG9mIHRoZSBjdXJyZW50IGxpbmUuIikKCihkZWZ2YXIgZ2QtZGVs
ZXRlLWZ1bmN0aW9uICdiYWNrd2FyZC1kZWxldGUtY2hhci11bnRhYmlmeQogICIqRnVuY3Rp
b24gY2FsbGVkIGJ5IGBnZC1lbGVjdHJpYy1kZWxldGUnIHdoZW4gZGVsZXRpbmcgY2hhcmFj
dGVycy4iKQoKCgwKOzsgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e
Xl5eXl5eXl5eXl5eXl5eXl5eXl5eCjs7IE5PIFVTRVIgREVGSU5BQkxFIFZBUklBQkxFUyBC
RVlPTkQgVEhJUyBQT0lOVAoKKGRlZnZhciBnZC1lbmFibGVkIG5pbAogICJOb24tbmlsIGlm
IGdyZWVkeSBkZWxldGUgaXMgZW5hYmxlZC4KVXNlIHRoZSBjb21tYW5kIGBncmVlZHktZGVs
ZXRlLW1vZGUnIHRvIHRvZ2dsZSwgZW5hYmxlLCBvciBkaXNhYmxlCnRoaXMgbW9kZS4iKQoK
KGRlZnZhciBnZC1tb2RlLWNoZWNrLWZ1bmN0aW9uIG5pbAogICJGdW5jdGlvbiB3aGljaCBt
YWpvci1tb2RlcyBjYW4gdXNlIHRvIGN1c3RvbWl6ZSBgZ2QtZWxlY3RyaWMtZGVsZXRlJy4K
VGhpcyB2YXJpYWJsZSBpcyBidWZmZXIgbG9jYWwuICBJZiBub24tbmlsLCBgZ2QtZWxlY3Ry
aWMtZGVsZXRlJyB3aWxsCmBmdW5jYWxsJyB0aGlzIGZ1bmN0aW9uIHdpdGggbm8gYXJndW1l
bnRzLiAgVGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4KbmlsIG9yIG5vbi1uaWwgaW5kaWNh
dGluZyB3aGV0aGVyIGl0IGlzIG9rYXkgdG8gZG8gdGhlIGdyZWVkeQpkZWxldGlvbi4iKQoK
KGRlZnZhciBnZC1pbmRpY2F0b3Itc3RyaW5nICIgR3JlZWR5IgogICJTdHJpbmcgdG8gc2hv
dyBpbiB0aGUgbW9kZSBsaW5lIHdoZW4gZ3JlZWR5IGRlbGV0ZSBpcyBlbmFibGVkLiIpCgoo
bWFrZS12YXJpYWJsZS1idWZmZXItbG9jYWwgJ2dkLWVuYWJsZWQpCihtYWtlLXZhcmlhYmxl
LWJ1ZmZlci1sb2NhbCAnZ2QtbW9kZS1jaGVjay1mdW5jdGlvbikKCgwKKGRlZnVuIGdkLWVs
ZWN0cmljLWRlbGV0ZSAoYXJnKQogICJEZWxldGVzIHByZWNlZGluZyBjaGFyYWN0ZXIgb3Ig
d2hpdGVzcGFjZS4KSWYgYGdkLWVuYWJsZWQnIGlzIG5vbi1uaWwsIHRoZW4gcHJlY2VkaW5n
IHdoaXRlc3BhY2UgaXMgY29uc3VtZWQKYWNjb3JkaW5nIHRvIGBnZC1ob3ctbXVjaCcuICBI
b3dldmVyLCBpZiBhbiBBUkcgaXMgc3VwcGxpZWQsIG9yCmBnZC1lbmFibGVkJyBpcyBuaWws
IG9yIGBnZC1tb2RlLWNoZWNrLWZ1bmN0aW9uJyByZXR1cm5zIG5vbi1uaWwgdGhlbgp0aGUg
ZnVuY3Rpb24gaW4gdGhlIHZhcmlhYmxlIGBjLWRlbGV0ZS1mdW5jdGlvbicgaXMgY2FsbGVk
LiIKICAoaW50ZXJhY3RpdmUgIlAiKQogIChsZXQgKChjaGVjayAoaWYgZ2QtbW9kZS1jaGVj
ay1mdW5jdGlvbgoJCSAgIChmdW5jYWxsIGdkLW1vZGUtY2hlY2stZnVuY3Rpb24pCgkJIHQp
KSkKICAoaWYgKG9yIChub3QgZ2QtZW5hYmxlZCkKCSAgYXJnCgkgIChub3QgY2hlY2spKQog
ICAgICAoZnVuY2FsbCBnZC1kZWxldGUtZnVuY3Rpb24gKHByZWZpeC1udW1lcmljLXZhbHVl
IGFyZykpCiAgICAobGV0ICgoaGVyZSAocG9pbnQpKQoJICAoc2tpcCAoY29uZCAoKGVxIGdk
LWhvdy1tdWNoICdhbGwpICAiIFx0XG4iKQoJCSAgICAgICgoZXEgZ2QtaG93LW11Y2ggJ2xp
bmUpICIgXHQiKQoJCSAgICAgICh0IChlcnJvciAiSWxsZWdhbCB2YWx1ZSBmb3IgYGdkLWhv
dy1tdWNoJzogJXMiCgkJCQlnZC1ob3ctbXVjaCkpCgkJICAgICAgKSkpCiAgICAgIChza2lw
LWNoYXJzLWJhY2t3YXJkIHNraXApCiAgICAgIChpZiAoLz0gKHBvaW50KSBoZXJlKQoJICAo
ZGVsZXRlLXJlZ2lvbiAocG9pbnQpIGhlcmUpCgkoZnVuY2FsbCBnZC1kZWxldGUtZnVuY3Rp
b24gMSkpCiAgICAgICkpKSkKCgwKKGRlZnVuIGdyZWVkeS1kZWxldGUtbW9kZSAoJm9wdGlv
bmFsIGFyZykKICAiVG9nZ2xlIGdyZWVkeSBkZWxldGUgbW9kZS4KV2l0aCBhcmcsIHR1cm4g
Z3JlZWR5IGRlbGV0ZSBtb2RlIG9uIGlmIGFuZCBvbmx5IGlmIGFyZyBpcyBwb3NpdGl2ZS4K
VHVybiBpdCBvZmYgaWYgYXJnIGlzIG5lZ2F0aXZlLiAgVG9nZ2xlIHRoZSBtb2RlIGlmIGFy
ZyBpcyB6ZXJvLiIKICAoaW50ZXJhY3RpdmUgIlAiKQogIChzZXRxIGdkLWVuYWJsZWQgKGlm
IChvciAobm90IGFyZykKCQkJICAgKHplcm9wIChzZXRxIGFyZyAocHJlZml4LW51bWVyaWMt
dmFsdWUgYXJnKSkpKQoJCSAgICAgICAobm90IGdkLWVuYWJsZWQpCgkJICAgICAoPiBhcmcg
MCkpKQogIDs7IG9ic29sZXRlIGluIFhFbWFjcywgYnV0IHdvcmtzIGZvciBib3RoIFhFbWFj
cyBhbmQgRW1hY3MKICAoZm9yY2UtbW9kZS1saW5lLXVwZGF0ZSkpCgoKKGRlZnVuIHR1cm4t
b24tZ3JlZWR5LWRlbGV0ZS1tb2RlICgpCiAgIlR1cm5zIG9uIGdyZWVkeSBkZWxldGUgbW9k
ZS4KQWxzbyB1cGRhdGVzIHRoZSBgbWlub3ItbW9kZS1hbGlzdCcuIgogIChpbnRlcmFjdGl2
ZSkKICAoZ3JlZWR5LWRlbGV0ZS1tb2RlIDEpCiAgKG9yIChhc3NxICdnZC1lbmFibGVkIG1p
bm9yLW1vZGUtYWxpc3QpCiAgICAgIChzZXRxIG1pbm9yLW1vZGUtYWxpc3QKCSAgICAoYXBw
ZW5kIG1pbm9yLW1vZGUtYWxpc3QKCQkgICAgKGxpc3QgJyhnZC1lbmFibGVkIGdkLWluZGlj
YXRvci1zdHJpbmcpKSkpKSkKCihkZWZ1biBnZC1hZGQtdG8tbW9kZSAoKQogICJBZGRzIGdy
ZWVkeSBkZWxldGUgdG8gdGhlIGN1cnJlbnQgYnVmZmVyJ3MgbWFqb3IgbW9kZS4KVGhpcyBz
cGVjaWZpY2FsbHkgZG9lczoKICAgIDEuIGJpbmRzIGBncmVlZHktZGVsZXRlLW1vZGUnIHRv
IEMtYyBCUwogICAgMi4gYmluZHMgYGdkLWVsZWN0cmljLWRlbGV0ZScgdG8gQlMKICAgIDMu
IGNhbGxzIGB0dXJuLW9uLWdyZWVkeS1kZWxldGUtbW9kZScKClRoaXMgZnVuY3Rpb24gaXMg
YXBwcm9wcmlhdGUgZm9yIGFueSBtYWpvci1tb2RlIGhvb2suIgogIChsb2NhbC1zZXQta2V5
IFsoY29udHJvbCBjKSBiYWNrc3BhY2VdICdncmVlZHktZGVsZXRlLW1vZGUpCiAgKGxvY2Fs
LXNldC1rZXkgW2JhY2tzcGFjZV0gJ2dkLWVsZWN0cmljLWRlbGV0ZSkKICAodHVybi1vbi1n
cmVlZHktZGVsZXRlLW1vZGUpKQoKCgwKKHByb3ZpZGUgJ2dyZWVkeS1kZWxldGUpCjs7IGdy
ZWVkeS1kZWxldGUuZWwgZW5kcyBoZXJlCg==

--WgO68GkM4BKCU9ALjfCRx+HwLGygtEQOhzPTtTGM
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit



--WgO68GkM4BKCU9ALjfCRx+HwLGygtEQOhzPTtTGM--

