diff options
author | peter <peter@FreeBSD.org> | 2013-08-11 20:03:12 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 2013-08-11 20:03:12 +0000 |
commit | 5f2a1d653696ec5457bfd044f0ebcd873bfc3c80 (patch) | |
tree | 7c1ae67d07b93aea05bfea51c590c1112b65042b /contrib/nvi/vi/v_init.c | |
parent | 324febaf01918418f99998aa5537126ac98c9df0 (diff) | |
download | FreeBSD-src-5f2a1d653696ec5457bfd044f0ebcd873bfc3c80.zip FreeBSD-src-5f2a1d653696ec5457bfd044f0ebcd873bfc3c80.tar.gz |
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 <lichray@gmail.com>
Diffstat (limited to 'contrib/nvi/vi/v_init.c')
-rw-r--r-- | contrib/nvi/vi/v_init.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/contrib/nvi/vi/v_init.c b/contrib/nvi/vi/v_init.c index ee58de3..e47a821 100644 --- a/contrib/nvi/vi/v_init.c +++ b/contrib/nvi/vi/v_init.c @@ -10,7 +10,7 @@ #include "config.h" #ifndef lint -static const char sccsid[] = "@(#)v_init.c 10.8 (Berkeley) 3/30/96"; +static const char sccsid[] = "$Id: v_init.c,v 10.10 2012/02/11 00:33:46 zy Exp $"; #endif /* not lint */ #include <sys/types.h> @@ -34,8 +34,7 @@ static const char sccsid[] = "@(#)v_init.c 10.8 (Berkeley) 3/30/96"; * PUBLIC: int v_screen_copy __P((SCR *, SCR *)); */ int -v_screen_copy(orig, sp) - SCR *orig, *sp; +v_screen_copy(SCR *orig, SCR *sp) { VI_PRIVATE *ovip, *nvip; @@ -58,6 +57,11 @@ v_screen_copy(orig, sp) nvip->rep_len = ovip->rep_len; } + /* Copy the match characters information. */ + if (ovip->mcs != NULL && (nvip->mcs = + v_wstrdup(sp, ovip->mcs, STRLEN(ovip->mcs))) == NULL) + return (1); + /* Copy the paragraph/section information. */ if (ovip->ps != NULL && (nvip->ps = v_strdup(sp, ovip->ps, strlen(ovip->ps))) == NULL) @@ -78,8 +82,7 @@ v_screen_copy(orig, sp) * PUBLIC: int v_screen_end __P((SCR *)); */ int -v_screen_end(sp) - SCR *sp; +v_screen_end(SCR *sp) { VI_PRIVATE *vip; @@ -89,6 +92,8 @@ v_screen_end(sp) free(vip->keyw); if (vip->rep != NULL) free(vip->rep); + if (vip->mcs != NULL) + free(vip->mcs); if (vip->ps != NULL) free(vip->ps); @@ -108,13 +113,11 @@ v_screen_end(sp) * PUBLIC: int v_optchange __P((SCR *, int, char *, u_long *)); */ int -v_optchange(sp, offset, str, valp) - SCR *sp; - int offset; - char *str; - u_long *valp; +v_optchange(SCR *sp, int offset, char *str, u_long *valp) { switch (offset) { + case O_MATCHCHARS: + return (v_buildmcs(sp, str)); case O_PARAGRAPHS: return (v_buildps(sp, str, O_STR(sp, O_SECTIONS))); case O_SECTIONS: |