From 5f2a1d653696ec5457bfd044f0ebcd873bfc3c80 Mon Sep 17 00:00:00 2001 From: peter Date: Sun, 11 Aug 2013 20:03:12 +0000 Subject: Update nvi-1.79 to 2.1.1-4334a8297f This is the gsoc-2011 project to clean up and backport multibyte support from other nvi forks in a form we can use. USE_WIDECHAR is on unless building for the rescue crunchgen. This should allow editing in the native locale encoding. USE_ICONV depends on make.conf having 'WITH_ICONV=YES' for now. This adds the ability to do things like edit a KOI8-R file while having $LANG set to (say) en_US.UTF-8. iconv is used to transcode the characters for display. Other points: * It uses gencat and catopen/etc instead of homegrown msg catalog stuff. * A lot of stuff has been trimmed out, eg: the perl and tcl bindings which we could never use in base anyway. * It uses ncursesw when in widechar mode. This could be interesting. GSoC info: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/zy/1 Repo at: https://github.com/lichray/nvi2 Obtained from: Zhihao Yuan --- contrib/nvi/vi/v_screen.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'contrib/nvi/vi/v_screen.c') diff --git a/contrib/nvi/vi/v_screen.c b/contrib/nvi/vi/v_screen.c index 85cd1e3..d7932a4 100644 --- a/contrib/nvi/vi/v_screen.c +++ b/contrib/nvi/vi/v_screen.c @@ -10,7 +10,7 @@ #include "config.h" #ifndef lint -static const char sccsid[] = "@(#)v_screen.c 10.10 (Berkeley) 4/27/96"; +static const char sccsid[] = "$Id: v_screen.c,v 10.12 2001/06/25 15:19:34 skimo Exp $"; #endif /* not lint */ #include @@ -31,9 +31,7 @@ static const char sccsid[] = "@(#)v_screen.c 10.10 (Berkeley) 4/27/96"; * PUBLIC: int v_screen __P((SCR *, VICMD *)); */ int -v_screen(sp, vp) - SCR *sp; - VICMD *vp; +v_screen(SCR *sp, VICMD *vp) { /* * You can't leave a colon command-line edit window -- it's not that @@ -51,13 +49,13 @@ v_screen(sp, vp) * Try for the next lower screen, or, go back to the first * screen on the stack. */ - if (sp->q.cqe_next != (void *)&sp->gp->dq) - sp->nextdisp = sp->q.cqe_next; - else if (sp->gp->dq.cqh_first == sp) { + if (TAILQ_NEXT(sp, q) != NULL) + sp->nextdisp = TAILQ_NEXT(sp, q); + else if (TAILQ_FIRST(sp->gp->dq) == sp) { msgq(sp, M_ERR, "187|No other screen to switch to"); return (1); } else - sp->nextdisp = sp->gp->dq.cqh_first; + sp->nextdisp = TAILQ_FIRST(sp->gp->dq); F_SET(sp->nextdisp, SC_STATUS); F_SET(sp, SC_SSWITCH | SC_STATUS); -- cgit v1.1