mirror of
				https://github.com/nvbn/thefuck.git
				synced 2025-10-30 22:54:14 +00:00 
			
		
		
		
	Merge branch 'fish-put-to-history' of https://github.com/scorphus/thefuck into scorphus-fish-put-to-history
# Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with '#' will be ignored, and an empty message aborts # the commit.
This commit is contained in:
		| @@ -78,3 +78,12 @@ class TestFish(object): | |||||||
|         history_lines(['- cmd: ls', '  when: 1432613911', |         history_lines(['- cmd: ls', '  when: 1432613911', | ||||||
|                        '- cmd: rm', '  when: 1432613916']) |                        '- cmd: rm', '  when: 1432613916']) | ||||||
|         assert list(shell.get_history()) == ['ls', 'rm'] |         assert list(shell.get_history()) == ['ls', 'rm'] | ||||||
|  |  | ||||||
|  |     @pytest.mark.parametrize('entry, entry_utf8', [ | ||||||
|  |         ('ls', '- cmd: ls\n   when: 1430707243\n'), | ||||||
|  |         (u'echo café', '- cmd: echo café\n   when: 1430707243\n')]) | ||||||
|  |     def test_put_to_history(self, entry, entry_utf8, builtins_open, mocker, shell): | ||||||
|  |         mocker.patch('thefuck.shells.fish.time', return_value=1430707243.3517463) | ||||||
|  |         shell.put_to_history(entry) | ||||||
|  |         builtins_open.return_value.__enter__.return_value. \ | ||||||
|  |             write.assert_called_once_with(entry_utf8) | ||||||
|   | |||||||
| @@ -1,6 +1,9 @@ | |||||||
| from subprocess import Popen, PIPE | from subprocess import Popen, PIPE | ||||||
| from time import time | from time import time | ||||||
| import os | import os | ||||||
|  | import sys | ||||||
|  | import six | ||||||
|  | from .. import logs | ||||||
| from ..utils import DEVNULL, memoize, cache | from ..utils import DEVNULL, memoize, cache | ||||||
| from .generic import Generic | from .generic import Generic | ||||||
|  |  | ||||||
| @@ -65,3 +68,20 @@ class Fish(Generic): | |||||||
|     def how_to_configure(self): |     def how_to_configure(self): | ||||||
|         return (r"eval (thefuck --alias | tr '\n' ';')", |         return (r"eval (thefuck --alias | tr '\n' ';')", | ||||||
|                 '~/.config/fish/config.fish') |                 '~/.config/fish/config.fish') | ||||||
|  |  | ||||||
|  |     def put_to_history(self, command): | ||||||
|  |         try: | ||||||
|  |             return self._put_to_history(command) | ||||||
|  |         except IOError: | ||||||
|  |             logs.exception("Can't update history", sys.exc_info()) | ||||||
|  |  | ||||||
|  |     def _put_to_history(self, command_script): | ||||||
|  |         """Puts command script to shell history.""" | ||||||
|  |         history_file_name = self._get_history_file_name() | ||||||
|  |         if os.path.isfile(history_file_name): | ||||||
|  |             with open(history_file_name, 'a') as history: | ||||||
|  |                 entry = self._get_history_line(command_script) | ||||||
|  |                 if six.PY2: | ||||||
|  |                     history.write(entry.encode('utf-8')) | ||||||
|  |                 else: | ||||||
|  |                     history.write(entry) | ||||||
|   | |||||||
| @@ -81,3 +81,6 @@ class Generic(object): | |||||||
|  |  | ||||||
|     def _script_from_history(self, line): |     def _script_from_history(self, line): | ||||||
|         return line |         return line | ||||||
|  |  | ||||||
|  |     def put_to_history(self, command): | ||||||
|  |         pass | ||||||
|   | |||||||
| @@ -280,6 +280,8 @@ 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) | ||||||
|  |         if settings.alter_history: | ||||||
|  |             shell.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: | ||||||
|         logs.debug(u'PYTHONIOENCODING: {}'.format( |         logs.debug(u'PYTHONIOENCODING: {}'.format( | ||||||
|             os.environ.get('PYTHONIOENCODING', '!!not-set!!'))) |             os.environ.get('PYTHONIOENCODING', '!!not-set!!'))) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user