aboutsummaryrefslogtreecommitdiffhomepage
path: root/fish_pager.cpp
diff options
context:
space:
mode:
authorGravatar maxfl <gmaxfl@gmail.com>2012-06-27 07:17:00 +0400
committerGravatar ridiculousfish <corydoras@ridiculousfish.com>2012-06-29 18:53:22 -0700
commita02aa7a3166f2ba92cbb6eebc2b201ebb7a9f78b (patch)
treea671045150e137e672e27e70725b40b46668bf48 /fish_pager.cpp
parent3ab26a5d40a554606b6ca41442aa14e975900332 (diff)
Step coloring for fish_pager introduces new variable
fish_pager_color_secondary to set background of every second completion line. It simplifies finding the options corresponding to given description. Default color is 151515.
Diffstat (limited to 'fish_pager.cpp')
-rw-r--r--fish_pager.cpp22
1 files changed, 13 insertions, 9 deletions
diff --git a/fish_pager.cpp b/fish_pager.cpp
index 1ca0f903..afcda674 100644
--- a/fish_pager.cpp
+++ b/fish_pager.cpp
@@ -77,7 +77,8 @@ enum
HIGHLIGHT_PAGER_PREFIX,
HIGHLIGHT_PAGER_COMPLETION,
HIGHLIGHT_PAGER_DESCRIPTION,
- HIGHLIGHT_PAGER_PROGRESS
+ HIGHLIGHT_PAGER_PROGRESS,
+ HIGHLIGHT_PAGER_SECONDARY
}
;
@@ -152,7 +153,8 @@ static const wchar_t *hightlight_var[] =
L"fish_pager_color_prefix",
L"fish_pager_color_completion",
L"fish_pager_color_description",
- L"fish_pager_color_progress"
+ L"fish_pager_color_progress",
+ L"fish_pager_color_secondary"
}
;
@@ -206,7 +208,7 @@ static rgb_color_t get_color( int highlight )
if( highlight < 0 )
return rgb_color_t::normal();
- if( highlight >= (4) )
+ if( highlight >= (5) )
return rgb_color_t::normal();
val = wgetenv( hightlight_var[highlight]);
@@ -389,7 +391,7 @@ static int print_max( const wchar_t *str, int max, int has_more )
/**
Print the specified item using at the specified amount of space
*/
-static void completion_print_item( const wchar_t *prefix, comp_t *c, int width )
+static void completion_print_item( const wchar_t *prefix, comp_t *c, int width, bool primary )
{
int comp_width=0, desc_width=0;
int written=0;
@@ -422,14 +424,15 @@ static void completion_print_item( const wchar_t *prefix, comp_t *c, int width )
}
+ rgb_color_t bg = primary ? rgb_color_t::normal() : get_color(HIGHLIGHT_PAGER_SECONDARY);
for( size_t i=0; i<c->comp.size(); i++ )
{
const wcstring &comp = c->comp.at(i);
if( i != 0 )
written += print_max( L" ", comp_width - written, 2 );
- set_color( get_color(HIGHLIGHT_PAGER_PREFIX),rgb_color_t::normal() );
+ set_color( get_color(HIGHLIGHT_PAGER_PREFIX), bg );
written += print_max( prefix, comp_width - written, comp.empty()?0:1 );
- set_color( get_color(HIGHLIGHT_PAGER_COMPLETION),rgb_color_t::ignore() );
+ set_color( get_color(HIGHLIGHT_PAGER_COMPLETION), bg);
written += print_max( comp.c_str(), comp_width - written, i!=(c->comp.size()-1) );
}
@@ -442,7 +445,7 @@ static void completion_print_item( const wchar_t *prefix, comp_t *c, int width )
writech( L' ');
}
written += print_max( L"(", 1, 0 );
- set_color( get_color( HIGHLIGHT_PAGER_DESCRIPTION ), rgb_color_t::ignore() );
+ set_color( get_color( HIGHLIGHT_PAGER_DESCRIPTION ), bg);
written += print_max( c->desc.c_str(), desc_width, 0 );
written += print_max( L")", 1, 0 );
}
@@ -454,7 +457,8 @@ static void completion_print_item( const wchar_t *prefix, comp_t *c, int width )
writech( L' ');
}
}
-
+ if ( !primary )
+ set_color( rgb_color_t::normal(), rgb_color_t::normal() );
}
/**
@@ -495,7 +499,7 @@ static void completion_print( int cols,
el = lst.at(j*rows + i );
- completion_print_item( prefix, el, width[j] - (is_last?0:2) );
+ completion_print_item( prefix, el, width[j] - (is_last?0:2), i%2 );
if( !is_last)
writestr( L" " );