From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Carlos Pita Newsgroups: gmane.emacs.bugs Subject: bug#19736: Date: Mon, 2 Feb 2015 14:30:49 -0300 Message-ID: References: <87y4ojhpgq.fsf@gmail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a11c3d1c8e9e3ef050e1e512d X-Trace: ger.gmane.org 1422898339 29108 80.91.229.3 (2 Feb 2015 17:32:19 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 2 Feb 2015 17:32:19 +0000 (UTC) Cc: Fabian Ezequiel Gallina To: 19736@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Feb 02 18:32:14 2015 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1YIKr5-0007aU-R4 for geb-bug-gnu-emacs@m.gmane.org; Mon, 02 Feb 2015 18:32:12 +0100 Original-Received: from localhost ([::1]:55740 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YIKr5-00036z-2K for geb-bug-gnu-emacs@m.gmane.org; Mon, 02 Feb 2015 12:32:11 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:51422) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YIKr0-000363-S1 for bug-gnu-emacs@gnu.org; Mon, 02 Feb 2015 12:32:08 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YIKqw-00042Q-PZ for bug-gnu-emacs@gnu.org; Mon, 02 Feb 2015 12:32:06 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:41120) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YIKqw-00042D-KQ for bug-gnu-emacs@gnu.org; Mon, 02 Feb 2015 12:32:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1YIKqw-0003ns-Bt for bug-gnu-emacs@gnu.org; Mon, 02 Feb 2015 12:32:02 -0500 X-Loop: help-debbugs@gnu.org In-Reply-To: <87y4ojhpgq.fsf@gmail.com> Resent-From: Carlos Pita Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 02 Feb 2015 17:32:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 19736 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 19736-submit@debbugs.gnu.org id=B19736.142289827814563 (code B ref 19736); Mon, 02 Feb 2015 17:32:02 +0000 Original-Received: (at 19736) by debbugs.gnu.org; 2 Feb 2015 17:31:18 +0000 Original-Received: from localhost ([127.0.0.1]:60593 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YIKqD-0003mo-Lv for submit@debbugs.gnu.org; Mon, 02 Feb 2015 12:31:18 -0500 Original-Received: from mail-la0-f54.google.com ([209.85.215.54]:39219) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YIKqB-0003ma-PW for 19736@debbugs.gnu.org; Mon, 02 Feb 2015 12:31:16 -0500 Original-Received: by mail-la0-f54.google.com with SMTP id hv19so43113316lab.13 for <19736@debbugs.gnu.org>; Mon, 02 Feb 2015 09:31:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to:cc:content-type; bh=s+Pz/Nnri67TRQ8GE9/dFoVhkSzCTvN+Zd/h1o6MZyY=; b=xsATys9ThSa3TBghExiaa8IBhyHwQhT9txgf7zWxdfB4b+xVvj3WD8FxZDK+MyjDOL +6KDy3oeUtNuWVJWqmvOYS2aPazwPwCj6WeYlK02JCROKyC5IE6lr+NJFvkosC97I28p 842sG66XR2n03QVQVkATn7k4N3TRfiAIioEswWmKM81Yw7X+8eRNMcUgDloKR54lIKqx 6WCnSzVqzINNw1MGJhZdTRLGQeo/tzXphwoNPkHWHjUBOgmAc6Ioxx4zuXjTsA4s2Fzc iExCJI6tiT2iDCcBmYpkRzgYAk1jhE9E40H0iuFkOM1xPv/ZgxsXi9Msx7ytMsWxm/6D vy/w== X-Received: by 10.112.25.104 with SMTP id b8mr20611456lbg.69.1422898269636; Mon, 02 Feb 2015 09:31:09 -0800 (PST) Original-Received: by 10.112.124.202 with HTTP; Mon, 2 Feb 2015 09:30:49 -0800 (PST) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:98985 Archived-At: --001a11c3d1c8e9e3ef050e1e512d Content-Type: text/plain; charset=UTF-8 Tags: patch Hi Fabian, I've fixed this bug. It was harder than I'd initially thought as several issues converged to screw ipython completion up: 1) The native completion setup code was importing rlcompleter. Just importing this overrides the current readline completer (the import calls set_completer to set the standard python completer, which is not quite the same as the completer ipython had previously set up). 2) The fallback completion setup code was also importing rlcompleter unconditionally, thus replacing the ipython completer too. 3) The _callable_postfix + triple-tab workaround was not available for the ipython completer AFAICS, because it has no _callable_postfix method. I opted for another (IMO a bit cleaner) workaround, see below. So, here is what I've done to fix the issues above: 3') I'm wrapping the current complete function (as returned by readline.get_completer) so that the wrapper never returns just one completion. In case the original completer returned one completion, a '__dummy_completion__' is added to the completion list by the wrapper. This avoids the need to define a _callable_postifx (unavailable in ipython) and also avoids the need for the triple-tab hack and duplicate filtering (obviously, you still have to filter '__dummy_completion__'). All in all I think the approach is more robust although still a bit hackish. IMO, it should be documented better in the code, I spent quite a time figuring out WTF the triple tabs and _callable_postfix were supposed to do! :) 1') Because of 3', there is no need to import rlcompleter in the native completion setup code anymore. 2') I've done some refactoring of the fallback completion setup code in order to import rlcompleter only in case the current shell is not ipython. In general, I think this setup code is a bit more clear now, but you're the one to judge that. I'm attaching a patch against my version of python.el which is a little outdated and has some patches of mine applied on top. But I think you won't have any problems figuring out the needed changes as they closely track the description above. Cheers -- Carlos --001a11c3d1c8e9e3ef050e1e512d Content-Type: text/plain; charset=US-ASCII; name="complete.diff" Content-Disposition: attachment; filename="complete.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i5o4opil0 ZGlmZiAtLWdpdCBhLy5lbWFjcy5kL2xpc3AvcHl0aG9uLmVsIGIvLmVtYWNzLmQvbGlzcC9weXRo b24uZWwKaW5kZXggYjk1OWZjNC4uMzMyY2E0NCAxMDA2NDQKLS0tIGEvLmVtYWNzLmQvbGlzcC9w eXRob24uZWwKKysrIGIvLmVtYWNzLmQvbGlzcC9weXRob24uZWwKQEAgLTI5NTAsNDMgKzI5NjIs MzggQEAgVGhpcyBmdW5jdGlvbiB0YWtlcyB0aGUgbGlzdCBvZiBzZXR1cCBjb2RlIHRvIHNlbmQg ZnJvbSB0aGUKIDs7OyBTaGVsbCBjb21wbGV0aW9uCiAKIChkZWZjdXN0b20gcHl0aG9uLXNoZWxs LWNvbXBsZXRpb24tc2V0dXAtY29kZQotICAidHJ5OgotICAgIGltcG9ydCBfX2J1aWx0aW5fXwot ZXhjZXB0IEltcG9ydEVycm9yOgotICAgICMgUHl0aG9uIDMKLSAgICBpbXBvcnQgYnVpbHRpbnMg YXMgX19idWlsdGluX18KLXRyeToKLSAgICBpbXBvcnQgcmVhZGxpbmUsIHJsY29tcGxldGVyCi1l eGNlcHQ6Ci0gICAgZGVmIF9fUFlUSE9OX0VMX2dldF9jb21wbGV0aW9ucyh0ZXh0KToKLSAgICAg ICAgcmV0dXJuIFtdCi1lbHNlOgotICAgIGRlZiBfX1BZVEhPTl9FTF9nZXRfY29tcGxldGlvbnMo dGV4dCk6Ci0gICAgICAgIGJ1aWx0aW5zID0gZGlyKF9fYnVpbHRpbl9fKQotICAgICAgICBjb21w bGV0aW9ucyA9IFtdCi0gICAgICAgIHRyeToKKyAgImRlZiBfX1BZVEhPTl9FTF9nZXRfY29tcGxl dGlvbnModGV4dCk6CisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgX19idWlsdGluX18KKyAgICBl eGNlcHQgSW1wb3J0RXJyb3I6ICAjIFB5dGhvbiAzCisgICAgICAgIGltcG9ydCBidWlsdGlucyBh cyBfX2J1aWx0aW5fXworICAgIGJ1aWx0aW5zID0gZGlyKF9fYnVpbHRpbl9fKQorICAgIGlzX2lw eXRob24gPSAoJ19fSVBZVEhPTl9fJyBpbiBidWlsdGlucyBvcgorICAgICAgICAgICAgICAgICAg J19fSVBZVEhPTl9fYWN0aXZlJyBpbiBidWlsdGlucykKKyAgICBjb21wbGV0aW9ucyA9IFtdCisg ICAgdHJ5OgorICAgICAgICBpZiBpc19pcHl0aG9uOgogICAgICAgICAgICAgc3BsaXRzID0gdGV4 dC5zcGxpdCgpCiAgICAgICAgICAgICBpc19tb2R1bGUgPSBzcGxpdHMgYW5kIHNwbGl0c1swXSBp biAoJ2Zyb20nLCAnaW1wb3J0JykKLSAgICAgICAgICAgIGlzX2lweXRob24gPSAoJ19fSVBZVEhP Tl9fJyBpbiBidWlsdGlucyBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAnX19JUFlUSE9O X19hY3RpdmUnIGluIGJ1aWx0aW5zKQogICAgICAgICAgICAgaWYgaXNfbW9kdWxlOgogICAgICAg ICAgICAgICAgIGZyb20gSVB5dGhvbi5jb3JlLmNvbXBsZXRlcmxpYiBpbXBvcnQgbW9kdWxlX2Nv bXBsZXRpb24KICAgICAgICAgICAgICAgICBjb21wbGV0aW9ucyA9IG1vZHVsZV9jb21wbGV0aW9u KHRleHQuc3RyaXAoKSkKLSAgICAgICAgICAgIGVsaWYgaXNfaXB5dGhvbiBhbmQgJ19fSVAnIGlu IGJ1aWx0aW5zOgorICAgICAgICAgICAgZWxpZiAnX19JUCcgaW4gYnVpbHRpbnM6CiAgICAgICAg ICAgICAgICAgY29tcGxldGlvbnMgPSBfX0lQLmNvbXBsZXRlKHRleHQpCi0gICAgICAgICAgICBl bGlmIGlzX2lweXRob24gYW5kICdnZXRfaXB5dGhvbicgaW4gYnVpbHRpbnM6CisgICAgICAgICAg ICBlbGlmICdnZXRfaXB5dGhvbicgaW4gYnVpbHRpbnM6CiAgICAgICAgICAgICAgICAgY29tcGxl dGlvbnMgPSBnZXRfaXB5dGhvbigpLkNvbXBsZXRlci5hbGxfY29tcGxldGlvbnModGV4dCkKLSAg ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaSA9IDAKLSAgICAgICAgICAgICAgICB3 aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICByZXMgPSByZWFkbGluZS5nZXRfY29tcGxl dGVyKCkodGV4dCwgaSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlczoKLSAgICAgICAg ICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGkgKz0gMQotICAgICAg ICAgICAgICAgICAgICBjb21wbGV0aW9ucy5hcHBlbmQocmVzKQotICAgICAgICBleGNlcHQ6Ci0g ICAgICAgICAgICBwYXNzCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9ucyIKKyAgICAgICAgZWxz ZTogICMgTmV2ZXIgZG8gdGhpcyBpbiBJUHl0aG9uIGFzIGl0IG92ZXJyaWRlcyB0aGUgY29tcGxl dGVyIQorICAgICAgICAgICAgaW1wb3J0IHJlYWRsaW5lLCBybGNvbXBsZXRlcgorICAgICAgICAg ICAgaSA9IDAKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgcmVzID0g cmVhZGxpbmUuZ2V0X2NvbXBsZXRlcigpKHRleHQsIGkpCisgICAgICAgICAgICAgICAgaWYgbm90 IHJlczoKKyAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGkgKz0gMQor ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25zLmFwcGVuZChyZXMpCisgICAgZXhjZXB0OgorICAg ICAgICBwYXNzCisgICAgcmV0dXJuIGNvbXBsZXRpb25zIgogICAiQ29kZSB1c2VkIHRvIHNldHVw IGNvbXBsZXRpb24gaW4gaW5mZXJpb3IgUHl0aG9uIHByb2Nlc3Nlcy4iCiAgIDp0eXBlICdzdHJp bmcKICAgOmdyb3VwICdweXRob24pCkBAIC0zMDUzLDE4ICszMDYwLDIwIEBAIFdoZW4gYSBtYXRj aCBpcyBmb3VuZCwgbmF0aXZlIGNvbXBsZXRpb24gaXMgZGlzYWJsZWQuIgogICAgICAgIydpZGVu dGl0eQogICAgICAgKGxpc3QKICAgICAgICAidHJ5OiIKLSAgICAgICAiICAgIGltcG9ydCByZWFk bGluZSwgcmxjb21wbGV0ZXIiCi0gICAgICAgOzsgUmVtb3ZlIHBhcmVucyBvbiBjYWxsYWJsZXMg YXMgaXQgYnJlYWtzIGNvbXBsZXRpb24gb24KLSAgICAgICA7OyBhcmd1bWVudHMgKGUuZy4gc3Ry KEFyaTx0YWI+KSkuCi0gICAgICAgIiAgICBjbGFzcyBDb21wbGV0ZXIocmxjb21wbGV0ZXIuQ29t cGxldGVyKToiCi0gICAgICAgIiAgICAgICAgZGVmIF9jYWxsYWJsZV9wb3N0Zml4KHNlbGYsIHZh bCwgd29yZCk6IgotICAgICAgICIgICAgICAgICAgICByZXR1cm4gd29yZCIKLSAgICAgICAiICAg IHJlYWRsaW5lLnNldF9jb21wbGV0ZXIoQ29tcGxldGVyKCkuY29tcGxldGUpIgorICAgICAgICIg ICAgaW1wb3J0IHJlYWRsaW5lIgorICAgICAgICIgICAgZGVmIGNvbXBsZXRlcih0ZXh0LCBzdGF0 ZSwgYz1yZWFkbGluZS5nZXRfY29tcGxldGVyKCkpOiIKKyAgICAgICAiICAgICAgICBjb21wbGV0 aW9uID0gYyh0ZXh0LCBzdGF0ZSkiCisgICAgICAgIiAgICAgICAgaWYgbm90IGNvbXBsZXRpb24g YW5kIHN0YXRlID09IDE6IgorICAgICAgICIgICAgICAgICAgICByZXR1cm4gdGV4dCArICdfX2R1 bW15X2NvbXBsZXRpb25fXyciCisgICAgICAgIiAgICAgICAgZWxzZToiCisgICAgICAgIiAgICAg ICAgICAgIHJldHVybiBjb21wbGV0aW9uIgorICAgICAgICIgICAgcmVhZGxpbmUuc2V0X2NvbXBs ZXRlcihjb21wbGV0ZXIpIgogICAgICAgICIgICAgaWYgcmVhZGxpbmUuX19kb2NfXyBhbmQgJ2xp YmVkaXQnIGluIHJlYWRsaW5lLl9fZG9jX186IgogICAgICAgICIgICAgICAgIHJlYWRsaW5lLnBh cnNlX2FuZF9iaW5kKCdiaW5kIF5JIHJsX2NvbXBsZXRlJykiCiAgICAgICAgIiAgICBlbHNlOiIK ICAgICAgICAiICAgICAgICByZWFkbGluZS5wYXJzZV9hbmRfYmluZCgndGFiOiBjb21wbGV0ZScp IgogICAgICAgICIgICAgcHJpbnQgKCdweXRob24uZWw6IHJlYWRsaW5lIGlzIGF2YWlsYWJsZScp IgorICAgICAgICIgICAgZGVsIGNvbXBsZXRlciwgcmVhZGxpbmUgICMgU29tZSBjbGVhbnVwIgog ICAgICAgICJleGNlcHQ6IgogICAgICAgICIgICAgcHJpbnQgKCdweXRob24uZWw6IHJlYWRsaW5l IG5vdCBhdmFpbGFibGUnKSIpCiAgICAgICAiXG4iKQpAQCAtMzE0Niw3ICszMTU1LDcgQEAgY29t cGxldGlvbi4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGhvbi1zaGVsbC1jb21w bGV0aW9uLW5hdGl2ZS1yZWRpcmVjdC1idWZmZXIpKQogICAgICAgICAgICAoc2VwYXJhdG9ycyAo cHl0aG9uLXJ4CiAgICAgICAgICAgICAgICAgICAgICAgICAob3Igd2hpdGVzcGFjZSBvcGVuLXBh cmVuIGNsb3NlLXBhcmVuKSkpCi0gICAgICAgICAgICh0cmlnZ2VyICJcdFx0XHQiKQorICAgICAg ICAgICAodHJpZ2dlciAiXHQiKQogICAgICAgICAgICAobmV3LWlucHV0IChjb25jYXQgaW5wdXQg dHJpZ2dlcikpCiAgICAgICAgICAgIChpbnB1dC1sZW5ndGgKICAgICAgICAgICAgIChzYXZlLWV4 Y3Vyc2lvbgpAQCAtMzE5MiwxMSArMzIwMSwxMyBAQCBjb21wbGV0aW9uLiIKICAgICAgICAgICAg ICAgKHdoaWxlIChhY2NlcHQtcHJvY2Vzcy1vdXRwdXQKICAgICAgICAgICAgICAgICAgICAgICBw cm9jZXNzCiAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tbmF0 aXZlLW91dHB1dC10aW1lb3V0KSkKLSAgICAgICAgICAgICAgKGNsLXJlbW92ZS1kdXBsaWNhdGVz CisgICAgICAgICAgICAgIChjbC1yZW1vdmUKKyAgICAgICAgICAgICAgIChjb25jYXQgaW5wdXQg Il9fZHVtbXlfY29tcGxldGlvbl9fIikKICAgICAgICAgICAgICAgIChzcGxpdC1zdHJpbmcKICAg ICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzCiAgICAgICAgICAg ICAgICAgIChwb2ludC1taW4pIChwb2ludC1tYXgpKQotICAgICAgICAgICAgICAgIHNlcGFyYXRv cnMgdCkpKSkKKyAgICAgICAgICAgICAgICBzZXBhcmF0b3JzIHQpCisgICAgICAgICAgICAgICA6 dGVzdCAjJ3N0cmluZz0pKSkKICAgICAgICAgKHNldC1wcm9jZXNzLWZpbHRlciBwcm9jZXNzIG9y aWdpbmFsLWZpbHRlci1mbikpKSkpCiAKIChkZWZ1biBweXRob24tc2hlbGwtY29tcGxldGlvbi1n ZXQtY29tcGxldGlvbnMgKHByb2Nlc3MgaW1wb3J0IGlucHV0KQo= --001a11c3d1c8e9e3ef050e1e512d--