From xemacs-m  Wed Jan 15 16:00:59 1997
Received: from nvwls.cc.purdue.edu (root@nvwls.cc.purdue.edu [128.210.7.3])
          by xemacs.org (8.8.4/8.8.4) with ESMTP
	  id QAA24563 for <XEmacs-Beta@XEmacs.org>; Wed, 15 Jan 1997 16:00:58 -0600 (CST)
Received: from nvwls.cc.purdue.edu (nuspl@localhost [127.0.0.1]) by nvwls.cc.purdue.edu (8.7.5/8.7.3) with ESMTP id QAA25966 for <XEmacs-Beta@XEmacs.org>; Wed, 15 Jan 1997 16:53:56 -0500
Message-Id: <199701152153.QAA25966@nvwls.cc.purdue.edu>
Reply-to: nuspl@purdue.edu
X-Mailer: MH-E 5.0.2
X-Attribution: jjn
X-Face: K'Q`VIQx)c-;TPHDA`.,kBQq(WyNe3AdopJ?B(.4yT%n|F?4>+?x]pQ4XC83s-4;|U{%9x]
 =yr4dko
To: XEmacs-Beta@XEmacs.org
Subject: overlays.el
Mime-Version: 1.0 (generated by tm-edit 7.100)
Content-Type: multipart/mixed;
 boundary="Multipart_Wed_Jan_15_16:53:35_1997-1"
Content-Transfer-Encoding: 7bit
Date: Wed, 15 Jan 1997 16:53:52 -0500
From: Joe Nuspl <nuspl@nvwls.cc.purdue.edu>

--Multipart_Wed_Jan_15_16:53:35_1997-1
Content-Type: text/plain; charset=US-ASCII


This is my first crack at this.  I still need to implement overlay-lists.

If someone could write some test cases up...


--Multipart_Wed_Jan_15_16:53:35_1997-1
Content-Type: application/octet-stream; type=emacs-lisp
Content-Disposition: attachment; filename="overlay.el"
Content-Transfer-Encoding: base64

KGRlZnVuIG92ZXJsYXlwIChvYmplY3QpCiAgIlJldHVybiB0IGlmIE9CSkVDVCBpcyBhbiBv
dmVybGF5LiIKICAoYW5kIChleHRlbnRwIG9iamVjdCkKICAgICAgIChleHRlbnQtcHJvcGVy
dHkgb2JqZWN0ICdvdmVybGF5KSkpCgooZGVmdW4gbWFrZS1vdmVybGF5IChiZWcgZW5kICZv
cHRpb25hbCBidWZmZXIgZnJvbnQtYWR2YW5jZSByZWFyLWFkdmFuY2UpCiAgIkNyZWF0ZSBh
IG5ldyBvdmVybGF5IHdpdGggcmFuZ2UgQkVHIHRvIEVORCBpbiBCVUZGRVIuXG5cCklmIG9t
aXR0ZWQsIEJVRkZFUiBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBidWZmZXIuXG5cCkJFRyBh
bmQgRU5EIG1heSBiZSBpbnRlZ2VycyBvciBtYXJrZXJzLlxuXApUaGUgZm91cnRoIGFyZyBG
Uk9OVC1BRFZBTkNFLCBpZiBub24tbmlsLCBtYWtlcyB0aGVcblwKZnJvbnQgZGVsaW1pdGVy
IGFkdmFuY2Ugd2hlbiB0ZXh0IGlzIGluc2VydGVkIHRoZXJlLlxuXApUaGUgZmlmdGggYXJn
IFJFQVItQURWQU5DRSwgaWYgbm9uLW5pbCwgbWFrZXMgdGhlXG5cCnJlYXIgZGVsaW1pdGVy
IGFkdmFuY2Ugd2hlbiB0ZXh0IGlzIGluc2VydGVkIHRoZXJlLiIKICAobGV0IChvdmVybGF5
IHRlbXApCiAgICAoaWYgKG51bGwgYnVmZmVyKQoJKHNldHEgYnVmZmVyIChjdXJyZW50LWJ1
ZmZlcikpCiAgICAgIChjaGVjay1hcmd1bWVudC10eXBlICdidWZmZXJwIGJ1ZmZlcikpCgog
ICAgKGlmICg+IGJlZyBlbmQpCgkoc2V0cSB0ZW1wIGJlZwoJICAgICAgYmVnIGVuZAoJICAg
ICAgZW5kIHRlbXApKQoKICAgIChzZXRxIG92bCAobWFrZS1leHRlbnQgYmVnIGVuZCBidWZm
ZXIpKQogICAgKHNldC1leHRlbnQtcHJvcGVydHkgb3ZsICdvdmVybGF5IHQpCgogICAgKGlm
IGZyb250LWFkdmFuY2UKCShzZXQtZXh0ZW50LXByb3BlcnR5IG92bCAnc3RhcnQtb3BlbiB0
KQogICAgICAoc2V0LWV4dGVudC1wcm9wZXJ0eSBvdmwgJ3N0YXJ0LWNsb3NlZCB0KSkKCiAg
ICAoaWYgcmVhci1hZHZhbmNlCgkoc2V0LWV4dGVudC1wcm9wZXJ0eSBvdmwgJ2VuZC1jbG9z
ZWQgdCkKICAgICAgKHNldC1leHRlbnQtcHJvcGVydHkgb3ZsICdlbmQtb3BlbiB0KSkKCiAg
ICBvdmwpKQoKKGRlZnVuIG1vdmUtb3ZlcmxheSAob3ZlcmxheSBiZWcgZW5kICZvcHRpb25h
bCBidWZmZXIpCiAgIlNldCB0aGUgZW5kcG9pbnRzIG9mIE9WRVJMQVkgdG8gQkVHIGFuZCBF
TkQgaW4gQlVGRkVSLlxuXApJZiBCVUZGRVIgaXMgb21pdHRlZCwgbGVhdmUgT1ZFUkxBWSBp
biB0aGUgc2FtZSBidWZmZXIgaXQgaW5oYWJpdHMgbm93LlxuXApJZiBCVUZGRVIgaXMgb21p
dHRlZCwgYW5kIE9WRVJMQVkgaXMgaW4gbm8gYnVmZmVyLCBwdXQgaXQgaW4gdGhlIGN1cnJl
bnRcblwKYnVmZmVyLiIKICAobGV0IChvYnVmZmVyIHRlbXApCiAgICAoY2hlY2stYXJndW1l
bnQtdHlwZSAnb3ZlcmxheXAgb3ZlcmxheSkKICAgIChpZiAobnVsbCBidWZmZXIpCgkoc2V0
cSBidWZmZXIgKGV4dGVudC1vYmplY3Qgb3ZlcmxheSkpKQogICAgCiAgICAoaWYgKG51bGwg
YnVmZmVyKQoJKHNldHEgYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpKQogICAgCiAgICAoY2hl
Y2stYXJndW1lbnQtdHlwZSAnYnVmZmVycCBidWZmZXIpCiAgICAKICAgIChpZiAoYW5kICg9
IGJlZyBlbmQpCgkgICAgIChub3QgKG51bGwgKGV4dGVudC1wcm9wZXJ0eSBvdmVybGF5ICdl
dmFwb3JhdGUpKSkpCgkoZGVsZXRlLW92ZXJsYXkgb3ZlcmxheSkKCiAgICAgIChpZiAoPiBi
ZWcgZW5kKQoJICAoc2V0cSB0ZW1wIGJlZwoJCWJlZyBlbmQKCQllbmQgdGVtcCkpCgogICAg
ICAoc2V0LWV4dGVudC1lbmRwb2ludHMgb3ZlcmxheSBiZWcgZW5kIGJ1ZmZlcikKICAgICAg
b3ZlcmxheSkpKQoKKGRlZnVuIGRlbGV0ZS1vdmVybGF5IChvdmVybGF5KQogICJEZWxldGUg
dGhlIG92ZXJsYXkgT1ZFUkxBWSBmcm9tIGl0cyBidWZmZXIuIgogIChjaGVjay1hcmd1bWVu
dC10eXBlICdvdmVybGF5cCBvdmVybGF5KQogIChkZXRhY2gtZXh0ZW50IG92ZXJsYXkpCiAg
bmlsKQoKKGRlZnVuIG92ZXJsYXktc3RhcnQgKG92ZXJsYXkpCiAgIlJldHVybiB0aGUgcG9z
aXRpb24gYXQgd2hpY2ggT1ZFUkxBWSBzdGFydHMuIgogIChjaGVjay1hcmd1bWVudC10eXBl
ICdvdmVybGF5cCBvdmVybGF5KQogIChleHRlbnQtc3RhcnQtcG9zaXRpb24gb3Zlcmx5KSkK
CihkZWZ1biBvdmVybGF5LWVuZCAob3ZlcmxheSkKICAiUmV0dXJuIHRoZSBwb3NpdGlvbiBh
dCB3aGljaCBPVkVSTEFZIGVuZHMuIgogIChjaGVjay1hcmd1bWVudC10eXBlICdvdmVybGF5
cCBvdmVybGF5KQogIChleHRlbnQtZW5kLXBvc2l0aW9uIG92ZXJsYXkpKQoKKGRlZnVuIG92
ZXJsYXktYnVmZmVyIChvdmVybGF5KQogICJSZXR1cm4gdGhlIGJ1ZmZlciBPVkVSTEFZIGJl
bG9uZ3MgdG8uIgogIChjaGVjay1hcmd1bWVudC10eXBlICdvdmVybGF5cCBvdmVybGF5KQog
IChleHRlbnQtb2JqZWN0IG92ZXJsYXkpKQoKKGRlZnVuIG92ZXJsYXktcHJvcGVydGllcyAo
b3ZlcmxheSkKICAiUmV0dXJuIGEgbGlzdCBvZiB0aGUgcHJvcGVydGllcyBvbiBPVkVSTEFZ
LlxuXApUaGlzIGlzIGEgY29weSBvZiBPVkVSTEFZJ3MgcGxpc3Q7IG1vZGlmeWluZyBpdHMg
Y29uc2VzIGhhcyBubyBlZmZlY3Qgb25cblwKT1ZFUkxBWS4iCiAgKGNoZWNrLWFyZ3VtZW50
LXR5cGUgJ292ZXJsYXlwIG92ZXJsYXkpCiAgKGV4dGVudC1wcm9wZXJ0aWVzIG92ZXJsYXkp
KQoKKGRlZnVuIG92ZXJsYXlzLWF0IChwb3MpCiAgIlJldHVybiBhIGxpc3Qgb2YgdGhlIG92
ZXJsYXlzIHRoYXQgY29udGFpbiBwb3NpdGlvbiBQT1MuIgogIChvdmVybGF5cy1pbiBwb3Mg
cG9zKSkKCihkZWZ1biBvdmVybGF5cy1pbiAoYmVnIGVuZCkKICAiUmV0dXJuIGEgbGlzdCBv
ZiB0aGUgb3ZlcmxheXMgdGhhdCBvdmVybGFwIHRoZSByZWdpb24gQkVHIC4uLiBFTkQuXG5c
Ck92ZXJsYXAgbWVhbnMgdGhhdCBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGlzIGNvbnRhaW5l
ZCB3aXRoaW4gdGhlIG92ZXJsYXlcblwKYW5kIGFsc28gY29udGFpbmVkIHdpdGhpbiB0aGUg
c3BlY2lmaWVkIHJlZ2lvbi5cblwKRW1wdHkgb3ZlcmxheXMgYXJlIGluY2x1ZGVkIGluIHRo
ZSByZXN1bHQgaWYgdGhleSBhcmUgbG9jYXRlZCBhdCBCRUdcblwKb3IgYmV0d2VlbiBCRUcg
YW5kIEVORC4iCiAgKGxldCAobHN0KQogICAgKG1hcGNhciAoZnVuY3Rpb24gKGxhbWJkYSAo
eCkgKGFuZCAoZXh0ZW50LXByb3BlcnR5IHggJ292ZXJsYXkpCgkJCQkgICAgICAgKHNldHEg
bHN0IChhcHBlbmQgbHN0IChsaXN0IHgpKSkpKSkKCSAgICAoZXh0ZW50LWxpc3QgbmlsIGJl
ZyBlbmQpKQogICAgbHN0KSkKCihkZWZ1biBuZXh0LW92ZXJsYXktY2hhbmdlIChwb3MpCiAg
IlJldHVybiB0aGUgbmV4dCBwb3NpdGlvbiBhZnRlciBQT1Mgd2hlcmUgYW4gb3ZlcmxheSBz
dGFydHMgb3IgZW5kcy5cblwKSWYgdGhlcmUgYXJlIG5vIG1vcmUgb3ZlcmxheSBib3VuZGFy
aWVzIGFmdGVyIFBPUywgcmV0dXJuIChwb2ludC1tYXgpLiIKICAocG9pbnQtbWF4KSkKCihk
ZWZ1biBwcmV2aW91cy1vdmVybGF5LWNoYW5nZSAocG9zKQogICJSZXR1cm4gdGhlIHByZXZp
b3VzIHBvc2l0aW9uIGJlZm9yZSBQT1Mgd2hlcmUgYW4gb3ZlcmxheSBzdGFydHMgb3IgZW5k
cy5cblwKSWYgdGhlcmUgYXJlIG5vIG1vcmUgb3ZlcmxheSBib3VuZGFyaWVzIGJlZm9yZSBQ
T1MsIHJldHVybiAocG9pbnQtbWluKS4iCiAgKHBvaW50LW1pbikpCgooZGVmdW4gb3Zlcmxh
eS1saXN0cyAoKQogICJSZXR1cm4gYSBwYWlyIG9mIGxpc3RzIGdpdmluZyBhbGwgdGhlIG92
ZXJsYXlzIG9mIHRoZSBjdXJyZW50IGJ1ZmZlci5cblwKVGhlIGNhciBoYXMgYWxsIHRoZSBv
dmVybGF5cyBiZWZvcmUgdGhlIG92ZXJsYXkgY2VudGVyO1xuXAp0aGUgY2RyIGhhcyBhbGwg
dGhlIG92ZXJsYXlzIGFmdGVyIHRoZSBvdmVybGF5IGNlbnRlci5cblwKUmVjZW50ZXJpbmcg
b3ZlcmxheXMgbW92ZXMgb3ZlcmxheXMgYmV0d2VlbiB0aGVzZSBsaXN0cy5cblwKVGhlIGxp
c3RzIHlvdSBnZXQgYXJlIGNvcGllcywgc28gdGhhdCBjaGFuZ2luZyB0aGVtIGhhcyBubyBl
ZmZlY3QuXG5cCkhvd2V2ZXIsIHRoZSBvdmVybGF5cyB5b3UgZ2V0IGFyZSB0aGUgcmVhbCBv
YmplY3RzIHRoYXQgdGhlIGJ1ZmZlciB1c2VzLiIKICAoaWYgKG5vdCAoYm91bmRwICd4ZW1h
Y3MtaW50ZXJuYWwtb3ZlcmxheS1jZW50ZXItcG9zKSkKICAgICAgKG92ZXJsYXktcmVjZW50
ZXIgKC8gKC0gKHBvaW50LW1heCkgKHBvaW50LW1pbikpIDIpKSkKICAobGV0ICgoY2VudGVy
IHhlbWFjcy1pbnRlcm5hbC1vdmVybGF5LWNlbnRlci1wb3MpKQogICAgIChlcnJvciAibm90
IGltcGxlbWVudGVkIHlldCIpKSkKCgooZGVmdW4gb3ZlcmxheS1yZWNlbnRlciAocG9zKQog
ICJSZWNlbnRlciB0aGUgb3ZlcmxheXMgb2YgdGhlIGN1cnJlbnQgYnVmZmVyIGFyb3VuZCBw
b3NpdGlvbiBQT1MuIgogIChzZXQgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ3hlbWFjcy1pbnRl
cm5hbC1vdmVybGF5LWNlbnRlci1wb3MpIHBvcykpCgooZGVmdW4gb3ZlcmxheS1nZXQgKG92
ZXJsYXkgcHJvcCkKICAiR2V0IHRoZSBwcm9wZXJ0eSBvZiBvdmVybGF5IE9WRVJMQVkgd2l0
aCBwcm9wZXJ0eSBuYW1lIFBST1AuIgogIChjaGVjay1hcmd1bWVudC10eXBlICdvdmVybGF5
cCBvdmVybGF5KQogIChleHRlbnQtcHJvcGVyeSBvdmVybGF5IHByb3ApKQoKKGRlZnVuIG92
ZXJsYXktcHV0IChvdmVybGF5IHByb3AgdmFsdWUpCiAgIlNldCBvbmUgcHJvcGVydHkgb2Yg
b3ZlcmxheSBPVkVSTEFZOiBnaXZlIHByb3BlcnR5IFBST1AgdmFsdWUgVkFMVUUuIgogIChj
aGVjay1hcmd1bWVudC10eXBlIG92ZXJsYXkpCiAgKHNldC1leHRlbnQtcHJvcGVydHkgb3Zl
cmxheSBwcm9wIHZhbHVlKSkKCihkZWZ1biB0ZXN0LW92ZXJsYXkgKHN0YXJ0ICZvcHRpb25h
bCBmcm9udCByZWFyKQogIChsZXQgKG92bCBiZWcgZW5kKQogICAgKHNldHEgYmVnIChwb2lu
dC1taW4pCgkgIGVuZCAoMSsgYmVnKQoJICBvdmwgKG1ha2Utb3ZlcmxheSBiZWcgZW5kIG5p
bCBmcm9udCByZWFyKSkKICAgIChzYXZlLWV4Y3Vyc2lvbiAKICAgICAgKGdvdG8tY2hhciAo
aWYgc3RhcnQKCQkgICAgIGJlZwoJCSAgIGVuZCkpCiAgICAgIChpbnNlcnQtc3RyaW5nICI7
OyIpKQogICAgKGZvcm1hdCAiOzsgJWQgJWQgJWQ6ICVkICVkXG4iCgkgICAgKGlmIHN0YXJ0
IDEgMCkKCSAgICAoaWYgZnJvbnQgMSAwKQoJICAgIChpZiByZWFyICAxIDApCgkgICAgKG92
ZXJsYXktc3RhcnQgb3ZsKQoJICAgIChvdmVybGF5LWVuZCBvdmwpKSkpCgooc2F2ZS1leGN1
cnNpb24KIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCiAobWFwY2FyICdpbnNlcnQtc3RyaW5n
IAoJIChsaXN0CgkgICh0ZXN0LW92ZXJsYXkgdCAgIHQgICB0ICApCgkgICh0ZXN0LW92ZXJs
YXkgdCAgIHQgICBuaWwpCgkgICh0ZXN0LW92ZXJsYXkgdCAgIG5pbCB0ICApCgkgICh0ZXN0
LW92ZXJsYXkgdCAgIG5pbCBuaWwpCgkgICh0ZXN0LW92ZXJsYXkgbmlsIHQgICB0ICApCgkg
ICh0ZXN0LW92ZXJsYXkgbmlsIHQgICBuaWwpCgkgICh0ZXN0LW92ZXJsYXkgbmlsIG5pbCB0
ICApCgkgICh0ZXN0LW92ZXJsYXkgbmlsIG5pbCBuaWwpCiAgICkpKQo=

--Multipart_Wed_Jan_15_16:53:35_1997-1--

