On Mon, Jan 14, 2019 at 01:55:42PM -0700, Todd C. Miller wrote:

> On Mon, 14 Jan 2019 21:15:54 +0100, Otto Moerbeek wrote:
> 
> > A problem with this diff is that is changes the part of the screen
> > shown while switching back and forth between files with Ctrl-^
> >
> > Normally, vi remembers both the cursor position in the files and the
> > part of the file shown (it does recenter in some cases). With this
> > diff, it the cursor remains at the correct line, but that part of the
> > file shown changes in a differnent way than before.
> 
> Good catch.  What we really want to set is SC_SCR_CENTER, like
> v_init() does.  This will still start at the top of a new file.

great, ok from me,

        -Otto

> 
>  - todd
> 
> Index: usr.bin/vi/vi/vi.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/vi/vi/vi.c,v
> retrieving revision 1.21
> diff -u -p -u -r1.21 vi.c
> --- usr.bin/vi/vi/vi.c        18 Apr 2017 01:45:35 -0000      1.21
> +++ usr.bin/vi/vi/vi.c        14 Jan 2019 20:50:03 -0000
> @@ -395,6 +395,8 @@ intr:                     CLR_INTERRUPT(sp);
>               /* If the last command switched files, change focus. */
>               if (F_ISSET(sp, SC_FSWITCH)) {
>                       F_CLR(sp, SC_FSWITCH);
> +                     F_CLR(sp, SC_SCR_TOP);
> +                     F_SET(sp, SC_SCR_CENTER);
>                       (void)sp->gp->scr_rename(sp, sp->frp->name, 1);
>               }
>  

Reply via email to