.pystartup
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 01 Jan 2024 20:53:49 +0200
changeset 1039 78cdb4a057e3
parent 311 a63540742a19
permissions -rwxr-xr-x
Create symlink from ~/.bash_profile for login shell to activate my ~/.bashrc.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
226
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     1
# -*- mode: python -*-
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     2
# Add auto-completion and a stored history file of commands to your Python
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     3
# interactive interpreter. Requires Python 2.0+, readline. Autocomplete is
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     4
# bound to the Esc key by default (you can change it - see readline docs).
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     5
#
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     6
# Store the file in ~/.pystartup, and set an environment variable to point
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     7
# to it:  "export PYTHONSTARTUP=~/.pystartup" in bash.
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     8
227
d2bb2c3da51b Make color prompt for interactive Python.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 226
diff changeset
     9
import os
d2bb2c3da51b Make color prompt for interactive Python.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 226
diff changeset
    10
import sys
226
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    11
import atexit
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    12
import readline
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    13
import rlcompleter
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    14
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    15
historyPath = os.path.expanduser("~/.pyhistory")
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    16
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    17
def save_history(historyPath=historyPath):
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    18
    import readline
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    19
    readline.write_history_file(historyPath)
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    20
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    21
if os.path.exists(historyPath):
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    22
    readline.read_history_file(historyPath)
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    23
227
d2bb2c3da51b Make color prompt for interactive Python.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 226
diff changeset
    24
term_with_colors = ['xterm', 'xterm-color', 'xterm-256color', 'linux', 'screen', 'screen-256color', 'screen-bce']
d2bb2c3da51b Make color prompt for interactive Python.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 226
diff changeset
    25
if os.environ.get('TERM') in term_with_colors:
311
a63540742a19 Fix Readline column calculation by marking non-printable escape sequences.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 227
diff changeset
    26
    green='\001\033[32m\002'
a63540742a19 Fix Readline column calculation by marking non-printable escape sequences.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 227
diff changeset
    27
    red='\001\033[31m\002'
a63540742a19 Fix Readline column calculation by marking non-printable escape sequences.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 227
diff changeset
    28
    reset='\001\033[0m\002'
227
d2bb2c3da51b Make color prompt for interactive Python.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 226
diff changeset
    29
    sys.ps1 = red + '>>> ' + reset
d2bb2c3da51b Make color prompt for interactive Python.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 226
diff changeset
    30
    sys.ps2 = green + '... ' + reset
d2bb2c3da51b Make color prompt for interactive Python.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 226
diff changeset
    31
del term_with_colors
d2bb2c3da51b Make color prompt for interactive Python.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 226
diff changeset
    32
226
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    33
atexit.register(save_history)
227
d2bb2c3da51b Make color prompt for interactive Python.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 226
diff changeset
    34
del os, sys, atexit, readline, rlcompleter, save_history, historyPath
226
97139da73273 Enable python statement readline completion and readline history for interactive Python .
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    35