33 lines
755 B
Text
33 lines
755 B
Text
|
# vim: ft=python
|
||
|
import os
|
||
|
import atexit
|
||
|
import readline
|
||
|
from pathlib import Path
|
||
|
|
||
|
if readline.get_current_history_length() == 0:
|
||
|
|
||
|
state_home = os.environ.get("XDG_STATE_HOME")
|
||
|
if state_home is None:
|
||
|
state_home = Path.home() / ".local" / "state"
|
||
|
else:
|
||
|
state_home = Path(state_home)
|
||
|
|
||
|
history_path = state_home / "python_history"
|
||
|
if history_path.is_dir():
|
||
|
raise OSError(f"'{history_path}' cannot be a directory")
|
||
|
|
||
|
history = str(history_path)
|
||
|
|
||
|
try:
|
||
|
readline.read_history_file(history)
|
||
|
except OSError: # Non existent
|
||
|
pass
|
||
|
|
||
|
def write_history():
|
||
|
try:
|
||
|
readline.write_history_file(history)
|
||
|
except OSError:
|
||
|
pass
|
||
|
|
||
|
atexit.register(write_history)
|