Error message prefix: Prefix the message, not the context

Fixes #3649
This commit is contained in:
Andreas Nordal 2017-03-26 14:38:59 +02:00 committed by Kurtis Rader
parent 89efa9a8b1
commit 08d42a0507
11 changed files with 99 additions and 68 deletions

View file

@ -1778,8 +1778,8 @@ msgstr "Illegal file descriptor in redirection “%ls”"
#: parse_constants.h:213 #: parse_constants.h:213
#, c-format #, c-format
msgid "No matches for wildcard '%ls'." msgid "No matches for wildcard '%ls'. See `help expand`."
msgstr "No matches for wildcard “%ls”." msgstr "No matches for wildcard “%ls”. See `help expand`."
#: parse_constants.h:216 #: parse_constants.h:216
msgid "break command while not inside of loop" msgid "break command while not inside of loop"

17
po/nb.po Normal file
View file

@ -0,0 +1,17 @@
# fish - the friendly interactive shell
# Copyright © 2017
# This file is distributed under the same license as the fish package.
#
msgid ""
msgstr ""
"Project-Id-Version: fish 2.5.0\n"
"Last-Translator: Andreas Nordal <andreas.nordal_4@hotmail.com>\n"
"Language: nb\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: parse_constants.h:213
#, c-format
msgid "No matches for wildcard p'%ls'. See `help expand`."
msgstr "Ingen treff for jokertegnmønster «%ls» Se `help expand`."

17
po/nn.po Normal file
View file

@ -0,0 +1,17 @@
# fish - the friendly interactive shell
# Copyright © 2017
# This file is distributed under the same license as the fish package.
#
msgid ""
msgstr ""
"Project-Id-Version: fish 2.5.0\n"
"Last-Translator: Andreas Nordal <andreas.nordal_4@hotmail.com>\n"
"Language: nn\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: parse_constants.h:213
#, c-format
msgid "No matches for wildcard '%ls'. See `help expand`."
msgstr "Inkje treff for jokerteiknmønster «%ls» Sjå `help expand`."

View file

@ -1793,8 +1793,8 @@ msgstr "Ogiltig filidentifierare '%ls'"
#: parse_constants.h:213 #: parse_constants.h:213
#, c-format #, c-format
msgid "No matches for wildcard '%ls'." msgid "No matches for wildcard '%ls'. See `help expand`."
msgstr "" msgstr "Ingen träff för jokerteckenmönster '%ls' Se `help expand`."
#: parse_constants.h:216 #: parse_constants.h:216
#, fuzzy #, fuzzy

View file

@ -245,9 +245,7 @@ void parse_error_offset_source_start(parse_error_list_t *errors, size_t amt);
#define ILLEGAL_FD_ERR_MSG _(L"Illegal file descriptor in redirection '%ls'") #define ILLEGAL_FD_ERR_MSG _(L"Illegal file descriptor in redirection '%ls'")
/// Error message for wildcards with no matches. /// Error message for wildcards with no matches.
#define WILDCARD_ERR_MSG \ #define WILDCARD_ERR_MSG _(L"No matches for wildcard '%ls'. See `help expand`.")
_(L"No matches for wildcard '%ls'. (Tip: empty matches are allowed in 'set', 'count', " \
L"'for'.)")
/// Error when using break outside of loop. /// Error when using break outside of loop.
#define INVALID_BREAK_ERR_MSG _(L"'break' while not inside of loop") #define INVALID_BREAK_ERR_MSG _(L"'break' while not inside of loop")

View file

@ -29,7 +29,8 @@ static bool production_is_empty(const production_element_t *production) {
/// Returns a string description of this parse error. /// Returns a string description of this parse error.
wcstring parse_error_t::describe_with_prefix(const wcstring &src, const wcstring &prefix, wcstring parse_error_t::describe_with_prefix(const wcstring &src, const wcstring &prefix,
bool is_interactive, bool skip_caret) const { bool is_interactive, bool skip_caret) const {
wcstring result = text; wcstring result = prefix;
result.append(this->text);
if (skip_caret || source_start >= src.size() || source_start + source_length > src.size()) { if (skip_caret || source_start >= src.size() || source_start + source_length > src.size()) {
return result; return result;
@ -72,16 +73,14 @@ wcstring parse_error_t::describe_with_prefix(const wcstring &src, const wcstring
if (!result.empty()) { if (!result.empty()) {
result.push_back(L'\n'); result.push_back(L'\n');
} }
result.append(prefix);
result.append(src, line_start, line_end - line_start); result.append(src, line_start, line_end - line_start);
// Append the caret line. The input source may include tabs; for that reason we // Append the caret line. The input source may include tabs; for that reason we
// construct a "caret line" that has tabs in corresponding positions. // construct a "caret line" that has tabs in corresponding positions.
const wcstring line_to_measure = prefix + wcstring(src, line_start, source_start - line_start);
wcstring caret_space_line; wcstring caret_space_line;
caret_space_line.reserve(source_start - line_start); caret_space_line.reserve(source_start - line_start);
for (size_t i = 0; i < line_to_measure.size(); i++) { for (size_t i = line_start; i < source_start; i++) {
wchar_t wc = line_to_measure.at(i); wchar_t wc = src.at(i);
if (wc == L'\t') { if (wc == L'\t') {
caret_space_line.push_back(L'\t'); caret_space_line.push_back(L'\t');
} else if (wc == L'\n') { } else if (wc == L'\n') {

View file

@ -1,33 +1,33 @@
Array index out of bounds fish: Array index out of bounds
fish: show "$foo[2]" show "$foo[2]"
^ ^
Array index out of bounds fish: Array index out of bounds
fish: show $foo[2] show $foo[2]
^ ^
Array index out of bounds fish: Array index out of bounds
fish: show "$foo[1 2]" show "$foo[1 2]"
^ ^
Array index out of bounds fish: Array index out of bounds
fish: show $foo[1 2] show $foo[1 2]
^
Array index out of bounds
fish: show "$foo[2 1]"
^
Array index out of bounds
fish: show $foo[2 1]
^
Invalid index value
fish: echo "$foo[d]"
^
Invalid index value
fish: echo $foo[d]
^
Array index out of bounds
fish: echo ()[1]
^
Invalid index value
fish: echo ()[d]
^
$) is not a valid variable in fish.
fish: echo $$paren
^ ^
fish: Array index out of bounds
show "$foo[2 1]"
^
fish: Array index out of bounds
show $foo[2 1]
^
fish: Invalid index value
echo "$foo[d]"
^
fish: Invalid index value
echo $foo[d]
^
fish: Array index out of bounds
echo ()[1]
^
fish: Invalid index value
echo ()[d]
^
fish: $) is not a valid variable in fish.
echo $$paren
^

View file

@ -1,9 +1,9 @@
function: Illegal function name '-a' fish: function: Illegal function name '-a'
fish: function -a arg1 arg2 name2 ; end function -a arg1 arg2 name2 ; end
^ ^
function: Illegal function name '--argument-names' fish: function: Illegal function name '--argument-names'
fish: function --argument-names arg1 arg2 name4 ; end function --argument-names arg1 arg2 name4 ; end
^ ^
function: Unexpected positional argument 'abc' fish: function: Unexpected positional argument 'abc'
fish: function name5 abc --argument-names def ; end function name5 abc --argument-names def ; end
^ ^

View file

@ -1,3 +1,3 @@
No matches for wildcard '*ee*'. (Tip: empty matches are allowed in 'set', 'count', 'for'.) fish: No matches for wildcard '*ee*'. See `help expand`.
fish: case *ee* case *ee*
^ ^

View file

@ -1,7 +1,7 @@
emit: expected event name emit: expected event name
Missing end to balance this begin - (line 1): Missing end to balance this begin
Missing end to balance this while loop - (line 1): Missing end to balance this while loop
Missing end to balance this for loop - (line 1): Missing end to balance this for loop
Missing end to balance this switch statement - (line 1): Missing end to balance this switch statement
Missing end to balance this function definition - (line 1): Missing end to balance this function definition
Missing end to balance this if statement - (line 1): Missing end to balance this if statement

View file

@ -1,6 +1,6 @@
Variables may not be used as commands. In fish, please define a function or use 'eval $test'. fish: Variables may not be used as commands. In fish, please define a function or use 'eval $test'.
fish: exec $test exec $test
^ ^
Variables may not be used as commands. In fish, please define a function or use 'eval "$test"'. fish: Variables may not be used as commands. In fish, please define a function or use 'eval "$test"'.
fish: exec "$test" exec "$test"
^ ^