diff --git a/tests/shells/test_fish.py b/tests/shells/test_fish.py index 5e3e7665..510b8f45 100644 --- a/tests/shells/test_fish.py +++ b/tests/shells/test_fish.py @@ -74,6 +74,12 @@ class TestFish(object): assert 'TF_ALIAS=fuck PYTHONIOENCODING' in shell.app_alias('fuck') assert 'PYTHONIOENCODING=utf-8 thefuck' in shell.app_alias('fuck') + def test_app_alias_history_merge(self, settings, shell): + settings.alter_history = True + assert 'history --merge' in shell.app_alias('FUCK') + settings.alter_history = False + assert 'history --merge' not in shell.app_alias('FUCK') + def test_get_history(self, history_lines, shell): history_lines(['- cmd: ls', ' when: 1432613911', '- cmd: rm', ' when: 1432613916']) diff --git a/thefuck/shells/fish.py b/thefuck/shells/fish.py index a2a487e3..5cf8e833 100644 --- a/thefuck/shells/fish.py +++ b/thefuck/shells/fish.py @@ -4,6 +4,7 @@ import os import sys import six from .. import logs +from ..conf import settings from ..utils import DEVNULL, memoize, cache from .generic import Generic @@ -18,6 +19,10 @@ class Fish(Generic): return default def app_alias(self, fuck): + if settings.alter_history: + hist_merge = ' history --merge ^ /dev/null\n' + else: + hist_merge = '' # It is VERY important to have the variables declared WITHIN the alias return ('function {0} -d "Correct your previous console command"\n' ' set -l fucked_up_command $history[1]\n' @@ -25,10 +30,9 @@ class Fish(Generic): ' thefuck $fucked_up_command | read -l unfucked_command\n' ' if [ "$unfucked_command" != "" ]\n' ' eval $unfucked_command\n' - ' history --delete $fucked_up_command\n' - ' history --merge ^ /dev/null\n' + ' history --delete $fucked_up_command\n{1}' ' end\n' - 'end').format(fuck) + 'end').format(fuck, hist_merge) @memoize @cache('.config/fish/config.fish', '.config/fish/functions')