mirror of
				https://github.com/nvbn/thefuck.git
				synced 2025-10-30 06:34:09 +00:00 
			
		
		
		
	Merge pull request #432 from nvbn/422-not-alter-history
#422: Add `alter_history` settings option
This commit is contained in:
		| @@ -282,7 +282,8 @@ The Fuck has a few settings parameters which can be changed in `$XDG_CONFIG_HOME | ||||
| * `no_colors` – disable colored output; | ||||
| * `priority` – dict with rules priorities, rule with lower `priority` will be matched first; | ||||
| * `debug` – enables debug output, by default `False`; | ||||
| * `history_limit` – numeric value of how many history commands will be scanned, like `2000`;  | ||||
| * `history_limit` – numeric value of how many history commands will be scanned, like `2000`; | ||||
| * `alter_history` – push fixed command to history, by default `True`. | ||||
|  | ||||
| Example of `settings.py`: | ||||
|  | ||||
| @@ -306,7 +307,8 @@ Or via environment variables: | ||||
| * `THEFUCK_PRIORITY` – priority of the rules, like `no_command=9999:apt_get=100`, | ||||
| rule with lower `priority` will be matched first; | ||||
| * `THEFUCK_DEBUG` – enables debug output, `true/false`; | ||||
| * `THEFUCK_HISTORY_LIMIT` – how many history commands will be scanned, like `2000`. | ||||
| * `THEFUCK_HISTORY_LIMIT` – how many history commands will be scanned, like `2000`; | ||||
| * `THEFUCK_ALTER_HISTORY` – push fixed command to history `true/false`. | ||||
|  | ||||
| For example: | ||||
|  | ||||
|   | ||||
| @@ -17,6 +17,7 @@ DEFAULT_SETTINGS = {'rules': DEFAULT_RULES, | ||||
|                     'debug': False, | ||||
|                     'priority': {}, | ||||
|                     'history_limit': None, | ||||
|                     'alter_history': True, | ||||
|                     'env': {'LC_ALL': 'C', 'LANG': 'C', 'GIT_TRACE': '1'}} | ||||
|  | ||||
| ENV_TO_ATTR = {'THEFUCK_RULES': 'rules', | ||||
| @@ -24,9 +25,10 @@ ENV_TO_ATTR = {'THEFUCK_RULES': 'rules', | ||||
|                'THEFUCK_WAIT_COMMAND': 'wait_command', | ||||
|                'THEFUCK_REQUIRE_CONFIRMATION': 'require_confirmation', | ||||
|                'THEFUCK_NO_COLORS': 'no_colors', | ||||
|                'THEFUCK_PRIORITY': 'priority', | ||||
|                'THEFUCK_DEBUG': 'debug', | ||||
|                'THEFUCK_HISTORY_LIMIT': 'history_limit'} | ||||
|                'THEFUCK_PRIORITY': 'priority', | ||||
|                'THEFUCK_HISTORY_LIMIT': 'history_limit', | ||||
|                'THEFUCK_ALTER_HISTORY': 'alter_history'} | ||||
|  | ||||
| SETTINGS_HEADER = u"""# The Fuck settings file | ||||
| # | ||||
| @@ -126,7 +128,8 @@ class Settings(dict): | ||||
|             return dict(self._priority_from_env(val)) | ||||
|         elif attr == 'wait_command': | ||||
|             return int(val) | ||||
|         elif attr in ('require_confirmation', 'no_colors', 'debug'): | ||||
|         elif attr in ('require_confirmation', 'no_colors', 'debug', | ||||
|                       'alter_history'): | ||||
|             return val.lower() == 'true' | ||||
|         elif attr == 'history_limit': | ||||
|             return int(val) | ||||
|   | ||||
| @@ -32,20 +32,20 @@ class Command(object): | ||||
|                 self._script_parts = shells.split_command(self.script) | ||||
|             except Exception: | ||||
|                 logs.debug(u"Can't split command script {} because:\n {}".format( | ||||
|                     self, sys.exc_info())) | ||||
|                         self, sys.exc_info())) | ||||
|                 self._script_parts = None | ||||
|         return self._script_parts | ||||
|  | ||||
|     def __eq__(self, other): | ||||
|         if isinstance(other, Command): | ||||
|             return (self.script, self.stdout, self.stderr) \ | ||||
|                 == (other.script, other.stdout, other.stderr) | ||||
|                    == (other.script, other.stdout, other.stderr) | ||||
|         else: | ||||
|             return False | ||||
|  | ||||
|     def __repr__(self): | ||||
|         return u'Command(script={}, stdout={}, stderr={})'.format( | ||||
|             self.script, self.stdout, self.stderr) | ||||
|                 self.script, self.stdout, self.stderr) | ||||
|  | ||||
|     def update(self, **kwargs): | ||||
|         """Returns new command with replaced fields. | ||||
| @@ -166,9 +166,9 @@ class Rule(object): | ||||
|         return 'Rule(name={}, match={}, get_new_command={}, ' \ | ||||
|                'enabled_by_default={}, side_effect={}, ' \ | ||||
|                'priority={}, requires_output)'.format( | ||||
|                     self.name, self.match, self.get_new_command, | ||||
|                     self.enabled_by_default, self.side_effect, | ||||
|                     self.priority, self.requires_output) | ||||
|                 self.name, self.match, self.get_new_command, | ||||
|                 self.enabled_by_default, self.side_effect, | ||||
|                 self.priority, self.requires_output) | ||||
|  | ||||
|     @classmethod | ||||
|     def from_path(cls, path): | ||||
| @@ -268,7 +268,7 @@ class CorrectedCommand(object): | ||||
|  | ||||
|     def __repr__(self): | ||||
|         return u'CorrectedCommand(script={}, side_effect={}, priority={})'.format( | ||||
|             self.script, self.side_effect, self.priority) | ||||
|                 self.script, self.side_effect, self.priority) | ||||
|  | ||||
|     def run(self, old_cmd): | ||||
|         """Runs command from rule for passed command. | ||||
| @@ -278,6 +278,7 @@ class CorrectedCommand(object): | ||||
|         """ | ||||
|         if self.side_effect: | ||||
|             compatibility_call(self.side_effect, old_cmd, self.script) | ||||
|         shells.put_to_history(self.script) | ||||
|         if settings.alter_history: | ||||
|             shells.put_to_history(self.script) | ||||
|         # This depends on correct setting of PYTHONIOENCODING by the alias: | ||||
|         print(self.script) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user