diff --git a/README.md b/README.md index a2977da8..7c943900 100644 --- a/README.md +++ b/README.md @@ -176,6 +176,7 @@ using the matched rule and runs it. Rules enabled by default are as follows: * `ls_lah` – adds -lah to ls; * `man` – change manual section; * `man_no_space` – fixes man commands without spaces, for example `mandiff`; +* `mercurial` – fixes wrong `hg` commands; * `mkdir_p` – adds `-p` when you trying to create directory without parent; * `no_command` – fixes wrong console commands, for example `vom/vim`; * `no_such_file` – creates missing directories with `mv` and `cp` commands; @@ -185,7 +186,7 @@ using the matched rule and runs it. Rules enabled by default are as follows: * `python_execute` – appends missing `.py` when executing Python files; * `quotation_marks` – fixes uneven usage of `'` and `"` when containing args' * `rm_dir` – adds `-rf` when you trying to remove directory; -* `sed` – adds missing '/' to `sed`'s `s` commands; +* `sed_unterminated_s` – adds missing '/' to `sed`'s `s` commands; * `sl_ls` – changes `sl` to `ls`; * `ssh_known_hosts` – removes host from `known_hosts` on warning; * `sudo` – prepends `sudo` to previous command if it failed because of permissions; diff --git a/tests/rules/test_tmux.py b/tests/rules/test_tmux.py index 22111a70..ebbe6736 100644 --- a/tests/rules/test_tmux.py +++ b/tests/rules/test_tmux.py @@ -16,4 +16,4 @@ def test_match(tmux_ambiguous): def test_get_new_command(tmux_ambiguous): assert get_new_command(Command('tmux list', stderr=tmux_ambiguous), None)\ - == 'tmux list-buffers' + == 'tmux list-keys' diff --git a/thefuck/rules/sudo.py b/thefuck/rules/sudo.py index 1a87ffec..31687549 100644 --- a/thefuck/rules/sudo.py +++ b/thefuck/rules/sudo.py @@ -13,7 +13,8 @@ patterns = ['permission denied', 'must be root', 'need to be root', 'need root', - 'only root can do that'] + 'only root can do that', + 'authentication is required'] def match(command, settings): diff --git a/thefuck/rules/tmux.py b/thefuck/rules/tmux.py index 2fa2552a..683ee46e 100644 --- a/thefuck/rules/tmux.py +++ b/thefuck/rules/tmux.py @@ -1,3 +1,4 @@ +from thefuck.utils import get_closest import re @@ -8,7 +9,12 @@ def match(command, settings): def get_new_command(command, settings): - cmd = re.match(r"ambiguous command: (.*), could be: ([^, \n]*)", + cmd = re.match(r"ambiguous command: (.*), could be: (.*)", command.stderr) - return command.script.replace(cmd.group(1), cmd.group(2)) + old_cmd = cmd.group(1) + suggestions = [cmd.strip() for cmd in cmd.group(2).split(',')] + + new_cmd = get_closest(old_cmd, suggestions) + + return command.script.replace(old_cmd, new_cmd)