mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-06-06 08:51:14 -03:00
Add index ranges
Builtin 'set' now can set variable index ranges: set test[1..3] a b c #works set test[-1..-3] a b c #works if variable have enough elements set test[2..-2] a b c #works set test[1..3 -1..-2] a b c b b #works Expand now can parse index ranges. But not handle for now. TODO: * Add variable substitution index ranges: echo $PATH[-1..1] * Add command substitution index range: echo (seq 10)[-1..-4] * Add process substitution indexes and ranges: echo %vim[-1]
This commit is contained in:
19
expand.cpp
19
expand.cpp
@@ -759,8 +759,25 @@ static int parse_slice( const wchar_t *in, wchar_t **end_ptr, std::vector<long>
|
||||
}
|
||||
// debug( 0, L"Push idx %d", tmp );
|
||||
|
||||
idx.push_back(tmp);
|
||||
pos = end-in;
|
||||
if ( in[pos]==L'.' && in[pos+1]==L'.' ){
|
||||
pos+=2;
|
||||
long tmp1 = wcstol( &in[pos], &end, 10 );
|
||||
if( ( errno ) || ( end == &in[pos] ) )
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
pos = end-in;
|
||||
|
||||
debug( 0, L"Push range idx %d %d", tmp, tmp1 );
|
||||
idx.push_back(tmp);
|
||||
// idx.push_back(tmp2);
|
||||
continue;
|
||||
}
|
||||
|
||||
debug( 0, L"Push idx %d", tmp );
|
||||
idx.push_back(tmp);
|
||||
// idx.push_back(tmp2);
|
||||
}
|
||||
|
||||
if( end_ptr )
|
||||
|
||||
Reference in New Issue
Block a user