mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-05-31 12:21:19 -03:00
Improve documentation and error reporting for elseif.
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
\section if if - conditionally execute a command
|
\section if if - conditionally execute a command
|
||||||
|
|
||||||
\subsection if-synopsis Synopsis
|
\subsection if-synopsis Synopsis
|
||||||
<tt>if CONDITION; COMMANDS_TRUE...; [else; COMMANDS_FALSE...;] end</tt>
|
<tt>if CONDITION; COMMANDS_TRUE...; [elseif CONDITION2; COMMANDS_TRUE2...;] [else; COMMANDS_FALSE...;] end</tt>
|
||||||
|
|
||||||
\subsection if-description Description
|
\subsection if-description Description
|
||||||
|
|
||||||
@@ -24,10 +24,13 @@ variable.
|
|||||||
<pre>
|
<pre>
|
||||||
if test -f foo.txt
|
if test -f foo.txt
|
||||||
echo foo.txt exists
|
echo foo.txt exists
|
||||||
|
elseif test -f bar.txt
|
||||||
|
echo bar.txt exists
|
||||||
else
|
else
|
||||||
echo foo.txt does not exist
|
echo foo.txt and bar.txt do not exist
|
||||||
end
|
end
|
||||||
</pre>
|
</pre>will print <tt>foo.txt exists</tt> if the file foo.txt
|
||||||
will print <tt>foo.txt exists</tt> if the file foo.txt
|
|
||||||
exists and is a regular file, otherwise it will print
|
exists and is a regular file, otherwise it will print
|
||||||
<tt>foo.txt does not exist</tt>.
|
<tt>bar.txt exists</tt> if the file bar.txt exists
|
||||||
|
and is a regular file, otherwise it will print
|
||||||
|
<tt>foo.txt and bar.txt do not exist</tt>.
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ The fish parser. Contains functions for parsing and evaluating code.
|
|||||||
/**
|
/**
|
||||||
Error when using else builtin outside of if block
|
Error when using else builtin outside of if block
|
||||||
*/
|
*/
|
||||||
#define INVALID_ELSE_ERR_MSG _( L"'else' builtin not inside of if block" )
|
#define INVALID_ELSE_OR_ELSEIF_ERR_MSG _( L"'%ls' builtin not inside of if block" )
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Error when using end builtin outside of block
|
Error when using end builtin outside of block
|
||||||
@@ -3293,9 +3293,9 @@ int parser_t::test( const wchar_t * buff,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Test that else is only used directly in an if-block
|
Test that else and elseif are only used directly in an if-block
|
||||||
*/
|
*/
|
||||||
if( command == L"else" )
|
if( command == L"else" || command == L"elseif" )
|
||||||
{
|
{
|
||||||
if( !count || block_type[count-1]!=IF )
|
if( !count || block_type[count-1]!=IF )
|
||||||
{
|
{
|
||||||
@@ -3304,7 +3304,8 @@ int parser_t::test( const wchar_t * buff,
|
|||||||
{
|
{
|
||||||
error( SYNTAX_ERROR,
|
error( SYNTAX_ERROR,
|
||||||
tok_get_pos( &tok ),
|
tok_get_pos( &tok ),
|
||||||
INVALID_ELSE_ERR_MSG );
|
INVALID_ELSE_OR_ELSEIF_ERR_MSG,
|
||||||
|
command.c_str());
|
||||||
|
|
||||||
print_errors( *out, prefix );
|
print_errors( *out, prefix );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,11 @@ function __fish_print_help --description "Print help message for the specified f
|
|||||||
case '*'
|
case '*'
|
||||||
set item $argv[1]
|
set item $argv[1]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Do nothing if the file does not exist
|
||||||
|
if not test -e "$__fish_datadir/man/man1/$item.1"
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
# These two expressions take care of underlines (Should be italic)
|
# These two expressions take care of underlines (Should be italic)
|
||||||
set -l cmd1 s/_\x08'\(.\)'/(set_color --underline)\\1(set_color normal)/g
|
set -l cmd1 s/_\x08'\(.\)'/(set_color --underline)\\1(set_color normal)/g
|
||||||
@@ -32,4 +37,4 @@ function __fish_print_help --description "Print help message for the specified f
|
|||||||
# Filter and print help
|
# Filter and print help
|
||||||
printf "%s\n" $help| tail -n (expr $lines - 5) | head -n (expr $lines - 8) | sed $sed_cmd
|
printf "%s\n" $help| tail -n (expr $lines - 5) | head -n (expr $lines - 8) | sed $sed_cmd
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user