diff options
author | Matěj Cepl <mcepl@cepl.eu> | 2024-02-26 11:25:13 +0100 |
---|---|---|
committer | Matěj Cepl <mcepl@cepl.eu> | 2024-02-26 12:15:04 +0100 |
commit | 4c14865a45e265264e0f12d2aec826e7ff7255c7 (patch) | |
tree | 3188fb0f6981cc04b45e8fa8e9d8b5152307b14f | |
parent | ba755c79ff65097e970a121e5428d9b04f445da6 (diff) | |
download | epy-readline.tar.gz |
Initialize readline input history mechanism.readline
-rw-r--r-- | src/epy_reader/config.py | 7 | ||||
-rw-r--r-- | src/epy_reader/reader.py | 7 |
2 files changed, 14 insertions, 0 deletions
diff --git a/src/epy_reader/config.py b/src/epy_reader/config.py index db70a98..1948afd 100644 --- a/src/epy_reader/config.py +++ b/src/epy_reader/config.py @@ -1,6 +1,7 @@ import dataclasses import json import os +import readline import sys from typing import Mapping, Tuple, Union @@ -36,6 +37,12 @@ class Config(AppData): # to build help menu text self.keymap_user_dict = keymap_dict + if os.path.isdir(self.prefix): + self.input_history_file = os.path.join(self.prefix, 'readline_history.txt') + if os.path.isfile(self.input_history_file): + readline.read_history_file(self.input_history_file) + readline.set_history_length(1000) + @property def filepath(self) -> str: return os.path.join(self.prefix, "configuration.json") if self.prefix else os.devnull diff --git a/src/epy_reader/reader.py b/src/epy_reader/reader.py index ee615f8..310833a 100644 --- a/src/epy_reader/reader.py +++ b/src/epy_reader/reader.py @@ -4,6 +4,7 @@ import dataclasses import multiprocessing import os import re +import readline import shutil import signal import sqlite3 @@ -135,6 +136,9 @@ class Reader: self.tts_support: bool = bool(self._tts_speaker) self.is_speaking: bool = False + # readline history + self.input_history_file = config.input_history_file + # multi process & progress percentage self._multiprocess_support: bool = False if multiprocessing.cpu_count() == 1 else True self._process_counting_letter: Optional[multiprocessing.Process] = None @@ -703,6 +707,9 @@ class Reader: def cleanup(self) -> None: self.ebook.cleanup() + if self.input_history_file: + readline.write_history_file(self.input_history_file) + if isinstance(self._process_counting_letter, multiprocessing.Process): if self._process_counting_letter.is_alive(): self._process_counting_letter.terminate() |