The patch currently only fixes "native" (readline-based) completion. If it is agreed that this is the correct direction I can prepare a similar patch for the non-native / legacy completion function `python-shell-completion-get-completions', which shows the same behavior. On Sat, 27 Aug 2016 at 14:47 Dan Davison wrote: > Here is the patch pasted into the body of an email: > > From 8e69b33a53ea30389a5e3946dd711320a77e0d23 Mon Sep 17 00:00:00 2001 > From: Dan Davison > Date: Fri, 5 Aug 2016 12:19:20 -0700 > Subject: [PATCH] Don't strip space from python completions > > The returned completion deliberately includes a space after a word like > 'import', which is always followed by more words. > > * lisp/progmodes/python.el > (python-shell-completion-native-get-completions): > Remove space from regular expression character class > --- > lisp/progmodes/python.el | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el > index ad69f87..8616279 100644 > --- a/lisp/progmodes/python.el > +++ b/lisp/progmodes/python.el > @@ -3551,7 +3551,7 @@ completion." > (split-string > (buffer-substring-no-properties > (line-beginning-position) (point-min)) > - "[ \f\t\n\r\v()]+" t) > + "[\f\t\n\r\v()]+" t) > :test #'string=)))) > (set-process-filter process original-filter-fn))))) > > -- > 2.3.2 (Apple Git-55) > > > On Sat, 27 Aug 2016 at 14:21 Dan Davison wrote: > >> Patch attached. >> >> This patch is also available as a pull request at at >> https://github.com/dandavison/emacs/pull/1 The commit hash >> is 8e69b33a53ea30389a5e3946dd711320a77e0d23. >> >> I have only tested this on macOS. As far as I am aware, when the space >> character is present, it is present deliberately and it is appropriate to >> retain it, but I would appreciate feedback from python.el experts. >> >> On Sat, 27 Aug 2016 at 14:10 Dan Davison wrote: >> >>> From emacs -Q: >>> >>> (setq python-shell-interpreter "ipython" >>> python-shell-interpreter-args "-i") >>> >>> M-x run-python >>> >>> In the python comint buffer insert "from itertools imp" and hit tab. >>> >>> You will see "imp" completed as "import" (no trailing space). >>> >>> However, if you do this in ipython itself, you will see "imp" completed >>> as "import ". This (i.e. what ipython does) is the desired behavior >>> (because import is always followed by another word). >>> >>> In GNU Emacs 25.1.50.1 (x86_64-apple-darwin14.5.0, NS appkit-1348.17 >>> Version 10.10.5 (Build 14F27)) >>> of 2016-04-16 built on hemiprocne >>> Repository revision: 934549e23d6bda5231375dbfed7b42a966c85d14 >>> Windowing system distributor 'Apple', version 10.3.1348 >>> Configured using: >>> 'configure --prefix=/usr/local/Cellar/emacs/HEAD >>> --enable-locallisppath=/usr/local/share/emacs/site-lisp >>> --infodir=/usr/local/Cellar/emacs/HEAD/share/info/emacs --with-xml2 >>> --without-dbus --without-gnutls --with-ns --disable-ns-self-contained' >>> >>> Configured features: >>> JPEG NOTIFY ACL LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS >>> >>> Important settings: >>> value of $LANG: en_US.UTF-8 >>> locale-coding-system: utf-8-unix >>> >>> Major mode: Lisp Interaction >>> >>> Minor modes in effect: >>> tooltip-mode: t >>> global-eldoc-mode: t >>> electric-indent-mode: t >>> mouse-wheel-mode: t >>> tool-bar-mode: t >>> menu-bar-mode: t >>> file-name-shadow-mode: t >>> global-font-lock-mode: t >>> font-lock-mode: t >>> blink-cursor-mode: t >>> auto-composition-mode: t >>> auto-encryption-mode: t >>> auto-compression-mode: t >>> line-number-mode: t >>> transient-mark-mode: t >>> >>> Recent messages: >>> For information about GNU Emacs and the GNU system, type C-h C-a. >>> >>> Load-path shadows: >>> None found. >>> >>> Features: >>> (shadow sort mail-extr emacsbug message dired dired-loaddefs format-spec >>> rfc822 mml easymenu mml-sec password-cache epa derived epg epg-config >>> gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse >>> rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 >>> ietf-drums mm-util mail-prsvr mail-utils time-date mule-util tooltip >>> eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel >>> term/ns-win ns-win ucs-normalize term/common-win tool-bar dnd fontset >>> image regexp-opt fringe tabulated-list newcomment elisp-mode lisp-mode >>> prog-mode register page menu-bar rfn-eshadow timer select scroll-bar >>> mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame >>> cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai >>> tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian >>> slovak czech european ethiopic indian cyrillic chinese charscript >>> case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer >>> cl-preloaded nadvice loaddefs button faces cus-face macroexp files >>> text-properties overlay sha1 md5 base64 format env code-pages mule >>> custom widget hashtable-print-readable backquote kqueue cocoa ns >>> multi-tty make-network-process emacs) >>> >>> Memory information: >>> ((conses 16 195970 9329) >>> (symbols 48 19431 0) >>> (miscs 40 43 170) >>> (strings 32 14792 5110) >>> (string-bytes 1 431078) >>> (vectors 16 32763) >>> (vector-slots 8 640839 4764) >>> (floats 8 156 54) >>> (intervals 56 194 0) >>> (buffers 976 11)) >>> >>>