mirror of
https://github.com/fish-shell/fish-shell
synced 2025-01-13 13:39:02 +00:00
Minor highlighting tweaks to make highlighter handle switches to 'command' and 'builtin' builtins more correctly
darcs-hash:20061214134025-ac50b-e17f79d1d4d7594ab20a358296f84dbb6356f42b.gz
This commit is contained in:
parent
4d368dc06c
commit
c1945f8275
3 changed files with 32 additions and 18 deletions
17
highlight.c
17
highlight.c
|
@ -644,6 +644,9 @@ void highlight_shell( wchar_t * buff,
|
||||||
|
|
||||||
if( parser_is_subcommand( cmd ) )
|
if( parser_is_subcommand( cmd ) )
|
||||||
{
|
{
|
||||||
|
|
||||||
|
int sw;
|
||||||
|
|
||||||
if( wcscmp( cmd, L"builtin" )==0)
|
if( wcscmp( cmd, L"builtin" )==0)
|
||||||
{
|
{
|
||||||
use_function = 0;
|
use_function = 0;
|
||||||
|
@ -658,20 +661,26 @@ void highlight_shell( wchar_t * buff,
|
||||||
}
|
}
|
||||||
|
|
||||||
tok_next( &tok );
|
tok_next( &tok );
|
||||||
|
|
||||||
|
sw = parser_is_switch( tok_last( &tok ) );
|
||||||
|
|
||||||
if( !parser_is_block( cmd ) &&
|
if( !parser_is_block( cmd ) &&
|
||||||
parser_is_help( tok_last( &tok ), 3) )
|
sw == ARG_SWITCH )
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
The 'builtin' and 'command' builtins
|
The 'builtin' and 'command' builtins
|
||||||
are normally followed by another
|
are normally followed by another
|
||||||
command, but if they are invoked
|
command, but if they are invoked
|
||||||
with the -h option, their help text
|
with a switch, they aren't.
|
||||||
is displayed instead
|
|
||||||
*/
|
*/
|
||||||
|
use_command = 1;
|
||||||
|
use_function = 1;
|
||||||
|
use_builtin = 2;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if( wcscmp( tok_last( &tok ), L"--" ) == 0 )
|
if( sw == ARG_SKIP )
|
||||||
{
|
{
|
||||||
color[ tok_get_pos( &tok ) ] = HIGHLIGHT_PARAM;
|
color[ tok_get_pos( &tok ) ] = HIGHLIGHT_PARAM;
|
||||||
mark = tok_get_pos( &tok );
|
mark = tok_get_pos( &tok );
|
||||||
|
|
15
parser.c
15
parser.c
|
@ -510,20 +510,7 @@ static int parser_skip_arguments( const wchar_t *cmd )
|
||||||
(void *)0 );
|
(void *)0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
enum
|
int parser_is_switch( const wchar_t *cmd )
|
||||||
{
|
|
||||||
ARG_NON_SWITCH,
|
|
||||||
ARG_SWITCH,
|
|
||||||
ARG_SKIP
|
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
Check if the specified argument is a switch. Return ARG_SWITCH if yes,
|
|
||||||
ARG_NON_SWITCH if no and ARG_SKIP if the argument is '--'
|
|
||||||
*/
|
|
||||||
static int parser_is_switch( const wchar_t *cmd )
|
|
||||||
{
|
{
|
||||||
if( wcscmp( cmd, L"--" ) == 0 )
|
if( wcscmp( cmd, L"--" ) == 0 )
|
||||||
return ARG_SKIP;
|
return ARG_SKIP;
|
||||||
|
|
18
parser.h
18
parser.h
|
@ -15,6 +15,17 @@
|
||||||
#define PARSER_TEST_ERROR 1
|
#define PARSER_TEST_ERROR 1
|
||||||
#define PARSER_TEST_INCOMPLETE 2
|
#define PARSER_TEST_INCOMPLETE 2
|
||||||
|
|
||||||
|
/**
|
||||||
|
REturn valuse for parser_is_switch()
|
||||||
|
*/
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
ARG_NON_SWITCH,
|
||||||
|
ARG_SWITCH,
|
||||||
|
ARG_SKIP
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
event_block_t represents a block on events of the specified type
|
event_block_t represents a block on events of the specified type
|
||||||
*/
|
*/
|
||||||
|
@ -220,6 +231,13 @@ int eval_args( const wchar_t *line,
|
||||||
void error( int ec, int p, const wchar_t *str, ... );
|
void error( int ec, int p, const wchar_t *str, ... );
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Check if the specified argument is a switch. Return ARG_SWITCH if yes,
|
||||||
|
ARG_NON_SWITCH if no and ARG_SKIP if the argument is '--'
|
||||||
|
*/
|
||||||
|
int parser_is_switch( const wchar_t *cmd );
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Tests if the specified commands parameters should be interpreted as another command, which will be true if the command is either 'command', 'exec', 'if', 'while' or 'builtin'.
|
Tests if the specified commands parameters should be interpreted as another command, which will be true if the command is either 'command', 'exec', 'if', 'while' or 'builtin'.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue