From 8c354ac51357700e26c1731eb88f8246e184e7f8 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Sun, 6 Oct 2002 05:43:47 +0000 Subject: [PATCH] Backport 2.49: SF #558432: Prevent Annoying ' ' from readline (Holker Krekel). readline in all python versions is configured to append a 'space' character for a successful completion. But for almost all python expressions 'space' is not wanted (see coding conventions PEP 8). For example if you have a function 'longfunction' and you type 'longf' you get 'longfunction ' as a completion. note the unwanted space at the end. The patch fixes this behaviour by setting readline's append_character to '\0' which means don't append anything. This doesn't work with readline < 2.1 (AFAIK nowadays readline2.2 is in good use). An alternative approach would be to make the append_character accessable from python so that modules like the rlcompleter.py can set it to '\0'. [Ed.: I think expecting readline >= 2.2 is fine. If a completer wants another character they can append that to the keyword in the list.] --- Modules/readline.c | 1 + 1 file changed, 1 insertion(+) diff --git a/Modules/readline.c b/Modules/readline.c index 9a2be051bd67..8d324cf8aa87 100644 --- a/Modules/readline.c +++ b/Modules/readline.c @@ -520,6 +520,7 @@ setup_readline(void) rl_completer_word_break_characters = strdup(" \t\n`~!@#$%^&*()-=+[{]}\\|;:'\",<>/?"); /* All nonalphanums except '.' */ + rl_completion_append_character ='\0'; begidx = PyInt_FromLong(0L); endidx = PyInt_FromLong(0L); -- 2.47.3