summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/library/readline.rst22
-rw-r--r--Doc/tools/susp-ignored.csv2
-rw-r--r--Misc/ACKS1
-rw-r--r--Misc/NEWS.d/next/macOS/2018-05-16-13-25-58.bpo-13631.UIjDyY.rst2
-rw-r--r--Modules/readline.c4
5 files changed, 23 insertions, 8 deletions
diff --git a/Doc/library/readline.rst b/Doc/library/readline.rst
index 837816e..16c28cf 100644
--- a/Doc/library/readline.rst
+++ b/Doc/library/readline.rst
@@ -17,11 +17,18 @@ made using this module affect the behaviour of both the interpreter's
interactive prompt and the prompts offered by the built-in :func:`input`
function.
+Readline keybindings may be configured via an initialization file, typically
+``.inputrc`` in your home directory. See `Readline Init File
+<https://cnswww.cns.cwru.edu/php/chet/readline/rluserman.html#SEC9>`_
+in the GNU Readline manual for information about the format and
+allowable constructs of that file, and the capabilities of the
+Readline library in general.
+
.. note::
The underlying Readline library API may be implemented by
the ``libedit`` library instead of GNU readline.
- On MacOS X the :mod:`readline` module detects which library is being used
+ On macOS the :mod:`readline` module detects which library is being used
at run time.
The configuration file for ``libedit`` is different from that
@@ -29,12 +36,13 @@ function.
you can check for the text "libedit" in :const:`readline.__doc__`
to differentiate between GNU readline and libedit.
-Readline keybindings may be configured via an initialization file, typically
-``.inputrc`` in your home directory. See `Readline Init File
-<https://cnswww.cns.cwru.edu/php/chet/readline/rluserman.html#SEC9>`_
-in the GNU Readline manual for information about the format and
-allowable constructs of that file, and the capabilities of the
-Readline library in general.
+ If you use *editline*/``libedit`` readline emulation on macOS, the
+ initialization file located in your home directory is named
+ ``.editrc``. For example, the following content in ``~/.editrc`` will
+ turn ON *vi* keybindings and TAB completion::
+
+ python:bind -v
+ python:bind ^I rl_complete
Init file
diff --git a/Doc/tools/susp-ignored.csv b/Doc/tools/susp-ignored.csv
index cfdd526..33cd48f 100644
--- a/Doc/tools/susp-ignored.csv
+++ b/Doc/tools/susp-ignored.csv
@@ -187,6 +187,8 @@ library/profile,,:lineno,filename:lineno(function)
library/pyexpat,,:elem1,<py:elem1 />
library/pyexpat,,:py,"xmlns:py = ""http://www.python.org/ns/"">"
library/random,,:len,new_diff = mean(combined[:len(drug)]) - mean(combined[len(drug):])
+library/readline,,:bind,"python:bind -v"
+library/readline,,:bind,"python:bind ^I rl_complete"
library/smtplib,,:port,method must support that as well as a regular host:port
library/socket,,::,'5aef:2b::8'
library/socket,,:can,"return (can_id, can_dlc, data[:can_dlc])"
diff --git a/Misc/ACKS b/Misc/ACKS
index 5c05ee7..b1f1e8a 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -1229,6 +1229,7 @@ Gabriel de Perthuis
Tim Peters
Benjamin Peterson
Joe Peterson
+Zvezdan Petkovic
Ulrich Petri
Chris Petrilli
Roumen Petrov
diff --git a/Misc/NEWS.d/next/macOS/2018-05-16-13-25-58.bpo-13631.UIjDyY.rst b/Misc/NEWS.d/next/macOS/2018-05-16-13-25-58.bpo-13631.UIjDyY.rst
new file mode 100644
index 0000000..d9d505e
--- /dev/null
+++ b/Misc/NEWS.d/next/macOS/2018-05-16-13-25-58.bpo-13631.UIjDyY.rst
@@ -0,0 +1,2 @@
+The .editrc file in user's home directory is now processed correctly during
+the readline initialization through editline emulation on macOS.
diff --git a/Modules/readline.c b/Modules/readline.c
index 811fca8..7756e6b 100644
--- a/Modules/readline.c
+++ b/Modules/readline.c
@@ -1078,6 +1078,9 @@ setup_readline(readlinestate *mod_state)
Py_FatalError("not enough memory to save locale");
#endif
+ /* The name must be defined before initialization */
+ rl_readline_name = "python";
+
#ifdef __APPLE__
/* the libedit readline emulation resets key bindings etc
* when calling rl_initialize. So call it upfront
@@ -1099,7 +1102,6 @@ setup_readline(readlinestate *mod_state)
using_history();
- rl_readline_name = "python";
/* Force rebind of TAB to insert-tab */
rl_bind_key('\t', rl_insert);
/* Bind both ESC-TAB and ESC-ESC to the completion function */