> Date: Wed, 10 Oct 2012 15:39:39 +0200
> From: Jasper Lievisse Adriaanse <[email protected]>
> 
> On Wed, Oct 10, 2012 at 03:31:30PM +0200, Mark Kettenis wrote:
> > > Date: Wed, 10 Oct 2012 15:12:59 +0200
> > > From: Jasper Lievisse Adriaanse <[email protected]>
> > > 
> > > Currently the statusline in mg shows the line and column numbers, which is
> > > nice but doesn't let you know your relative position in the file.
> > > 
> > > Emacs shows 'top', 'bot', 'all' or your relative position like '42%'. This
> > > diff implements that behaviour in mg too.
> > 
> > Emacs uses 'Top', 'Bot' and 'All' and:
> > 
> > > From:
> > >  (fundamental-fill)--L3--C31
> > > to:
> > >  (fundamental-fill)--9%--L69--C0
> >  --L69--C0--9%--
> > 
> > >  or
> > >  (fundamental-fill)--all--L1--C0
> > 
> >  --L1--C0--All--
> Sure, let's go all the way then :)

Fine with me, but I'm neither an mg hacker or an mg user.  So I think
a more authoritive ok is needed.

> Index: display.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/mg/display.c,v
> retrieving revision 1.37
> diff -p -u -r1.37 display.c
> --- display.c 4 Jun 2009 02:23:37 -0000       1.37
> +++ display.c 10 Oct 2012 13:39:00 -0000
> @@ -835,8 +835,21 @@ modeline(struct mgwin *wp)
>       ++n;
>  
>       if (linenos) {
> -             len = snprintf(sl, sizeof(sl), "--L%d--C%d", wp->w_dotline,
> -                 getcolpos());
> +             char location[4], r_location[4];
> +
> +             if (bp->b_lines <= wp->w_ntrows) {
> +                     strlcpy(location, "All", sizeof(location));
> +             } else if (wp->w_dotline <= wp->w_ntrows) {
> +                     strlcpy(location, "Top", sizeof(location));
> +             } else if (wp->w_dotline >= (bp->b_lines - wp->w_ntrows)) {
> +                     strlcpy(location, "Bot", sizeof(location));
> +             } else {
> +                     snprintf(r_location, sizeof(r_location), "%d%%", (100 * 
> wp->w_dotline) / bp->b_lines);
> +                     strlcpy(location, r_location, sizeof(location));
> +             }
> +
> +             len = snprintf(sl, sizeof(sl), "--L%d--C%d--%s",
> +                            wp->w_dotline, getcolpos(), location);
>               if (len < sizeof(sl) && len != -1)
>                       n += vtputs(sl);
>       }

Reply via email to