Fixed case behaviour

* case no properly handles -h and --help flags, i.e. treats it as
  pattern
* fixed case escaping:
The following expressions now work correctly:
switch '*'
  echo '*'
  echo Match any string
end
switch '*'
  echo '\*'
  echo Match asterix
end
switch '\\'
  echo '\\\\'
  echo Match slash
end

The same for '?' sign
This commit is contained in:
maxfl 2012-07-02 11:19:30 +08:00 committed by ridiculousfish
parent a1319cb8aa
commit ea4b37d5c5
3 changed files with 3 additions and 3 deletions

View file

@ -3838,7 +3838,7 @@ static int internal_help( const wchar_t *cmd )
{ {
CHECK( cmd, 0 ); CHECK( cmd, 0 );
return contains( cmd, L"for", L"while", L"function", return contains( cmd, L"for", L"while", L"function",
L"if", L"end", L"switch", L"count" ); L"if", L"end", L"switch", L"case", L"count" );
} }

View file

@ -665,7 +665,6 @@ wchar_t *parse_util_unescape_wildcards( const wchar_t *str )
in++; in++;
*(out++)=*in; *(out++)=*in;
} }
*(out++)=*in;
break; break;
} }
@ -688,6 +687,7 @@ wchar_t *parse_util_unescape_wildcards( const wchar_t *str )
} }
} }
} }
*out = *in;
return unescaped; return unescaped;
} }

View file

@ -4,7 +4,7 @@ function funced --description 'Edit function definition'
set -l funcname set -l funcname
while set -q argv[1] while set -q argv[1]
switch $argv[1] switch $argv[1]
case '---long impossible to match line, because case respects -h option' -h --help case -h --help
__fish_print_help funced __fish_print_help funced
return 0 return 0