Re: erl-complete ...

Bill Clementson <[email protected]> Fri, 14 Sep 2007 16:09:34 -0700
Newsgroups gmane.comp.lang.erlang.distel.devel
Message-ID <[email protected]>
--=-=-=

Hi Matthias,

Matthias Radestock <[email protected]> writes:
> Bill Clementson wrote:
>> Matthias Radestock <[email protected]> writes:
>>
>>> Bill Clementson wrote:
>>>> Do a "M-." on "math:pi()" and you'll see that it's the only function
>>>> in the source file.
>>> In which case I know how to fix this:
>> [snip examples]
>>
>> Great - will you be preparing a patch to the Call Graph code so that
>> who_calls will also return info on BIF's?
>
> Changing the completion code to use xref, and include BIFs, is on my
> todo list. Don't know when I will get round to doing it though. The
> code I posted, together with the existing who_calls code and the
> explanation below should be enough for anybody to be able implement
> it.

Yes (see below), but I was asking about a patch for the Call Graph
code that you wrote previously. At the moment, the "who calls" support
doesn't work for BIF's.

>>> (except distel's completion currently isn't using xref, but it should)
>>
>> I guess the main problem with using xref for completion is speed. The
>> xref who_calls build process is fairly slow and (if a lot of new
>> functions are being added) could result in lengthy wait times when you
>> want to get a completion. I guess you could use a separate (different
>> from the who_calls server) xref server that always rebuilds and only
>> gets functions for the specified module though. Was that what you had
>> in mind?
>
> The current_who calls only builds the graph the first time you invoke
> it - which takes a while but is faster than what we had before - and
> then updates it incrementally for every subsequent invocation, which
> is very quick.
>
> For completion I would use a different xref instance, configured to
> operate in "modules" mode, which is sufficient in this case. See the
> code I posted in my previous email. The modules mode of xref is *much*
> faster to initialise - less than 2 seconds on my machine, so even the
> first invocation of completion will work at tolerable speed. As with
> who_calls, subsequent invocations will be set up to update the call
> graph with any changed modules.
 
Does the attached patch do what you wanted?

- Bill

--=-=-=
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=patch
Content-Transfer-Encoding: base64

SW5kZXg6IGRpc3RlbC5lcmwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZGlzdGVsLmVybAkocmV2aXNpb24gMzgp
CisrKyBkaXN0ZWwuZXJsCSh3b3JraW5nIGNvcHkpCkBAIC02NDcsNDYgKzY0Nyw1MiBAQAogJSUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogJSUgQ29tcGxldGlvbiBzdXBwb3J0CiAlJSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCist
ZGVmaW5lKENPTVBMRVRJT05fU0VSVkVSLCBkaXN0ZWxfY29tcGxldGUpLgogCiAlJSBSZXR1cm5z
OiBbTW9kTmFtZV0gb2YgYWxsIG1vZHVsZXMgc3RhcnRpbmcgd2l0aCBQcmVmaXguCiAlJSBNb2RO
YW1lID0gUHJlZml4ID0gc3RyaW5nKCkKIG1vZHVsZXMoUHJlZml4KSAtPgotJSAgRklYTUU6IGhh
dmUgdG8gZGVjaWRlIHdoaWNoIGFwcHJvYWNoIGlzIGJldHRlciAtIGFsbCBsb2FkZWQgb3IgYWxs
IGluIHBhdGgKLSUgICAgICAgICBpLCBvZiBjb3Vyc2UsIHByZWZlciBhbGwgaW4gcGF0aCAobWJq
KQotICAgIERpcnMgPSBjb2RlOmdldF9wYXRoKCksCi0gICAge29rLCBzb3J0KGZvbGRsKGZ1bihE
aXIsIEFjYykgLT4gZm1fZGlyKERpciwgUHJlZml4LCBBY2MpIGVuZCwgW10sIERpcnMpKX0uCi0K
LWZtX2RpcihEaXIsIFByZWZpeCwgQWNjKSAtPgotICAgIGNhc2UgZmlsZTpsaXN0X2RpcihEaXIp
IG9mCi0Je29rLCBGaWxlc30gLT4KLQkgICAgTW9kcyA9IFtiYXNlbmFtZShGLCAiLmJlYW0iKSB8
fCBGIDwtIEZpbGVzLAotCQkJCQkgICAgbGlzdHM6cHJlZml4KFByZWZpeCwgRiksCi0JCQkJCSAg
ICBsaXN0czpzdWZmaXgoIi5iZWFtIiwgRildLAotCSAgICBNb2RzICsrIEFjYzsKKyAgICBlbnN1
cmVfY29tcGxldGlvbl9zZXJ2ZXJfc3RhcnRlZCgpLAorICAgIGNhc2UgIHhyZWY6cSg/Q09NUExF
VElPTl9TRVJWRVIsIHN0cmluZ19mb3JtYXQoJyJ+cy4qIiA6IE1vZCcsIFtQcmVmaXhdKSkgb2YK
Kwl7b2ssIE1vZHN9IC0+CisJICAgIHtvaywgbGlzdHM6bWFwKGZ1biBlcmxhbmc6YXRvbV90b19s
aXN0LzEsIE1vZHMpfTsKIAlfIC0+Ci0JICAgIEFjYworCSAgICB7ZXJyb3IsIGZtdCgiQ2FuJ3Qg
ZmluZCBhbnkgbWF0Y2hlcyBmb3IgfnAiLCBbUHJlZml4XSl9CiAgICAgZW5kLgogCiAlJSBSZXR1
cm5zOiBbRnVuTmFtZV0gb2YgYWxsIGV4cG9ydGVkIGZ1bmN0aW9ucyBvZiBNb2Qgc3RhcnRpbmcg
d2l0aCBQcmVmaXguCiAlJSBNb2QgPSBhdG9tKCkKICUlIFByZWZpeCA9IHN0cmluZygpCiBmdW5j
dGlvbnMoTW9kLCBfUHJlZml4KSAtPgotJSAgRklYTUU6IGhhdmUgdG8gZGVjaWRlIHdoaWNoIGFw
cHJvYWNoIGlzIGJldHRlciAtIGFsbCBsb2FkZWQgb3IgYWxsIGluIHBhdGgKLSUgICAgICAgICBp
LCBvZiBjb3Vyc2UsIHByZWZlciBhbGwgaW4gcGF0aCAobWJqKQotICAgIGNhc2UgYmVhbWZpbGUo
TW9kKSBvZgotCXtvaywgQmVhbUZpbGV9IC0+Ci0JICAgIGNhc2UgZ2V0X2V4cG9ydHMoQmVhbUZp
bGUpIG9mCi0JCXtvaywgRXhwb3J0czB9IC0+Ci0JCSAgICBFeHBvcnRzID0gRXhwb3J0czAgLS0g
W3sibW9kdWxlX2luZm8iLDB9LHsibW9kdWxlX2luZm8iLDF9XSwKLQkJICAgIEZucyA9IFtGdW4g
fHwge0Z1biwgX0FyaXR5fSA8LSBFeHBvcnRzXSwKLQkJICAgIHtvaywgb3Jkc2V0czp0b19saXN0
KG9yZHNldHM6ZnJvbV9saXN0KEZucykpfTsKLQkJZXJyb3IgLT4KLQkJICAgIHtlcnJvciwgZm10
KCJDYW4ndCBnZXQgZXhwb3J0IGxpc3QgZm9yIH5wIiwgW01vZF0pfQotCSAgICBlbmQ7CisgICAg
ZW5zdXJlX2NvbXBsZXRpb25fc2VydmVyX3N0YXJ0ZWQoKSwKKyAgICBjYXNlICB4cmVmOnEoP0NP
TVBMRVRJT05fU0VSVkVSLCBzdHJpbmdfZm9ybWF0KCIoWCtCKSAqIH5wOl8vXyIsIFtNb2RdKSkg
b2YKKwl7b2ssIFJlc30gLT4KKwkgICAgRm5zID0gW0Z1biB8fCB7X01vZCwgRnVuLCBfQXJpdHl9
IDwtIFJlc10sCisJICAgIHtvaywgbGlzdHM6bWFwKGZ1biBlcmxhbmc6YXRvbV90b19saXN0LzEs
IEZucyl9OwogCV8gLT4KLQkgICAge2Vycm9yLCBmbXQoIkNhbid0IGZpbmQgYmVhbSBmaWxlIGZv
ciB+cCIsIFtNb2RdKX0KKwkgICAge2Vycm9yLCBmbXQoIkNhbid0IGZpbmQgbW9kdWxlIH5wIiwg
W01vZF0pfQogICAgIGVuZC4KIAorZW5zdXJlX2NvbXBsZXRpb25fc2VydmVyX3N0YXJ0ZWQoKSAt
PgorICAgIGNhc2Ugd2hlcmVpcyg/Q09NUExFVElPTl9TRVJWRVIpIG9mCisJdW5kZWZpbmVkIC0+
CisJICAgIHhyZWY6c3RhcnQoP0NPTVBMRVRJT05fU0VSVkVSLCB7eHJlZl9tb2RlLCBtb2R1bGVz
fSksCisJICAgIHhyZWY6c2V0X2RlZmF1bHQoP0NPTVBMRVRJT05fU0VSVkVSLCBidWlsdGlucywg
dHJ1ZSksCisJICAgIHhyZWY6YWRkX3JlbGVhc2UoP0NPTVBMRVRJT05fU0VSVkVSLCBjb2RlOmxp
Yl9kaXIoKSwge25hbWUsIG90cH0pLAorCSAgICBmb3JlYWNoKGZ1biAoRGlyKSAtPiB4cmVmOmFk
ZF9kaXJlY3RvcnkoP0NPTVBMRVRJT05fU0VSVkVSLCBEaXIpIGVuZCwKKyAgICAgICAgICAgICAg
ICAgICAgZ2V0X2NvZGVfcGF0aCgpKTsKKwlfIC0+CisJICAgIHhyZWY6dXBkYXRlKD9DT01QTEVU
SU9OX1NFUlZFUiksCisgICAgICAgICAgICBvaworICAgIGVuZC4KKworc3RvcF9jb21wbGV0aW9u
X3NlcnZlcigpIC0+CisgICAgY2FzZSB3aGVyZWlzKD9DT01QTEVUSU9OX1NFUlZFUikgb2YKKyAg
ICAgICAgdW5kZWZpbmVkIC0+IG9rOworICAgICAgICBfIC0+IHhyZWY6c3RvcCg/Q09NUExFVElP
Tl9TRVJWRVIpLAorICAgICAgICAgICAgIG9rCisgICAgZW5kLgorCiAlJSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAlJSBSZWZhY3RvcmluZwogJSUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo=
--=-=-=
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
--=-=-=
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Distel-hackers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/distel-hackers

--=-=-=--