]> granicus.if.org Git - python/commitdiff
Merged revisions 87356 via svnmerge from
authorR. David Murray <rdmurray@bitdance.com>
Sat, 18 Dec 2010 03:52:09 +0000 (03:52 +0000)
committerR. David Murray <rdmurray@bitdance.com>
Sat, 18 Dec 2010 03:52:09 +0000 (03:52 +0000)
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r87356 | r.david.murray | 2010-12-17 22:48:32 -0500 (Fri, 17 Dec 2010) | 11 lines

  #9907: call rl_initialize early when using editline on OSX

  editline rl_initialize apparently discards any mappings done before it
  is called, which makes tab revert to file completion instead of inserting
  a tab.  So now on OSX we call rl_initialize first if we are using
  readline, and then re-read the users .editrc (if any) afterward so they
  can still override our defaults.

  Patch by Ned Deily, modified by Ronald Oussoren.
........

Misc/NEWS
Modules/readline.c

index 150dee8b4e2f5fdb813b95d9cfd45e9d5b5a96c9..8ca6dcfa9c4a3e64e03136ceb3fc8394924ba14c 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -22,6 +22,9 @@ Core and Builtins
 Library
 -------
 
+- Issue $9907: Fix tab handling on OSX when using editline by calling
+  rl_initialize first, then setting our custom defaults, then reading .editrc.
+
 - Issue #4188: Avoid creating dummy thread objects when logging operations
   from the threading module (with the internal verbose flag activated).
 
index 0afba5db9c5abe677a68e71abd5af811c7fbeb01..b5e258db67e41e524f61c1bc9991f578117d1f24 100644 (file)
@@ -865,6 +865,14 @@ setup_readline(void)
         Py_FatalError("not enough memory to save locale");
 #endif
 
+#ifdef __APPLE__
+    /* the libedit readline emulation resets key bindings etc 
+     * when calling rl_initialize.  So call it upfront
+     */
+    if (using_libedit_emulation)
+        rl_initialize();
+#endif /* __APPLE__ */
+
     using_history();
 
     rl_readline_name = "python";
@@ -896,8 +904,13 @@ setup_readline(void)
      * XXX: A bug in the readline-2.2 library causes a memory leak
      * inside this function.  Nothing we can do about it.
      */
-    rl_initialize();
-
+#ifdef __APPLE__
+    if (using_libedit_emulation)
+       rl_read_init_file(NULL);
+    else
+#endif /* __APPLE__ */
+        rl_initialize();
+    
     RESTORE_LOCALE(saved_locale)
 }