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 --=-=-=--