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