From 6c33e7333336487a30dbd170c93b2f6e50133de7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= Date: Sat, 27 Feb 2016 18:13:01 +0100 Subject: [PATCH] Fixed #26289 -- Enabled shell tab completion on systems using libedit. --- django/core/management/commands/shell.py | 8 +++++++- docs/releases/1.10.txt | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/django/core/management/commands/shell.py b/django/core/management/commands/shell.py index dfc7d786912..bd61940abaa 100644 --- a/django/core/management/commands/shell.py +++ b/django/core/management/commands/shell.py @@ -69,7 +69,13 @@ class Command(BaseCommand): # we already know 'readline' was imported successfully. import rlcompleter readline.set_completer(rlcompleter.Completer(imported_objects).complete) - readline.parse_and_bind("tab:complete") + # Enable tab completion on systems using libedit (e.g. Mac OSX). + # These lines are copied from Lib/site.py on Python 3.4. + readline_doc = getattr(readline, '__doc__', '') + if readline_doc is not None and 'libedit' in readline_doc: + readline.parse_and_bind("bind ^I rl_complete") + else: + readline.parse_and_bind("tab:complete") # We want to honor both $PYTHONSTARTUP and .pythonrc.py, so follow system # conventions and get $PYTHONSTARTUP first then .pythonrc.py. diff --git a/docs/releases/1.10.txt b/docs/releases/1.10.txt index 4f10dc1cd9b..47c964292fc 100644 --- a/docs/releases/1.10.txt +++ b/docs/releases/1.10.txt @@ -285,6 +285,9 @@ Management Commands * To assist with testing, :func:`~django.core.management.call_command` now accepts a command object as the first argument. +* The :djadmin:`shell` command supports tab completion on systems using + ``libedit``, e.g. Mac OSX. + Migrations ~~~~~~~~~~