+1 I'm shipping a patch very close to this one in Gentoo's Mutt for a very long time.
Thanks, Fabian On 18-06-2020 11:39:03 +0200, Vincent Lefevre wrote: > Another patch I like very much is Rocco's colored progress bar patch: > http://marc.info/?l=mutt-dev&m=123730077818672 > > Updated version attached. > > -- > Vincent Lefèvre <vinc...@vinc17.net> - Web: <https://www.vinc17.net/> > 100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/> > Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon) > diff --git a/PATCHES b/PATCHES > index e69de29b..d19ab9a2 100644 > --- a/PATCHES > +++ b/PATCHES > @@ -0,0 +1 @@ > +patch-20200424.pdmef.progress.vl.1 > diff --git a/color.c b/color.c > index c5fc9ce2..e495f1a8 100644 > --- a/color.c > +++ b/color.c > @@ -95,6 +95,7 @@ static const struct mapping_t Fields[] = > { "underline", MT_COLOR_UNDERLINE }, > { "index", MT_COLOR_INDEX }, > { "prompt", MT_COLOR_PROMPT }, > + { "progress", MT_COLOR_PROGRESS }, > #ifdef USE_SIDEBAR > { "sidebar_divider", MT_COLOR_DIVIDER }, > { "sidebar_flagged", MT_COLOR_FLAGGED }, > diff --git a/curs_lib.c b/curs_lib.c > index 92eda9b1..251d0583 100644 > --- a/curs_lib.c > +++ b/curs_lib.c > @@ -654,6 +654,52 @@ void mutt_progress_init (progress_t* progress, const > char *msg, > mutt_progress_update (progress, 0, 0); > } > > +static void message_bar (int percent, const char *fmt, ...) > +{ > + va_list ap; > + char buf[STRING], buf2[STRING]; > + int w = percent * COLS / 100; > + size_t l; > + > + va_start (ap, fmt); > + vsnprintf (buf, sizeof (buf), fmt, ap); > + l = mutt_strwidth (buf); > + va_end (ap); > + > + mutt_format_string(buf2, sizeof (buf2), > + 0, COLS-2, FMT_LEFT, 0, buf, sizeof (buf), 0); > + > + move (LINES - 1, 0); > + > + if (l < w) > + { > + SETCOLOR(MT_COLOR_PROGRESS); > + addstr (buf2); > + w -= l; > + while (w--) > + addch(' '); > + SETCOLOR(MT_COLOR_NORMAL); > + clrtoeol (); > + mutt_refresh(); > + } > + else > + { > + size_t bw; > + char ch; > + int off = mutt_wstr_trunc (buf2, sizeof (buf2), w, &bw); > + > + ch = buf2[off]; > + buf2[off] = 0; > + SETCOLOR(MT_COLOR_PROGRESS); > + addstr (buf2); > + buf2[off] = ch; > + SETCOLOR(MT_COLOR_NORMAL); > + addstr (&buf2[off]); > + clrtoeol (); > + mutt_refresh(); > + } > +} > + > void mutt_progress_update (progress_t* progress, long pos, int percent) > { > char posstr[SHORT_STRING]; > @@ -706,14 +752,14 @@ void mutt_progress_update (progress_t* progress, long > pos, int percent) > > if (progress->size > 0) > { > - mutt_message ("%s %s/%s (%d%%)", progress->msg, posstr, > progress->sizestr, > - percent > 0 ? percent : > - (int) (100.0 * (double) progress->pos / progress->size)); > + message_bar (percent > 0 ? percent : (int) (100.0 * (double) > progress->pos / progress->size), > + "%s %s/%s (%d%%)", progress->msg, posstr, progress->sizestr, > + percent > 0 ? percent : (int) (100.0 * (double) > progress->pos / progress->size)); > } > else > { > if (percent > 0) > - mutt_message ("%s %s (%d%%)", progress->msg, posstr, percent); > + message_bar (percent, "%s %s (%d%%)", progress->msg, posstr, percent); > else > mutt_message ("%s %s", progress->msg, posstr); > } > diff --git a/doc/manual.xml.head b/doc/manual.xml.head > index 631692aa..e17ffa07 100644 > --- a/doc/manual.xml.head > +++ b/doc/manual.xml.head > @@ -3080,6 +3080,7 @@ When set, color is applied only to the exact text > matched by > <listitem><para>message (informational messages)</para></listitem> > <listitem><para>normal</para></listitem> > <listitem><para>prompt</para></listitem> > +<listitem><para>progress (visual progress bar)</para></listitem> > <listitem><para>quoted (text matching <link > linkend="quote-regexp">$quote_regexp</link> in the body of a > message)</para></listitem> > <listitem><para>quoted1, quoted2, ..., quoted<emphasis>N</emphasis> (higher > levels of quoting)</para></listitem> > <listitem><para>search (highlighting of words in the pager)</para></listitem> > diff --git a/mutt_curses.h b/mutt_curses.h > index f21e0eab..fc2fba07 100644 > --- a/mutt_curses.h > +++ b/mutt_curses.h > @@ -127,6 +127,7 @@ enum > MT_COLOR_UNDERLINE, > MT_COLOR_INDEX, > MT_COLOR_PROMPT, > + MT_COLOR_PROGRESS, > #ifdef USE_SIDEBAR > MT_COLOR_DIVIDER, > MT_COLOR_FLAGGED, -- Fabian Groffen Gentoo on a different level
signature.asc
Description: PGP signature