1
0
mirror of https://github.com/nvbn/thefuck.git synced 2025-02-21 20:38:54 +00:00

add THEFUCK_HISTORY_LIMIT, my machine is so slow

This commit is contained in:
lovedboy 2015-10-22 19:25:00 +08:00
parent 3da26192cb
commit 372e983459
3 changed files with 14 additions and 4 deletions

View File

@ -302,7 +302,8 @@ Or via environment variables:
* `THEFUCK_NO_COLORS` – disable colored output, `true/false`; * `THEFUCK_NO_COLORS` – disable colored output, `true/false`;
* `THEFUCK_PRIORITY` – priority of the rules, like `no_command=9999:apt_get=100`, * `THEFUCK_PRIORITY` – priority of the rules, like `no_command=9999:apt_get=100`,
rule with lower `priority` will be matched first; rule with lower `priority` will be matched first;
* `THEFUCK_DEBUG` – enables debug output, `true/false`. * `THEFUCK_DEBUG` – enables debug output, `true/false`;
* `THEFUCK_HISTORY_LIMIT` – how many history commands will be scanned, like `2000`.
For example: For example:

View File

@ -24,7 +24,8 @@ ENV_TO_ATTR = {'THEFUCK_RULES': 'rules',
'THEFUCK_REQUIRE_CONFIRMATION': 'require_confirmation', 'THEFUCK_REQUIRE_CONFIRMATION': 'require_confirmation',
'THEFUCK_NO_COLORS': 'no_colors', 'THEFUCK_NO_COLORS': 'no_colors',
'THEFUCK_PRIORITY': 'priority', 'THEFUCK_PRIORITY': 'priority',
'THEFUCK_DEBUG': 'debug'} 'THEFUCK_DEBUG': 'debug',
'THEFUCK_HISTORY_LIMIT': 'history_limit'}
SETTINGS_HEADER = u"""# ~/.thefuck/settings.py: The Fuck settings file SETTINGS_HEADER = u"""# ~/.thefuck/settings.py: The Fuck settings file
# #
@ -125,3 +126,4 @@ class Settings(dict):
settings = Settings(DEFAULT_SETTINGS) settings = Settings(DEFAULT_SETTINGS)
settings.init()

View File

@ -10,6 +10,7 @@ from time import time
import io import io
import os import os
from .utils import DEVNULL, memoize, cache from .utils import DEVNULL, memoize, cache
from .conf import settings
class Generic(object): class Generic(object):
@ -59,10 +60,16 @@ class Generic(object):
def get_history(self): def get_history(self):
"""Returns list of history entries.""" """Returns list of history entries."""
tail_num = settings.get("history_limit", None)
history_file_name = self._get_history_file_name() history_file_name = self._get_history_file_name()
if os.path.isfile(history_file_name): if os.path.isfile(history_file_name):
with io.open(history_file_name, 'r', if tail_num is not None:
encoding='utf-8', errors='ignore') as history: _, f = os.popen2("tail -n {} {}".format(tail_num, history_file_name))
_.close()
else:
f = io.open(history_file_name, 'r',
encoding='utf-8', errors='ignore')
with f as history:
for line in history: for line in history:
prepared = self._script_from_history(line)\ prepared = self._script_from_history(line)\
.strip() .strip()