Created
December 30, 2010 20:37
-
-
Save mgedmin/760273 to your computer and use it in GitHub Desktop.
snippets for export PYTHONSTARTUP=~/.pythonrc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This is the actual file that combines all of the other snippets | |
# I've been using it for a while, so it's officially Bug Free (TM) | |
# Python startup script. vim: set ft=python : | |
# from http://www.norvig.com/python-iaq.html | |
# also see Tarek Ziade's _Expert_Pythom_Programming_ page 19 | |
import os, sys | |
# Coloured prompt | |
if os.getenv('TERM') in ('xterm', 'vt100', 'rxvt', 'Eterm', 'putty'): | |
try: | |
import readline | |
except ImportError: | |
sys.ps1 = '\033[0;32m>>> \033[0m' | |
sys.ps2 = '\033[0;32m... \033[0m' | |
else: | |
sys.ps1 = '\001\033[0;32m\002>>> \001\033[0m\002' | |
sys.ps2 = '\001\033[0;32m\002... \001\033[0m\002' | |
# Completion! | |
try: | |
import readline | |
except ImportError: | |
print("Module readline not available.") | |
else: | |
# persistent history | |
histfile = os.path.expanduser('~/.pythonhistory') | |
try: | |
readline.read_history_file(histfile) | |
except IOError: | |
pass | |
import atexit | |
atexit.register(readline.write_history_file, histfile) | |
del histfile, atexit | |
# tab completion | |
try: | |
sys.path.append(os.path.join(os.getenv('HOME'), 'src', 'rlcompleter2')) | |
import rlcompleter2 | |
rlcompleter2.setup() | |
del rlcompleter2 | |
except ImportError: | |
import rlcompleter | |
readline.parse_and_bind("tab: complete") | |
del rlcompleter | |
del readline | |
del sys | |
del os |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Coloured prompt | |
import os, sys | |
if os.getenv('TERM') in ('xterm', 'vt100', 'rxvt', 'Eterm', 'putty'): | |
try: | |
import readline | |
except ImportError: | |
sys.ps1 = '\033[0;32m>>> \033[0m' | |
sys.ps2 = '\033[0;32m... \033[0m' | |
else: | |
sys.ps1 = '\001\033[0;32m\002>>> \001\033[0m\002' | |
sys.ps2 = '\001\033[0;32m\002... \001\033[0m\002' | |
del readline | |
del os, sys |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Persistent history | |
try: | |
import readline | |
except ImportError: | |
print("Module readline not available.") | |
else: | |
import os | |
histfile = os.path.expanduser('~/.pythonhistory') | |
try: | |
readline.read_history_file(histfile) | |
except IOError: | |
pass | |
import atexit | |
atexit.register(readline.write_history_file, histfile) | |
del histfile, atexit, readline, os |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Tab-completion | |
try: | |
import readline | |
except ImportError: | |
print("Module readline not available.") | |
else: | |
import os, sys | |
try: | |
# look for rlcompleter2 in ~/src, it's a bit more advanced | |
sys.path.append(os.path.expanduser('~/src/rlcompleter2')) | |
import rlcompleter2 | |
rlcompleter2.setup() | |
del rlcompleter2 | |
except ImportError: | |
# fall back to rlcompleter from the standard library | |
import rlcompleter | |
readline.parse_and_bind("tab: complete") | |
del rlcompleter | |
del readline, os, sys |
readline
enables command-line editing and provides a hook for custom tab-completion. rlcompleter
implements a readline tab-completion hook that can understand and complete Python code. rlcompleter2 was a slightly more advanced version, but seems unmaintained these days (last release in 2010).
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks. I arrived here when looking at how to change the histfile, which was what I wanted.
I've tweaked it a bit :)
I am kind of curious: why do we import
rlcompleter
when, per documentation, importingreadline
already enables tab completion? Is it a version thing?