import nvi 1.81.6 verbatim, untouched from the git tree trunk
authoraymeric <aymeric@NetBSD.org>
Fri, 16 May 2008 18:03:01 +0000
branchtrunk
changeset 169988 381ee874cee0
parent 169987 9cf5bb6da235
child 169989 4051213167a2
import nvi 1.81.6 verbatim, untouched from the git tree
dist/nvi/Changes
dist/nvi/LICENSE
dist/nvi/README
dist/nvi/README.1st
dist/nvi/README.DB3
dist/nvi/TODO
dist/nvi/build.unix/README
dist/nvi/build.unix/README.LynxOS
dist/nvi/build.unix/README.Solaris
dist/nvi/catalog/Makefile
dist/nvi/catalog/README
dist/nvi/catalog/dump.c
dist/nvi/catalog/dutch
dist/nvi/catalog/dutch.base
dist/nvi/catalog/dutch.check
dist/nvi/catalog/dutch.owner
dist/nvi/catalog/english
dist/nvi/catalog/english.base
dist/nvi/catalog/english.check
dist/nvi/catalog/english.owner
dist/nvi/catalog/french
dist/nvi/catalog/french.base
dist/nvi/catalog/french.check
dist/nvi/catalog/german
dist/nvi/catalog/german.base
dist/nvi/catalog/german.check
dist/nvi/catalog/german.owner
dist/nvi/catalog/ru_SU.KOI8-R
dist/nvi/catalog/ru_SU.KOI8-R.base
dist/nvi/catalog/ru_SU.KOI8-R.check
dist/nvi/catalog/ru_SU.KOI8-R.owner
dist/nvi/catalog/spanish
dist/nvi/catalog/spanish.base
dist/nvi/catalog/spanish.check
dist/nvi/catalog/spell.ok
dist/nvi/catalog/swedish
dist/nvi/catalog/swedish.base
dist/nvi/catalog/swedish.check
dist/nvi/catalog/swedish.owner
dist/nvi/cl/README.signal
dist/nvi/cl/cl.h
dist/nvi/cl/cl_bsd.c
dist/nvi/cl/cl_funcs.c
dist/nvi/cl/cl_main.c
dist/nvi/cl/cl_read.c
dist/nvi/cl/cl_screen.c
dist/nvi/cl/cl_term.c
dist/nvi/clib/bsearch.c
dist/nvi/clib/env.c
dist/nvi/clib/gethostname.c
dist/nvi/clib/iswblank.c
dist/nvi/clib/memchr.c
dist/nvi/clib/memset.c
dist/nvi/clib/mkstemp.c
dist/nvi/clib/mmap.c
dist/nvi/clib/snprintf.c
dist/nvi/clib/strdup.c
dist/nvi/clib/strpbrk.c
dist/nvi/clib/strsep.c
dist/nvi/clib/strtol.c
dist/nvi/clib/strtoul.c
dist/nvi/clib/vsnprintf.c
dist/nvi/common/api.c
dist/nvi/common/args.h
dist/nvi/common/common.h
dist/nvi/common/conv.c
dist/nvi/common/conv.h
dist/nvi/common/cut.c
dist/nvi/common/cut.h
dist/nvi/common/db.c
dist/nvi/common/db.h
dist/nvi/common/db1.c
dist/nvi/common/delete.c
dist/nvi/common/dldb.c
dist/nvi/common/exf.c
dist/nvi/common/exf.h
dist/nvi/common/gs.c
dist/nvi/common/gs.h
dist/nvi/common/key.c
dist/nvi/common/key.h
dist/nvi/common/log.c
dist/nvi/common/log.h
dist/nvi/common/log4.c
dist/nvi/common/main.c
dist/nvi/common/mark.c
dist/nvi/common/mark.h
dist/nvi/common/mem.h
dist/nvi/common/msg.c
dist/nvi/common/msg.h
dist/nvi/common/multibyte.h
dist/nvi/common/nothread.c
dist/nvi/common/options.awk
dist/nvi/common/options.c
dist/nvi/common/options.h
dist/nvi/common/options_f.c
dist/nvi/common/pthread.c
dist/nvi/common/put.c
dist/nvi/common/recover.c
dist/nvi/common/screen.c
dist/nvi/common/screen.h
dist/nvi/common/search.c
dist/nvi/common/seq.c
dist/nvi/common/seq.h
dist/nvi/common/trace.c
dist/nvi/common/util.c
dist/nvi/common/util.h
dist/nvi/common/util2.c
dist/nvi/common/vi.src
dist/nvi/common/vi_auto.c
dist/nvi/common/vi_auto.h
dist/nvi/common/vi_rec.c
dist/nvi/dist/ExtUtils/Embed.pm
dist/nvi/dist/INSTALL
dist/nvi/dist/Makefile.am
dist/nvi/dist/acconfig.h
dist/nvi/dist/compile
dist/nvi/dist/configure.in
dist/nvi/dist/depcomp
dist/nvi/dist/distrib
dist/nvi/dist/export
dist/nvi/dist/findconfig
dist/nvi/dist/ltconfig
dist/nvi/dist/m4/gtk.m4
dist/nvi/dist/missing
dist/nvi/dist/mkinstalldirs
dist/nvi/dist/pathnames.h.in
dist/nvi/dist/port.h.in
dist/nvi/dist/recover.in
dist/nvi/dist/script
dist/nvi/dist/spell.ok
dist/nvi/docs/README
dist/nvi/docs/edit/Makefile
dist/nvi/docs/edit/edittut.ms
dist/nvi/docs/exref/Makefile
dist/nvi/docs/exref/ex.rm
dist/nvi/docs/exref/ex.summary
dist/nvi/docs/vi.man/Makefile
dist/nvi/docs/vi.man/spell.ok
dist/nvi/docs/vi.man/vi.1
dist/nvi/docs/vi.ref/Makefile
dist/nvi/docs/vi.ref/ex.cmd.texi
dist/nvi/docs/vi.ref/ref.texi
dist/nvi/docs/vi.ref/set.opt.texi
dist/nvi/docs/vi.ref/spell.ok
dist/nvi/docs/vi.ref/vi.cmd.texi
dist/nvi/docs/vi.ref/vi.texi
dist/nvi/docs/vitut/Makefile
dist/nvi/docs/vitut/vi.apwh.ms
dist/nvi/docs/vitut/vi.chars
dist/nvi/docs/vitut/vi.in
dist/nvi/docs/vitut/vi.summary
dist/nvi/ex/ex.awk
dist/nvi/ex/ex.c
dist/nvi/ex/ex.h
dist/nvi/ex/ex_abbrev.c
dist/nvi/ex/ex_append.c
dist/nvi/ex/ex_args.c
dist/nvi/ex/ex_argv.c
dist/nvi/ex/ex_at.c
dist/nvi/ex/ex_bang.c
dist/nvi/ex/ex_cd.c
dist/nvi/ex/ex_cmd.c
dist/nvi/ex/ex_cscope.c
dist/nvi/ex/ex_delete.c
dist/nvi/ex/ex_display.c
dist/nvi/ex/ex_edit.c
dist/nvi/ex/ex_equal.c
dist/nvi/ex/ex_file.c
dist/nvi/ex/ex_filter.c
dist/nvi/ex/ex_global.c
dist/nvi/ex/ex_init.c
dist/nvi/ex/ex_join.c
dist/nvi/ex/ex_map.c
dist/nvi/ex/ex_mark.c
dist/nvi/ex/ex_mkexrc.c
dist/nvi/ex/ex_move.c
dist/nvi/ex/ex_open.c
dist/nvi/ex/ex_perl.c
dist/nvi/ex/ex_preserve.c
dist/nvi/ex/ex_print.c
dist/nvi/ex/ex_put.c
dist/nvi/ex/ex_quit.c
dist/nvi/ex/ex_read.c
dist/nvi/ex/ex_screen.c
dist/nvi/ex/ex_script.c
dist/nvi/ex/ex_set.c
dist/nvi/ex/ex_shell.c
dist/nvi/ex/ex_shift.c
dist/nvi/ex/ex_source.c
dist/nvi/ex/ex_stop.c
dist/nvi/ex/ex_subst.c
dist/nvi/ex/ex_tag.c
dist/nvi/ex/ex_tcl.c
dist/nvi/ex/ex_txt.c
dist/nvi/ex/ex_undo.c
dist/nvi/ex/ex_usage.c
dist/nvi/ex/ex_util.c
dist/nvi/ex/ex_version.c
dist/nvi/ex/ex_visual.c
dist/nvi/ex/ex_write.c
dist/nvi/ex/ex_yank.c
dist/nvi/ex/ex_z.c
dist/nvi/ex/script.h
dist/nvi/ex/tag.h
dist/nvi/gtk/gtk.h
dist/nvi/gtk/gtk_main.c
dist/nvi/gtk/gtkvi.c
dist/nvi/gtk/gtkvi.h
dist/nvi/gtk/gtkviscreen.c
dist/nvi/gtk/gtkviscreen.h
dist/nvi/gtk/gtkviwindow.c
dist/nvi/gtk/gtkviwindow.h
dist/nvi/include/bitstring.h
dist/nvi/include/sys/queue.h
dist/nvi/ip/ip_funcs.c
dist/nvi/ip/ip_main.c
dist/nvi/ip/ip_read.c
dist/nvi/ip/ip_screen.c
dist/nvi/ip/ip_term.c
dist/nvi/ip/vipc.pl
dist/nvi/ipc/ip.h
dist/nvi/ipc/ip_run.c
dist/nvi/ipc/ip_send.c
dist/nvi/ipc/ip_trans.c
dist/nvi/ipc/ipc.awk
dist/nvi/ipc/ipc_cmd.c
dist/nvi/ipc/ipc_method.c
dist/nvi/ipc/vipc.awk
dist/nvi/motif/m_cde.c
dist/nvi/motif/m_main.c
dist/nvi/motif/nvi.xbm
dist/nvi/motif/nvi.xpm
dist/nvi/motif_l/TODO
dist/nvi/motif_l/m_copypaste.c
dist/nvi/motif_l/m_func.c
dist/nvi/motif_l/m_menu.c
dist/nvi/motif_l/m_motif.h
dist/nvi/motif_l/m_options.c
dist/nvi/motif_l/m_prompt.c
dist/nvi/motif_l/m_ruler.c
dist/nvi/motif_l/m_search.c
dist/nvi/motif_l/m_tags.c
dist/nvi/motif_l/m_util.c
dist/nvi/motif_l/m_vi.c
dist/nvi/motif_l/vi_mextern.h
dist/nvi/motif_l/xtabbed.c
dist/nvi/perl_api/VI.pod
dist/nvi/perl_api/nviperl.pod
dist/nvi/perl_api/perl.xs
dist/nvi/perl_api/perlsfio.c
dist/nvi/perl_api/typemap
dist/nvi/perl_scripts/forall.pl
dist/nvi/perl_scripts/make.pl
dist/nvi/perl_scripts/tk.pl
dist/nvi/perl_scripts/wc.pl
dist/nvi/regex/COPYRIGHT
dist/nvi/regex/WHATSNEW
dist/nvi/regex/cclass.h
dist/nvi/regex/cname.h
dist/nvi/regex/engine.c
dist/nvi/regex/re_format.7
dist/nvi/regex/regcomp.c
dist/nvi/regex/regerror.c
dist/nvi/regex/regex.3
dist/nvi/regex/regex.h
dist/nvi/regex/regex2.h
dist/nvi/regex/regexec.c
dist/nvi/regex/regfree.c
dist/nvi/regex/utils.h
dist/nvi/tcl_api/tcl.c
dist/nvi/tcl_scripts/errors.tcl
dist/nvi/tcl_scripts/gnats.tcl
dist/nvi/tcl_scripts/mailprocs.tcl
dist/nvi/tcl_scripts/wc.tcl
dist/nvi/vi/getc.c
dist/nvi/vi/v_at.c
dist/nvi/vi/v_ch.c
dist/nvi/vi/v_cmd.c
dist/nvi/vi/v_delete.c
dist/nvi/vi/v_event.c
dist/nvi/vi/v_ex.c
dist/nvi/vi/v_increment.c
dist/nvi/vi/v_init.c
dist/nvi/vi/v_itxt.c
dist/nvi/vi/v_left.c
dist/nvi/vi/v_mark.c
dist/nvi/vi/v_match.c
dist/nvi/vi/v_paragraph.c
dist/nvi/vi/v_put.c
dist/nvi/vi/v_redraw.c
dist/nvi/vi/v_replace.c
dist/nvi/vi/v_right.c
dist/nvi/vi/v_screen.c
dist/nvi/vi/v_scroll.c
dist/nvi/vi/v_search.c
dist/nvi/vi/v_section.c
dist/nvi/vi/v_sentence.c
dist/nvi/vi/v_status.c
dist/nvi/vi/v_txt.c
dist/nvi/vi/v_ulcase.c
dist/nvi/vi/v_undo.c
dist/nvi/vi/v_util.c
dist/nvi/vi/v_word.c
dist/nvi/vi/v_xchar.c
dist/nvi/vi/v_yank.c
dist/nvi/vi/v_z.c
dist/nvi/vi/v_zexit.c
dist/nvi/vi/vi.c
dist/nvi/vi/vi.h
dist/nvi/vi/vs_line.c
dist/nvi/vi/vs_msg.c
dist/nvi/vi/vs_refresh.c
dist/nvi/vi/vs_relative.c
dist/nvi/vi/vs_smap.c
dist/nvi/vi/vs_split.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/Changes	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,34 @@
+Changes since 1.81.5
+    * various compilation fixes
+    * support for newer DBs
+    * tcl support compiles again
+Changes since 1.81.4
+    * add Changes document
+    * the preserve command overwrote the edited file; the problem
+      is really in DB; a bandaid was added
+    * configure changes
+	- -rpath now on by default
+	- check for iconv
+    * handle incomplete/invalid input
+    * upgrade libtool and automake
+    * Motif front-end was getting out of sync; fixed
+    * ^T works in presence of wide chars
+    * fix use of OPT_GLOBAL (YAMAMOTO Takashi <takashi.yamamoto@bigfoot.com>)
+    * missing fallback function added
+    * fix use of both leftright and number
+	(problem reported by Dima Dorfman <dima@unixfreak.org>)
+    * install everything 1.79 installed
+    * fix count argument for commands
+	(problem reported by Arfst Ludwig <Arfst.Ludwig@LHSystems.COM>)
+    * perl changes
+	- map no longer assumes its argument is the name of a perl function
+	- EXISTS for marks
+    * documentation changes
+	- vi.ref converted to texinfo
+	- vsplit documented
+Changes since 1.81.3
+    * support for newer ncurses
+    * various other wide character related changes
+    * eliminate spurious cursor movements on split screens
+    * use of gtk-1.2 allowed again
+    * small fix to Motif front-end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/LICENSE	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,39 @@
+/*-
+ * $Id: LICENSE,v 1.1.1.1 2008/05/16 18:03:01 aymeric Exp $ (Sleepycat) $Date: 2008/05/16 18:03:01 $
+ */
+
+The following are the copyrights and redistribution conditions that apply
+to this copy of the Vi software.
+
+/*
+ * Copyright (c) 1991, 1992, 1993, 1994
+ *      The Regents of the University of California.  All rights reserved.
+ *  Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
+ *	Keith Bostic.  All rights reserved.
+ *  Copyright (c) 1999, 2000
+ *	Sven Verdoolaege.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/README	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,104 @@
+#	$Id: README,v 1.1.1.1 2008/05/16 18:03:01 aymeric Exp $ (Berkeley) $Date: 2008/05/16 18:03:01 $
+
+This is version 1.80 (%H%) of nex/nvi, a reimplementation of the ex/vi
+text editors originally distributed as part of the Fourth Berkeley
+Software Distribution (4BSD), by the University of California, Berkeley.
+
+The directory layout is as follows:
+
+    LICENSE ....... Copyright, use and redistribution information.
+    README ........ This file.
+    build.unix .... UNIX build directory.
+    catalog ....... Message catalogs; see catalog/README.
+    cl ............ Vi interface to the curses(3) library.
+    clib .......... C library replacement source code.
+    common ........ Code shared by ex and vi.
+    db ............ A stripped-down, replacement db(3) library.
+    dist .......... Various files used to build the vi distribution.
+    docs .......... Ex/vi documentation, both current and historic.
+    docs/README ... Documentation overview.
+    docs/edit ..... Edit: A tutorial.
+    docs/exref .... Ex Reference Manual -- Version 3.7.
+    docs/vi.man ... UNIX manual page for nex/nvi.
+    docs/vi.ref ... Nex/nvi reference manual.
+    docs/vitut .... An Introduction to Display Editing with Vi.
+    ex ............ Ex source code.
+    gtk ........... Vi gtk application.
+    include ....... Replacement include files.
+    ip ............ Library interface to vi: vi side.
+    ipc ........... Library interface to vi: application side.
+    motif ......... Vi motif application.
+    motif_l ....... Motif library interface to vi.
+    perl_api ...... Perl scripting language support.
+    perl_scripts .. Perl scripts.
+    regex ......... POSIX 1003.2 regular expression library.
+    tcl_api ....... Tcl scripting language support.
+    tcl_scripts ... Tcl scripts.
+    vi ............ Vi source code.
+
+To build DB for a UNIX platform:
+
+    cd build.unix
+    ../dist/configure
+    make
+
+To build multiple UNIX versions of DB in the same source tree, create
+a new directory then configure and build.
+
+    mkdir build.bsdos3.0
+    cd build.bsdos3.0
+    ../dist/configure
+    make
+
+For additional information about building DB for UNIX platforms, the
+description of possible configuration options and other information
+on DB configuration and build issues, see the file build.unix/README.
+	
+Bug fixes and updated versions of this software will periodically be made
+available.  For more information, as well as a list of Frequently Asked
+Questions, see:
+
+	http://www.bostic.com/vi
+
+To ask questions about vi, report vi problems, request notification of
+future releases and/or bug fixes, or to contact the authors for any
+reason, please send email to:
+
+	bostic@bostic.com
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+o This software is several years old and is the product of many folks' work.  
+
+	This software was originally derived from software contributed to
+	the University of California, Berkeley by Steve Kirkendall, the
+	author of the vi clone elvis.  Without his work, this work would
+	have been far more difficult.
+
+	IEEE POSIX 1003.2 style regular expression support is courtesy of
+	Henry Spencer, for which I am *very* grateful.
+
+	Elan Amir did the original 4BSD curses work that made it possible
+	to support a full-screen editor using curses.
+
+	George Neville-Neil added the Tcl interpreter, and the initial
+	interpreter design was his.
+
+	Sven Verdoolaege added the Perl interpreter.
+
+	Rob Mayoff provided the original Cscope support.
+
+o Many, many people suggested enhancements, and provided bug reports and
+  testing, far too many to individually thank.
+
+o From the original vi acknowledgements, by William Joy and Mark Horton:
+
+	Bruce Englar encouraged the early development of this display
+	editor.  Peter Kessler helped bring sanity to version 2's
+	command layout.  Bill Joy wrote versions 1 and 2.0 through 2.7,
+	and created the framework that users see in the present editor.
+	Mark Horton added macros and other features and made the editor
+	work on a large number of terminals and Unix systems.
+
+o And...
+	The financial support of UUNET Communications Services is gratefully
+	acknowledged.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/README.1st	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,17 @@
+This is a development version of nvi.
+Use at your own risk.
+
+Please do not contact the original authors about bugs you
+find in this version. Contact skimo-vi@kotnet.org instead.
+
+There is no guarantee that anything in this version will be
+available in upcoming stable releases.
+
+New versions will be made available on 
+http://www.kotnet.org/~skimo/nvi
+
+As always this software comes with absolutely NO WARRANTY.
+
+Now read the original README file.
+
+Sven Verdoolaege
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/README.DB3	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,22 @@
+This version of vi requires DB3.1 or better, which can be found
+on http://www.sleepycat.com/ .
+
+Note that there is a small problem with DB 3.2 in that it will
+not let nvi read in a final line that doesn't end in a newline.
+This should be fixed in DB 3.3
+
+If your system library (such as glibc prior to version 2.2) uses a
+previous version of db (e.g. DB2) internally, you must configure with
+--enable-dynamic-loading to avoid symbols in the internally used db from
+being resolved against the newer db.
+
+If, on top of that, the vi binary is explicitly linked against that
+previous version of db (such as might happen if you enable the perl
+embedding), you should compile the 3.x version with all symbols internally
+resolved.  In case you use the Gnu linker (ld), this can be accomplished
+by passing it the -Bsymbolic option. You can do this by setting CC
+to e.g. "gcc -Wl,-Bsymbolic" prior to configuring db.
+See docs/ref/build_unix/flags.html in the db distribution for more
+information.
+
+skimo@kotnet.org
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/TODO	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,123 @@
+# $Id: TODO,v 1.1.1.1 2008/05/16 18:03:01 aymeric Exp $ (Berkeley) $Date: 2008/05/16 18:03:01 $
+
+========================================================================
+GENERAL
+========================================================================
+2.0:	Open mode is not yet implemented.
+
+
+========================================================================
+DB
+========================================================================
+1.N	When nvi edits files that don't have trailing newlines, it appends
+	one, regardless.  This is required, by default, from POSIX.2.
+
+1.N:	If you run out of space in the recovery directory, the recovery
+	file is left in place.
+
+2.0:	It's known that it's possible to sync the backing files in the
+	wrong manner, leaving backup files that aren't recoverable.  This
+	is going to be left alone until we have a logging version of DB,
+	which will hopefully fix this (or at least make it possible to
+	easily do so).
+
+========================================================================
+VI
+========================================================================
+1.N:	Make the search pattern and command history (what the '.' command
+	executes) remembered between windows, or configurable so that it
+	is.
+
+1.N:	Change the screen scrolling to not eat user characters...  i.e.
+	g/pattern/foo should not eat already entered chars.
+
+1.N:	The vi main command loop should use the general-purpose overflow
+	and underflow routines.  In addition, the vi command loop uses
+	unsigned longs -- should probably be fixed as a 32-bit unsigned
+	type, and then check to make sure it's never used as as variable
+	type again.
+
+1.N:	Should "view" set a lock on the file?
+
+1.N:	Should "view" copy the file (or even open a recovery file)?
+
+1.N:	The strings found by searches should be highlighted until the next
+	character is entered.
+
+1.N:	Display a split vi screen for the :help command.
+
+1.N:	When getting a key for a continue screen, we should always read from
+	the terminal, not from a mapped key.
+
+1.N:	The sentence, paragraph and section movement commands don't match
+	historic practice in some boundary cases.  This should be left
+	alone until POSIX 1003.2 makes up its mind.
+
+1.N:	The vs_sm_fill routine should scroll if possible, not always redraw.
+
+1.N:	Think about setting a dirty/inuse bits on the lines of the SMAP
+	structure.  That way the message routines could steal lines and
+	refresh would continue to work, because it would know not to touch
+	the lines that were in use.
+
+========================================================================
+EX
+========================================================================
+2.0:	^C isn't passed to the shell in the script windows as an interrupt
+	character.
+
+2.0:	It would be nice to inverse video the replaced text during
+	interactive substitute.
+
+2.0:	The :args command should put the current file name out in reverse
+	video.  This isn't going to be easy, currently only full lines can
+	be in reverse video, not just parts.
+
+========================================================================
+CURSES
+========================================================================
+1.N	In single-line screens, have to press 'q' twice when quitting out
+	of  a ":set all" display.
+
+========================================================================
+MOTIF/IPC
+========================================================================
+1.N:	We currently permit the user to change the lines, columns and term
+	edit options.  Shouldn't that be illegal in a window interface?
+
+========================================================================
+REDESIGN
+========================================================================
+2.0:	There's a serious problem with error returns -- we need to separate
+	command failure from fatal error, consistently, over the entire source
+	tree.  We need to rework all of vi to have three return values:
+		0: success
+		1: vi error, continue
+		2: fatal error, die
+	Right now we don't recognize fatal errors for what they are.
+
+2.0:	The complete list of POSIX.1 calls that can return EINTR are:
+		wait, waitpid, sleep, dup2, close, read, write,
+		fcntl(SETLCKW) tcsetattr, tcdrain
+	The problem is that technically, any system/library call can
+	return EINTR, so, while nvi blocks (most of?) the obvious ones,
+	someone may have to do a complete pass and block signals
+	everywhere.
+
+2.0:	The options hardtabs, lisp, optimize, redraw, and slowopen
+	are recognized, but not implemented.
+
+
+2.0:	Field editing shouldn't be hard to add to nvi:
+
+	Field editing file template:
+	version #
+	field #	row/column start	row/column stop
+	label	field #			Label string
+	re	field #			Matching re string.
+	field #	row/column start	row/column stop
+	label	field #			Label string
+	re	field #			Matching re string.
+
+	<tab> moves to the next field
+	<bs> in column 0 moves to the previous field
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/build.unix/README	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,362 @@
+#	$Id: README,v 1.1.1.1 2008/05/16 18:03:02 aymeric Exp $ (Berkeley) $Date: 2008/05/16 18:03:02 $
+
+Nvi uses the GNU autoconf program for configuration and compilation.  You
+should enter:
+
+	../dist/configure
+	make
+
+and nvi will configure the system and build one or two binaries:  nvi and
+tknvi.  You can use any path to the configure script, e.g., to build for
+an x86 architecture, I suggest that you do:
+
+	mkdir build.x86
+	cd build.x86
+	../dist/configure
+	make
+
+There are options that you can specify to the configure command.  See
+the next section for a description of these options.
+
+If you want to rebuild or reconfigure nvi, for example, because you change
+your mind as to the curses library that you want to use, create a new
+directory and reconfigure it using "configure" and whatever options you
+choose, don't try to selectively edit the files.
+
+By default, nvi is installed as "vi", with hard links to "ex" and "view".
+To install them using different names, use the configure program options.
+For example, to install them as "nvi", "nex" and "nview", use:
+
+	configure --program-prefix=n
+
+See the section below on installation for details.
+
+Note, if you're building nvi on a LynxOS system, you should read the
+README.LynxOS file in this directory for additional build instructions
+that are specific to that operating system.
+
+If you have trouble with this procedure, send email to the addresses
+listed in ../README.  In that email, please provide a complete script
+of the output for all of the above commands that you entered.
+
+=-=-=-=-=-=-=
+NVI'S OPTIONS TO THE CONFIGURE PROGRAM
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+There are many options that you can enter to the configuration program.
+To see a complete list of the options, enter "configure --help".  Only
+a few of them are nvi specific.  These options are as follows:
+
+  --disable-re            DON'T use the nvi-provided RE routines.
+  --enable-debug          Build a debugging version.
+  --enable-perlinterp     Include a Perl interpreter in vi.
+  --enable-tclinterp      Include a Tk/Tcl interpreter in vi.
+  --enable-gtk		  Build a gtk front-end.
+  --enable-motif	  Build a motif front-end.
+  --enable-threads	  Turn on thread support.
+  --enable-widechar	  Build a wide character aware vi (experimental).
+  --with-curses=DIR       Path to curses installation.
+  --with-db3=db3prefix    Path to db3 installation.
+  --enable-dynamic-loading Load DB 3 dynamically.
+
+disable-re:
+	By default, nvi loads its own versions of the POSIX 1003.2 Regular
+	Expression routines (which are Henry Spencer's implementation).
+	If your C library contains an implementation of the POSIX 1003.2
+	RE routines (note, this is NOT the same as the historic UNIX RE
+	routines), and you want to use them instead, enter:
+
+	--disable-re
+
+	as an argument to configure, and the RE routines will be taken
+	from whatever libraries you load.  Please ensure that your RE
+	routines implement Henry Spencer's extensions for doing vi-style
+	"word" searches.
+
+enable-debug:
+	If you want to build nvi with no optimization (i.e. without -O
+	as a compiler flag), with -g as a compiler flag, and with DEBUG
+	defined during compilation, enter:
+
+	--enable-debug
+
+	as an argument to configure.
+
+enable-perlinterp:
+	If you have the Perl 5 libraries and you want to compile in the
+	Perl interpreter, enter:
+
+	--enable-perlinterp
+
+	as an argument to configure.  (Note: this is NOT possible with
+	Perl 4, or even with Perl 5 versions earlier than 5.002.)
+
+enable-tclinterp:
+	If you have the Tk/Tcl libraries and you want to compile in the
+	Tcl/Tk interpreter, enter:
+
+	--enable-tclinterp
+
+	as an argument to configure.  If your Tk/Tcl include files and
+	libraries aren't in the standard library and include locations,
+	see the next section of this README file for more information.
+
+enable-gtk:
+	If you have the Gtk libraries and you want to build the Gtk
+	nvi front-end, enter:
+
+	--enable-gtk
+
+	as an argument to configure.  If your Gtk include files and
+	libraries aren't in the standard library and include locations,
+	see the next section of this README file for more information.
+	See also the enable-threads option.
+
+enable-motif:
+	If you have the Motif libraries and you want to build the Motif
+	nvi front-end, enter:
+
+	--enable-motif
+
+	as an argument to configure.  If your Motif include files and
+	libraries aren't in the standard library and include locations,
+	see the next section of this README file for more information.
+
+enable-threads:
+	If you want to be able to use multiple windows in the Gtk
+	front-end, you should specify this option.
+
+with-curses:
+	Specifies the path where curses is installed.
+
+with-db3:
+	Specifies the path where DB3 is installed.
+	See README.DB3 for more information about DB3.
+
+enable-dynamic-loading:
+	Dynamically load DB3 library.
+	See README.DB3 for more information about DB3.
+
+enable-widechar:
+	Enables support for wide characters.
+	Note that this is still rather experimental.
+
+	If you try this out on Solaris, you will want to point nvi
+	to the curses in /usr/xpg4/ which is CSI compliant.
+
+=-=-=-=-=-=-=
+ADDING OR CHANGING COMPILERS, OR COMPILE OR LOAD LINE FLAGS
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+If you want to use a specific compiler, specify the CC environment
+variable before running configure.  For example:
+
+	env CC=gcc configure
+
+Using anything other than the native compiler will almost certainly
+mean that you'll want to check the compile and load line flags, too.
+
+If you want to specify additional load line flags, specify the ADDLDFLAGS
+environment variable before running configure.  For example:
+
+	env ADDLDFLAGS="-Q" configure
+
+would specify the -Q flag in the load line when the nvi programs are
+loaded.
+
+If you don't want configure to use the default load line flags for the
+system, specify the LDFLAGS environment variable before running configure.
+For example:
+
+	env LDFLAGS="-32" configure
+
+will cause configure to set the load line flags to "-32", and not set
+them based on the current system.
+
+If you want to specify additional compile line flags, specify the
+ADDCPPFLAGS environment variable before running configure.  For example:
+
+	env ADDCPPFLAGS="-I../foo" configure
+
+would cause the compiler to be passed the -I../foo flag when compiling
+test programs during configuration as well as when building nvi object
+files.
+
+If you don't want configure to use the default compile line flags for the
+system, specify the CPPFLAGS environment variable before running configure.
+For example:
+
+	env CPPFLAGS="-I.." configure
+
+will cause configure to use "-I.." as the compile line flags instead of
+the default values.
+
+=-=-=-=-=-=-=
+ADDING LIBRARIES AND INCLUDE FILES
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+If the Tk/Tcl or any other include files or libraries are in non-standard
+places on your system, you will need to specify the directory path where
+they can be found.
+
+If you want to specify additional library paths, set the ADDLIBS environment
+variable before running configure.  For example:
+
+	env ADDLIBS="-L/a/b -L/e/f -ldb" configure
+
+would specify two additional directories to search for libraries, /a/b
+and /e/f, and one additional library to load, "db".
+
+If you want to specify additional include paths, specify the ADDCPPFLAGS
+environment variable before running configure.  For example:
+
+	env ADDCPPFLAGS="-I/usr/local/include" LIBS="-ldb" configure
+
+would search /usr/local/include for include files, as well as load the db
+library as described above.
+
+As a final example, let's say that you've downloaded ncurses from the net
+and you've built it in a directory named ncurses which is at the same
+level in the filesystem hierarchy as nvi.  You would enter something like:
+
+	env ADDCPPFLAGS="-I../../ncurses/include" \
+	    ADDLIBS="-L../../ncurses/libraries" configure
+
+to cause nvi to look for the curses include files and the curses library
+in the ncurses environment.
+
+Notes:
+	Make sure that you prepend -L to any library directory names, and
+	that you prepend -I to any include file directory names!  Also,
+	make sure that you quote the paths as shown above, i.e. with
+	single or double quotes around the values you're specifying for
+	ADDCPPFLAGS and ADDLIBS.
+
+	=-=-=-=-=-=
+	You should NOT need to add any libraries or include files to load
+	the Perl5 interpreter.  The configure script will obtain that
+	information directly from the Perl5 program.  This means that the
+	configure script must be able to find perl in its path.  It looks
+	for "perl5" first, and then "perl".  If you're building a Perl
+	interpreter and neither is found, it's a fatal error.
+
+	=-=-=-=-=-=
+	You do not need to specify additional libraries to load Tk/Tcl,
+	Perl or curses, as the nvi configuration script adds the
+	appropriate libraries to the load line whenever you specify
+	--enable-tknvi or other Perl or Tk/Tcl related option, or build
+	the Tk/Tcl or curses version of nvi.  The library names that are
+	automatically loaded are as follows:
+
+	for Perl:	-lperl
+	for Tk/Tcl:	-ltk -ltcl -lm
+	for curses:	-lcurses
+
+	In addition, the configure script loads:
+
+		... the X libraries when loading the Tk/Tcl libraries,
+		    if they exist.
+
+		... the -ltermcap or -ltermlib libraries when loading
+		    any curses library, if they exist.
+
+	=-=-=-=-=-=
+	The env command is available on most systems, and simply sets one
+	or more environment variables before running a command.  If the
+	env command is not available to you, you can set the environment
+	variables in your shell before running configure.  For example,
+	in sh or ksh, you could do:
+
+		ADDLIBS="-L/a/b -L/e/f -ldb" configure
+
+	and in csh or tcsh, you could do:
+
+		setenv ADDLIBS "-L/a/b -L/e/f -ldb"
+		configure
+
+	See your shell manual page for further information.
+
+=-=-=-=-=-=-=
+INSTALLING NVI
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Nvi installs the following files into the following locations, with
+the following default values:
+
+Variables:		Default value:
+prefix			/usr/local
+exec_prefix		$(prefix)
+bindir			$(prefix)/bin
+datadir			$(prefix)/share
+mandir			$(prefix)/man
+
+File(s):		Default location
+----------------------------------------
+vi			$(bindir)/vi
+vi.1			$(mandir)/man1/vi.1
+vi.0			$(mandir)/cat1/vi.0
+Perl scripts		$(datadir)/vi/perl/
+Tcl scripts		$(datadir)/vi/tcl/
+Message Catalogs	$(datadir)/vi/catalog/
+
+Notes:
+	There are two hard links to the vi program, named ex and view.
+	Similarly, there are two hard links to the unformatted vi manual
+	page, named ex.1 and view.1, and two hard links to the formatted
+	manual page, named ex.0 and view.0.  These links are created when
+	the program and man pages are installed.
+
+	If you want to install vi, ex, view and the man pages as nvi, nex,
+	nview, use the configure option --program-prefix=n.  Other, more
+	complex transformations are possible -- use configure --help to
+	see more options.
+
+	To move the entire installation tree somewhere besides /usr/local,
+	change the value of both "exec_prefix" and "prefix".  To move the
+	binaries to a different place, change the value of "bindir".
+	Similarly, to put the datafiles (the message catalogs, Perl and
+	Tcl scripts) or the man pages in a different place, change the
+	value of "datadir" or "mandir".  These values can be changed as
+	part of configuration:
+
+		configure --exec_prefix=/usr/contrib --prefix=/usr/share
+
+	or when doing the install itself:
+
+		make exec_prefix=/usr/contrib prefix=/usr/contrib install
+
+	The datafile directory (e.g., /usr/local/share/vi by default) is
+	completely removed and then recreated as part of the installation
+	process.
+
+=-=-=-=-=-=-=
+NVI AND THE CURSES LIBRARY
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+The major portability problem for nvi is selecting a curses library.
+Unfortunately, it is common to find broken versions of curses -- the
+original System V curses was broken, resulting in all vendors whose
+implementations are derived from System V having broken implementations
+in turn.
+
+If you use the vendor's or other curses library, and you see any of the
+following symptoms:
+
+	+ Core dumps in curses routines.
+	+ Missing routines when compiling.
+	+ Repainting the wrong characters on the screen.
+	+ Displaying inverse video in the wrong places.
+	+ Failure to reset your terminal to the correct modes on exit.
+
+you have a broken curses implementation, and you should reconfigure nvi
+to use another curses library.
+
+An alternative for your vendor's curses is ncurses, available from
+ftp://ftp.gnu.org/pub/gnu/ncurses/
+
+One final note.  If you see the following symptoms:
+
+	+ Line-by-line screen repainting instead of scrolling.
+
+it usually means that your termcap or terminfo information is insufficient
+for the terminal.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/build.unix/README.LynxOS	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,320 @@
+README.LynxOS
+=============
+
+Written by Ronald F. Guilmette <rfg@monkeys.com>
+
+Last modified Wed Aug 14 23:10:07 PDT 1996
+------------------------------------------
+
+0. Introduction
+---------------
+
+This file describes how to build and install the Berkeley nvi editor for
+the LynxOS 2.4.0 operating system.
+
+LynxOS 2.4.0 is available for a variety of different hardware platforms, in
+particular, x86, m680x0, Sparc, and PowerPC.  I have successfully built nvi
+on all four of these flavors of LynxOS by following the procedures given in
+this file.
+
+Note that these procedures may not work on versions of LynxOS prior to 2.4.0.
+(As I understand it, a good deal of work went into making the 2.4.0 release
+more POSIX-compliant, and I have no idea what build glitches, if any, you
+might encounter if you try to build nvi on a pre-2.4.0 version of LynxOS.)
+
+There are basically four steps to configuring, building, and installing nvi
+on LynxOS, namely:
+
+	1.  Get setup to use the proper C compiler.
+	2.  Replace your installed `tr' program.
+	3.  Fix your system include files.
+	4.  Do a normal configure, build, and install of nvi.
+
+These steps are described in separate sections below.
+
+1.  Get Setup to Use the Proper C Compiler
+------------------------------------------
+
+The first step when building nvi on LynxOS is to set your $PATH environment
+variable properly so that the gcc 2.x compiler appears first on your path,
+prior to the older (and less robust) gcc 1.xx compiler (typically installed
+as /bin/gcc) and/or the old Lynx proprietary C compiler (typically installed
+as /bin/cc), both of which may also be present on your system.
+
+Note that for most operating systems, the configure script for nvi tries
+to use whatever compiler you have installed (and in your $PATH) as "cc",
+however in the special case of LynxOS, the configure script will auto-
+matically try to find a "gcc" program on your $PATH in preference to a
+compiler called "cc".  If the nvi configure script only find a compiler
+called "cc", that's OK.  It will still try to see if that is really just
+the GNU C compiler installed under the name "cc".
+
+Regardless of the name however (be it "gcc" or "cc") the first C compiler
+in your $PATH should be some _recent_ (i.e. 2.0 or later) version of the
+GNU C compiler... and the nvi configure script now checks that this is the
+case, and fails if it isn't.
+
+Oddly enough, LynxOS 2.4.0 (and some prior versions) shipped with as many
+as three different C compilers installed, so it is important to set your
+$PATH environment variable carfully in order to get the proper C compiler
+to appear first in your $PATH.  You want to avoid having either the /bin/gcc
+compiler or the /bin/cc compiler be the first C compiler in your $PATH.
+
+To make sure that the GNU C version 2.x compiler which was shipped with your
+LynxOS system appears first on your path, you will need to either set your
+$PATH variable (for sh/bash/ksh users) or your $path variable (for csh/tcsh
+users).  You can, of course, just do this at the shell command prompt, but
+it is probably better to actually edit this change into your .profile file
+(for sh/bash/ksh users) or into your .cshrc file (for csh/tcsh users).
+
+The pathname of the directory that contains the GNU C version 2.x compiler
+is (unfortunately) dependent upon the exact type of LynxOS system you have.
+
+For LynxOS 2.4.0 on x86 systems, gcc 2.x is located in:
+
+	/cygnus/94q4-lynxos-x86/bin
+
+For LynxOS 2.4.0 on m680x0 systems, gcc 2.x is located in:
+
+	/cygnus/94q4-lynxos-68k/bin
+
+For LynxOS 2.4.0 on Sparc systems, gcc 2.x is located in:
+
+	/cygnus/94q4-lynxos-usparc/bin
+
+For LynxOS 2.4.0 on PowerPC systems, gcc 2.x is located in:
+
+	/cygnus/95q2-lynxos-ppc/bin
+
+(Note also that these locations may change in LynxOS 2.5.x and beyond.)
+
+Anyway, it is imperative that you setup your $PATH environment variable
+(*before* you do the configure step for nvi) so that the GNU C version 2.x
+compiler appears in your $PATH before either the /bin/cc or /bin/gcc
+compilers (if present).  If you fail to do this, the configure step for
+nvi will fail, because the compiler script actually checks (now) that the
+compiler you are using (if your are on a LynxOS system) is gcc 2.0 or
+later.
+
+To make absolutely sure that you will be configuring and building nvi with
+the proper C compiler (i.e. the GNU C version 2.x compiler on your system)
+you should add the directory name listed above for your specific system type
+to your $PATH setting in your $HOME/.profile file.  (For csh/tcsh users, you
+will instead want to add the relevant directory name to the setting of your
+$path variable in your ~/.cshrc file.)  Once you have added the proper direc-
+tory name (from the list given above) to your $HOME/.profile file (or to your
+~/.cshrc file, if you are using csh or tcsh) you should log out completely
+and then log back into the system just to make sure your new $PATH/$path
+setting takes effect properly.
+
+When you finish making this adjustment to your $PATH (or $path), the most
+up-to-date version of gcc on your system should be available to you as the
+first `gcc' program on your $PATH.  You should verify that this is indeed the
+case simply by typing `gcc -v' and then checking the version number reported
+by the compiler.  It should say either "2.6-94q4" or (on PowerPC systems) it
+should say "2.6-95q2".  If you don't get these results, try again to set your
+$PATH (or $path) until you do.  You won't be able to build nvi until you are
+properly setup to use gcc version 2.0 or later.
+
+Performing the steps shown above will insure that your subsequent configura-
+tion and build steps for nvi will make use of the most up-to-date version of
+gcc that was shipped with your Lynx operating system.  (Note that the versions
+of gcc which are currently shipping with LynxOS 2.4.0 are also somewhat out-
+of-date themselves, but they are still quite a bit newer and more bug-free
+and ANSI conformant that those other two C compilers, /bin/cc and /bin/gcc,
+which also ship with LynxOS 2.4.0.)
+
+(Note:  At present, LynxOS version 2.4.0 is the latest officially released
+version of LynxOS, and all of the above information is accurate and correct
+for LynxOS 2.4.0 as of the time of this writing.  However it is rumored that
+future releases of LynxOS may provide a still newer version of gcc, and that
+it may be located in the /usr/bin directory.  Thus, if you are building nvi
+for some LynxOS version later than 2.4.0, you may wish to check and see if
+your system has a program called /usr/bin/gcc, and use that version of gcc,
+if available, rather than the one suggested above.)
+
+2.  Replace Your Installed `tr' Program
+---------------------------------------
+
+The `tr' program which comes bundled with LynxOS 2.4.0 (as /bin/tr) has a
+somewhat obscure bug which just happens to be tickled by almost all GNU
+`autoconf' generated `configure' scripts (including the one that nowadays
+comes bundled with nvi).  Using the stock /bin/tr program on LynxOS when
+executing such `configure' scripts _will_ cause these scripts to malfunction
+in various ways.  It is therefore imperative that you replace your LynxOS
+/bin/tr program with a properly working version of the `tr' command _before_
+you even try to configure nvi.  (You can tell if your `tr' program has the
+bug by executng the command "echo ab- | tr ab- ABC".  If this yields the
+string "Ab-" then you have the bug.  If it yields "ABC" then you don't.)
+
+You can obtain sources for a working version of the `tr' command as part of
+the GNU `textutils' package (the latest version of which, at the time of this
+writing, is 1.19).  The GNU textutils package is available for downloading
+from prep.ai.mit.edu in the pub/gnu directory.  Look for the file named
+textutils-1.19.tar.gz, or an even more recent version of textutils, if one
+is available.  Fetch it, gunzip it, untar it, and follow the directions in
+the INSTALL file included in the tar file to build and install the entire
+textutils set of utility programs (which includes a working `tr' program).
+Then just make sure that the GNU version of `tr' appears on your $PATH
+_before_ the LynxOS version of `tr' (i.e. /bin/tr).  Be sure to do this
+step _before_ you start to configure nvi.
+
+When building the textutils set of programs, I suggest that you use the most
+up-to-date C compiler available on your system (as described above).  Also,
+note that it will be important for you to AVOID using the -O (optimize)
+compiler option when building the GNU textutils package, even if you are
+using the most up-to-date version of gcc which shipped with your system.
+If you try to use -O when building the textutils package on an x86 with
+the Cygnus 94q4 C compiler, you will end up with a `tr' program which will
+malfunction even worse than the one you are trying to replace!  If you use
+-O when building the textutils package on LynxOS on the PowerPC (using the
+Cygnus 95q2 C compiler) you will just get yourself a compiler crash.  So
+just don't use -O when building textutils.  You can avoid using -O by in-
+voking make in the textutils directory as follows:
+
+	make CFLAGS="-g"
+
+(Note:  At present, LynxOS version 2.4.0 is the latest officially released
+version of LynxOS, and all of the above information is accurate and correct
+for LynxOS 2.4.0 as of the time of this writing.  However it is rumored that
+the bug in the /bin/tr program will be fixed in future releases of LynxOS,
+so if you have a version of LynxOS later than 2.4.0, you may wish to check
+and see if your /bin/tr program even has the problematic bug before bothering
+with all of this.)
+
+
+3.  Fix Your System Include Files
+---------------------------------
+
+If you are building nvi on a PowerPC system, it is also important that you
+apply the patches given at the end of this file to your /usr/include files.
+(Note that you will have to be root in order to do this.)  Two of the patches
+included below fix a pair of serious bugs in the /usr/include/stdarg.h file
+on the PowerPC, and you really _do_ want to have these bugs fixed anyway,
+because without these fixes, anything that you compile which uses <stdarg.h>
+will very likely malfunction at run-time.
+
+Regardless of which LynxOS platform you are using (i.e. x86, PowerPC, Sparc,
+or m680x0) you may want to apply all of the system include files patches that
+are included below anyway.  Doing so will clean up a few minor problems with
+the relevant system include files (i.e. <stdarg.h>, <ioctl.h>, and <wait.h>)
+and this step will also prevent a few warnings which you would otherwise get
+during the build of nvi.
+
+You can apply all of the patches given at the end of this file simply by
+doing the following:
+
+	su root
+	cd /usr/include
+	/bin/patch < this-file
+
+Where `this-file' is the actual full pathname of the file you are now reading,
+wherever it may reside on your own system.
+
+(Note:  At present, LynxOS version 2.4.0 is the latest officially released
+version of LynxOS, and all of the above information is accurate and correct
+for LynxOS 2.4.0 as of the time of this writing.  However it is rumored that
+future releases of LynxOS may incorporate some or all of the important system
+include file fixes provided below.  Thus, if you are building nvi for some
+LynxOS version later than 2.4.0, you should probably go ahead and try to
+apply the patches given below to your system include files, and then just
+don't worry about it if these patches seem to have already been applied.)
+
+
+4.  A Brief Note about Sendmail
+-------------------------------
+
+I should mention also that LynxOS does not normally ship with the `sendmail'
+mail transfer program installed, either under /usr/lib/ or anywhere else for
+that matter.  This isn't really a big problem, but nvi normally wants and
+expects to have a sendmail program available so that it can send users notifi-
+cations (by mail) whenever a partially edited file is preserved by the editor
+in response to a sudden system crash, a sudden system shutdown, or an unexpect-
+ed serial-line hangup.  You can configure and build nvi without any sendmail
+program installed on your system, but you will get warnings about its absence
+when you are doing the initial configure step prior to actually building nvi.
+If you want to have a fully-functional nvi which does send out notification
+messages (by mail) whenever partially edited files are preserved during a
+serial line hangup or system crash, then you should get the BSD sendmail
+sources (via ftp from ftp.cs.berkeley.edu), build and install sendmail, and
+then reconfigure, rebuild, and reinstall nvi.
+
+Please contact me at the E-mail address below if you experience any problems in
+building or using nvi on LynxOS.  I make no guarrantees, but I may be willing
+to try to help.
+
+Ron Guilmette
+Roseville, California
+<rfg@monkeys.com>
+August 14, 1996
+
+
+cut here for LynxOS 2.4.0 system include files patches
+-----------------------------------------------------------------------------
+*** wait.h	Fri Apr 26 10:02:45 1996
+--- wait.h	Sun May 19 05:36:50 1996
+***************
+*** 94,104 ****
+  /* Function prototypes */
+  #ifndef __LYNXOS
+- #ifdef _POSIX_SOURCE
+  extern pid_t wait		_AP((int *));
+  extern pid_t waitpid	_AP((pid_t, int *, int));
+! #else
+! extern int wait		_AP((union wait *));
+! extern int waitpid	_AP((int, union wait *, int));
+! extern int wait3	_AP((union wait *, int, struct rusage *));
+  #endif
+  #endif /* !__LYNXOS */
+--- 94,101 ----
+  /* Function prototypes */
+  #ifndef __LYNXOS
+  extern pid_t wait		_AP((int *));
+  extern pid_t waitpid	_AP((pid_t, int *, int));
+! #ifndef _POSIX_SOURCE
+! extern int wait3	_AP((int *, int, struct rusage *));
+  #endif
+  #endif /* !__LYNXOS */
+*** ioctl.h	Fri Apr 26 16:50:51 1996
+--- ioctl.h	Sat May 18 17:55:16 1996
+***************
+*** 572,576 ****
+  
+  #ifndef __LYNXOS
+! extern int ioctl	_AP((int, int, char *));
+  #endif
+  
+--- 572,576 ----
+  
+  #ifndef __LYNXOS
+! extern int ioctl	_AP((int, int, ...));
+  #endif
+  
+*** stdarg.h	Fri Apr 26 16:51:02 1996
+--- stdarg.h	Sat May 18 19:34:13 1996
+***************
+*** 88,92 ****
+  	(((sizeof(TYPE) + sizeof(int) - 1) / sizeof(int)) * sizeof(int))
+  
+! #define va_start(AP, LASTARG)	(AP = ((char *) __builtin_next_arg ()))
+  
+  void va_end(va_list);		/* Defined in libgcc.a */
+--- 88,92 ----
+  	(((sizeof(TYPE) + sizeof(int) - 1) / sizeof(int)) * sizeof(int))
+  
+! #define va_start(AP, LASTARG)	(AP = ((char *) __builtin_next_arg (LASTARG)))
+  
+  void va_end(va_list);		/* Defined in libgcc.a */
+***************
+*** 162,166 ****
+  	(((sizeof(TYPE) + sizeof(int) - 1) / sizeof(int)) * sizeof(int))
+  
+! #define va_start(AP, LASTARG)	(AP = ((char *) __builtin_next_arg ()))
+  
+  void va_end(va_list);		/* Defined in libgcc.a */
+--- 162,166 ----
+  	(((sizeof(TYPE) + sizeof(int) - 1) / sizeof(int)) * sizeof(int))
+  
+! #define va_start(AP, LASTARG)	(AP = ((char *) __builtin_next_arg (LASTARG)))
+  
+  void va_end(va_list);		/* Defined in libgcc.a */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/build.unix/README.Solaris	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,10 @@
+There are some known problems with Solaris curses.
+Please give ncurses a try when you encounter a screen output problem.
+
+Apparently, the more recent Solaris compilers invoke the incremental linker,
+`ild', when the "-g" option is used and one or more "xxx.o" files are
+specified on the command line during the link phase.  Unfortunately, the
+executable produced is up to 3-4 times as big as an executable generated
+by the standard linker `ld'.
+You can bypass this by adding "-xildoff" to LDFLAGS or by
+setting CFLAGS (to something that does not contain "-g").
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/Makefile	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,84 @@
+#	$Id: Makefile,v 1.1.1.1 2008/05/16 18:03:03 aymeric Exp $ (Berkeley) $Date: 2008/05/16 18:03:03 $
+
+CAT=	dutch english french german ru_SU.KOI8-R spanish swedish
+FILES=	../cl/*.c ../common/*.c ../ex/*.c ../vi/*.c
+
+all: dump ${CAT}
+
+${CAT}: english.base
+	@echo "... $@";							\
+	rm -f $@;							\
+	sort -u $@.base |						\
+	awk '{								\
+		if ($$1 == 1) {						\
+			print "\nMESSAGE NUMBER 1 IS NOT LEGAL";	\
+			exit 1;						\
+		}							\
+		if (++nline > $$1) {					\
+			print "DUPLICATE MESSAGE NUMBER " $$1;		\
+			exit 1;						\
+		}							\
+		for (; nline < $$1; ++nline)				\
+			print "";					\
+		print $0;						\
+	}' |								\
+	sed -e '1s/^/VI_MESSAGE_CATALOG/'				\
+	    -e '/"/s/^[^"]*"//'						\
+	    -e '1!s/"$$/X/' > $@;					\
+	chmod 444 $@;							\
+	if grep DUPLICATE $@ > /dev/null; then				\
+		grep DUPLICATE $@;					\
+	fi;								\
+	if grep 'NOT LEGAL' $@ > /dev/null; then			\
+		grep 'NOT LEGAL' $@;					\
+	fi
+
+CHK=	dutch.check english.check french.check german.check \
+	ru_SU.KOI8-R.check spanish.check swedish.check
+check: ${CHK}
+${CHK}: ${CAT}
+	@echo "... $@";							\
+	f=`basename $@ .check`;						\
+	(echo "Unused message id's (this is okay):";			\
+	awk '{								\
+		while (++nline < $$1)					\
+			printf "%03d\n", nline;				\
+	}' < $$f.base;							\
+	echo =========================;					\
+	echo "MISSING ERROR MESSAGES (Please add!):";			\
+	awk '{print $$1}' < $$f.base | sort -u > __ck1;			\
+	awk '{print $$1}' < english.base | sort -u > __ck2;		\
+	comm -13 __ck1 __ck2;						\
+	echo =========================;					\
+	echo "Extra error messages (just delete them):";		\
+	comm -23 __ck1 __ck2;						\
+	echo =========================;					\
+	echo "MESSAGES WITH THE SAME MESSAGE ID's (FIX!):";		\
+	for j in							\
+	    `sed '/^$$/d' < $$f.base | sort -u |			\
+	    awk '{print $$1}' | uniq -d`; do				\
+		egrep $$j $$f.base;					\
+	done;								\
+	echo =========================;					\
+	echo "Duplicate messages, both id and message (this is okay):";	\
+	sed '/^$$/d' < $$f.base | sort | uniq -c |			\
+	awk '$$1 != 1 { print $$0 }' | sort -n;				\
+	echo =========================;					\
+	echo "Duplicate messages, just message (this is okay):";	\
+	sed '/^$$/d' < $$f | sort | uniq -c |				\
+	awk '$$1 != 1 { print $$0 }' | sort -n;				\
+	echo =========================) > $@
+
+english.base: dump ${FILES} #Makefile
+	./dump ${FILES} |\
+	sed -e '/|/!d' \
+	    -e 's/|/ "/' \
+	    -e 's/^"//' \
+	    -e 's/\\"/"/g' |\
+	sort -n > $@
+
+dump: dump.c
+	${CC} -O -o dump dump.c
+
+clean:
+	rm -f dump dump.o ${CAT} english.base *.check __ck1 __ck2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/README	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,166 @@
+#	$Id: README,v 1.1.1.1 2008/05/16 18:03:03 aymeric Exp $ (Berkeley) $Date: 2008/05/16 18:03:03 $
+
+Generally, all non-system error and informational messages in nvi are
+catalog messages, i.e. they can be tailored to a specific langauge.
+Command strings, usage strings, system errors and other "known text"
+are not.  It would certainly be possible to internationalize all the
+text strings in nvi, but it's unclear that it's the right thing to do.
+
+First, there's no portable way to do message catalogs.  The System V
+scheme is a reasonable choice, but none of the 4BSD derived systems
+support it.  So, catalogs are completely implemented within nvi, and
+don't require any library support.
+
+Message catalogs in nvi are fairly simple.  Every catalog message
+consists of two parts -- an initial number followed by a pipe (`|')
+character, followed by the English text for the message.  For example:
+
+	msgq(sp, M_ERR, "001|This is an error message");
+
+would be a typical message.
+
+When the msgq() routine is called, if the user has specified a message
+catalog and the format string (the third argument) has a leading number,
+then it is converted to a record number, and that record is retrieved
+from the message catalog and used as a replacement format string.  If
+the record can't be retrieved for any reason, the English text is displayed
+instead.
+
+Each message format string MUST map into the English format string, i.e.
+it can't display more or different arguments than the English one.
+
+For example:
+
+	msgq(sp, M_ERR, "002|Error: %d %x", arg1, arg2);
+
+is a format string that displays two arguments.  It is possible, however,
+to reorder the arguments or to not display all of them.  The convention
+nvi uses is the System V printf(3) convention, i.e. "%[0-9]*$" is the name
+of a specific, numbered argument.  For example:
+
+	msgq(sp, M_ERR, "002|Error: %2$d %1$x", arg1, arg2);
+
+displays the arguments in reverse order.
+
+If the system supports this convention in its library printf routines
+(as specified by the test #define NL_ARGMAX), nvi uses those routines.
+Otherwise, there is some serious magic going on in common/msg.c to make
+this all work.
+
+Arguments to the msgq function are required to contain ONLY printable
+characters.  No further translation is done by the msgq routine before
+displaying the message on the screen.  For example, in the msgq call:
+
+	msgq(sp, M_ERR, "003|File: %s", file_name);
+
+"file_name" must contain only printable characters.  The routine
+msg_print() returns a printable version of a string in allocated
+memory.  For example:
+
+	char *p;
+
+	p = msg_print(sp, file_name);
+	msgq(sp, M_ERR, M("003", "File: %s"), p);
+	FREE_SPACE(sp, p, 0);
+
+makes sure that "file_name" is printable before calling the msgq
+routine.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+The message catalogs themselves are maintained in two files.  The first
+is the "base file" which contains two fields, a record number and the
+message itself.  All base files are named using the convention
+"vi_<language>.base", e.g. the English one is "vi_english.base".  For
+example:
+
+	002 "Unable to create temporary file"
+	003 "Warning: %s is not a regular file"
+	004 "%s already locked, session is read-only"
+	005 "%s: remove"
+	006 "%s: close"
+	007 "%s: remove"
+	008 "%s: remove"
+	009 "Read-only file, not written; use ! to override"
+	010 "Read-only file, not written"
+
+are the first few lines of the current vi_english.base file.  Note that
+message #1 is missing -- the first message of each catalog is a special
+one, so that nvi can recognize message catalog files.  It's added by the
+Makefile script that creates the second version of the message catalog.
+
+The second file is the file used by nvi to access messages, and is a list
+of the messages, one per line:
+
+	VI_MESSAGE_CATALOG
+	Unable to create temporary fileX
+	Warning: %s is not a regular fileX
+	%s already locked, session is read-onlyX
+	%s: removeX
+	%s: closeX
+	%s: removeX
+	%s: removeX
+	Read-only file, not written; use ! to overrideX
+	Read-only file, not writtenX
+
+Note that all messages have had a trailing 'X' character appended.  This
+is to provide nvi a place to store a trailing nul for the message so that
+C library routines that expect one won't be disappointed.
+
+These files are named for their language, e.g. "vi_english".  The second
+files are automatically created from the first files.
+
+To create a new catalog for nvi:
+
+Copy the file vi_english.base to a file that you can modify , e.g.  "cp
+vi_english.base vi_german.base".  For each of the messages in the file,
+replace the message with the string that you want to use.  To find out
+what the arguments to a message are, I'm afraid you'll have to search
+the source code for the message number.  You can find them fairly quickly
+by doing:
+
+	cd ..; egrep '123\|' */*.[chys]
+
+I'm sorry that there's not an easier way, but I couldn't think of
+anything that wasn't a lot of work.
+
+If, for some reason, you don't have the file vi_english.base, or you
+have new sources for which you want to create a new base catalog, you
+can create it by running the command "make english" in the catalog
+directory.
+
+Once you've translated all of the strings, then add your catalog to the
+"CAT=" line of the Makefile, and run the command "make catalog".  This
+will create the second (and corresponding) file for each file named
+<language>.base.
+
+Don't worry about missing line numbers, i.e. base files that look like:
+
+	005	Message number 5.
+	007	Message number 7.
+
+This simply means that a message was deleted during the course of nvi's
+development.  It will be taken care of automatically when you create
+the second form of the file.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+If you add new messages to the nvi sources, you can check your work by
+doing "make english; make check".  The "make check" target lists unused
+message numbers, duplicate message numbers, and duplicate messages.
+Unused message numbers are only useful if you are condensing messages.
+Duplicate message numbers are a serious problem and have to be fixed.
+Duplicate messages are only interesting if a message appears often enough
+that it's worth creating a routine so that the string is only need in
+a single place.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+To select a catalog when running nvi, set the "msgcat" option.  If the
+value of this option ends with a '/', it is treated as the name of a
+directory that contains a message catalog "vi_XXXX", where XXXX is the
+value of the LANG environmental variable, if it's set, or the value of
+the LC_MESSAGES environmental variable if it's not.  If neither of those
+environmental variables are set, or if the option doesn't end in a '/',
+the option is treated as the full path name of the message catalog to use.
+
+If any messages are missing from the catalog, the backup text (English)
+is used instead.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/dump.c	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,88 @@
+/*-
+ * Copyright (c) 1992, 1993, 1994
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * %sccs.include.redist.c%
+ */
+
+#ifndef lint
+static char copyright[] =
+"%Z% Copyright (c) 1992, 1993, 1994\n\
+	The Regents of the University of California.  All rights reserved.\n";
+#endif /* not lint */
+
+#ifndef lint
+static char sccsid[] = "$Id: dump.c,v 1.1.1.1 2008/05/16 18:03:03 aymeric Exp $ (Berkeley) $Date: 2008/05/16 18:03:03 $";
+#endif /* not lint */
+
+#include <ctype.h>
+#include <stdio.h>
+
+static void
+parse(fp)
+	FILE *fp;
+{
+	int ch, s1, s2, s3;
+
+#define	TESTD(s) {							\
+	if ((s = getc(fp)) == EOF)					\
+		return;							\
+	if (!isdigit(s))						\
+		continue;						\
+}
+#define	TESTP {								\
+	if ((ch = getc(fp)) == EOF)					\
+		return;							\
+	if (ch != '|')							\
+		continue;						\
+}
+#define	MOVEC(t) {							\
+	do {								\
+		if ((ch = getc(fp)) == EOF)				\
+			return;						\
+	} while (ch != (t));						\
+}
+	for (;;) {
+		MOVEC('"');
+		TESTD(s1);
+		TESTD(s2);
+		TESTD(s3);
+		TESTP;
+		putchar('"');
+		putchar(s1);
+		putchar(s2);
+		putchar(s3);
+		putchar('|');
+		for (;;) {		/* dump to end quote. */
+			if ((ch = getc(fp)) == EOF)
+				return;
+			putchar(ch);
+			if (ch == '"')
+				break;
+			if (ch == '\\') {
+				if ((ch = getc(fp)) == EOF)
+					return;
+				putchar(ch);
+			}
+		}
+		putchar('\n');
+	}
+}
+
+int
+main(argc, argv)
+	int argc;
+	char *argv[];
+{
+	FILE *fp;
+
+	for (; *argv != NULL; ++argv) {
+		if ((fp = fopen(*argv, "r")) == NULL) {
+			perror(*argv);
+			exit (1);
+		}
+		parse(fp);
+		(void)fclose(fp);
+	}
+	exit (0);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/dutch	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,317 @@
+VI_MESSAGE_CATALOG
+regel te langX
+kan regel %lu niet verwijderenX
+kan niet toevoegen aan regel %luX
+kan niet invoegen vooraan regel %luX
+kan regel %lu niet opslaanX
+kan laatste regel niet lezenX
+Fout: kan regel %lu niet vindenX
+log bestandX
+Er vindt geen logging plaats, kan wijzigingen niet ongedaan makenX
+geen wijzigingen om ongedaan te makenX
+Er vindt geen logging plaats, kan wijzigingen niet ongedaan makenX
+Er vindt geen logging plaats, herhaling niet mogelijkX
+geen wijzigingen om te herhalenX
+%s/%d: schrijven naar log misluktX
+Vi's standaard invoer en uitvoer moeten aan een terminal gekoppeld zijnX
+Merk %s: niet gezetX
+Merk %s: de regel is verwijderdX
+Merk %s: de cursor positie bestaat niet meerX
+Fout: X
+nieuw bestandX
+naam veranderdX
+gewijzigdX
+ongewijzigdX
+NIET BEVEILIGDX
+niet schrijfbaarX
+regel %lu uit %lu [%ld%%]X
+leeg bestandX
+regel %luX
+Het bestand %s is geen message catalogX
+Niet in staat om de standaard %s optie in te stellenX
+Gebruik: %sX
+set: optie %s onbekend: 'set all' laat alle opties zienX
+set: [no]%s optie kan geen waarde hebbenX
+set: %s optie moet een waarde hebbenX
+set: %s optie: %sX
+set: %s optie: %s: getal is te grootX
+set: %s optie: %s is een ongeldige waardeX
+set: %s optie moet een waarde hebbenX
+Te weinig kolommen op het scherm, minder dan %dX
+Aantal kolommen te groot, meer dan %dX
+Te weinig regels op het scherm, minder dan %dX
+Aantal regels te groot, meer dan %dX
+De lisp optie is niet ondersteundX
+messages niet uitgeschakeld: %sX
+messages niet geactiveerd: %sX
+
+De paragraph optie moet karakter paren bevattenX
+De section optie moet karakter paren bevattenX
+
+
+
+De standaard buffer is leegX
+Buffer %s is leegX
+Bestanden met newlines in de naam kunnen niet hersteld wordenX
+Wijzigingen kunnen niet ongedaan gemaakt worden als deze sessie misluktX
+Bestand wordt gecopieerd voor herstel...X
+Herstel mechanisme werkt niet: %sX
+Wijzigingen kunnen niet ongedaan gemaakt worden als deze sessie misluktX
+Kon bestand niet veilig stellen: %sX
+Bestand wordt gecopieerd voor herstel...X
+Informatie met betrekking tot gebruiker nummer %u niet gevondenX
+Kan herstel bestand niet beveiligenX
+herstel buffer overgelopenX
+herstel bestandX
+%s: verminkt herstel bestandX
+%s: verminkt herstel bestandX
+U heeft geen bestand genaamd %s te herstellenX
+U kan eerdere versies van dit bestand herstellenX
+U kan nog meer bestanden herstellenX
+kan geen email versturen: %sX
+Bestand leeg; niets om te doorzoekenX
+Einde van het bestand bereikt zonder dat het patroon gevonden isX
+Geen vorig zoek patroonX
+Patroon niet gevondenX
+Begin van het bestand bereikt zonder dat het patroon gevonden isX
+Zoek-operatie omgeslagenX
+Bezig met zoeken...X
+Geen niet-printbaar karakter gevondenX
+Onbekend commandoX
+
+Commando niet beschikbaar in ex modeX
+Aantal mag niet nul zijnX
+%s: ongeldige regel aanduidingX
+Interne fout in syntax tabel (%s: %s)X
+Gebruik: %sX
+%s: tijdelijke buffer niet vrijgegevenX
+Vlag offset voor regel 1X
+Vlag offset voorbij bestands eindeX
+bestand/scherm veranderd tijdens uitvoeren van @ in een blokX
+bestand/scherm veranderd tijdens uitvoeren van globaal/v commandoX
+Ex commando mislukt: rest van commando(s) genegeerdX
+Ex commando mislukt: gemappede toetsen genegeerdX
+Het tweede adres is kleiner dan het eersteX
+Geen merk naam opgegevenX
+\\ niet gevolgd door / of ?X
+Referentie aan een regel nummer kleiner dan 0X
+Het %s commando is onbekendX
+Adres waarde te grootX
+Adres waarde te kleinX
+Ongeldige adres combinatieX
+Ongeldig adres: slechts %lu regels in het bestand aanwezigX
+Ongeldig adres: het bestand is leegX
+Het %s commando staat het adres 0 niet toeX
+Geen afkortingen om weer te gevenX
+Afkortingen moeten eindigen met een "woord" letterX
+Afkortingen mogen geen tabulaties of spaties bevattenX
+Afkortingen mogen geen woord/niet-woord karakters mengen, behalve aan het eindeX
+"%s" is geen afkortingX
+Vi commando mislukt: gemappede toetsen genegeerdX
+Dit is het laatste bestandX
+Dit is het eerste bestandX
+Dit is het eerste bestandX
+lijst met bestanden is leegX
+Geen voorgaand commando om "!" te vervangenX
+Geen bestandsnaam voor %%X
+Geen bestandsnaam voor #X
+Fout: execl: %sX
+I/O fout: %sX
+Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik ! om het te forcerenX
+Kan uw home directory niet vindenX
+Nieuwe huidige directory: %sX
+Geen cut buffers aanwezigX
+Het %s commando kan niet gebruikt worden in een globaal of v commandoX
+%s/%s: niet gelezen: noch U noch root is de eigenaarX
+%s/%s: niet gelezen: U bent niet de eigenaarX
+%s/%s: niet gelezen: kan gewijzigd worden door andere gebruikersX
+%s: niet gelezen: noch U noch root is de eigenaar"X
+%s: niet gelezen: U bent niet de eigenaarX
+%s: niet gelezen: kan gewijzigd worden door andere gebruikersX
+Geen volgende regel om samen te voegenX
+Geen input map entriesX
+Geen command map entriesX
+Het %s karakter kan niet ge-remapped wordenX
+"%s" is niet gemappedX
+Merk naam moet een enkel karakter zijnX
+%s bestaat al, niet weggeschreven; gebruik ! om het te forcerenX
+Nieuw .exrc bestand: %s. X
+doel regel ligt in het blokX
+Het open commando vereist dat de open optie actief isX
+Het open commando is nog niet ondersteundX
+Kan dit bestand niet veilig stellenX
+Bestand veilig gesteldX
+%s resulteert in te veel bestandsnamenX
+Alleen echte bestanden en named pipes kunnen gelezen wordenX
+%s: lees beveiliging niet beschikbaarX
+Bezig met lezen...X
+%s: %lu regels, %lu karaktersX
+Geen achtergrond schermen aanwezigX
+Het script commando is alleen beschikbaar in vi modeX
+Geen comando om uit te voerenX
+shiftwidth optie op 0 gezetX
+Count te grootX
+Count te kleinX
+Reguliere expressie opgegeven; r vlag heeft geen betekenisX
+De #, l en p vlaggen kunnen niet gecombineerd worden met de c vlag in vi modeX
+Geen match gevondenX
+Geen voorafgaande tag aanwezigX
+Minder dan %s elementen op de tags stapel; gebruik :display t[ags]X
+Geen bestand genaamd %s op de tags stapel; gebruik :display t[ags]X
+Kies Enter om door te gaan: X
+%s: tag niet gevondenX
+%s: verminkte tag in %sX
+%s: Het regel nummer van deze tag is voorbij het einde van het bestandX
+De tags stapel is leegX
+%s: zoek patroon niet gevondenX
+%d andere bestanden te wijzigenX
+Buffer %s is leegX
+Bevestig wijziging? [n]X
+OnderbrokenX
+Geen voorafgaande buffer om uit te voerenX
+Geen vorige reguliere expressieX
+Het %s commando vereist dat er een bestand geladen isX
+Gebruik: %sX
+Het visual commando vereist dat de open optie actief isX
+
+Leeg bestandX
+Geen voorafgaand F, f, T of t zoek commandoX
+%s niet gevondenX
+Geen voorafgaand bestand te bewerkenX
+Cursor niet op een getalX
+Getal wordt te grootX
+Getal wordt te kleinX
+Geen overeenkomstig karakter op deze regelX
+Overeenkomstig karakter niet gevondenX
+Geen karakters te vervangenX
+Geen ander scherm aanwezigX
+Karakters achter het zoek patroon, de regel offset, en/of het z commandoX
+Geen voorafgaand zoek patroonX
+Zoekopdracht na omslag teruggekeerd op originele positieX
+Afkorting overschrijdt expansie limiet: karakters genegeerdX
+Ongeldig karakter; quote to enterX
+Reeds aan het begin van de invoerX
+Niet meer karakters te verwijderenX
+Verplaatsing voorbij het einde van het bestandX
+Verplaatsing voorbij het einde van de regelX
+Cursor niet verplaatstX
+Reeds aan het begin van het bestandX
+Verplaatsing voorbij het begin van het bestandX
+Reeds in de eerste kolomX
+Buffers moeten voor het commando opgegeven wordenX
+Reeds bij het einde van het bestandX
+Reeds bij het einde van de regelX
+%s is geen vi commandoX
+Gebruik: %sX
+Geen karakters te verwijderenX
+Het Q commando vereist de ex terminal interfaceX
+Geen commando om te herhalenX
+Het bestand is leegX
+%s mag niet gebruikt worden als een verplaatsings commandoX
+Al in commando modeX
+Cursor niet in een woordX
+
+Windows optie waarde is te groot, maximum is %uX
+ToevoegenX
+VeranderenX
+CommandoX
+InvoegenX
+VervangenX
+Verplaatsing voorbij het eind van het schermX
+Verplaatsing voorbij het begin van het schermX
+Scherm moet meer dan %d regels hebben om het te kunnen splitsenX
+Er zijn geen achtergrond schermenX
+Er is geen achtergrond scherm waarin U bestand %s aan het bewerken bentX
+U kan uw enige scherm niet in de achtergrond zettenX
+Het scherm kan slechts verkleind worden tot %d regelsX
+Het scherm kan niet kleinerX
+Het scherm kan niet groterX
+
+Dit scherm kan niet gesuspend wordenX
+Onderbroken: gemappede toetsen genegeerdX
+vi: tijdelijke buffer niet vrijgegevenX
+Deze terminal heeft geen %s toetsX
+Er kan slechts een buffer opgegeven wordenX
+Getal groter dan %luX
+OnderbrokenX
+Aanmaken van tijdelijk bestand is misluktX
+Waarschuwing: %s is geen regulier bestandX
+%s is al geopend, bestand is in deze sessie niet schrijfbaarX
+%s: verwijdering misluktX
+%s: sluiting misluktX
+%s: verwijdering misluktX
+%s: verwijdering misluktX
+Bestand niet schrijfbaar, niet weggeschreven; gebruik ! om het te forcerenX
+Bestand niet schrijfbaar, niet weggeschrevenX
+%s bestaat al, niet weggeschreven; gebruik ! om het te forcerenX
+%s bestaat al, niet weggeschrevenX
+Gebruik ! om een incompleet bestand weg te schrijvenX
+Bestand incompleet, niet weggeschrevenX
+%s: bestand op disk nieuwer dan deze versie; gebruik ! om het te forcerenX
+%s: bestand op disk nieuwer dan deze versieX
+%s: schrijf beveiliging niet beschikbaarX
+Bezig met schrijven...X
+%s: WAARSCHUWING: BESTAND INCOMPLEETX
+Reeds op de eerste tag van deze groepX
+%s: nieuw bestand: %lu regels, %lu karaktersX
+%s: %lu regels, %lu karaktersX
+%s resulteert in te veel bestandsnamenX
+%s: geen normaal bestandX
+%s: U bent niet de eigenaarX
+%s: kan gewijzigd worden door andere gebruikersX
+Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik ! om het te forcerenX
+Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik :edit! om het te forcerenX
+Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik ! om het te forcerenX
+Tijdelijk bestand; exit negeert wijzigingenX
+Bestand niet schrijfbaar, wijzigingen niet automatisch weggeschrevenX
+log opnieuw gestartX
+Bevestig? [ynq]X
+Druk op een toets om door te gaan: X
+Druk op een toets om door te gaan [: voor meer ex commandos]: X
+Druk op een toets om door te gaan [q om te stoppen]: X
+Deze vorm van %s vereist de ex terminal interfaceX
+Entering ex input mode.X
+Commando mislukt, nog geen bestand geladen.X
+ doorgaan?X
+Onverwacht character eventX
+Onverwacht end-of-file eventX
+Geen match gevonden voor dit patroonX
+Onverwacht interrupt eventX
+Onverwacht quit eventX
+Onverwacht repaint eventX
+Reeds op de laatste tag van deze groepX
+Het %s command vereist de ex terminal interfaceX
+Deze vorm van %s is niet ondersteund als de secure edit optie actief isX
+Onverwacht string eventX
+Onverwacht timeout eventX
+Onverwacht write eventX
+
+Shell expansies zijn niet ondersteund als de secure edit optie actief isX
+Het %s commando is niet ondersteund als de secure edit optie actief isX
+set: %s mag niet uitgezet wordenX
+Scherm te klein.X
+toegevoegdX
+gewijzigdX
+verwijderdX
+samengevoegdX
+verplaatstX
+verschovenX
+gebufferdX
+regelX
+regelsX
+Vi was niet geladen met een Tcl interpreterX
+Bestand gewijzigd sinds het de laatste keer weg is geschreven.X
+Shell expansie misluktX
+Geen %s edit optie opgegevenX
+Vi was niet geladen met een Perl interpreterX
+Geen ex commando om uit te voerenX
+Kies <CR> om commando uit te voeren, :q om te stoppenX
+Gebruik "cscope help" voor uitlegX
+Nog geen cscope connectie aanwezigX
+%s: onbekend zoek type: gebruik een van %sX
+%d: onbekende cscope sessieX
+set: de %s optie mag nooit aangezet wordenX
+set: de %s optie mag nooit op 0 gezet wordenX
+%s: toegevoegd: %lu regels, %lu karaktersX
+Onverwacht resize eventX
+%d bestanden te wijzigenX
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/dutch.base	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,307 @@
+002 "regel te lang"
+003 "kan regel %lu niet verwijderen"
+004 "kan niet toevoegen aan regel %lu"
+005 "kan niet invoegen vooraan regel %lu"
+006 "kan regel %lu niet opslaan"
+007 "kan laatste regel niet lezen"
+008 "Fout: kan regel %lu niet vinden"
+009 "log bestand"
+010 "Er vindt geen logging plaats, kan wijzigingen niet ongedaan maken"
+011 "geen wijzigingen om ongedaan te maken"
+012 "Er vindt geen logging plaats, kan wijzigingen niet ongedaan maken"
+013 "Er vindt geen logging plaats, herhaling niet mogelijk"
+014 "geen wijzigingen om te herhalen"
+015 "%s/%d: schrijven naar log mislukt"
+016 "Vi's standaard invoer en uitvoer moeten aan een terminal gekoppeld zijn"
+017 "Merk %s: niet gezet"
+018 "Merk %s: de regel is verwijderd"
+019 "Merk %s: de cursor positie bestaat niet meer"
+020 "Fout: "
+021 "nieuw bestand"
+022 "naam veranderd"
+023 "gewijzigd"
+024 "ongewijzigd"
+025 "NIET BEVEILIGD"
+026 "niet schrijfbaar"
+027 "regel %lu uit %lu [%ld%%]"
+028 "leeg bestand"
+029 "regel %lu"
+030 "Het bestand %s is geen message catalog"
+031 "Niet in staat om de standaard %s optie in te stellen"
+032 "Gebruik: %s"
+033 "set: optie %s onbekend: 'set all' laat alle opties zien"
+034 "set: [no]%s optie kan geen waarde hebben"
+035 "set: %s optie moet een waarde hebben"
+036 "set: %s optie: %s"
+037 "set: %s optie: %s: getal is te groot"
+038 "set: %s optie: %s is een ongeldige waarde"
+039 "set: %s optie moet een waarde hebben"
+040 "Te weinig kolommen op het scherm, minder dan %d"
+041 "Aantal kolommen te groot, meer dan %d"
+042 "Te weinig regels op het scherm, minder dan %d"
+043 "Aantal regels te groot, meer dan %d"
+044 "De lisp optie is niet ondersteund"
+045 "messages niet uitgeschakeld: %s"
+046 "messages niet geactiveerd: %s"
+048 "De paragraph optie moet karakter paren bevatten"
+049 "De section optie moet karakter paren bevatten"
+053 "De standaard buffer is leeg"
+054 "Buffer %s is leeg"
+055 "Bestanden met newlines in de naam kunnen niet hersteld worden"
+056 "Wijzigingen kunnen niet ongedaan gemaakt worden als deze sessie mislukt"
+057 "Bestand wordt gecopieerd voor herstel..."
+058 "Herstel mechanisme werkt niet: %s"
+059 "Wijzigingen kunnen niet ongedaan gemaakt worden als deze sessie mislukt"
+060 "Kon bestand niet veilig stellen: %s"
+061 "Bestand wordt gecopieerd voor herstel..."
+062 "Informatie met betrekking tot gebruiker nummer %u niet gevonden"
+063 "Kan herstel bestand niet beveiligen"
+064 "herstel buffer overgelopen"
+065 "herstel bestand"
+066 "%s: verminkt herstel bestand"
+067 "%s: verminkt herstel bestand"
+068 "U heeft geen bestand genaamd %s te herstellen"
+069 "U kan eerdere versies van dit bestand herstellen"
+070 "U kan nog meer bestanden herstellen"
+071 "kan geen email versturen: %s"
+072 "Bestand leeg; niets om te doorzoeken"
+073 "Einde van het bestand bereikt zonder dat het patroon gevonden is"
+074 "Geen vorig zoek patroon"
+075 "Patroon niet gevonden"
+076 "Begin van het bestand bereikt zonder dat het patroon gevonden is"
+077 "Zoek-operatie omgeslagen"
+078 "Bezig met zoeken..."
+079 "Geen niet-printbaar karakter gevonden"
+080 "Onbekend commando"
+082 "Commando niet beschikbaar in ex mode"
+083 "Aantal mag niet nul zijn"
+084 "%s: ongeldige regel aanduiding"
+085 "Interne fout in syntax tabel (%s: %s)"
+086 "Gebruik: %s"
+087 "%s: tijdelijke buffer niet vrijgegeven"
+088 "Vlag offset voor regel 1"
+089 "Vlag offset voorbij bestands einde"
+090 "bestand/scherm veranderd tijdens uitvoeren van @ in een blok"
+091 "bestand/scherm veranderd tijdens uitvoeren van globaal/v commando"
+092 "Ex commando mislukt: rest van commando(s) genegeerd"
+093 "Ex commando mislukt: gemappede toetsen genegeerd"
+094 "Het tweede adres is kleiner dan het eerste"
+095 "Geen merk naam opgegeven"
+096 "\\ niet gevolgd door / of ?"
+097 "Referentie aan een regel nummer kleiner dan 0"
+098 "Het %s commando is onbekend"
+099 "Adres waarde te groot"
+100 "Adres waarde te klein"
+101 "Ongeldige adres combinatie"
+102 "Ongeldig adres: slechts %lu regels in het bestand aanwezig"
+103 "Ongeldig adres: het bestand is leeg"
+104 "Het %s commando staat het adres 0 niet toe"
+105 "Geen afkortingen om weer te geven"
+106 "Afkortingen moeten eindigen met een "woord" letter"
+107 "Afkortingen mogen geen tabulaties of spaties bevatten"
+108 "Afkortingen mogen geen woord/niet-woord karakters mengen, behalve aan het einde"
+109 ""%s" is geen afkorting"
+110 "Vi commando mislukt: gemappede toetsen genegeerd"
+111 "Dit is het laatste bestand"
+112 "Dit is het eerste bestand"
+113 "Dit is het eerste bestand"
+114 "lijst met bestanden is leeg"
+115 "Geen voorgaand commando om "!" te vervangen"
+116 "Geen bestandsnaam voor %%"
+117 "Geen bestandsnaam voor #"
+118 "Fout: execl: %s"
+119 "I/O fout: %s"
+120 "Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik ! om het te forceren"
+121 "Kan uw home directory niet vinden"
+122 "Nieuwe huidige directory: %s"
+123 "Geen cut buffers aanwezig"
+124 "Het %s commando kan niet gebruikt worden in een globaal of v commando"
+125 "%s/%s: niet gelezen: noch U noch root is de eigenaar"
+126 "%s/%s: niet gelezen: U bent niet de eigenaar"
+127 "%s/%s: niet gelezen: kan gewijzigd worden door andere gebruikers"
+128 "%s: niet gelezen: noch U noch root is de eigenaar""
+129 "%s: niet gelezen: U bent niet de eigenaar"
+130 "%s: niet gelezen: kan gewijzigd worden door andere gebruikers"
+131 "Geen volgende regel om samen te voegen"
+132 "Geen input map entries"
+133 "Geen command map entries"
+134 "Het %s karakter kan niet ge-remapped worden"
+135 ""%s" is niet gemapped"
+136 "Merk naam moet een enkel karakter zijn"
+137 "%s bestaat al, niet weggeschreven; gebruik ! om het te forceren"
+138 "Nieuw .exrc bestand: %s. "
+139 "doel regel ligt in het blok"
+140 "Het open commando vereist dat de open optie actief is"
+141 "Het open commando is nog niet ondersteund"
+142 "Kan dit bestand niet veilig stellen"
+143 "Bestand veilig gesteld"
+144 "%s resulteert in te veel bestandsnamen"
+145 "Alleen echte bestanden en named pipes kunnen gelezen worden"
+146 "%s: lees beveiliging niet beschikbaar"
+147 "Bezig met lezen..."
+148 "%s: %lu regels, %lu karakters"
+149 "Geen achtergrond schermen aanwezig"
+150 "Het script commando is alleen beschikbaar in vi mode"
+151 "Geen comando om uit te voeren"
+152 "shiftwidth optie op 0 gezet"
+153 "Count te groot"
+154 "Count te klein"
+155 "Reguliere expressie opgegeven; r vlag heeft geen betekenis"
+156 "De #, l en p vlaggen kunnen niet gecombineerd worden met de c vlag in vi mode"
+157 "Geen match gevonden"
+158 "Geen voorafgaande tag aanwezig"
+159 "Minder dan %s elementen op de tags stapel; gebruik :display t[ags]"
+160 "Geen bestand genaamd %s op de tags stapel; gebruik :display t[ags]"
+161 "Kies Enter om door te gaan: "
+162 "%s: tag niet gevonden"
+163 "%s: verminkte tag in %s"
+164 "%s: Het regel nummer van deze tag is voorbij het einde van het bestand"
+165 "De tags stapel is leeg"
+166 "%s: zoek patroon niet gevonden"
+167 "%d andere bestanden te wijzigen"
+168 "Buffer %s is leeg"
+169 "Bevestig wijziging? [n]"
+170 "Onderbroken"
+171 "Geen voorafgaande buffer om uit te voeren"
+172 "Geen vorige reguliere expressie"
+173 "Het %s commando vereist dat er een bestand geladen is"
+174 "Gebruik: %s"
+175 "Het visual commando vereist dat de open optie actief is"
+177 "Leeg bestand"
+178 "Geen voorafgaand F, f, T of t zoek commando"
+179 "%s niet gevonden"
+180 "Geen voorafgaand bestand te bewerken"
+181 "Cursor niet op een getal"
+182 "Getal wordt te groot"
+183 "Getal wordt te klein"
+184 "Geen overeenkomstig karakter op deze regel"
+185 "Overeenkomstig karakter niet gevonden"
+186 "Geen karakters te vervangen"
+187 "Geen ander scherm aanwezig"
+188 "Karakters achter het zoek patroon, de regel offset, en/of het z commando"
+189 "Geen voorafgaand zoek patroon"
+190 "Zoekopdracht na omslag teruggekeerd op originele positie"
+191 "Afkorting overschrijdt expansie limiet: karakters genegeerd"
+192 "Ongeldig karakter; quote to enter"
+193 "Reeds aan het begin van de invoer"
+194 "Niet meer karakters te verwijderen"
+195 "Verplaatsing voorbij het einde van het bestand"
+196 "Verplaatsing voorbij het einde van de regel"
+197 "Cursor niet verplaatst"
+198 "Reeds aan het begin van het bestand"
+199 "Verplaatsing voorbij het begin van het bestand"
+200 "Reeds in de eerste kolom"
+201 "Buffers moeten voor het commando opgegeven worden"
+202 "Reeds bij het einde van het bestand"
+203 "Reeds bij het einde van de regel"
+204 "%s is geen vi commando"
+205 "Gebruik: %s"
+206 "Geen karakters te verwijderen"
+207 "Het Q commando vereist de ex terminal interface"
+208 "Geen commando om te herhalen"
+209 "Het bestand is leeg"
+210 "%s mag niet gebruikt worden als een verplaatsings commando"
+211 "Al in commando mode"
+212 "Cursor niet in een woord"
+214 "Windows optie waarde is te groot, maximum is %u"
+215 "Toevoegen"
+216 "Veranderen"
+217 "Commando"
+218 "Invoegen"
+219 "Vervangen"
+220 "Verplaatsing voorbij het eind van het scherm"
+221 "Verplaatsing voorbij het begin van het scherm"
+222 "Scherm moet meer dan %d regels hebben om het te kunnen splitsen"
+223 "Er zijn geen achtergrond schermen"
+224 "Er is geen achtergrond scherm waarin U bestand %s aan het bewerken bent"
+225 "U kan uw enige scherm niet in de achtergrond zetten"
+226 "Het scherm kan slechts verkleind worden tot %d regels"
+227 "Het scherm kan niet kleiner"
+228 "Het scherm kan niet groter"
+230 "Dit scherm kan niet gesuspend worden"
+231 "Onderbroken: gemappede toetsen genegeerd"
+232 "vi: tijdelijke buffer niet vrijgegeven"
+233 "Deze terminal heeft geen %s toets"
+234 "Er kan slechts een buffer opgegeven worden"
+235 "Getal groter dan %lu"
+236 "Onderbroken"
+237 "Aanmaken van tijdelijk bestand is mislukt"
+238 "Waarschuwing: %s is geen regulier bestand"
+239 "%s is al geopend, bestand is in deze sessie niet schrijfbaar"
+240 "%s: verwijdering mislukt"
+241 "%s: sluiting mislukt"
+242 "%s: verwijdering mislukt"
+243 "%s: verwijdering mislukt"
+244 "Bestand niet schrijfbaar, niet weggeschreven; gebruik ! om het te forceren"
+245 "Bestand niet schrijfbaar, niet weggeschreven"
+246 "%s bestaat al, niet weggeschreven; gebruik ! om het te forceren"
+247 "%s bestaat al, niet weggeschreven"
+248 "Gebruik ! om een incompleet bestand weg te schrijven"
+249 "Bestand incompleet, niet weggeschreven"
+250 "%s: bestand op disk nieuwer dan deze versie; gebruik ! om het te forceren"
+251 "%s: bestand op disk nieuwer dan deze versie"
+252 "%s: schrijf beveiliging niet beschikbaar"
+253 "Bezig met schrijven..."
+254 "%s: WAARSCHUWING: BESTAND INCOMPLEET"
+255 "Reeds op de eerste tag van deze groep"
+256 "%s: nieuw bestand: %lu regels, %lu karakters"
+257 "%s: %lu regels, %lu karakters"
+258 "%s resulteert in te veel bestandsnamen"
+259 "%s: geen normaal bestand"
+260 "%s: U bent niet de eigenaar"
+261 "%s: kan gewijzigd worden door andere gebruikers"
+262 "Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik ! om het te forceren"
+263 "Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik :edit! om het te forceren"
+264 "Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik ! om het te forceren"
+265 "Tijdelijk bestand; exit negeert wijzigingen"
+266 "Bestand niet schrijfbaar, wijzigingen niet automatisch weggeschreven"
+267 "log opnieuw gestart"
+268 "Bevestig? [ynq]"
+269 "Druk op een toets om door te gaan: "
+270 "Druk op een toets om door te gaan [: voor meer ex commandos]: "
+271 "Druk op een toets om door te gaan [q om te stoppen]: "
+272 "Deze vorm van %s vereist de ex terminal interface"
+273 "Entering ex input mode."
+274 "Commando mislukt, nog geen bestand geladen."
+275 " doorgaan?"
+276 "Onverwacht character event"
+277 "Onverwacht end-of-file event"
+278 "Geen match gevonden voor dit patroon"
+279 "Onverwacht interrupt event"
+280 "Onverwacht quit event"
+281 "Onverwacht repaint event"
+282 "Reeds op de laatste tag van deze groep"
+283 "Het %s command vereist de ex terminal interface"
+284 "Deze vorm van %s is niet ondersteund als de secure edit optie actief is"
+285 "Onverwacht string event"
+286 "Onverwacht timeout event"
+287 "Onverwacht write event"
+289 "Shell expansies zijn niet ondersteund als de secure edit optie actief is"
+290 "Het %s commando is niet ondersteund als de secure edit optie actief is"
+291 "set: %s mag niet uitgezet worden"
+292 "Scherm te klein."
+293 "toegevoegd"
+294 "gewijzigd"
+295 "verwijderd"
+296 "samengevoegd"
+297 "verplaatst"
+298 "verschoven"
+299 "gebufferd"
+300 "regel"
+301 "regels"
+302 "Vi was niet geladen met een Tcl interpreter"
+303 "Bestand gewijzigd sinds het de laatste keer weg is geschreven."
+304 "Shell expansie mislukt"
+305 "Geen %s edit optie opgegeven"
+306 "Vi was niet geladen met een Perl interpreter"
+307 "Geen ex commando om uit te voeren"
+308 "Kies <CR> om commando uit te voeren, :q om te stoppen"
+309 "Gebruik "cscope help" voor uitleg"
+310 "Nog geen cscope connectie aanwezig"
+311 "%s: onbekend zoek type: gebruik een van %s"
+312 "%d: onbekende cscope sessie"
+313 "set: de %s optie mag nooit aangezet worden"
+314 "set: de %s optie mag nooit op 0 gezet worden"
+315 "%s: toegevoegd: %lu regels, %lu karakters"
+316 "Onverwacht resize event"
+317 "%d bestanden te wijzigen"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/dutch.check	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,43 @@
+Unused message id's (this is okay):
+001
+047
+050
+051
+052
+081
+176
+213
+229
+288
+=========================
+MISSING ERROR MESSAGES (Please add!):
+288
+318
+319
+320
+=========================
+Extra error messages (just delete them):
+280
+287
+=========================
+MESSAGES WITH THE SAME MESSAGE ID's (FIX!):
+=========================
+Duplicate messages, both id and message (this is okay):
+=========================
+Duplicate messages, just message (this is okay):
+   2 %s bestaat al, niet weggeschreven; gebruik ! om het te forcerenX
+   2 %s resulteert in te veel bestandsnamenX
+   2 %s: %lu regels, %lu karaktersX
+   2 %s: verminkt herstel bestandX
+   2 Bestand wordt gecopieerd voor herstel...X
+   2 Buffer %s is leegX
+   2 Dit is het eerste bestandX
+   2 Er vindt geen logging plaats, kan wijzigingen niet ongedaan makenX
+   2 OnderbrokenX
+   2 Wijzigingen kunnen niet ongedaan gemaakt worden als deze sessie misluktX
+   2 gewijzigdX
+   2 set: %s optie moet een waarde hebbenX
+   3 %s: verwijdering misluktX
+   3 Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik ! om het te forcerenX
+   4 Gebruik: %sX
+=========================
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/dutch.owner	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,1 @@
+J.G. Vons <Gert-Jan.Vons@ocegr.fr>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/english	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,320 @@
+VI_MESSAGE_CATALOG
+Line length overflowX
+unable to delete line %luX
+unable to append to line %luX
+unable to insert at line %luX
+unable to store line %luX
+unable to get last lineX
+Error: unable to retrieve line %luX
+Log fileX
+Logging not being performed, undo not possibleX
+No changes to undoX
+Logging not being performed, undo not possibleX
+Logging not being performed, roll-forward not possibleX
+No changes to re-doX
+%s/%d: log put errorX
+Vi's standard input and output must be a terminalX
+Mark %s: not setX
+Mark %s: the line was deletedX
+Mark %s: cursor position no longer existsX
+Error: X
+new fileX
+name changedX
+modifiedX
+unmodifiedX
+UNLOCKEDX
+readonlyX
+line %lu of %lu [%ld%%]X
+empty fileX
+line %luX
+The file %s is not a message catalogX
+Unable to set default %s optionX
+Usage: %sX
+set: no %s option: 'set all' gives all option valuesX
+set: [no]%s option doesn't take a valueX
+set: %s option isn't a booleanX
+set: %s option: %sX
+set: %s option: %s: value overflowX
+set: %s option: %s is an illegal numberX
+set: %s option isn't a booleanX
+Screen columns too small, less than %dX
+Screen columns too large, greater than %dX
+Screen lines too small, less than %dX
+Screen lines too large, greater than %dX
+The lisp option is not implementedX
+messages not turned off: %sX
+messages not turned on: %sX
+
+The paragraph option must be in two character groupsX
+The section option must be in two character groupsX
+
+
+
+The default buffer is emptyX
+Buffer %s is emptyX
+Files with newlines in the name are unrecoverableX
+Modifications not recoverable if the session failsX
+Copying file for recovery...X
+Preservation failed: %sX
+Modifications not recoverable if the session failsX
+File backup failed: %sX
+Copying file for recovery...X
+Information on user id %u not foundX
+Unable to lock recovery fileX
+Recovery file buffer overrunX
+Recovery fileX
+%s: malformed recovery fileX
+%s: malformed recovery fileX
+No files named %s, readable by you, to recoverX
+There are older versions of this file for you to recoverX
+There are other files for you to recoverX
+not sending email: %sX
+File empty; nothing to searchX
+Reached end-of-file without finding the patternX
+No previous search patternX
+Pattern not foundX
+Reached top-of-file without finding the patternX
+Search wrappedX
+Searching...X
+No non-printable character foundX
+Unknown command nameX
+
+%s: command not available in ex modeX
+Count may not be zeroX
+%s: bad line specificationX
+Internal syntax table error (%s: %s)X
+Usage: %sX
+%s: temporary buffer not releasedX
+Flag offset to before line 1X
+Flag offset past end-of-fileX
+@ with range running when the file/screen changedX
+Global/v command running when the file/screen changedX
+Ex command failed: pending commands discardedX
+Ex command failed: mapped keys discardedX
+The second address is smaller than the firstX
+No mark name suppliedX
+\\ not followed by / or ?X
+Reference to a line number less than 0X
+The %s command is unknownX
+Address value overflowX
+Address value underflowX
+Illegal address combinationX
+Illegal address: only %lu lines in the fileX
+Illegal address: the file is emptyX
+The %s command doesn't permit an address of 0X
+No abbreviations to displayX
+Abbreviations must end with a "word" characterX
+Abbreviations may not contain tabs or spacesX
+Abbreviations may not mix word/non-word characters, except at the endX
+"%s" is not an abbreviationX
+Vi command failed: mapped keys discardedX
+No more files to editX
+No previous files to editX
+No previous files to rewindX
+No file list to displayX
+No previous command to replace "!"X
+No filename to substitute for %%X
+No filename to substitute for #X
+Error: execl: %sX
+I/O error: %sX
+File modified since last complete write; write or use ! to overrideX
+Unable to find home directory locationX
+New current directory: %sX
+No cut buffers to displayX
+The %s command can't be used as part of a global or v commandX
+%s/%s: not sourced: not owned by you or rootX
+%s/%s: not sourced: not owned by youX
+%s/%s: not sourced: writeable by a user other than the ownerX
+%s: not sourced: not owned by you or rootX
+%s: not sourced: not owned by youX
+%s: not sourced: writeable by a user other than the ownerX
+No following lines to joinX
+No input map entriesX
+No command map entriesX
+The %s character may not be remappedX
+"%s" isn't currently mappedX
+Mark names must be a single characterX
+%s exists, not written; use ! to overrideX
+New exrc file: %sX
+Destination line is inside move rangeX
+The open command requires that the open option be setX
+The open command is not yet implementedX
+Preservation of this file not possibleX
+File preservedX
+%s: expanded into too many file namesX
+Only regular files and named pipes may be readX
+%s: read lock was unavailableX
+Reading...X
+%s: %lu lines, %lu charactersX
+No background screens to displayX
+The script command is only available in vi modeX
+No command to executeX
+shiftwidth option set to 0X
+Count overflowX
+Count underflowX
+Regular expression specified; r flag meaninglessX
+The #, l and p flags may not be combined with the c flag in vi modeX
+No match foundX
+No previous tag enteredX
+Less than %s entries on the tags stack; use :display t[ags]X
+No file %s on the tags stack to return to; use :display t[ags]X
+Press Enter to continue: X
+%s: tag not foundX
+%s: corrupted tag in %sX
+%s: the tag's line number is past the end of the fileX
+The tags stack is emptyX
+%s: search pattern not foundX
+%d more files to editX
+Buffer %s is emptyX
+Confirm change? [n]X
+InterruptedX
+No previous buffer to executeX
+No previous regular expressionX
+The %s command requires that a file have already been read inX
+Usage: %sX
+The visual command requires that the open option be setX
+
+Empty fileX
+No previous F, f, T or t searchX
+%s not foundX
+No previous file to editX
+Cursor not in a numberX
+Resulting number too largeX
+Resulting number too smallX
+No match character on this lineX
+Matching character not foundX
+No characters to replaceX
+No other screen to switch toX
+Characters after search string, line offset and/or z commandX
+No previous search patternX
+Search wrapped to original positionX
+Abbreviation exceeded expansion limit: characters discardedX
+Illegal character; quote to enterX
+Already at the beginning of the insertX
+No more characters to eraseX
+Movement past the end-of-fileX
+Movement past the end-of-lineX
+No cursor movement madeX
+Already at the beginning of the fileX
+Movement past the beginning of the fileX
+Already in the first columnX
+Buffers should be specified before the commandX
+Already at end-of-fileX
+Already at end-of-lineX
+%s isn't a vi commandX
+Usage: %sX
+No characters to deleteX
+The Q command requires the ex terminal interfaceX
+No command to repeatX
+The file is emptyX
+%s may not be used as a motion commandX
+Already in command modeX
+Cursor not in a wordX
+
+Windows option value is too large, max is %uX
+AppendX
+ChangeX
+CommandX
+InsertX
+ReplaceX
+Movement past the end-of-screenX
+Movement past the beginning-of-screenX
+Screen must be larger than %d lines to splitX
+There are no background screensX
+There's no background screen editing a file named %sX
+You may not background your only displayed screenX
+The screen can only shrink to %d rowsX
+The screen cannot shrinkX
+The screen cannot growX
+
+This screen may not be suspendedX
+Interrupted: mapped keys discardedX
+vi: temporary buffer not releasedX
+This terminal has no %s keyX
+Only one buffer may be specifiedX
+Number larger than %luX
+InterruptedX
+Unable to create temporary fileX
+Warning: %s is not a regular fileX
+%s already locked, session is read-onlyX
+%s: removeX
+%s: closeX
+%s: removeX
+%s: removeX
+Read-only file, not written; use ! to overrideX
+Read-only file, not writtenX
+%s exists, not written; use ! to overrideX
+%s exists, not writtenX
+Partial file, not written; use ! to overrideX
+Partial file, not writtenX
+%s: file modified more recently than this copy; use ! to overrideX
+%s: file modified more recently than this copyX
+%s: write lock was unavailableX
+Writing...X
+%s: WARNING: FILE TRUNCATEDX
+Already at the first tag of this groupX
+%s: new file: %lu lines, %lu charactersX
+%s: %lu lines, %lu charactersX
+%s expanded into too many file namesX
+%s: not a regular fileX
+%s: not owned by youX
+%s: accessible by a user other than the ownerX
+File modified since last complete write; write or use ! to overrideX
+File modified since last complete write; write or use :edit! to overrideX
+File modified since last complete write; write or use ! to overrideX
+File is a temporary; exit will discard modificationsX
+File readonly, modifications not auto-writtenX
+Log restartedX
+confirm? [ynq]X
+Press any key to continue: X
+Press any key to continue [: to enter more ex commands]: X
+Press any key to continue [q to quit]: X
+That form of %s requires the ex terminal interfaceX
+Entering ex input mode.X
+Command failed, no file read in yet.X
+ cont?X
+Unexpected character eventX
+Unexpected end-of-file eventX
+No matches for queryX
+Unexpected interrupt eventX
+
+Unexpected repaint eventX
+Already at the last tag of this groupX
+The %s command requires the ex terminal interfaceX
+That form of %s is not supported when the secure edit option is setX
+Unexpected string eventX
+Unexpected timeout eventX
+
+Screen must be larger than %d columns to splitX
+Shell expansions not supported when the secure edit option is setX
+The %s command is not supported when the secure edit option is setX
+set: the %s option may not be turned offX
+Display too small.X
+addedX
+changedX
+deletedX
+joinedX
+movedX
+shiftedX
+yankedX
+lineX
+linesX
+Vi was not loaded with a Tcl interpreterX
+File modified since last write.X
+Shell expansion failedX
+No %s edit option specifiedX
+Vi was not loaded with a Perl interpreterX
+No ex command to executeX
+Enter <CR> to execute a command, :q to exitX
+Use "cscope help" for helpX
+No cscope connections runningX
+%s: unknown search type: use one of %sX
+%d: no such cscope sessionX
+set: the %s option may never be turned onX
+set: the %s option may never be set to 0X
+%s: appended: %lu lines, %lu charactersX
+Unexpected resize eventX
+%d files to editX
+Unexpected command or inputX
+%d screens backgrounded; use :display to list themX
+Unknown cursor position.X
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/english.base	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,315 @@
+002 "Line length overflow"
+003 "unable to delete line %lu"
+004 "unable to append to line %lu"
+005 "unable to insert at line %lu"
+006 "unable to store line %lu"
+007 "unable to get last line"
+008 "Error: unable to retrieve line %lu"
+009 "Log file"
+010 "Logging not being performed, undo not possible"
+011 "No changes to undo"
+012 "Logging not being performed, undo not possible"
+013 "Logging not being performed, roll-forward not possible"
+014 "No changes to re-do"
+015 "%s/%d: log put error"
+016 "Vi's standard input and output must be a terminal"
+017 "Mark %s: not set"
+018 "Mark %s: the line was deleted"
+019 "Mark %s: cursor position no longer exists"
+020 "Error: "
+021 "new file"
+022 "name changed"
+023 "modified"
+024 "unmodified"
+025 "UNLOCKED"
+026 "readonly"
+027 "line %lu of %lu [%ld%%]"
+028 "empty file"
+029 "line %lu"
+030 "The file %s is not a message catalog"
+031 "Unable to set default %s option"
+032 "Usage: %s"
+033 "set: no %s option: 'set all' gives all option values"
+034 "set: [no]%s option doesn't take a value"
+035 "set: %s option isn't a boolean"
+036 "set: %s option: %s"
+037 "set: %s option: %s: value overflow"
+038 "set: %s option: %s is an illegal number"
+039 "set: %s option isn't a boolean"
+040 "Screen columns too small, less than %d"
+041 "Screen columns too large, greater than %d"
+042 "Screen lines too small, less than %d"
+043 "Screen lines too large, greater than %d"
+044 "The lisp option is not implemented"
+045 "messages not turned off: %s"
+046 "messages not turned on: %s"
+048 "The paragraph option must be in two character groups"
+049 "The section option must be in two character groups"
+053 "The default buffer is empty"
+054 "Buffer %s is empty"
+055 "Files with newlines in the name are unrecoverable"
+056 "Modifications not recoverable if the session fails"
+057 "Copying file for recovery..."
+058 "Preservation failed: %s"
+059 "Modifications not recoverable if the session fails"
+060 "File backup failed: %s"
+061 "Copying file for recovery..."
+062 "Information on user id %u not found"
+063 "Unable to lock recovery file"
+064 "Recovery file buffer overrun"
+065 "Recovery file"
+066 "%s: malformed recovery file"
+067 "%s: malformed recovery file"
+068 "No files named %s, readable by you, to recover"
+069 "There are older versions of this file for you to recover"
+070 "There are other files for you to recover"
+071 "not sending email: %s"
+072 "File empty; nothing to search"
+073 "Reached end-of-file without finding the pattern"
+074 "No previous search pattern"
+075 "Pattern not found"
+076 "Reached top-of-file without finding the pattern"
+077 "Search wrapped"
+078 "Searching..."
+079 "No non-printable character found"
+080 "Unknown command name"
+082 "%s: command not available in ex mode"
+083 "Count may not be zero"
+084 "%s: bad line specification"
+085 "Internal syntax table error (%s: %s)"
+086 "Usage: %s"
+087 "%s: temporary buffer not released"
+088 "Flag offset to before line 1"
+089 "Flag offset past end-of-file"
+090 "@ with range running when the file/screen changed"
+091 "Global/v command running when the file/screen changed"
+092 "Ex command failed: pending commands discarded"
+093 "Ex command failed: mapped keys discarded"
+094 "The second address is smaller than the first"
+095 "No mark name supplied"
+096 "\\ not followed by / or ?"
+097 "Reference to a line number less than 0"
+098 "The %s command is unknown"
+099 "Address value overflow"
+100 "Address value underflow"
+101 "Illegal address combination"
+102 "Illegal address: only %lu lines in the file"
+103 "Illegal address: the file is empty"
+104 "The %s command doesn't permit an address of 0"
+105 "No abbreviations to display"
+106 "Abbreviations must end with a "word" character"
+107 "Abbreviations may not contain tabs or spaces"
+108 "Abbreviations may not mix word/non-word characters, except at the end"
+109 ""%s" is not an abbreviation"
+110 "Vi command failed: mapped keys discarded"
+111 "No more files to edit"
+112 "No previous files to edit"
+113 "No previous files to rewind"
+114 "No file list to display"
+115 "No previous command to replace "!""
+116 "No filename to substitute for %%"
+117 "No filename to substitute for #"
+118 "Error: execl: %s"
+119 "I/O error: %s"
+120 "File modified since last complete write; write or use ! to override"
+121 "Unable to find home directory location"
+122 "New current directory: %s"
+123 "No cut buffers to display"
+124 "The %s command can't be used as part of a global or v command"
+125 "%s/%s: not sourced: not owned by you or root"
+126 "%s/%s: not sourced: not owned by you"
+127 "%s/%s: not sourced: writeable by a user other than the owner"
+128 "%s: not sourced: not owned by you or root"
+129 "%s: not sourced: not owned by you"
+130 "%s: not sourced: writeable by a user other than the owner"
+131 "No following lines to join"
+132 "No input map entries"
+133 "No command map entries"
+134 "The %s character may not be remapped"
+135 ""%s" isn't currently mapped"
+136 "Mark names must be a single character"
+137 "%s exists, not written; use ! to override"
+138 "New exrc file: %s"
+139 "Destination line is inside move range"
+140 "The open command requires that the open option be set"
+141 "The open command is not yet implemented"
+142 "Preservation of this file not possible"
+143 "File preserved"
+144 "%s: expanded into too many file names"
+145 "Only regular files and named pipes may be read"
+146 "%s: read lock was unavailable"
+147 "Reading..."
+148 "%s: %lu lines, %lu characters"
+149 "No background screens to display"
+150 "The script command is only available in vi mode"
+151 "No command to execute"
+152 "shiftwidth option set to 0"
+153 "Count overflow"
+154 "Count underflow"
+155 "Regular expression specified; r flag meaningless"
+156 "The #, l and p flags may not be combined with the c flag in vi mode"
+157 "No match found"
+158 "No previous tag entered"
+159 "Less than %s entries on the tags stack; use :display t[ags]"
+160 "No file %s on the tags stack to return to; use :display t[ags]"
+161 "Press Enter to continue: "
+162 "%s: tag not found"
+163 "%s: corrupted tag in %s"
+164 "%s: the tag's line number is past the end of the file"
+165 "The tags stack is empty"
+166 "%s: search pattern not found"
+167 "%d more files to edit"
+168 "Buffer %s is empty"
+169 "Confirm change? [n]"
+170 "Interrupted"
+171 "No previous buffer to execute"
+172 "No previous regular expression"
+173 "The %s command requires that a file have already been read in"
+174 "Usage: %s"
+175 "The visual command requires that the open option be set"
+177 "Empty file"
+178 "No previous F, f, T or t search"
+179 "%s not found"
+180 "No previous file to edit"
+181 "Cursor not in a number"
+182 "Resulting number too large"
+183 "Resulting number too small"
+184 "No match character on this line"
+185 "Matching character not found"
+186 "No characters to replace"
+187 "No other screen to switch to"
+188 "Characters after search string, line offset and/or z command"
+189 "No previous search pattern"
+190 "Search wrapped to original position"
+191 "Abbreviation exceeded expansion limit: characters discarded"
+192 "Illegal character; quote to enter"
+193 "Already at the beginning of the insert"
+194 "No more characters to erase"
+195 "Movement past the end-of-file"
+196 "Movement past the end-of-line"
+197 "No cursor movement made"
+198 "Already at the beginning of the file"
+199 "Movement past the beginning of the file"
+200 "Already in the first column"
+201 "Buffers should be specified before the command"
+202 "Already at end-of-file"
+203 "Already at end-of-line"
+204 "%s isn't a vi command"
+205 "Usage: %s"
+206 "No characters to delete"
+207 "The Q command requires the ex terminal interface"
+208 "No command to repeat"
+209 "The file is empty"
+209 "The file is empty"
+210 "%s may not be used as a motion command"
+211 "Already in command mode"
+212 "Cursor not in a word"
+214 "Windows option value is too large, max is %u"
+215 "Append"
+216 "Change"
+217 "Command"
+218 "Insert"
+219 "Replace"
+220 "Movement past the end-of-screen"
+221 "Movement past the beginning-of-screen"
+222 "Screen must be larger than %d lines to split"
+223 "There are no background screens"
+224 "There's no background screen editing a file named %s"
+225 "You may not background your only displayed screen"
+226 "The screen can only shrink to %d rows"
+227 "The screen cannot shrink"
+228 "The screen cannot grow"
+230 "This screen may not be suspended"
+231 "Interrupted: mapped keys discarded"
+232 "vi: temporary buffer not released"
+233 "This terminal has no %s key"
+234 "Only one buffer may be specified"
+235 "Number larger than %lu"
+236 "Interrupted"
+237 "Unable to create temporary file"
+238 "Warning: %s is not a regular file"
+239 "%s already locked, session is read-only"
+240 "%s: remove"
+241 "%s: close"
+242 "%s: remove"
+243 "%s: remove"
+244 "Read-only file, not written; use ! to override"
+245 "Read-only file, not written"
+246 "%s exists, not written; use ! to override"
+247 "%s exists, not written"
+248 "Partial file, not written; use ! to override"
+249 "Partial file, not written"
+250 "%s: file modified more recently than this copy; use ! to override"
+251 "%s: file modified more recently than this copy"
+252 "%s: write lock was unavailable"
+253 "Writing..."
+254 "%s: WARNING: FILE TRUNCATED"
+255 "Already at the first tag of this group"
+256 "%s: new file: %lu lines, %lu characters"
+257 "%s: %lu lines, %lu characters"
+258 "%s expanded into too many file names"
+259 "%s: not a regular file"
+260 "%s: not owned by you"
+261 "%s: accessible by a user other than the owner"
+262 "File modified since last complete write; write or use ! to override"
+263 "File modified since last complete write; write or use :edit! to override"
+264 "File modified since last complete write; write or use ! to override"
+265 "File is a temporary; exit will discard modifications"
+266 "File readonly, modifications not auto-written"
+267 "Log restarted"
+268 "confirm? [ynq]"
+269 "Press any key to continue: "
+270 "Press any key to continue [: to enter more ex commands]: "
+271 "Press any key to continue [q to quit]: "
+272 "That form of %s requires the ex terminal interface"
+273 "Entering ex input mode."
+274 "Command failed, no file read in yet."
+275 " cont?"
+276 "Unexpected character event"
+277 "Unexpected end-of-file event"
+278 "No matches for query"
+279 "Unexpected interrupt event"
+281 "Unexpected repaint event"
+282 "Already at the last tag of this group"
+283 "The %s command requires the ex terminal interface"
+284 "That form of %s is not supported when the secure edit option is set"
+285 "Unexpected string event"
+286 "Unexpected timeout event"
+288 "Screen must be larger than %d columns to split"
+289 "Shell expansions not supported when the secure edit option is set"
+290 "The %s command is not supported when the secure edit option is set"
+291 "set: the %s option may not be turned off"
+292 "Display too small."
+293 "added"
+294 "changed"
+295 "deleted"
+296 "joined"
+297 "moved"
+298 "shifted"
+299 "yanked"
+300 "line"
+301 "lines"
+302 "Vi was not loaded with a Tcl interpreter"
+303 "File modified since last write."
+304 "Shell expansion failed"
+304 "Shell expansion failed"
+305 "No %s edit option specified"
+306 "Vi was not loaded with a Perl interpreter"
+307 "No ex command to execute"
+308 "Enter <CR> to execute a command, :q to exit"
+309 "Use "cscope help" for help"
+310 "No cscope connections running"
+311 "%s: unknown search type: use one of %s"
+312 "%d: no such cscope session"
+313 "set: the %s option may never be turned on"
+314 "set: the %s option may never be set to 0"
+315 "%s: appended: %lu lines, %lu characters"
+316 "Unexpected resize event"
+317 "%d files to edit"
+318 "Unexpected command or input"
+319 "%d screens backgrounded; use :display to list them"
+320 "Unknown cursor position."
+321 "File encoding conversion not supported"
+322 "Input encoding conversion not supported"
+323 "Invalid input. Truncated."
+324 "Conversion error on line %d"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/english.check	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,37 @@
+Unused message id's (this is okay):
+001
+047
+050
+051
+052
+081
+176
+229
+280
+287
+=========================
+MISSING ERROR MESSAGES (Please add!):
+=========================
+Extra error messages (just delete them):
+=========================
+MESSAGES WITH THE SAME MESSAGE ID's (FIX!):
+=========================
+Duplicate messages, both id and message (this is okay):
+   2 209 "The file is empty"
+   2 304 "Shell expansion failed"
+=========================
+Duplicate messages, just message (this is okay):
+   2 %s exists, not written; use ! to overrideX
+   2 %s: %lu lines, %lu charactersX
+   2 %s: malformed recovery fileX
+   2 Buffer %s is emptyX
+   2 Copying file for recovery...X
+   2 InterruptedX
+   2 Logging not being performed, undo not possibleX
+   2 Modifications not recoverable if the session failsX
+   2 No previous search patternX
+   2 set: %s option isn't a booleanX
+   3 %s: removeX
+   3 File modified since last complete write; write or use ! to overrideX
+   4 Usage: %sX
+=========================
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/english.owner	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,1 @@
+Keith Bostic <bostic@cs.berkeley.edu>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/french	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,317 @@
+VI_MESSAGE_CATALOG
+Dpassement de longueur de ligneX
+impossible de supprimer la ligne %luX
+impossible d'ajouter  la ligne %luX
+impossible d'insrer devant la ligne %luX
+impossible de stocker la ligne %luX
+impossible d'obtenir la dernire ligneX
+Erreur : impossible de rcuprer la ligne %luX
+Fichier journalX
+Aucune journalisation n'tant effectue, impossible d'annulerX
+Aucune action  annulerX
+Aucune journalisation n'tant effectue, impossible d'annulerX
+Aucune journalisation n'tant effectue, reprise actualise impossibleX
+Aucune action  refaireX
+%s/%d : Erreur d'criture de journalX
+L'entre et la sortie Vi standards doivent tre un terminalX
+Marque %s : non dfinieX
+Marque %s : la ligne a t supprimeX
+Marque %s : la position du curseur n'existe plusX
+Erreur : X
+nouveau fichierX
+le nom a changX
+modifiX
+non modifiX
+DVERROUILLX
+lecture seuleX
+ligne %lu de %lu [%ld%%]X
+fichier videX
+ligne %luX
+Ce fichier %s n'est pas un catalogue de messagesX
+Impossible de configurer option %s par dfautX
+Utilisation : %sX
+Dfinition : pas d'option %s : 'set all' donne toutes les valeurs optionnellesX
+Dfinition : option [no]%s ne prend pas de valeurX
+Dfinition : l'option %s n'est pas boolenneX
+Dfinition : option %s : %sX
+Dfinition : option %s : %s : Dpassement de valeurX
+Dfinition : option %s : %s n'est pas un nombre valideX
+Dfinition : l'option %s n'est pas boolenneX
+Les colonnes de l'cran sont trop petites, infrieures  %dX
+Les colonnes de l'cran sont trop grandes, suprieures  %dX
+Les lignes de l'cran sont trop courtes, infrieures  %dX
+Les lignes de l'cran sont trop longues, suprieures  %dX
+L'option lisp n'est pas implmenteX
+Les messages ne sont pas dsactivs : %sX
+Les messages ne sont pas activs : %sX
+
+L'option de paragraphe doit tre en groupe de deux caractresX
+L'option de section doit tre en groupe de deux caractresX
+
+
+
+Le tampon par dfaut est videX
+Le tampon %s est videX
+Les fichiers dont le nom contient des caractres de saut de ligne sont irrcuprablesX
+Impossible de rcuprer les modifications si la session choueX
+Copie en cours du fichier pour rcupration...X
+La prservation a chou : %sX
+Impossible de rcuprer les modifications si la session choueX
+La sauvegarde du fichier a chou : %sX
+Copie en cours du fichier pour rcupration...X
+Les renseignements sur l'identit %u de l'utilisateur sont introuvablesX
+Impossible de verrouiller le fichier de rcuprationX
+Dbordement de tampon du fichier de rcuprationX
+Fichier de rcuprationX
+%s : Fichier de rcupration malformX
+%s : Fichier de rcupration malformX
+Aucun fichier nomm %s  rcuprer, que vous puissiez lireX
+Il existe des versions rcuprables antrieures  ce fichierX
+Vous avez d'autres fichiers  rcuprerX
+pas d'envoi d'email : %sX
+Fichier vide, rien  rechercherX
+Fin de fichier atteinte sans trouver le motifX
+Pas de motif de recherche prcdentX
+Motif introuvableX
+Dbut du fichier atteint sans trouver le motifX
+La recherche est revenue  son point de dpartX
+Recherche en cours...X
+Caractre non-imprimable introuvableX
+Nom de commande inconnuX
+
+%s : Commande non disponible en ex modeX
+Le compteur ne peut tre zroX
+%s : mauvaise spcification de ligneX
+Erreur de tableau de syntaxe interne (%s: %s)X
+Utilisation : %sX
+%s : tampon temporaire non librX
+Dcalage de drapeau hors de la ligne 1X
+Dcalage de drapeau hors de la fin du fichierX
+@ avec plage, en cours d'excution quand le fichier/l'cran a changX
+Commande Global/v en cours d'excution quand le fichier/l'cran a changX
+La commande ex a chou : commandes en attente abandonnesX
+La commande ex a chou : les touches affectes sont abandonnesX
+La deuxime adresse est plus petite que la premireX
+Aucun nom de marque fourniX
+\\ non suivi par / ou ?X
+Rfrence  un numro de ligne infrieure  0X
+La commande %s est inconnueX
+Dpassement de la valeur adresseX
+Dpassement ngatif de la valeur adresseX
+Combinaison d'adresse non valideX
+Adresse non valide : il n'y a que %lu lignes dans ce fichierX
+Adresse non valide : le fichier est videX
+La commande %s ne permet pas une adresse de 0X
+Pas d'abrviations  afficherX
+Les abrviations doivent finir par un caractre"motX
+Les abrviations ne peuvent pas contenir de tabulations ni d'espacesX
+Les abrviations ne peuvent pas contenir un mlange de caractres mot/non-mot, sauf  la finX
+"%s" n'est pas une abrviationX
+La commande Vi a chou : Les touches affectes ont t abandonnesX
+Plus de fichiers  diterX
+Pas de fichiers prcdents  diterX
+Pas de fichiers prcdents  rembobinerX
+Pas de liste de fichiers  afficherX
+Pas de commande prcdente  remplacer"!"X
+Pas de nom de fichier  substituer  %%X
+Pas de nom de fichier  substituer  #X
+Erreur : execl : %sX
+Erreur E/S : %sX
+Fichier modifi depuis la dernire criture complte ; crire ou utiliser ! pour outrepasserX
+Impossible de trouver l'emplacement du rpertoire d'origineX
+Nouveau rpertoire en cours : %sX
+Pas de tampon de coupure  afficherX
+La commande %s ne peut pas tre utilise  l'intrieur d'une commande globale ou commande vX
+%s/%s : chec de source : ni vous ni le super-utilisateur n'tes les propritaires X
+%s/%s : chec de source : vous n'tes pas le propritaireX
+%s/%s : chec de source : peut tre crit par un utilisateur autre que le propritaireX
+%s : chec de source : ni vous ni le super-utilisateur n'tes les propritairesX
+%s : chec de source : vous n'tes pas le propritaireX
+%s : chec de source : peut tre crit par un utilisateur autre que le propritaireX
+Pas de lignes suivantes  joindreX
+Pas d'entres de mappage d'entreX
+Pas d'entres de mappage de commandesX
+Le caractre %s ne peut pas tre remappX
+"%s" n'est pas actuellement mappX
+Les noms de marque ne doivent avoir qu'un caractreX
+%s existe, non enregistr; utiliser ! pour outrepasserX
+Nouveau fichier exrc : %sX
+La ligne de destination est  l'intrieur de la plage  dplacerX
+La commande ouverte ncessite que l'option ouverte soit dfinieX
+La commande ouverte n'est pas encore implmenteX
+La prservation de ce fichier est impossibleX
+Fichier prservX
+%s: tendu dans trop de noms de fichiersX
+Vous ne pouvez lire que les fichiers standards et les canaux de transmission nommsX
+%s: Interdiction de lecture non disponibleX
+Lecture en cours...X
+%s: %lu lignes, %lu caractresX
+Pas d'crans d'arrire-plan  afficherX
+La commande script n'est disponible qu'en mode viX
+Pas de commande  excuterX
+Option de largeur de dcalage dfinie sur 0X
+Compter dpassementX
+Compter dpassement ngatifX
+Expression standard spcifie; drapeau r superfluX
+Vous ne pouvez pas en mode vi, combiner les drapeaux #, l et p avec le drapeau cX
+Aucune correspondance trouveX
+Aucune marque prcdente entreX
+Moins de %s entres dans la pile de marques ; utilisez t[ags]X
+Pas de fichier %s vers lequel retourner dans la pile de marques ; utiliser : affichage t[ags]X
+Appuyez sur Entre pour continuer :X
+%s : marque introuvableX
+%s : marque corrompue en %sX
+%s : le numro de ligne de la marque dpasse la fin du fichierX
+La pile de marques est videX
+%s : motif de recherche introuvableX
+%d fichiers supplmentaires  diterX
+Le tampon %s est vide
+Confirmer les changements ? [n]X
+InterrompuX
+Pas de tampon prcdent  excuterX
+Pas d'expression standard prcdenteX
+La commande %s ncessite qu'un fichier ait dj t lu en mmoireX
+Utilisation : %sX
+La commande visual ncessite que l'option open soit dfinieX
+
+Fichier videX
+Pas de recherche prcdente F, f, T ou tX
+%s introuvableX
+Pas de fichier prcdent  diterX
+Le curseur n'est pas dans un nombreX
+Le nombre obtenu est trop grandX
+Le nombre obtenu est trop petitX
+Pas de correspondance de caractre sur cette ligneX
+Caractre correspondant introuvableX
+Pas de caractres  remplacerX
+Pas d'autre cran vers lequel basculerX
+Caractres aprs la chane de recherche, dcalage de ligne et/ou commande zX
+Pas de motif de recherche prcdentX
+La recherche est revenue  son point de dpartX
+L'abrviation a dpass la limite de l'expansion : caractres abandonnsX
+Caractre non valide ; guillemet pour saisirX
+Dj au dbut de l'insertionX
+Plus de caractres  effacerX
+Dplacement hors de fin de fichierX
+Dplacement hors de fin de ligneX
+Aucun mouvement de curseur n'a t effectuX
+Dj au dbut du fichierX
+Dplacement hors du dbut du fichierX
+Dj dans la premire colonneX
+Les tampons doivent tre spcifis avant la commandeX
+Dj  la fin du fichierX
+Dj  la fin de la ligneX
+%s n'est pas une commande viX
+Utilisation : %sX
+Pas de caractres  supprimerX
+La commande Q ncessite une interface terminal exX
+Pas de commande  rpterX
+Le fichier est videX
+Vous ne pouvez pas utiliser %s comme commande de dplacementX
+Dj en mode commandeX
+Le curseur n'est pas dans un motX
+
+Valeur optionnelle de fentre trop grande, maximum est %uX
+AjouterX
+ChangerX
+CommandeX
+InsrerX
+RemplacerX
+Dplacement hors de la fin d'cranX
+Dplacement hors du dbut d'cranX
+L'cran doit tre suprieur  %d lignes pour se fractionnerX
+Il n'y a pas d'cran d'arrire-planX
+Il n'y a pas d'cran d'arrire-plan qui dite un fichier nomm %sX
+Vous ne pouvez pas mettre  l'arrire-plan votre seul cran affichX
+L'cran ne peut tre rduit qu' %d rangsX
+L'cran n'est pas auto-rductibleX
+L'cran n'est pas auto-extensibleX
+
+Vous ne pouvez pas mettre cet cran en attenteX
+Interrompu : les touches affectes ont t abandonnesX
+vi : le tampon temporaire n' a pas t librX
+Ce terminal n'a pas de touche %sX
+Vous ne pouvez spcifier qu'un seul tamponX
+Nombre suprieur  %luX
+InterrompuX
+Impossible de crer un fichier temporaireX
+Avertissement : %s n'est pas un fichier standardX
+%s dj verrouill, session en lecture seuleX
+%s: supprimerX
+%s: fermerX
+%s: supprimerX
+%s: supprimerX
+Fichier en lecture seule, non crit, utiliser ! pour outrepasserX
+Fichier en lecture seule, non critX
+%s existe, non crit; utiliser ! pour outrepasserX
+%s existe, non critX
+Fichier partiel, non crit; utiliser ! pour outrepasserX
+Fichier partiel, non critX
+%s: fichier modifi plus rcemment que cet exemplaire; utiliser ! pour outrepasserX
+%s: fichier modifi plus rcemment que cet exemplaireX
+%s: interdiction d'criture non disponibleX
+Ecriture en cours...X
+%s: AVERTISSEMENT : FICHIER TRONQUX
+Premire marque de ce groupe dj atteinteX
+%s: nouveau fichier : %lu lignes, %lu caractresX
+%s: %lu lignes, %lu caractresX
+%s tendue  trop de noms de fichiersX
+%s: pas un fichier standardX
+%s: ne vous appartient pasX
+%s: accessible par un utilisateur autre que son propritaireX
+Fichier modif depuis la dernire criture complte ; crire ou utiliser ! pour outrepasser X
+Fichier modif depuis la dernire criture complte ; crire ou utiliser :edit! pour outrepasserX
+Fichier modif depuis la dernire criture complte ; crire ou utiliser ! pour outrepasserX
+Fichier temporaire ; quitter annulera les modificationsX
+Fichier en lecture seule ; les modifications ne sont pas crites automatiquementX
+Journal redmarrX
+confirmer ? [ynq]X
+Appuyez sur n'importe quelle touche pour continuer : X
+Appuyez sur n'importe quelle touche pour continuer [: pour entrer plus de commandes ex] : X
+Appuyez sur n'importe quelle touche pour continuer [q pour Quitter]: X
+Cette forme de %s ncessite l'interface de terminal exX
+Entre de mode entre ex.X
+La commande a chou, aucun fichier n'a encore t lu.X
+cont?X
+Evnement imprvu de caractreX
+Evnement imprvu de fin-de-fichierX
+Pas de correspondances pour cette requteX
+Evnement imprvu d'interruptionX
+Evnement quitter imprvuX
+Evnement imprvu de rafrachissementX
+La dernire marque de ce groupe a dj t atteinteX
+La commande %s ncessite l'interface de terminal exX
+Cette forme de %s n'est pas reconnue quand l'option d'dition protge est activeX
+Evnement imprvu de chaneX
+Evnement imprvu de dlai impartiX
+Evnement d'criture imprvuX
+
+Les expansions du shell ne sont pas reconnues quand l'option d'dition protge est activeX
+La commande %s n'est pas reconnue quand l'option d'dition protge est activeX
+Dfinition : l'option %s ne peut pas tre dsactiveX
+Affichage trop petit.X
+ajoutX
+changX
+supprimX
+jointX
+dplacX
+dcalX
+coupX
+ligneX
+lignesX
+Vi n'a pas t charg avec un interprtateur TclX
+Ficher modifi depuis le dernier enregistrement.X
+L'expansion du shell a chouX
+Pas d'option d'dition %s spcifieX
+Vi n'a pas t charg avec un interprtateur PerlX
+Pas de commande ex  excuterX
+Entrez <CR> pour excuter une commande, :q pour quitterX
+Utiliser "cscope help" pour obtenir de l'aideX
+Aucune connexion cscope n'est lanceX
+%s : type de recherche inconnu : utiliser un des %sX
+%d : Il n'existe pas de telle session cscopeX
+Dfinition : l'option %s ne peut jamais tre activeX
+Dfinition : l'option %s ne peut jamais tre dfinie sur 0X
+%s: joints : %lu lignes, %lu caractresX
+vnement imprvu de redimensionnementX
+%d fichiers  diterX
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/french.base	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,309 @@
+002 "Dpassement de longueur de ligne"
+003 "impossible de supprimer la ligne %lu"
+004 "impossible d'ajouter  la ligne %lu"
+005 "impossible d'insrer devant la ligne %lu"
+006 "impossible de stocker la ligne %lu"
+007 "impossible d'obtenir la dernire ligne"
+008 "Erreur : impossible de rcuprer la ligne %lu"
+009 "Fichier journal"
+010 "Aucune journalisation n'tant effectue, impossible d'annuler"
+011 "Aucune action  annuler"
+012 "Aucune journalisation n'tant effectue, impossible d'annuler"
+013 "Aucune journalisation n'tant effectue, reprise actualise impossible"
+014 "Aucune action  refaire"
+015 "%s/%d : Erreur d'criture de journal"
+016 "L'entre et la sortie Vi standards doivent tre un terminal"
+017 "Marque %s : non dfinie"
+018 "Marque %s : la ligne a t supprime"
+019 "Marque %s : la position du curseur n'existe plus"
+020 "Erreur : "
+021 "nouveau fichier"
+022 "le nom a chang"
+023 "modifi"
+024 "non modifi"
+025 "DVERROUILL"
+026 "lecture seule"
+027 "ligne %lu de %lu [%ld%%]"
+028 "fichier vide"
+029 "ligne %lu"
+030 "Ce fichier %s n'est pas un catalogue de messages"
+031 "Impossible de configurer option %s par dfaut"
+032 "Utilisation : %s"
+033 "Dfinition : pas d'option %s : 'set all' donne toutes les valeurs optionnelles"
+034 "Dfinition : option [no]%s ne prend pas de valeur"
+035 "Dfinition : l'option %s n'est pas boolenne"
+036 "Dfinition : option %s : %s"
+037 "Dfinition : option %s : %s : Dpassement de valeur"
+038 "Dfinition : option %s : %s n'est pas un nombre valide"
+039 "Dfinition : l'option %s n'est pas boolenne"
+040 "Les colonnes de l'cran sont trop petites, infrieures  %d"
+041 "Les colonnes de l'cran sont trop grandes, suprieures  %d"
+042 "Les lignes de l'cran sont trop courtes, infrieures  %d"
+043 "Les lignes de l'cran sont trop longues, suprieures  %d"
+044 "L'option lisp n'est pas implmente"
+045 "Les messages ne sont pas dsactivs : %s"
+046 "Les messages ne sont pas activs : %s"
+048 "L'option de paragraphe doit tre en groupe de deux caractres"
+049 "L'option de section doit tre en groupe de deux caractres"
+053 "Le tampon par dfaut est vide"
+054 "Le tampon %s est vide"
+055 "Les fichiers dont le nom contient des caractres de saut de ligne sont irrcuprables"
+056 "Impossible de rcuprer les modifications si la session choue"
+057 "Copie en cours du fichier pour rcupration..."
+058 "La prservation a chou : %s"
+059 "Impossible de rcuprer les modifications si la session choue"
+060 "La sauvegarde du fichier a chou : %s"
+061 "Copie en cours du fichier pour rcupration..."
+062 "Les renseignements sur l'identit %u de l'utilisateur sont introuvables"
+063 "Impossible de verrouiller le fichier de rcupration"
+064 "Dbordement de tampon du fichier de rcupration"
+065 "Fichier de rcupration"
+066 "%s : Fichier de rcupration malform"
+067 "%s : Fichier de rcupration malform"
+068 "Aucun fichier nomm %s  rcuprer, que vous puissiez lire"
+069 "Il existe des versions rcuprables antrieures  ce fichier"
+070 "Vous avez d'autres fichiers  rcuprer"
+071 "pas d'envoi d'email : %s"
+072 "Fichier vide, rien  rechercher"
+073 "Fin de fichier atteinte sans trouver le motif"
+074 "Pas de motif de recherche prcdent"
+075 "Motif introuvable"
+076 "Dbut du fichier atteint sans trouver le motif"
+077 "La recherche est revenue  son point de dpart"
+078 "Recherche en cours..."
+079 "Caractre non-imprimable introuvable"
+080 "Nom de commande inconnu"
+082 "%s : Commande non disponible en ex mode"
+083 "Le compteur ne peut tre zro"
+084 "%s : mauvaise spcification de ligne"
+085 "Erreur de tableau de syntaxe interne (%s: %s)"
+086 "Utilisation : %s"
+087 "%s : tampon temporaire non libr"
+088 "Dcalage de drapeau hors de la ligne 1"
+089 "Dcalage de drapeau hors de la fin du fichier"
+090 "@ avec plage, en cours d'excution quand le fichier/l'cran a chang"
+091 "Commande Global/v en cours d'excution quand le fichier/l'cran a chang"
+092 "La commande ex a chou : commandes en attente abandonnes"
+093 "La commande ex a chou : les touches affectes sont abandonnes"
+094 "La deuxime adresse est plus petite que la premire"
+095 "Aucun nom de marque fourni"
+096 "\\ non suivi par / ou ?"
+097 "Rfrence  un numro de ligne infrieure  0"
+098 "La commande %s est inconnue"
+099 "Dpassement de la valeur adresse"
+100 "Dpassement ngatif de la valeur adresse"
+101 "Combinaison d'adresse non valide"
+102 "Adresse non valide : il n'y a que %lu lignes dans ce fichier"
+103 "Adresse non valide : le fichier est vide"
+104 "La commande %s ne permet pas une adresse de 0"
+105 "Pas d'abrviations  afficher"
+106 "Les abrviations doivent finir par un caractre"mot"
+107 "Les abrviations ne peuvent pas contenir de tabulations ni d'espaces"
+108 "Les abrviations ne peuvent pas contenir un mlange de caractres mot/non-mot, sauf  la fin"
+109 ""%s" n'est pas une abrviation"
+110 "La commande Vi a chou : Les touches affectes ont t abandonnes"
+111 "Plus de fichiers  diter"
+112 "Pas de fichiers prcdents  diter"
+113 "Pas de fichiers prcdents  rembobiner"
+114 "Pas de liste de fichiers  afficher"
+115 "Pas de commande prcdente  remplacer"!""
+116 "Pas de nom de fichier  substituer  %%"
+117 "Pas de nom de fichier  substituer  #"
+118 "Erreur : execl : %s"
+119 "Erreur E/S : %s"
+120 "Fichier modifi depuis la dernire criture complte ; crire ou utiliser ! pour outrepasser"
+121 "Impossible de trouver l'emplacement du rpertoire d'origine"
+122 "Nouveau rpertoire en cours : %s"
+123 "Pas de tampon de coupure  afficher"
+124 "La commande %s ne peut pas tre utilise  l'intrieur d'une commande globale ou commande v"
+125 "%s/%s : chec de source : ni vous ni le super-utilisateur n'tes les propritaires "
+126 "%s/%s : chec de source : vous n'tes pas le propritaire"
+127 "%s/%s : chec de source : peut tre crit par un utilisateur autre que le propritaire"
+128 "%s : chec de source : ni vous ni le super-utilisateur n'tes les propritaires"
+129 "%s : chec de source : vous n'tes pas le propritaire"
+130 "%s : chec de source : peut tre crit par un utilisateur autre que le propritaire"
+131 "Pas de lignes suivantes  joindre"
+132 "Pas d'entres de mappage d'entre"
+133 "Pas d'entres de mappage de commandes"
+134 "Le caractre %s ne peut pas tre remapp"
+135 ""%s" n'est pas actuellement mapp"
+136 "Les noms de marque ne doivent avoir qu'un caractre"
+137 "%s existe, non enregistr; utiliser ! pour outrepasser"
+138 "Nouveau fichier exrc : %s"
+139 "La ligne de destination est  l'intrieur de la plage  dplacer"
+140 "La commande ouverte ncessite que l'option ouverte soit dfinie"
+141 "La commande ouverte n'est pas encore implmente"
+142 "La prservation de ce fichier est impossible"
+143 "Fichier prserv"
+144 "%s: tendu dans trop de noms de fichiers"
+145 "Vous ne pouvez lire que les fichiers standards et les canaux de transmission nomms"
+146 "%s: Interdiction de lecture non disponible"
+147 "Lecture en cours..."
+148 "%s: %lu lignes, %lu caractres"
+149 "Pas d'crans d'arrire-plan  afficher"
+150 "La commande script n'est disponible qu'en mode vi"
+151 "Pas de commande  excuter"
+152 "Option de largeur de dcalage dfinie sur 0"
+153 "Compter dpassement"
+154 "Compter dpassement ngatif"
+155 "Expression standard spcifie; drapeau r superflu"
+156 "Vous ne pouvez pas en mode vi, combiner les drapeaux #, l et p avec le drapeau c"
+157 "Aucune correspondance trouve"
+158 "Aucune marque prcdente entre"
+159 "Moins de %s entres dans la pile de marques ; utilisez t[ags]"
+160 "Pas de fichier %s vers lequel retourner dans la pile de marques ; utiliser : affichage t[ags]"
+161 "Appuyez sur Entre pour continuer :"
+162 "%s : marque introuvable"
+163 "%s : marque corrompue en %s"
+164 "%s : le numro de ligne de la marque dpasse la fin du fichier"
+165 "La pile de marques est vide"
+166 "%s : motif de recherche introuvable"
+167 "%d fichiers supplmentaires  diter"
+168 "Le tampon %s est vide
+169 "Confirmer les changements ? [n]"
+170 "Interrompu"
+171 "Pas de tampon prcdent  excuter"
+172 "Pas d'expression standard prcdente"
+173 "La commande %s ncessite qu'un fichier ait dj t lu en mmoire"
+174 "Utilisation : %s"
+175 "La commande visual ncessite que l'option open soit dfinie"
+177 "Fichier vide"
+178 "Pas de recherche prcdente F, f, T ou t"
+179 "%s introuvable"
+180 "Pas de fichier prcdent  diter"
+181 "Le curseur n'est pas dans un nombre"
+182 "Le nombre obtenu est trop grand"
+183 "Le nombre obtenu est trop petit"
+184 "Pas de correspondance de caractre sur cette ligne"
+185 "Caractre correspondant introuvable"
+186 "Pas de caractres  remplacer"
+187 "Pas d'autre cran vers lequel basculer"
+188 "Caractres aprs la chane de recherche, dcalage de ligne et/ou commande z"
+189 "Pas de motif de recherche prcdent"
+190 "La recherche est revenue  son point de dpart"
+191 "L'abrviation a dpass la limite de l'expansion : caractres abandonns"
+192 "Caractre non valide ; guillemet pour saisir"
+193 "Dj au dbut de l'insertion"
+194 "Plus de caractres  effacer"
+195 "Dplacement hors de fin de fichier"
+196 "Dplacement hors de fin de ligne"
+197 "Aucun mouvement de curseur n'a t effectu"
+198 "Dj au dbut du fichier"
+199 "Dplacement hors du dbut du fichier"
+200 "Dj dans la premire colonne"
+201 "Les tampons doivent tre spcifis avant la commande"
+202 "Dj  la fin du fichier"
+203 "Dj  la fin de la ligne"
+204 "%s n'est pas une commande vi"
+205 "Utilisation : %s"
+206 "Pas de caractres  supprimer"
+207 "La commande Q ncessite une interface terminal ex"
+208 "Pas de commande  rpter"
+209 "Le fichier est vide"
+209 "Le fichier est vide"
+210 "Vous ne pouvez pas utiliser %s comme commande de dplacement"
+211 "Dj en mode commande"
+212 "Le curseur n'est pas dans un mot"
+214 "Valeur optionnelle de fentre trop grande, maximum est %u"
+215 "Ajouter"
+216 "Changer"
+217 "Commande"
+218 "Insrer"
+219 "Remplacer"
+220 "Dplacement hors de la fin d'cran"
+221 "Dplacement hors du dbut d'cran"
+222 "L'cran doit tre suprieur  %d lignes pour se fractionner"
+223 "Il n'y a pas d'cran d'arrire-plan"
+224 "Il n'y a pas d'cran d'arrire-plan qui dite un fichier nomm %s"
+225 "Vous ne pouvez pas mettre  l'arrire-plan votre seul cran affich"
+226 "L'cran ne peut tre rduit qu' %d rangs"
+227 "L'cran n'est pas auto-rductible"
+228 "L'cran n'est pas auto-extensible"
+230 "Vous ne pouvez pas mettre cet cran en attente"
+231 "Interrompu : les touches affectes ont t abandonnes"
+232 "vi : le tampon temporaire n' a pas t libr"
+233 "Ce terminal n'a pas de touche %s"
+234 "Vous ne pouvez spcifier qu'un seul tampon"
+235 "Nombre suprieur  %lu"
+236 "Interrompu"
+237 "Impossible de crer un fichier temporaire"
+238 "Avertissement : %s n'est pas un fichier standard"
+239 "%s dj verrouill, session en lecture seule"
+240 "%s: supprimer"
+241 "%s: fermer"
+242 "%s: supprimer"
+243 "%s: supprimer"
+244 "Fichier en lecture seule, non crit, utiliser ! pour outrepasser"
+245 "Fichier en lecture seule, non crit"
+246 "%s existe, non crit; utiliser ! pour outrepasser"
+247 "%s existe, non crit"
+248 "Fichier partiel, non crit; utiliser ! pour outrepasser"
+249 "Fichier partiel, non crit"
+250 "%s: fichier modifi plus rcemment que cet exemplaire; utiliser ! pour outrepasser"
+251 "%s: fichier modifi plus rcemment que cet exemplaire"
+252 "%s: interdiction d'criture non disponible"
+253 "Ecriture en cours..."
+254 "%s: AVERTISSEMENT : FICHIER TRONQU"
+255 "Premire marque de ce groupe dj atteinte"
+256 "%s: nouveau fichier : %lu lignes, %lu caractres"
+257 "%s: %lu lignes, %lu caractres"
+258 "%s tendue  trop de noms de fichiers"
+259 "%s: pas un fichier standard"
+260 "%s: ne vous appartient pas"
+261 "%s: accessible par un utilisateur autre que son propritaire"
+262 "Fichier modif depuis la dernire criture complte ; crire ou utiliser ! pour outrepasser "
+263 "Fichier modif depuis la dernire criture complte ; crire ou utiliser :edit! pour outrepasser"
+264 "Fichier modif depuis la dernire criture complte ; crire ou utiliser ! pour outrepasser"
+265 "Fichier temporaire ; quitter annulera les modifications"
+266 "Fichier en lecture seule ; les modifications ne sont pas crites automatiquement"
+267 "Journal redmarr"
+268 "confirmer ? [ynq]"
+269 "Appuyez sur n'importe quelle touche pour continuer : "
+270 "Appuyez sur n'importe quelle touche pour continuer [: pour entrer plus de commandes ex] : "
+271 "Appuyez sur n'importe quelle touche pour continuer [q pour Quitter]: "
+272 "Cette forme de %s ncessite l'interface de terminal ex"
+273 "Entre de mode entre ex."
+274 "La commande a chou, aucun fichier n'a encore t lu."
+275 "cont?"
+276 "Evnement imprvu de caractre"
+277 "Evnement imprvu de fin-de-fichier"
+278 "Pas de correspondances pour cette requte"
+279 "Evnement imprvu d'interruption"
+280 "Evnement quitter imprvu"
+281 "Evnement imprvu de rafrachissement"
+282 "La dernire marque de ce groupe a dj t atteinte"
+283 "La commande %s ncessite l'interface de terminal ex"
+284 "Cette forme de %s n'est pas reconnue quand l'option d'dition protge est active"
+285 "Evnement imprvu de chane"
+286 "Evnement imprvu de dlai imparti"
+287 "Evnement d'criture imprvu"
+289 "Les expansions du shell ne sont pas reconnues quand l'option d'dition protge est active"
+290 "La commande %s n'est pas reconnue quand l'option d'dition protge est active"
+291 "Dfinition : l'option %s ne peut pas tre dsactive"
+292 "Affichage trop petit."
+293 "ajout"
+294 "chang"
+295 "supprim"
+296 "joint"
+297 "dplac"
+298 "dcal"
+299 "coup"
+300 "ligne"
+301 "lignes"
+302 "Vi n'a pas t charg avec un interprtateur Tcl"
+303 "Ficher modifi depuis le dernier enregistrement."
+304 "L'expansion du shell a chou"
+304 "L'expansion du shell a chou"
+305 "Pas d'option d'dition %s spcifie"
+306 "Vi n'a pas t charg avec un interprtateur Perl"
+307 "Pas de commande ex  excuter"
+308 "Entrez <CR> pour excuter une commande, :q pour quitter"
+309 "Utiliser "cscope help" pour obtenir de l'aide"
+310 "Aucune connexion cscope n'est lance"
+311 "%s : type de recherche inconnu : utiliser un des %s"
+312 "%d : Il n'existe pas de telle session cscope"
+313 "Dfinition : l'option %s ne peut jamais tre active"
+314 "Dfinition : l'option %s ne peut jamais tre dfinie sur 0"
+315 "%s: joints : %lu lignes, %lu caractres"
+316 "vnement imprvu de redimensionnement"
+317 "%d fichiers  diter"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/french.check	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,40 @@
+Unused message id's (this is okay):
+001
+047
+050
+051
+052
+081
+176
+229
+288
+=========================
+MISSING ERROR MESSAGES (Please add!):
+288
+318
+319
+320
+=========================
+Extra error messages (just delete them):
+280
+287
+=========================
+MESSAGES WITH THE SAME MESSAGE ID's (FIX!):
+=========================
+Duplicate messages, both id and message (this is okay):
+   2 209 "Le fichier est vide"
+   2 304 "L'expansion du shell a chou"
+=========================
+Duplicate messages, just message (this is okay):
+   2 %s : Fichier de rcupration malformX
+   2 %s: %lu lignes, %lu caractresX
+   2 Aucune journalisation n'tant effectue, impossible d'annulerX
+   2 Copie en cours du fichier pour rcupration...X
+   2 Dfinition : l'option %s n'est pas boolenneX
+   2 Impossible de rcuprer les modifications si la session choueX
+   2 InterrompuX
+   2 La recherche est revenue  son point de dpartX
+   2 Pas de motif de recherche prcdentX
+   3 %s: supprimerX
+   4 Utilisation : %sX
+=========================
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/german	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,317 @@
+VI_MESSAGE_CATALOG
+Zeilenlngen-berlaufX
+kann Zeile %lu nicht lschenX
+kann an Zeile %lu nicht anfgenX
+kann in Zeile %lu nicht einfgenX
+kann Zeile %lu nicht speichernX
+kann letzte Zeile nicht lesenX
+Fehler: kann Zeile %lu nicht wiederherstellenX
+ProtokolldateiX
+Keine Protokollierung aktiv, Rckgngigmachen nicht mglichX
+Keine nderungen rckgngig zu machenX
+Keine Protokollierung aktiv, Rckgngigmachen nicht mglichX
+Keine Protokollierung aktiv, Wiederholung von nderungen nicht mglichX
+Keine nderungen zu wiederholenX
+%s/%d: ProtokollschreibfehlerX
+Vi's Standardein- und -ausgabe mu ein Terminal seinX
+Marke %s: nicht gesetztX
+Marke %s: die Zeile wurde gelschtX
+Marke %s: Cursorposition existiert nicht mehrX
+Fehler: X
+neue DateiX
+Name gendertX
+gendertX
+nicht gendertX
+NICHT GELOCKTX
+nur zum LesenX
+Zeile %lu von %lu [%ld%%]X
+leere DateiX
+Zeile %luX
+Die Datei %s ist kein MeldungskatalogX
+Setzen der Voreinstellung fr %s Option nicht mglichX
+Benutzung: %sX
+set: keine %s Option: 'set all' zeigt alle Optionen mit Werten anX
+set: der [no]%s Option kann kein Wert zugewiesen werdenX
+set: %s ist keine Boolsche OptionX
+set: %s Option: %sX
+set: %s Option: %s: Werte-berlaufX
+set: %s Option: %s ist eine ungltige ZahlX
+set: %s ist keine Boolsche OptionX
+Bildschirm hat zu wenig Spalten, weniger als %dX
+Bildschirm hat zu viele Spalten, mehr als %dX
+Bildschirm hat zu wenig Zeilen, weniger als %dX
+Bildschirm hat zu viele Zeilen, mehr als %dX
+Die lisp-Option ist nicht implementiertX
+Meldungen nicht abgeschaltet: %sX
+Meldungen nicht eingeschaltet: %sX
+
+Die paragraph-Option mu Gruppen zu zwei Zeichen enthaltenX
+Die section-Option mu Gruppen zu zwei Zeichen enthaltenX
+
+
+
+Der Standardpuffer ist leerX
+Puffer %s ist leerX
+Dateien mit newlines im Namen sind nicht wiederherstellbarX
+nderungen nicht wiederherstellbar, falls die Editorsitzung schiefgehtX
+kopiere Datei fr Wiederherstellung ...X
+Rettungsmechanismus funktioniert nicht: %sX
+nderungen nicht wiederherstellbar, falls die Editorsitzung schiefgehtX
+Sicherung der Datei gescheitert: %sX
+kopiere Datei fr Wiederherstellung ...X
+Informationen ber den Benutzer mit id %u nicht gefundenX
+Wiederherstellungsdatei kann nicht gelockt werdenX
+Puffer der Wiederherstellungsdatei bergelaufenX
+WiederherstellungsdateiX
+%s: Wiederherstellungsdatei hat falsches FormatX
+%s: Wiederherstellungsdatei hat falsches FormatX
+Keine von Ihnen lesbaren Dateien mit Namen %s zum WiederherstellenX
+Es gibt ltere Versionen dieser Datei von Ihnen zum WiederherstellenX
+Sie haben noch andere Dateien zum WiederherstellenX
+schicke keine email: %sX
+Datei leer; nichts zu suchenX
+Dateiende erreicht, ohne das Suchmuster zu findenX
+Kein altes SuchmusterX
+Suchmuster nicht gefundenX
+Dateianfang erreicht, ohne das Suchmuster zu findenX
+Suche beginnt von vornX
+suche ...X
+Keine nichtdruckbaren Zeichen gefundenX
+Unbekannter KommandonameX
+
+%s: Kommando im ex-Modus nicht verfgbarX
+Anzahl darf nicht Null seinX
+%s: falsche ZeilenangabeX
+Interner Syntaxtabellenfehler (%s: %s)X
+Benutzung: %sX
+%s: temporrer Puffer nicht freigegebenX
+Flagoffset vor Zeile 1X
+Flagoffset hinter dem DateiendeX
+@ mit Bereich lief, als Datei/Anzeige gendert wurdeX
+globales oder v-Kommando lief, als Datei/Anzeige gendert wurdeX
+Ex-Kommando milungen: restliche Kommandoeingabe ignoriertX
+Ex-Kommando milungen: umdefinierte Tasten ungltigX
+Die zweite Adresse ist kleiner als die ersteX
+Kein Markenname angegebenX
+\\ ohne folgenden / oder ?X
+Referenz auf eine negative ZeilennummerX
+Das Kommando %s ist unbekanntX
+Adrewert zu groX
+Adrewert zu kleinX
+Ungltige AdrekombinationX
+Ungltige Adresse: nur %lu Zeilen in der DateiX
+Ungltige Adresse: die Datei ist leerX
+Das Kommando %s erlaubt keine Adresse 0X
+Keine Abkrzungen zum AnzeigenX
+Abkrzungen mssen mit einem "Wort"-Zeichen endenX
+Abkrzungen drfen keine Tabulator- oder Leerzeichen enthaltenX
+In Abkrzungen drfen auer am Ende Wort- und Nicht-Wort-Zeichen nicht gemischt werdenX
+"%s" ist keine AbkrzungX
+Vi Kommando milungen: umdefinierte Tasten ungltigX
+Keine weiteren Dateien zu editierenX
+Keine vorhergehenden Dateien zu editierenX
+Keine vorhergehenden Dateien fr rewindX
+Keine Dateiliste zum AnzeigenX
+Kein vorhergehendes Kommando, um "!" zu ersetzenX
+Kein Dateiname fr %%X
+Kein Dateiname fr #X
+Fehler: execl: %sX
+E/A-Fehler: %sX
+Datei wurde seit dem letzten vollstndigen Schreiben gendert; schreibe oder verwende ! zum ignorierenX
+Kann Homedirectory nicht bestimmenX
+Neues aktuelles Directory: %sX
+Keine Puffer anzuzeigenX
+Das Kommando %s kann nicht als Teil eines global oder v Kommandos verwendet werdenX
+%s/%s: nicht gelesen: gehrt weder Ihnen noch rootX
+%s/%s: nicht gelesen: gehrt nicht IhnenX
+%s/%s: nicht gelesen: anderer Benutzer als Eigentmer hat SchreibrechtX
+%s: nicht gelesen: gehrt weder Ihnen noch rootX
+%s: nicht gelesen: gehrt nicht IhnenX
+%s: nicht gelesen: anderer Benutzer als Eigentmer hat SchreibrechtX
+Keine folgenden Zeilen zum VerbindenX
+Kein input-Map EintragX
+Kein command-Map EintragX
+Das %s Zeichen kann nicht umgemappt werdenX
+"%s" ist momentan nicht gemapptX
+Markennamen mssen einzelne Buchstaben seinX
+%s existiert, nicht geschrieben; verwende ! zum berschreibenX
+Neue .exrc Datei: %s. X
+Zielzeile ist innerhalb des VerschiebebereichsX
+Das open Kommando verlangt, da die open Option gesetzt istX
+Das open Kommando ist nocht nicht implementiertX
+Rettung dieser Datei nicht mglichX
+Datei gerettetX
+%s wurde in zu viele Dateinamen expandiertX
+Nur regulre Dateien und named pipes knnen gelesen werdenX
+%s: Locken zum Lesen war nicht mglichX
+lese ...X
+%s: %lu Zeilen, %lu ZeichenX
+Keine Hintergrundanzeigen vorhandenX
+Das script Kommando ist nur im vi Modus verfgbarX
+Kein Kommando auszufhrenX
+shiftwidth Option auf 0 gesetztX
+Anzahl-berlaufX
+Anzahl-UnterlaufX
+Regulrer Ausdruck angegeben; r Flag bedeutungslosX
+Die #, l und p Flags knnen im vi Modus nicht mit dem c Flag kombiniert werdenX
+Keine bereinstimmung gefundenX
+Kein vorhergehender 'tag' angegebenX
+Weniger als %s Eintrge auf dem 'tag'-Stack; verwende :display t[ags]X
+Keine Datei namens %s auf dem 'tag'-Stack; verwende :display t[ags]X
+Drcke Enter um fortzufahren: X
+%s: 'tag' nicht gefundenX
+%s: kaputter 'tag' in %sX
+%s: die Zeilennummer des 'tag' ist hinter dem DateiendeX
+Der 'tag' Stack ist leerX
+%s: Suchmuster nicht gefundenX
+%d weitere Dateien zu editierenX
+Puffer %s ist leerX
+Besttige nderung [n]X
+Unterbrochen.X
+Kein vorhergehender Puffer zum AusfhrenX
+Kein vorhergehender regulrer AusdruckX
+Das Kommando %s verlangt, da bereits eine Datei eingelesen wurdeX
+Benutzung: %sX
+Das visual Kommando verlangt da die open Option gesetzt istX
+
+Leere DateiX
+Keine vorhergehende F, f, T oder t SucheX
+%s nicht gefundenX
+Keine vorhergehende Datei zu editierenX
+Cursor nicht auf einer ZahlX
+Sich ergebende Zahl ist zu groX
+Sich ergebende Zahl ist zu kleinX
+Kein korrespondierendes Zeichen in dieser ZeileX
+Korrespondierendes Zeichen nicht gefundenX
+Keine Zeichen zu ersetzenX
+Keine andere Anzeige zum HinschaltenX
+Zeichen nach Suchmuster, Zeilenoffset und/oder z KommandoX
+Kein altes SuchmusterX
+Suche zur ursprnglichen Position zurckgekehrtX
+Abkrzung berschreitet Expansionsgrenze: Zeichen weggelassenX
+Nicht erlaubtes Zeichen; maskiere zum EingebenX
+Bereits am Anfang der EingabeX
+Keine weiteren Zeichen zu lschenX
+Bewegung hinter das DateiendeX
+Bewegung hinter das ZeilenendeX
+Keine Cursorbewegung gemachtX
+Bereits am DateianfangX
+Bewegung vor den DateianfangX
+Bereits in der ersten SpalteX
+Puffer sollen vor dem Kommando angegeben werdenX
+Bereits am DateiendeX
+Bereits am ZeilenendeX
+%s ist kein vi KommandoX
+Benutzung: %sX
+Keine Zeichen zu lschenX
+Das Q Kommando bentigt das ex Terminal InterfaceX
+Kein Kommando zu wiederholenX
+Die Datei ist leerX
+%s kann nicht als Bewegungskommando verwendet werdenX
+Bereits im Kommando-ModusX
+ Cursor nicht auf einem WortX
+
+Wert der Window Option ist zu gro, max ist %uX
+AnhngenX
+ndernX
+KommandoX
+EinfgenX
+ErsetzenX
+Bewegung hinter das AnzeigenendeX
+Bewegung vor den AnzeigenanfangX
+Anzeige mu fr Bildschirmteilung grer als %d seinX
+Keine Hintergrundanzeigen vorhandenX
+Es gibt keine Hintergrundanzeige, die eine Datei namens %s editiertX
+Die einzige dargestellte Anzeige kann nicht in den Hintergrund gebracht werdenX
+Die Anzeige kann nur auf %d Zeilen verkleinert werdenX
+Die Anzeige kann nicht verkleinert werdenX
+Die Anzeige kann nicht vergrert werdenX
+
+Diese Anzeige kann nicht gestopt werdenX
+Unterbrochen: umdefinierte Tasten ungltigX
+vi: temporrer Puffer nicht freigegebenX
+Dieses Terminal hat keine %s TasteX
+es kann nur ein Puffer angegeben werdenX
+Zahl grer als %luX
+UnterbrochenX
+Nicht mglich, temporre Datei anzulegenX
+Warnung: %s ist keine regulre DateiX
+%s ist bereits gelockt, Editorsitzung schreibgeschtztX
+%s: lschenX
+%s: schlieenX
+%s: lschenX
+%s: lschenX
+Datei nicht schreibbar, nicht geschrieben; verwende ! zum berschreibenX
+Datei nicht schreibbar, nicht geschriebenX
+%s existiert, nicht geschrieben; verwende ! zum berschreibenX
+%s existiert, nicht geschriebenX
+Teil der Datei, nicht geschrieben; verwende ! zum berschreibenX
+Teil der Datei, nicht geschriebenX
+%s: Datei wurde spter als diese Kopie verndert; verwende ! zum berschreibenX
+%s: Datei wurde spter als diese Kopie verndertX
+%s: Locken zum Schreiben war nicht mglichX
+schreibe ...X
+%s: WARNUNG: DATEI ABGESCHNITTENX
+Bereits am ersten 'tag' dieser GruppeX
+%s: neue Datei: %lu Zeilen, %lu ZeichenX
+%s: %lu Zeilen, %lu ZeichenX
+%s wurde in zu viele Dateinamen expandiertX
+%s: keine regulre DateiX
+%s: gehrt nicht IhnenX
+%s: anderer Benutzer als Eigentmer hat ZugriffX
+Datei wurde seit dem letzten vollstndigen Schreiben gendert; schreibe oder verwende ! zum ignorierenX
+Datei wurde seit dem letzten vollstndigen Schreiben gendert; schreibe oder verwende :edit! zum ignorierenX
+Datei wurde seit dem letzten vollstndigen Schreiben gendert; schreibe oder verwende ! zum ignorierenX
+Datei ist temporr; beim Verlassen gehen die nderungen verlorenX
+Datei ist schreibgeschtzt, nderungen werden nicht automatisch geschriebenX
+Portokollierung neu begonnenX
+besttigen [ynq]X
+Drcke beliebige Taste um fortzufahrenX
+Drcke beliebige Taste um fortzufahren [: um weitere Kommandos einzugeben]: X
+Drcke beliebige Taste um fortzufahren [q zum Verlassen]: X
+Diese Form von %s bentigt das ex Terminal-InterfaceX
+Gehe in ex Eingabe-Modus.\nX
+Kommando schiefgelaufen, noch keine Datei eingelesenX
+ weiter?X
+unerwartetes Zeichen - EreignisX
+unerwartetes Dateiende - EreignisX
+Keine Position zum Anspringen gefundenX
+unerwartetes Unterbrechungs - EreignisX
+unerwartetes Verlassen - EreignisX
+unerwartetes Wiederherstellungs - EreignisX
+Bereits am letzten 'tag' dieser GruppeX
+Das %s Kommando bentigt das ex Terminal-InterfaceX
+Diese Form von %s wird nicht untersttzt wenn die 'secure edit' - Option gesetzt istX
+unerwartetes Zeichenketten - EreignisX
+unerwartetes timeout - EreignisX
+unerwartetes Schreibe - EreignisX
+
+Shell Expandierungen nicht untersttzt wenn die 'secure edit' - Option gesetzt istX
+Das %s Kommando wird nicht untersttzt wenn die 'secure edit' - Option gesetzt istX
+set: %s kann nicht ausgeschaltet werdenX
+Anzeige zu klein.X
+angefgtX
+gendertX
+gelschtX
+verbundenX
+verschobenX
+geschobenX
+in Puffer geschriebenX
+ZeileX
+ZeilenX
+Vi wurde nicht mit dem Tcl Interpreter gelinktX
+Datei wurde seit dem letzten Schreiben verndert.X
+Shell Expansion hat nicht geklapptX
+Es ist keine %s Editieroption angegebenX
+Vi wurde nicht mit einem Perl Interpreter geladenX
+Kein ex Kommando auszufhrenX
+Drcke <CR> um ein Kommando auszufhren, :q zum verlassenX
+Verwende "cscope help" fr HilestellungX
+Keine cscope Verbindung aktivX
+%s: unbekannter Suchtyp: verwende einen aus %sX
+%d: keine solche cscope VerbindungX
+set: die %s Option kann nicht eingeschaltet werdenX
+set: die %s Option kann nicht auf 0 gesetzt werdenX
+%s: angefgt: %lu Zeilen, %lu ZeichenX
+unerwartetes Grenvernderungs - EreignisX
+%d Dateien zu edierenX
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/german.base	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,307 @@
+002 "Zeilenlngen-berlauf"
+003 "kann Zeile %lu nicht lschen"
+004 "kann an Zeile %lu nicht anfgen"
+005 "kann in Zeile %lu nicht einfgen"
+006 "kann Zeile %lu nicht speichern"
+007 "kann letzte Zeile nicht lesen"
+008 "Fehler: kann Zeile %lu nicht wiederherstellen"
+009 "Protokolldatei"
+010 "Keine Protokollierung aktiv, Rckgngigmachen nicht mglich"
+011 "Keine nderungen rckgngig zu machen"
+012 "Keine Protokollierung aktiv, Rckgngigmachen nicht mglich"
+013 "Keine Protokollierung aktiv, Wiederholung von nderungen nicht mglich"
+014 "Keine nderungen zu wiederholen"
+015 "%s/%d: Protokollschreibfehler"
+016 "Vi's Standardein- und -ausgabe mu ein Terminal sein"
+017 "Marke %s: nicht gesetzt"
+018 "Marke %s: die Zeile wurde gelscht"
+019 "Marke %s: Cursorposition existiert nicht mehr"
+020 "Fehler: "
+021 "neue Datei"
+022 "Name gendert"
+023 "gendert"
+024 "nicht gendert"
+025 "NICHT GELOCKT"
+026 "nur zum Lesen"
+027 "Zeile %lu von %lu [%ld%%]"
+028 "leere Datei"
+029 "Zeile %lu"
+030 "Die Datei %s ist kein Meldungskatalog"
+031 "Setzen der Voreinstellung fr %s Option nicht mglich"
+032 "Benutzung: %s"
+033 "set: keine %s Option: 'set all' zeigt alle Optionen mit Werten an"
+034 "set: der [no]%s Option kann kein Wert zugewiesen werden"
+035 "set: %s ist keine Boolsche Option"
+036 "set: %s Option: %s"
+037 "set: %s Option: %s: Werte-berlauf"
+038 "set: %s Option: %s ist eine ungltige Zahl"
+039 "set: %s ist keine Boolsche Option"
+040 "Bildschirm hat zu wenig Spalten, weniger als %d"
+041 "Bildschirm hat zu viele Spalten, mehr als %d"
+042 "Bildschirm hat zu wenig Zeilen, weniger als %d"
+043 "Bildschirm hat zu viele Zeilen, mehr als %d"
+044 "Die lisp-Option ist nicht implementiert"
+045 "Meldungen nicht abgeschaltet: %s"
+046 "Meldungen nicht eingeschaltet: %s"
+048 "Die paragraph-Option mu Gruppen zu zwei Zeichen enthalten"
+049 "Die section-Option mu Gruppen zu zwei Zeichen enthalten"
+053 "Der Standardpuffer ist leer"
+054 "Puffer %s ist leer"
+055 "Dateien mit newlines im Namen sind nicht wiederherstellbar"
+056 "nderungen nicht wiederherstellbar, falls die Editorsitzung schiefgeht"
+057 "kopiere Datei fr Wiederherstellung ..."
+058 "Rettungsmechanismus funktioniert nicht: %s"
+059 "nderungen nicht wiederherstellbar, falls die Editorsitzung schiefgeht"
+060 "Sicherung der Datei gescheitert: %s"
+061 "kopiere Datei fr Wiederherstellung ..."
+062 "Informationen ber den Benutzer mit id %u nicht gefunden"
+063 "Wiederherstellungsdatei kann nicht gelockt werden"
+064 "Puffer der Wiederherstellungsdatei bergelaufen"
+065 "Wiederherstellungsdatei"
+066 "%s: Wiederherstellungsdatei hat falsches Format"
+067 "%s: Wiederherstellungsdatei hat falsches Format"
+068 "Keine von Ihnen lesbaren Dateien mit Namen %s zum Wiederherstellen"
+069 "Es gibt ltere Versionen dieser Datei von Ihnen zum Wiederherstellen"
+070 "Sie haben noch andere Dateien zum Wiederherstellen"
+071 "schicke keine email: %s"
+072 "Datei leer; nichts zu suchen"
+073 "Dateiende erreicht, ohne das Suchmuster zu finden"
+074 "Kein altes Suchmuster"
+075 "Suchmuster nicht gefunden"
+076 "Dateianfang erreicht, ohne das Suchmuster zu finden"
+077 "Suche beginnt von vorn"
+078 "suche ..."
+079 "Keine nichtdruckbaren Zeichen gefunden"
+080 "Unbekannter Kommandoname"
+082 "%s: Kommando im ex-Modus nicht verfgbar"
+083 "Anzahl darf nicht Null sein"
+084 "%s: falsche Zeilenangabe"
+085 "Interner Syntaxtabellenfehler (%s: %s)"
+086 "Benutzung: %s"
+087 "%s: temporrer Puffer nicht freigegeben"
+088 "Flagoffset vor Zeile 1"
+089 "Flagoffset hinter dem Dateiende"
+090 "@ mit Bereich lief, als Datei/Anzeige gendert wurde"
+091 "globales oder v-Kommando lief, als Datei/Anzeige gendert wurde"
+092 "Ex-Kommando milungen: restliche Kommandoeingabe ignoriert"
+093 "Ex-Kommando milungen: umdefinierte Tasten ungltig"
+094 "Die zweite Adresse ist kleiner als die erste"
+095 "Kein Markenname angegeben"
+096 "\\ ohne folgenden / oder ?"
+097 "Referenz auf eine negative Zeilennummer"
+098 "Das Kommando %s ist unbekannt"
+099 "Adrewert zu gro"
+100 "Adrewert zu klein"
+101 "Ungltige Adrekombination"
+102 "Ungltige Adresse: nur %lu Zeilen in der Datei"
+103 "Ungltige Adresse: die Datei ist leer"
+104 "Das Kommando %s erlaubt keine Adresse 0"
+105 "Keine Abkrzungen zum Anzeigen"
+106 "Abkrzungen mssen mit einem "Wort"-Zeichen enden"
+107 "Abkrzungen drfen keine Tabulator- oder Leerzeichen enthalten"
+108 "In Abkrzungen drfen auer am Ende Wort- und Nicht-Wort-Zeichen nicht gemischt werden"
+109 ""%s" ist keine Abkrzung"
+110 "Vi Kommando milungen: umdefinierte Tasten ungltig"
+111 "Keine weiteren Dateien zu editieren"
+112 "Keine vorhergehenden Dateien zu editieren"
+113 "Keine vorhergehenden Dateien fr rewind"
+114 "Keine Dateiliste zum Anzeigen"
+115 "Kein vorhergehendes Kommando, um "!" zu ersetzen"
+116 "Kein Dateiname fr %%"
+117 "Kein Dateiname fr #"
+118 "Fehler: execl: %s"
+119 "E/A-Fehler: %s"
+120 "Datei wurde seit dem letzten vollstndigen Schreiben gendert; schreibe oder verwende ! zum ignorieren"
+121 "Kann Homedirectory nicht bestimmen"
+122 "Neues aktuelles Directory: %s"
+123 "Keine Puffer anzuzeigen"
+124 "Das Kommando %s kann nicht als Teil eines global oder v Kommandos verwendet werden"
+125 "%s/%s: nicht gelesen: gehrt weder Ihnen noch root"
+126 "%s/%s: nicht gelesen: gehrt nicht Ihnen"
+127 "%s/%s: nicht gelesen: anderer Benutzer als Eigentmer hat Schreibrecht"
+128 "%s: nicht gelesen: gehrt weder Ihnen noch root"
+129 "%s: nicht gelesen: gehrt nicht Ihnen"
+130 "%s: nicht gelesen: anderer Benutzer als Eigentmer hat Schreibrecht"
+131 "Keine folgenden Zeilen zum Verbinden"
+132 "Kein input-Map Eintrag"
+133 "Kein command-Map Eintrag"
+134 "Das %s Zeichen kann nicht umgemappt werden"
+135 ""%s" ist momentan nicht gemappt"
+136 "Markennamen mssen einzelne Buchstaben sein"
+137 "%s existiert, nicht geschrieben; verwende ! zum berschreiben"
+138 "Neue .exrc Datei: %s. "
+139 "Zielzeile ist innerhalb des Verschiebebereichs"
+140 "Das open Kommando verlangt, da die open Option gesetzt ist"
+141 "Das open Kommando ist nocht nicht implementiert"
+142 "Rettung dieser Datei nicht mglich"
+143 "Datei gerettet"
+144 "%s wurde in zu viele Dateinamen expandiert"
+145 "Nur regulre Dateien und named pipes knnen gelesen werden"
+146 "%s: Locken zum Lesen war nicht mglich"
+147 "lese ..."
+148 "%s: %lu Zeilen, %lu Zeichen"
+149 "Keine Hintergrundanzeigen vorhanden"
+150 "Das script Kommando ist nur im vi Modus verfgbar"
+151 "Kein Kommando auszufhren"
+152 "shiftwidth Option auf 0 gesetzt"
+153 "Anzahl-berlauf"
+154 "Anzahl-Unterlauf"
+155 "Regulrer Ausdruck angegeben; r Flag bedeutungslos"
+156 "Die #, l und p Flags knnen im vi Modus nicht mit dem c Flag kombiniert werden"
+157 "Keine bereinstimmung gefunden"
+158 "Kein vorhergehender 'tag' angegeben"
+159 "Weniger als %s Eintrge auf dem 'tag'-Stack; verwende :display t[ags]"
+160 "Keine Datei namens %s auf dem 'tag'-Stack; verwende :display t[ags]"
+161 "Drcke Enter um fortzufahren: "
+162 "%s: 'tag' nicht gefunden"
+163 "%s: kaputter 'tag' in %s"
+164 "%s: die Zeilennummer des 'tag' ist hinter dem Dateiende"
+165 "Der 'tag' Stack ist leer"
+166 "%s: Suchmuster nicht gefunden"
+167 "%d weitere Dateien zu editieren"
+168 "Puffer %s ist leer"
+169 "Besttige nderung [n]"
+170 "Unterbrochen."
+171 "Kein vorhergehender Puffer zum Ausfhren"
+172 "Kein vorhergehender regulrer Ausdruck"
+173 "Das Kommando %s verlangt, da bereits eine Datei eingelesen wurde"
+174 "Benutzung: %s"
+175 "Das visual Kommando verlangt da die open Option gesetzt ist"
+177 "Leere Datei"
+178 "Keine vorhergehende F, f, T oder t Suche"
+179 "%s nicht gefunden"
+180 "Keine vorhergehende Datei zu editieren"
+181 "Cursor nicht auf einer Zahl"
+182 "Sich ergebende Zahl ist zu gro"
+183 "Sich ergebende Zahl ist zu klein"
+184 "Kein korrespondierendes Zeichen in dieser Zeile"
+185 "Korrespondierendes Zeichen nicht gefunden"
+186 "Keine Zeichen zu ersetzen"
+187 "Keine andere Anzeige zum Hinschalten"
+188 "Zeichen nach Suchmuster, Zeilenoffset und/oder z Kommando"
+189 "Kein altes Suchmuster"
+190 "Suche zur ursprnglichen Position zurckgekehrt"
+191 "Abkrzung berschreitet Expansionsgrenze: Zeichen weggelassen"
+192 "Nicht erlaubtes Zeichen; maskiere zum Eingeben"
+193 "Bereits am Anfang der Eingabe"
+194 "Keine weiteren Zeichen zu lschen"
+195 "Bewegung hinter das Dateiende"
+196 "Bewegung hinter das Zeilenende"
+197 "Keine Cursorbewegung gemacht"
+198 "Bereits am Dateianfang"
+199 "Bewegung vor den Dateianfang"
+200 "Bereits in der ersten Spalte"
+201 "Puffer sollen vor dem Kommando angegeben werden"
+202 "Bereits am Dateiende"
+203 "Bereits am Zeilenende"
+204 "%s ist kein vi Kommando"
+205 "Benutzung: %s"
+206 "Keine Zeichen zu lschen"
+207 "Das Q Kommando bentigt das ex Terminal Interface"
+208 "Kein Kommando zu wiederholen"
+209 "Die Datei ist leer"
+210 "%s kann nicht als Bewegungskommando verwendet werden"
+211 "Bereits im Kommando-Modus"
+212 " Cursor nicht auf einem Wort"
+214 "Wert der Window Option ist zu gro, max ist %u"
+215 "Anhngen"
+216 "ndern"
+217 "Kommando"
+218 "Einfgen"
+219 "Ersetzen"
+220 "Bewegung hinter das Anzeigenende"
+221 "Bewegung vor den Anzeigenanfang"
+222 "Anzeige mu fr Bildschirmteilung grer als %d sein"
+223 "Keine Hintergrundanzeigen vorhanden"
+224 "Es gibt keine Hintergrundanzeige, die eine Datei namens %s editiert"
+225 "Die einzige dargestellte Anzeige kann nicht in den Hintergrund gebracht werden"
+226 "Die Anzeige kann nur auf %d Zeilen verkleinert werden"
+227 "Die Anzeige kann nicht verkleinert werden"
+228 "Die Anzeige kann nicht vergrert werden"
+230 "Diese Anzeige kann nicht gestopt werden"
+231 "Unterbrochen: umdefinierte Tasten ungltig"
+232 "vi: temporrer Puffer nicht freigegeben"
+233 "Dieses Terminal hat keine %s Taste"
+234 "es kann nur ein Puffer angegeben werden"
+235 "Zahl grer als %lu"
+236 "Unterbrochen"
+237 "Nicht mglich, temporre Datei anzulegen"
+238 "Warnung: %s ist keine regulre Datei"
+239 "%s ist bereits gelockt, Editorsitzung schreibgeschtzt"
+240 "%s: lschen"
+241 "%s: schlieen"
+242 "%s: lschen"
+243 "%s: lschen"
+244 "Datei nicht schreibbar, nicht geschrieben; verwende ! zum berschreiben"
+245 "Datei nicht schreibbar, nicht geschrieben"
+246 "%s existiert, nicht geschrieben; verwende ! zum berschreiben"
+247 "%s existiert, nicht geschrieben"
+248 "Teil der Datei, nicht geschrieben; verwende ! zum berschreiben"
+249 "Teil der Datei, nicht geschrieben"
+250 "%s: Datei wurde spter als diese Kopie verndert; verwende ! zum berschreiben"
+251 "%s: Datei wurde spter als diese Kopie verndert"
+252 "%s: Locken zum Schreiben war nicht mglich"
+253 "schreibe ..."
+254 "%s: WARNUNG: DATEI ABGESCHNITTEN"
+255 "Bereits am ersten 'tag' dieser Gruppe"
+256 "%s: neue Datei: %lu Zeilen, %lu Zeichen"
+257 "%s: %lu Zeilen, %lu Zeichen"
+258 "%s wurde in zu viele Dateinamen expandiert"
+259 "%s: keine regulre Datei"
+260 "%s: gehrt nicht Ihnen"
+261 "%s: anderer Benutzer als Eigentmer hat Zugriff"
+262 "Datei wurde seit dem letzten vollstndigen Schreiben gendert; schreibe oder verwende ! zum ignorieren"
+263 "Datei wurde seit dem letzten vollstndigen Schreiben gendert; schreibe oder verwende :edit! zum ignorieren"
+264 "Datei wurde seit dem letzten vollstndigen Schreiben gendert; schreibe oder verwende ! zum ignorieren"
+265 "Datei ist temporr; beim Verlassen gehen die nderungen verloren"
+266 "Datei ist schreibgeschtzt, nderungen werden nicht automatisch geschrieben"
+267 "Portokollierung neu begonnen"
+268 "besttigen [ynq]"
+269 "Drcke beliebige Taste um fortzufahren"
+270 "Drcke beliebige Taste um fortzufahren [: um weitere Kommandos einzugeben]: "
+271 "Drcke beliebige Taste um fortzufahren [q zum Verlassen]: "
+272 "Diese Form von %s bentigt das ex Terminal-Interface"
+273 "Gehe in ex Eingabe-Modus.\n"
+274 "Kommando schiefgelaufen, noch keine Datei eingelesen"
+275 " weiter?"
+276 "unerwartetes Zeichen - Ereignis"
+277 "unerwartetes Dateiende - Ereignis"
+278 "Keine Position zum Anspringen gefunden"
+279 "unerwartetes Unterbrechungs - Ereignis"
+280 "unerwartetes Verlassen - Ereignis"
+281 "unerwartetes Wiederherstellungs - Ereignis"
+282 "Bereits am letzten 'tag' dieser Gruppe"
+283 "Das %s Kommando bentigt das ex Terminal-Interface"
+284 "Diese Form von %s wird nicht untersttzt wenn die 'secure edit' - Option gesetzt ist"
+285 "unerwartetes Zeichenketten - Ereignis"
+286 "unerwartetes timeout - Ereignis"
+287 "unerwartetes Schreibe - Ereignis"
+289 "Shell Expandierungen nicht untersttzt wenn die 'secure edit' - Option gesetzt ist"
+290 "Das %s Kommando wird nicht untersttzt wenn die 'secure edit' - Option gesetzt ist"
+291 "set: %s kann nicht ausgeschaltet werden"
+292 "Anzeige zu klein."
+293 "angefgt"
+294 "gendert"
+295 "gelscht"
+296 "verbunden"
+297 "verschoben"
+298 "geschoben"
+299 "in Puffer geschrieben"
+300 "Zeile"
+301 "Zeilen"
+302 "Vi wurde nicht mit dem Tcl Interpreter gelinkt"
+303 "Datei wurde seit dem letzten Schreiben verndert."
+304 "Shell Expansion hat nicht geklappt"
+305 "Es ist keine %s Editieroption angegeben"
+306 "Vi wurde nicht mit einem Perl Interpreter geladen"
+307 "Kein ex Kommando auszufhren"
+308 "Drcke <CR> um ein Kommando auszufhren, :q zum verlassen"
+309 "Verwende "cscope help" fr Hilestellung"
+310 "Keine cscope Verbindung aktiv"
+311 "%s: unbekannter Suchtyp: verwende einen aus %s"
+312 "%d: keine solche cscope Verbindung"
+313 "set: die %s Option kann nicht eingeschaltet werden"
+314 "set: die %s Option kann nicht auf 0 gesetzt werden"
+315 "%s: angefgt: %lu Zeilen, %lu Zeichen"
+316 "unerwartetes Grenvernderungs - Ereignis"
+317 "%d Dateien zu edieren"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/german.check	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,43 @@
+Unused message id's (this is okay):
+001
+047
+050
+051
+052
+081
+176
+213
+229
+288
+=========================
+MISSING ERROR MESSAGES (Please add!):
+288
+318
+319
+320
+=========================
+Extra error messages (just delete them):
+280
+287
+=========================
+MESSAGES WITH THE SAME MESSAGE ID's (FIX!):
+=========================
+Duplicate messages, both id and message (this is okay):
+=========================
+Duplicate messages, just message (this is okay):
+   2 %s existiert, nicht geschrieben; verwende ! zum berschreibenX
+   2 %s wurde in zu viele Dateinamen expandiertX
+   2 %s: %lu Zeilen, %lu ZeichenX
+   2 %s: Wiederherstellungsdatei hat falsches FormatX
+   2 Kein altes SuchmusterX
+   2 Keine Hintergrundanzeigen vorhandenX
+   2 Keine Protokollierung aktiv, Rckgngigmachen nicht mglichX
+   2 Puffer %s ist leerX
+   2 gendertX
+   2 kopiere Datei fr Wiederherstellung ...X
+   2 set: %s ist keine Boolsche OptionX
+   2 nderungen nicht wiederherstellbar, falls die Editorsitzung schiefgehtX
+   3 %s: lschenX
+   3 Datei wurde seit dem letzten vollstndigen Schreiben gendert; schreibe oder verwende ! zum ignorierenX
+   4 Benutzung: %sX
+=========================
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/german.owner	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,2 @@
+Bernhard Daeubler	<daeb@physik.uni-ulm.de>
+Joerg Wunsch		<joerg_wunsch@uriah.heep.sax.de>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/ru_SU.KOI8-R	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,267 @@
+VI_MESSAGE_CATALOG
+   X
+   %luX
+    %luX
+    %luX
+   %luX
+   X
+
+ X
+  ,    X
+   X
+  ,    X
+  ,   X
+   X
+%s/%d:    X
+ /  VI   X
+ %s:  X
+ %s:   X
+ %s:     X
+: X
+
+
+
+
+
+
+
+
+
+ %s    X
+   %s  X
+: %sX
+ %s : 'set all'    X
+set: [no]%s    X
+set: %s    X
+
+
+set:   %sX
+set: %s    X
+    ,   %dX
+    ,   %dX
+    ,   %dX
+    ,   %dX
+ lisp X
+  : %sX
+  : %sX
+
+ paragraph       X
+ section       X
+
+
+
+  X
+ %s X
+          X
+     X
+
+  : %sX
+     X
+    : %sX
+
+   %u  X
+   X
+   X
+ X
+%s:     X
+%s:     X
+   %s,    ,  X
+   ,   X
+  ,   X
+-mail  : %sX
+  -  X
+      X
+   X
+   X
+      X
+ X
+
+   X
+ X
+
+%s:      exX
+    X
+%s:   X
+    (%s: %s)X
+: %sX
+%s:    X
+    1X
+    X
+
+
+ ex  :   X
+
+    X
+   X
+\\   /  ?X
+      0X
+ %s X
+  X
+  X
+   X
+ :  %lu   X
+ :  X
+ %s     0X
+ X
+    "word"X
+       X
+      /-,    X
+"%s"   X
+
+    X
+    X
+     X
+ X
+     "!"X
+   %%X
+   #X
+: execl: %sX
+ /: %sX
+      :  !  X
+   X
+ : %sX
+  X
+ %s        v X
+%s/%s:  :     root-X
+%s/%s:  :   X
+%s/%s:  :    ,   X
+%s:  :     root-X
+%s:  :   X
+%s:  :    ,   X
+  X
+  X
+  X
+ %s    X
+"%s"     X
+     X
+%s ,  ;  !  X
+  exrc: %sX
+     X
+ open    openX
+ open  X
+  X
+ X
+%s       X
+
+%s:     X
+
+%s: %lu , %lu X
+  X
+ script     viX
+   X
+ shiftwidth   0X
+ X
+    X
+  :  r  X
+ #, l  p       c   viX
+ X
+ X
+    ,  %s,  :display t[ags]X
+   %s    ;  :display t[ags]X
+
+%s:   X
+%s:    %sX
+
+  X
+%s:    X
+
+ %s X
+
+X
+   X
+   X
+ %s    X
+: %sX
+ visual     openX
+
+ X
+   F, f, T,  tX
+%s  X
+    X
+    X
+   X
+   X
+     X
+   X
+   X
+   X
+    ,   /  zX
+   X
+    X
+
+ ;   X
+   X
+   X
+   X
+   X
+   X
+   X
+    X
+   X
+      X
+   X
+   X
+%s    VIX
+: %sX
+   X
+
+   X
+
+ %s       X
+   X
+
+
+  windows  ,   = %uX
+
+
+
+
+
+    X
+    X
+
+  X
+       %sX
+      X
+   X
+       %d X
+    X
+
+
+
+
+      %sX
+
+
+
+   X
+: %s  X
+%s  ,    X
+%s: X
+%s: X
+%s: X
+%s: X
+   ,  :  !  X
+   ,  X
+%s ,  ;  !  X
+%s ,  X
+ !    X
+ ,   X
+%s:   ,   :  !  X
+%s:   ,   X
+%s:     X
+
+%s: :  X
+
+%s:  : %lu , %lu X
+%s: %lu , %lu X
+%s       X
+%s:  X
+%s:   X
+%s:    X
+     :    !  X
+     :    :edit  X
+     :    !  X
+ :    X
+
+  X
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/ru_SU.KOI8-R.base	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,214 @@
+002 "   "
+003 "   %lu"
+004 "    %lu"
+005 "    %lu"
+006 "   %lu"
+007 "   "
+009 " "
+010 "  ,    "
+011 "   "
+012 "  ,    "
+013 "  ,   "
+014 "   "
+015 "%s/%d:    "
+016 " /  VI   "
+017 " %s:  "
+018 " %s:   "
+019 " %s:     "
+020 ": "
+030 " %s    "
+031 "   %s  "
+032 ": %s"
+033 " %s : 'set all'    "
+034 "set: [no]%s    "
+035 "set: %s    "
+038 "set:   %s"
+039 "set: %s    "
+040 "    ,   %d"
+041 "    ,   %d"
+042 "    ,   %d"
+043 "    ,   %d"
+044 " lisp "
+045 "  : %s"
+046 "  : %s"
+048 " paragraph       "
+049 " section       "
+053 "  "
+054 " %s "
+055 "          "
+056 "     "
+058 "  : %s"
+059 "     "
+060 "    : %s"
+062 "   %u  "
+063 "   "
+064 "   "
+065 " "
+066 "%s:     "
+067 "%s:     "
+068 "   %s,    ,  "
+069 "   ,   "
+070 "  ,   "
+071 "-mail  : %s"
+072 "  -  "
+073 "      "
+074 "   "
+075 "   "
+076 "      "
+077 " "
+079 "   "
+080 " "
+082 "%s:      ex"
+083 "    "
+084 "%s:   "
+085 "    (%s: %s)"
+086 ": %s"
+087 "%s:    "
+088 "    1"
+089 "    "
+092 " ex  :   "
+094 "    "
+095 "   "
+096 "\\   /  ?"
+097 "      0"
+098 " %s "
+099 "  "
+100 "  "
+101 "   "
+102 " :  %lu   "
+103 " :  "
+104 " %s     0"
+105 " "
+106 "    "word""
+107 "       "
+108 "      /-,    "
+109 ""%s"   "
+111 "    "
+112 "    "
+113 "     "
+114 " "
+115 "     "!""
+116 "   %%"
+117 "   #"
+118 ": execl: %s"
+119 " /: %s"
+120 "      :  !  "
+121 "   "
+122 " : %s"
+123 "  "
+124 " %s        v "
+125 "%s/%s:  :     root-"
+126 "%s/%s:  :   "
+127 "%s/%s:  :    ,   "
+128 "%s:  :     root-"
+129 "%s:  :   "
+130 "%s:  :    ,   "
+131 "  "
+132 "  "
+133 "  "
+134 " %s    "
+135 ""%s"     "
+136 "     "
+137 "%s ,  ;  !  "
+138 "  exrc: %s"
+139 "     "
+140 " open    open"
+141 " open  "
+142 "  "
+143 " "
+144 "%s       "
+146 "%s:     "
+148 "%s: %lu , %lu "
+149 "  "
+150 " script     vi"
+151 "   "
+152 " shiftwidth   0"
+153 " "
+154 "    "
+155 "  :  r  "
+156 " #, l  p       c   vi"
+157 " "
+158 " "
+159 "    ,  %s,  :display t[ags]"
+160 "   %s    ;  :display t[ags]"
+162 "%s:   "
+163 "%s:    %s"
+165 "  "
+166 "%s:    "
+168 " %s "
+170 ""
+171 "   "
+172 "   "
+173 " %s    "
+174 ": %s"
+175 " visual     open"
+177 " "
+178 "   F, f, T,  t"
+179 "%s  "
+180 "    "
+181 "    "
+182 "   "
+183 "   "
+184 "     "
+185 "   "
+186 "   "
+187 "   "
+188 "    ,   /  z"
+189 "   "
+190 "    "
+192 " ;   "
+193 "   "
+194 "   "
+195 "   "
+196 "   "
+197 "   "
+198 "   "
+199 "    "
+200 "   "
+201 "      "
+202 "   "
+203 "   "
+204 "%s    VI"
+205 ": %s"
+206 "   "
+208 "   "
+210 " %s       "
+211 "   "
+214 "  windows  ,   = %u"
+220 "    "
+221 "    "
+223 "  "
+224 "       %s"
+225 "      "
+226 "   "
+227 "       %d "
+228 "    "
+233 "      %s"
+237 "   "
+238 ": %s  "
+239 "%s  ,    "
+240 "%s: "
+241 "%s: "
+242 "%s: "
+243 "%s: "
+244 "   ,  :  !  "
+245 "   ,  "
+246 "%s ,  ;  !  "
+247 "%s ,  "
+248 " !    "
+249 " ,   "
+250 "%s:   ,   :  !  "
+251 "%s:   ,   "
+252 "%s:     "
+254 "%s: :  "
+256 "%s:  : %lu , %lu "
+257 "%s: %lu , %lu "
+258 "%s       "
+259 "%s:  "
+260 "%s:   "
+261 "%s:    "
+262 "     :    !  "
+263 "     :    :edit  "
+264 "     :    !  "
+265 " :    "
+267 "  "
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/ru_SU.KOI8-R.check	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,171 @@
+Unused message id's (this is okay):
+001
+008
+021
+022
+023
+024
+025
+026
+027
+028
+029
+036
+037
+047
+050
+051
+052
+057
+061
+078
+081
+090
+091
+093
+110
+145
+147
+161
+164
+167
+169
+176
+191
+207
+209
+212
+213
+215
+216
+217
+218
+219
+222
+229
+230
+231
+232
+234
+235
+236
+253
+255
+266
+=========================
+MISSING ERROR MESSAGES (Please add!):
+008
+021
+022
+023
+024
+025
+026
+027
+028
+029
+036
+037
+057
+061
+078
+090
+091
+093
+110
+145
+147
+161
+164
+167
+169
+191
+207
+209
+212
+215
+216
+217
+218
+219
+222
+230
+231
+232
+234
+235
+236
+253
+255
+266
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+281
+282
+283
+284
+285
+286
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+=========================
+Extra error messages (just delete them):
+=========================
+MESSAGES WITH THE SAME MESSAGE ID's (FIX!):
+=========================
+Duplicate messages, both id and message (this is okay):
+=========================
+Duplicate messages, just message (this is okay):
+   2 %s       X
+   2 %s ,  ;  !  X
+   2 %s: %lu , %lu X
+   2 %s:     X
+   2 set: %s    X
+   2  %s X
+   2      :    !  X
+   2   ,    X
+   3 %s: X
+   3    X
+   4 : %sX
+=========================
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/ru_SU.KOI8-R.owner	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,2 @@
+Andrey A. Chernov <ache@nagual.ru>
+Dima Ruban <dima@rdy.com>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/spanish	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,317 @@
+VI_MESSAGE_CATALOG
+Desbordamiento de longitud de lneaX
+no se puede borrar la lnea %luX
+no se puede aadir la lnea %luX
+no se puede insertar en la lnea %luX
+no se puede guardar la lnea %luX
+no se puede obtener la ltima lneaX
+Error: no se puede recuperar la lnea %luX
+Archivo de logX
+No se realiza log, no se puede deshacerX
+No hay cambios para deshacerX
+No se realiza log, no se puede deshacerX
+No se realiza log, no se puede remontar hacia adelanteX
+No hay cambios para rehacerX
+%s/%d: error de logX
+La entrada y salida estndar de Vi debe ser una terminalX
+Marcar %s: no determinadoX
+Marcar %s: se borr la lneaX
+Marcar %s: la posicin del cursor ya no existeX
+Error: X
+nuevo archivoX
+nombre cambiadoX
+modificadoX
+no modificadoX
+DESTRABADOX
+lectura solamenteX
+lnea %lu de %lu [%ld%%]X
+archivo vacoX
+lnea %luX
+El archivo %s no es un catlogo de mensajesX
+No se puede determinar la opcin por omisin %sX
+Uso: %sX
+determinar: no hay opcin %s: 'determinar todo' establece todos los valores de opcinX
+determinar: [no] hay opcin %s no tiene valorX
+determinar: opcin %s no es booleanoX
+determinar: opcin %s: %sX
+determinar: opcin %s: %s: desbordamiento de valoresX
+determinar: opcin %s: %s es un nmero ilegalX
+determinar: opcin %s no es booleanoX
+Las columnas en pantalla son demasiado pequeas, menos de %dX
+Las columnas en pantalla son demasiado grandes, ms de %dX
+Las lneas en pantalla son demasiado pequeas, menos de %dX
+Las lneas en pantalla son demasiado grandes, ms de %dX
+La opcin lisp no est implementadaX
+mensajes no desconectados: %sX
+mensajes no conectados: %sX
+
+La opcin de prrafo debe estar en dos grupos de caracteresX
+La opcin de seccin debe estar en dos grupos de caracteresX
+
+
+
+El buffer por omisin est vacoX
+El buffer %s est vacoX
+Los archivos con nuevas lneas en el nombre son irrecuperablesX
+Las modificaciones no pueden recuperarse si la sesin fallaX
+Copiando archivo para recuperacin...X
+Preservacin fracasada: %sX
+Las modificaciones no pueden recuperarse si la sesin fallaX
+Archivo de respaldo fracasado: %sX
+Copiando archivo para recuperacin...X
+Informacin sobre identificacin del usuario %u no encontradaX
+No se puede trabar archivo de recuperacinX
+Desbordamiento de buffer de archivo de recuperacinX
+Archivo de recuperacinX
+%s: archivo de recuperacin defectuosoX
+%s: archivo de recuperacin defectuosoX
+No hay archivos denominados %s, que usted pueda leer, para recuperarX
+Existen versiones ms antiguas de este archivo que usted puede recuperarX
+Existen otros archivos que usted puede recuperarX
+no enva email: %sX
+Archivo vaco; no hay nada para buscarX
+Se alcanz el final del archivo sin encontrar el patrnX
+No hay patrn anterior de bsquedaX
+No se encontr el patrnX
+ Se alcanz el principio del archivo sin encontrar el patrnX
+Bsqueda reiniciadaX
+Buscando...X
+No se encontr ningn carcter no imprimibleX
+Nombre de comando desconocidoX
+
+%s: comando no disponible en modalidad exX
+La cuenta no puede ser ceroX
+%s: mala especificacin de lneaX
+Error interno de tabla de sintaxis (%s: %s)X
+Uso: %sX
+%s: buffer temporario no liberadoX
+Desplazamiento de marcador a antes de la lnea 1X
+Desplazamiento de marcador ms all del final del archivoX
+@ con rango que corre cuando se cambia el archivo/la pantallaX
+Comando global/v que corre cuando se cambia el archivo/la pantallaX
+Comando Ex fracasado: comandos pendientes descartadosX
+Comando Ex fracasado: teclas mapeadas descartadasX
+La segunda direccin es ms pequea que la primeraX
+No se suministra nombre de marcaX
+\\ no es seguido por / o ?X
+Referencia a un nmero de lnea menor que 0X
+El comando %s es desconocidoX
+Desbordamiento de valor de direccinX
+Subdesbordamiento de valor de direccinX
+Combinacin de direccin ilegalX
+Direccin ilegal: slo %lu lneas en el archivoX
+Direccin ilegal: el archivo est vacoX
+El comando %s no permite una direccin de 0X
+No hay abreviaturas para visualizarX
+Las abreviaturas deben terminar con un carcter de \"palabra\" X
+Las abreviaturas no pueden contener tabs o espaciosX
+Las abreviaturas no pueden mezclar caracteres palabra/no-palabra, salvo al finalX
+\"%s\" no es una abreviaturaX
+Comando Vi fracasado: teclas mapeadas descartadasX
+No hay ms archivos para editarX
+No hay archivos anteriores para editarX
+No hay archivos anteriores para rebobinarX
+No hay lista de archivos para visualizarX
+No hay un comando anterior para reemplazar a \"!\"X
+No hay nombre de archivo para sustituir por %%X
+No hay nombre de archivo para sustituir por #X
+Error: execl: %sX
+Error de E/S: %sX
+Archivo modificado desde la ltima escritura completa; escribir o usar ! para alterarX
+No se puede encontrar la ubicacin del directorio inicialX
+Nuevo directorio actual: %sX
+No hay buffers sueltos para visualizarX
+El comando %s no puede usarse como parte de un comando global o vX
+%s/%s: sin fuente: no le pertenece a usted o a razX
+%s/%s: sin fuente: no le pertenece a ustedX
+%s/%s: sin fuente: puede ser escrito por un usuario que no sea el propietarioX
+%s: sin fuente: no le pertenece a usted o a razX
+%s: sin fuente: no le pertenece a ustedX
+%s: sin fuente: puede ser escrito por un usuario que no sea el propietarioX
+No hay lneas siguientes para unirX
+No hay anotaciones de mapa de entradaX
+No hay anotaciones de mapa de comandoX
+El carcter %s no puede remapearseX
+\"%s\" no est mapeado actualmenteX
+Marca de nombres debe ser un slo carcterX
+%s existe, no est escrito; usar ! para alterarX
+Nuevo archivo exrc: %sX
+La lnea de destino se encuentra dentro del rango de movimientoX
+El comando abierto requiere que se determine la opcin abiertaX
+El comando abierto no se ha implementado anX
+No es posible preservar este archivoX
+Archivo preservadoX
+%s: expandido a demasiados nombres de archivoX
+Slo pueden leerse los archivos regulares y los conductos nombradosX
+%s: traba de lectura no disponibleX
+Leyendo...X
+%s: %lu lneas, %lu caracteresX
+No hay pantallas de fondo para mostrarX
+El comando de script slo est disponible en modalidad viX
+No hay comando para ejecutarX
+opcin de ancho de desplazamiento en 0X
+Desbordamiento de cuentaX
+Subdesbordamiento de cuentaX
+Expresin regular especificada; marcador r no tiene significadoX
+Los marcadores #, l y p no pueden combinarse con el marcador c en la modalidad viX
+No se encontr coincidenciaX
+No se ingres un identificador anteriorX
+Se encontraron menos de %s anotaciones en la pila de identificadores; usar :visualizar i[dentificadores]X
+No hay archivo %s en la pila de identificadores al que se pueda volver; usar :visualizar i[dentificadores]" 
+Presionar Intro para continuar: X
+%s: no se encontr el identificadorX
+%s: identificador corrompido en %sX
+%s: el nmero de lnea del identificador es posterior al final del archivoX
+La pila de identificadores est vacaX
+%s: patrn de bsqueda no encontradoX
+%d archivos ms para editarX
+El buffer %s est vacoX
+Confirmar cambio? [n]X
+InterrumpidoX
+No hay buffer anterior para ejecutarX
+No hay expresin regular anteriorX
+El comando %s requiere que se haya ledo un archivoX
+Uso: %sX
+El comando visual requiere que se determine la opcin abiertaX
+
+Archivo vacoX
+No hay bsqueda F, f, T o t anteriorX
+%s no se encontrX
+No hay archivo anterior para editarX
+El cursor no est en un nmeroX
+El nmero resultante es demasiado grandeX
+ El nmero resultante es demasiado pequeoX
+No hay carcter coincidente en esta lneaX
+No se encontr un carcter coincidenteX
+No hay caracteres para reemplazarX
+No hay otra pantalla a la que se pueda pasarX
+Caracteres despus de cadena de bsqueda, desplazamiento de lnea y/o comando zX
+No hay patrn anterior de bsquedaX
+Bsqueda vuelve a la posicin inicialX
+Se super el lmite de expansin de abreviatura: se descartaron caracteresX
+Carcter ilegal; mencionar para entrarX
+Ya se encuentra al principio de la insercinX
+No hay ms caracteres para borrarX
+Movimiento ms all del final del archivoX
+Movimiento ms all del final de la lneaX
+No hay movimiento del cursorX
+Ya se encuentra al principio del archivoX
+Movimiento ms all del principio del archivoX
+Ya se encuentra en la primera columnaX
+Los buffers deben especificarse antes del comandoX
+Ya se encuentra al final del archivoX
+Ya se encuentra al final de la lneaX
+%s no es un comando viX
+Uso: %sX
+No hay caracteres para borrarX
+El comando Q requiere la interfase de terminal exX
+No hay comando para repetirX
+El archivo est vacoX
+%s no puede usarse como comando de movimientoX
+Ya se encuentra en modalidad de comandoX
+El cursor no se encuentra en una palabraX
+
+El valor de opcin de Windows es demasiado grande, el mx. es %uX
+AadirX
+CambiarX
+ComandoX
+InsertarX
+ReemplazarX
+El movimiento va ms all del final de la pantallaX
+El movimiento va ms all del principio de la pantallaX
+La pantalla debe tener ms de %d lneas para dividirseX
+No hay pantallas de fondoX
+No hay pantalla de fondo editando un archivo denominado %sX
+No se puede poner fondo a la nica pantalla que se visualizaX
+La pantalla slo puede reducirse a %d hilerasX
+La pantalla no puede reducirseX
+La pantalla no puede aumentarseX
+
+Esta pantalla no puede suspenderseX
+Interrumpido: teclas mapeadas descartadasX
+vi: buffer temporario no liberadoX
+Esta terminal no tiene tecla %sX
+Slo un buffer puede especificarseX
+Nmero mayor que %luX
+InterrumpidoX
+No se puede crear archivo temporarioX
+Advertencia: %s no es un archivo regularX
+%s ya se encuentra trabado, la sesin es de lectura solamenteX
+%s: eliminarX
+%s: cerrarX
+%s: eliminarX
+%s: eliminarX
+Archivo de lectura solamente, no escrito; usar ! para alterarX
+ Archivo de lectura solamente, no escritoX
+%s existe, no escrito; usar ! para alterarX
+%s existe, no escritoX
+Archivo parcial, no escrito; usar ! para alterarX
+Archivo parcial, no escritoX
+%s: archivo modificado ms recientemente que esta copia; usar ! para alterarX
+%s: archivo modificado ms recientemente que esta copiaX
+%s: la traba de escritura no estaba disponibleX
+Escribiendo...X
+%s: ADVERTENCIA: ARCHIVO TRUNCADOX
+Ya se encuentra en el primer identificador de este grupoX
+%s: nuevo archivo: %lu lneas, %lu caracteresX
+%s: %lu lneas, %lu caracteresX
+%s expandido a demasiados nombres de archivosX
+%s: no es un archivo regularX
+%s: no le perteneceX
+%s: accesible por un usuario que no sea el propietarioX
+Archivo modificado desde la ltima escritura completa; escribir o usar ! para alterarX
+Archivo modificado desde la ltima escritura completa; escribir o usar :editar! para alterarX
+Archivo modificado desde la ltima escritura completa; escribir o usar ! para alterarX
+El archivo es temporario; al salir se descartarn las modificacionesX
+Archivo de lectura solamente, las modificaciones no se autoescribenX
+Se reinici el logX
+confirmar? [snq]X
+Presionar cualquier tecla para continuar: X
+Presionar cualquier tecla para continuar [: para ingresar ms comandos ex]: X
+Presionar cualquier tecla para continuar [q para salir]: X
+Esta forma de %s requiere la interfase terminal exX
+Ingresando en la modalidad de entrada ex.X
+Comando fracasado, no hay archivo ledo aun.X
+ cont?X
+Evento inesperado de carcterX
+Evento inesperado de final de archivoX
+No hay coincidencias para consultaX
+Evento inesperado de interrupcinX
+Evento inesperado de salidaX
+Evento inesperado de repinturaX
+Ya se encuentra en el ltimo identificador de este grupoX
+El comando %s requiere la interfase terminal exX
+Esta forma de %s no se encuentra soportada cuando se determina la opcin de edicin seguraX
+Evento inesperado de cadenaX
+Evento inesperado de tiempo excedidoX
+Evento inesperado de escrituraX
+
+Las expansiones de shell no se encuentran soportadas cuando se determina la opcin de edicin seguraX
+El comando %s no se encuentra soportado cuando se determina la opcin de edicin seguraX
+determinar: la opcin %s puede no estar desconectadaX
+El monitor es demasiado pequeo.X
+agregadoX
+cambiadoX
+borradoX
+unidoX
+movidoX
+desplazadoX
+arrancadoX
+lneaX
+lneasX
+Vi no se carg con un intrprete TclX
+Archivo modificado desde la ltima escritura.X
+Expansin de shell fracasadaX
+No hay opcin de edicin %s especificadaX
+Vi no se carg con un intrprete PerlX
+No hay comando ex para ejecutarX
+Ingresar <CR> para ejecutar un comando, :q para salirX
+Usar \"cscope ayuda\" para obtener ayudaX
+No hay conexiones cscope corriendoX
+%s: tipo de bsqueda desconocido: usar uno de %sX
+%d: no existe esta sesin cscopeX
+determinar: la opcin %s no puede conectarse nuncaX
+determinar: la opcin %s no puede determinarse nunca en 0X
+%s: aadido: %lu lneas, %lu caracteresX
+Evento inesperado de modificacin de tamaoX
+%d archivos para editarX
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/spanish.base	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,309 @@
+002 "Desbordamiento de longitud de lnea"
+003 "no se puede borrar la lnea %lu"
+004 "no se puede aadir la lnea %lu"
+005 "no se puede insertar en la lnea %lu"
+006 "no se puede guardar la lnea %lu"
+007 "no se puede obtener la ltima lnea"
+008 "Error: no se puede recuperar la lnea %lu"
+009 "Archivo de log"
+010 "No se realiza log, no se puede deshacer"
+011 "No hay cambios para deshacer"
+012 "No se realiza log, no se puede deshacer"
+013 "No se realiza log, no se puede remontar hacia adelante"
+014 "No hay cambios para rehacer"
+015 "%s/%d: error de log"
+016 "La entrada y salida estndar de Vi debe ser una terminal"
+017 "Marcar %s: no determinado"
+018 "Marcar %s: se borr la lnea"
+019 "Marcar %s: la posicin del cursor ya no existe"
+020 "Error: "
+021 "nuevo archivo"
+022 "nombre cambiado"
+023 "modificado"
+024 "no modificado"
+025 "DESTRABADO"
+026 "lectura solamente"
+027 "lnea %lu de %lu [%ld%%]"
+028 "archivo vaco"
+029 "lnea %lu"
+030 "El archivo %s no es un catlogo de mensajes"
+031 "No se puede determinar la opcin por omisin %s"
+032 "Uso: %s"
+033 "determinar: no hay opcin %s: 'determinar todo' establece todos los valores de opcin"
+034 "determinar: [no] hay opcin %s no tiene valor"
+035 "determinar: opcin %s no es booleano"
+036 "determinar: opcin %s: %s"
+037 "determinar: opcin %s: %s: desbordamiento de valores"
+038 "determinar: opcin %s: %s es un nmero ilegal"
+039 "determinar: opcin %s no es booleano"
+040 "Las columnas en pantalla son demasiado pequeas, menos de %d"
+041 "Las columnas en pantalla son demasiado grandes, ms de %d"
+042 "Las lneas en pantalla son demasiado pequeas, menos de %d"
+043 "Las lneas en pantalla son demasiado grandes, ms de %d"
+044 "La opcin lisp no est implementada"
+045 "mensajes no desconectados: %s"
+046 "mensajes no conectados: %s"
+048 "La opcin de prrafo debe estar en dos grupos de caracteres"
+049 "La opcin de seccin debe estar en dos grupos de caracteres"
+053 "El buffer por omisin est vaco"
+054 "El buffer %s est vaco"
+055 "Los archivos con nuevas lneas en el nombre son irrecuperables"
+056 "Las modificaciones no pueden recuperarse si la sesin falla"
+057 "Copiando archivo para recuperacin..."
+058 "Preservacin fracasada: %s"
+059 "Las modificaciones no pueden recuperarse si la sesin falla"
+060 "Archivo de respaldo fracasado: %s"
+061 "Copiando archivo para recuperacin..."
+062 "Informacin sobre identificacin del usuario %u no encontrada"
+063 "No se puede trabar archivo de recuperacin"
+064 "Desbordamiento de buffer de archivo de recuperacin"
+065 "Archivo de recuperacin"
+066 "%s: archivo de recuperacin defectuoso"
+067 "%s: archivo de recuperacin defectuoso"
+068 "No hay archivos denominados %s, que usted pueda leer, para recuperar"
+069 "Existen versiones ms antiguas de este archivo que usted puede recuperar"
+070 "Existen otros archivos que usted puede recuperar"
+071 "no enva email: %s"
+072 "Archivo vaco; no hay nada para buscar"
+073 "Se alcanz el final del archivo sin encontrar el patrn"
+074 "No hay patrn anterior de bsqueda"
+075 "No se encontr el patrn"
+076 " Se alcanz el principio del archivo sin encontrar el patrn"
+077 "Bsqueda reiniciada"
+078 "Buscando..."
+079 "No se encontr ningn carcter no imprimible"
+080 "Nombre de comando desconocido"
+082 "%s: comando no disponible en modalidad ex"
+083 "La cuenta no puede ser cero"
+084 "%s: mala especificacin de lnea"
+085 "Error interno de tabla de sintaxis (%s: %s)"
+086 "Uso: %s"
+087 "%s: buffer temporario no liberado"
+088 "Desplazamiento de marcador a antes de la lnea 1"
+089 "Desplazamiento de marcador ms all del final del archivo"
+090 "@ con rango que corre cuando se cambia el archivo/la pantalla"
+091 "Comando global/v que corre cuando se cambia el archivo/la pantalla"
+092 "Comando Ex fracasado: comandos pendientes descartados"
+093 "Comando Ex fracasado: teclas mapeadas descartadas"
+094 "La segunda direccin es ms pequea que la primera"
+095 "No se suministra nombre de marca"
+096 "\\ no es seguido por / o ?"
+097 "Referencia a un nmero de lnea menor que 0"
+098 "El comando %s es desconocido"
+099 "Desbordamiento de valor de direccin"
+100 "Subdesbordamiento de valor de direccin"
+101 "Combinacin de direccin ilegal"
+102 "Direccin ilegal: slo %lu lneas en el archivo"
+103 "Direccin ilegal: el archivo est vaco"
+104 "El comando %s no permite una direccin de 0"
+105 "No hay abreviaturas para visualizar"
+106 "Las abreviaturas deben terminar con un carcter de \"palabra\" "
+107 "Las abreviaturas no pueden contener tabs o espacios"
+108 "Las abreviaturas no pueden mezclar caracteres palabra/no-palabra, salvo al final"
+109 "\"%s\" no es una abreviatura"
+110 "Comando Vi fracasado: teclas mapeadas descartadas"
+111 "No hay ms archivos para editar"
+112 "No hay archivos anteriores para editar"
+113 "No hay archivos anteriores para rebobinar"
+114 "No hay lista de archivos para visualizar"
+115 "No hay un comando anterior para reemplazar a \"!\""
+116 "No hay nombre de archivo para sustituir por %%"
+117 "No hay nombre de archivo para sustituir por #"
+118 "Error: execl: %s"
+119 "Error de E/S: %s"
+120 "Archivo modificado desde la ltima escritura completa; escribir o usar ! para alterar"
+121 "No se puede encontrar la ubicacin del directorio inicial"
+122 "Nuevo directorio actual: %s"
+123 "No hay buffers sueltos para visualizar"
+124 "El comando %s no puede usarse como parte de un comando global o v"
+125 "%s/%s: sin fuente: no le pertenece a usted o a raz"
+126 "%s/%s: sin fuente: no le pertenece a usted"
+127 "%s/%s: sin fuente: puede ser escrito por un usuario que no sea el propietario"
+128 "%s: sin fuente: no le pertenece a usted o a raz"
+129 "%s: sin fuente: no le pertenece a usted"
+130 "%s: sin fuente: puede ser escrito por un usuario que no sea el propietario"
+131 "No hay lneas siguientes para unir"
+132 "No hay anotaciones de mapa de entrada"
+133 "No hay anotaciones de mapa de comando"
+134 "El carcter %s no puede remapearse"
+135 "\"%s\" no est mapeado actualmente"
+136 "Marca de nombres debe ser un slo carcter"
+137 "%s existe, no est escrito; usar ! para alterar"
+138 "Nuevo archivo exrc: %s"
+139 "La lnea de destino se encuentra dentro del rango de movimiento"
+140 "El comando abierto requiere que se determine la opcin abierta"
+141 "El comando abierto no se ha implementado an"
+142 "No es posible preservar este archivo"
+143 "Archivo preservado"
+144 "%s: expandido a demasiados nombres de archivo"
+145 "Slo pueden leerse los archivos regulares y los conductos nombrados"
+146 "%s: traba de lectura no disponible"
+147 "Leyendo..."
+148 "%s: %lu lneas, %lu caracteres"
+149 "No hay pantallas de fondo para mostrar"
+150 "El comando de script slo est disponible en modalidad vi"
+151 "No hay comando para ejecutar"
+152 "opcin de ancho de desplazamiento en 0"
+153 "Desbordamiento de cuenta"
+154 "Subdesbordamiento de cuenta"
+155 "Expresin regular especificada; marcador r no tiene significado"
+156 "Los marcadores #, l y p no pueden combinarse con el marcador c en la modalidad vi"
+157 "No se encontr coincidencia"
+158 "No se ingres un identificador anterior"
+159 "Se encontraron menos de %s anotaciones en la pila de identificadores; usar :visualizar i[dentificadores]"
+160 "No hay archivo %s en la pila de identificadores al que se pueda volver; usar :visualizar i[dentificadores]" 
+161 "Presionar Intro para continuar: "
+162 "%s: no se encontr el identificador"
+163 "%s: identificador corrompido en %s"
+164 "%s: el nmero de lnea del identificador es posterior al final del archivo"
+165 "La pila de identificadores est vaca"
+166 "%s: patrn de bsqueda no encontrado"
+167 "%d archivos ms para editar"
+168 "El buffer %s est vaco"
+169 "Confirmar cambio? [n]"
+170 "Interrumpido"
+171 "No hay buffer anterior para ejecutar"
+172 "No hay expresin regular anterior"
+173 "El comando %s requiere que se haya ledo un archivo"
+174 "Uso: %s"
+175 "El comando visual requiere que se determine la opcin abierta"
+177 "Archivo vaco"
+178 "No hay bsqueda F, f, T o t anterior"
+179 "%s no se encontr"
+180 "No hay archivo anterior para editar"
+181 "El cursor no est en un nmero"
+182 "El nmero resultante es demasiado grande"
+183 " El nmero resultante es demasiado pequeo"
+184 "No hay carcter coincidente en esta lnea"
+185 "No se encontr un carcter coincidente"
+186 "No hay caracteres para reemplazar"
+187 "No hay otra pantalla a la que se pueda pasar"
+188 "Caracteres despus de cadena de bsqueda, desplazamiento de lnea y/o comando z"
+189 "No hay patrn anterior de bsqueda"
+190 "Bsqueda vuelve a la posicin inicial"
+191 "Se super el lmite de expansin de abreviatura: se descartaron caracteres"
+192 "Carcter ilegal; mencionar para entrar"
+193 "Ya se encuentra al principio de la insercin"
+194 "No hay ms caracteres para borrar"
+195 "Movimiento ms all del final del archivo"
+196 "Movimiento ms all del final de la lnea"
+197 "No hay movimiento del cursor"
+198 "Ya se encuentra al principio del archivo"
+199 "Movimiento ms all del principio del archivo"
+200 "Ya se encuentra en la primera columna"
+201 "Los buffers deben especificarse antes del comando"
+202 "Ya se encuentra al final del archivo"
+203 "Ya se encuentra al final de la lnea"
+204 "%s no es un comando vi"
+205 "Uso: %s"
+206 "No hay caracteres para borrar"
+207 "El comando Q requiere la interfase de terminal ex"
+208 "No hay comando para repetir"
+209 "El archivo est vaco"
+209 "El archivo est vaco"
+210 "%s no puede usarse como comando de movimiento"
+211 "Ya se encuentra en modalidad de comando"
+212 "El cursor no se encuentra en una palabra"
+214 "El valor de opcin de Windows es demasiado grande, el mx. es %u"
+215 "Aadir"
+216 "Cambiar"
+217 "Comando"
+218 "Insertar"
+219 "Reemplazar"
+220 "El movimiento va ms all del final de la pantalla"
+221 "El movimiento va ms all del principio de la pantalla"
+222 "La pantalla debe tener ms de %d lneas para dividirse"
+223 "No hay pantallas de fondo"
+224 "No hay pantalla de fondo editando un archivo denominado %s"
+225 "No se puede poner fondo a la nica pantalla que se visualiza"
+226 "La pantalla slo puede reducirse a %d hileras"
+227 "La pantalla no puede reducirse"
+228 "La pantalla no puede aumentarse"
+230 "Esta pantalla no puede suspenderse"
+231 "Interrumpido: teclas mapeadas descartadas"
+232 "vi: buffer temporario no liberado"
+233 "Esta terminal no tiene tecla %s"
+234 "Slo un buffer puede especificarse"
+235 "Nmero mayor que %lu"
+236 "Interrumpido"
+237 "No se puede crear archivo temporario"
+238 "Advertencia: %s no es un archivo regular"
+239 "%s ya se encuentra trabado, la sesin es de lectura solamente"
+240 "%s: eliminar"
+241 "%s: cerrar"
+242 "%s: eliminar"
+243 "%s: eliminar"
+244 "Archivo de lectura solamente, no escrito; usar ! para alterar"
+245 " Archivo de lectura solamente, no escrito"
+246 "%s existe, no escrito; usar ! para alterar"
+247 "%s existe, no escrito"
+248 "Archivo parcial, no escrito; usar ! para alterar"
+249 "Archivo parcial, no escrito"
+250 "%s: archivo modificado ms recientemente que esta copia; usar ! para alterar"
+251 "%s: archivo modificado ms recientemente que esta copia"
+252 "%s: la traba de escritura no estaba disponible"
+253 "Escribiendo..."
+254 "%s: ADVERTENCIA: ARCHIVO TRUNCADO"
+255 "Ya se encuentra en el primer identificador de este grupo"
+256 "%s: nuevo archivo: %lu lneas, %lu caracteres"
+257 "%s: %lu lneas, %lu caracteres"
+258 "%s expandido a demasiados nombres de archivos"
+259 "%s: no es un archivo regular"
+260 "%s: no le pertenece"
+261 "%s: accesible por un usuario que no sea el propietario"
+262 "Archivo modificado desde la ltima escritura completa; escribir o usar ! para alterar"
+263 "Archivo modificado desde la ltima escritura completa; escribir o usar :editar! para alterar"
+264 "Archivo modificado desde la ltima escritura completa; escribir o usar ! para alterar"
+265 "El archivo es temporario; al salir se descartarn las modificaciones"
+266 "Archivo de lectura solamente, las modificaciones no se autoescriben"
+267 "Se reinici el log"
+268 "confirmar? [snq]"
+269 "Presionar cualquier tecla para continuar: "
+270 "Presionar cualquier tecla para continuar [: para ingresar ms comandos ex]: "
+271 "Presionar cualquier tecla para continuar [q para salir]: "
+272 "Esta forma de %s requiere la interfase terminal ex"
+273 "Ingresando en la modalidad de entrada ex."
+274 "Comando fracasado, no hay archivo ledo aun."
+275 " cont?"
+276 "Evento inesperado de carcter"
+277 "Evento inesperado de final de archivo"
+278 "No hay coincidencias para consulta"
+279 "Evento inesperado de interrupcin"
+280 "Evento inesperado de salida"
+281 "Evento inesperado de repintura"
+282 "Ya se encuentra en el ltimo identificador de este grupo"
+283 "El comando %s requiere la interfase terminal ex"
+284 "Esta forma de %s no se encuentra soportada cuando se determina la opcin de edicin segura"
+285 "Evento inesperado de cadena"
+286 "Evento inesperado de tiempo excedido"
+287 "Evento inesperado de escritura"
+289 "Las expansiones de shell no se encuentran soportadas cuando se determina la opcin de edicin segura"
+290 "El comando %s no se encuentra soportado cuando se determina la opcin de edicin segura"
+291 "determinar: la opcin %s puede no estar desconectada"
+292 "El monitor es demasiado pequeo."
+293 "agregado"
+294 "cambiado"
+295 "borrado"
+296 "unido"
+297 "movido"
+298 "desplazado"
+299 "arrancado"
+300 "lnea"
+301 "lneas"
+302 "Vi no se carg con un intrprete Tcl"
+303 "Archivo modificado desde la ltima escritura."
+304 "Expansin de shell fracasada"
+304 "Expansin de shell fracasada"
+305 "No hay opcin de edicin %s especificada"
+306 "Vi no se carg con un intrprete Perl"
+307 "No hay comando ex para ejecutar"
+308 "Ingresar <CR> para ejecutar un comando, :q para salir"
+309 "Usar \"cscope ayuda\" para obtener ayuda"
+310 "No hay conexiones cscope corriendo"
+311 "%s: tipo de bsqueda desconocido: usar uno de %s"
+312 "%d: no existe esta sesin cscope"
+313 "determinar: la opcin %s no puede conectarse nunca"
+314 "determinar: la opcin %s no puede determinarse nunca en 0"
+315 "%s: aadido: %lu lneas, %lu caracteres"
+316 "Evento inesperado de modificacin de tamao"
+317 "%d archivos para editar"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/spanish.check	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,41 @@
+Unused message id's (this is okay):
+001
+047
+050
+051
+052
+081
+176
+229
+288
+=========================
+MISSING ERROR MESSAGES (Please add!):
+288
+318
+319
+320
+=========================
+Extra error messages (just delete them):
+280
+287
+=========================
+MESSAGES WITH THE SAME MESSAGE ID's (FIX!):
+=========================
+Duplicate messages, both id and message (this is okay):
+   2 209 "El archivo est vaco"
+   2 304 "Expansin de shell fracasada"
+=========================
+Duplicate messages, just message (this is okay):
+   2 %s: %lu lneas, %lu caracteresX
+   2 %s: archivo de recuperacin defectuosoX
+   2 Copiando archivo para recuperacin...X
+   2 El buffer %s est vacoX
+   2 InterrumpidoX
+   2 Las modificaciones no pueden recuperarse si la sesin fallaX
+   2 No hay patrn anterior de bsquedaX
+   2 No se realiza log, no se puede deshacerX
+   2 determinar: opcin %s no es booleanoX
+   3 %s: eliminarX
+   3 Archivo modificado desde la ltima escritura completa; escribir o usar ! para alterarX
+   4 Uso: %sX
+=========================
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/spell.ok	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,19 @@
+ARGMAX
+LC
+NL
+XXXX
+arg1
+arg2
+chys
+english
+english.base
+german.base
+langauge
+msg
+msg.c
+msgcat
+msgq
+nvi
+nvi's
+pathname
+sp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/swedish	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,317 @@
+VI_MESSAGE_CATALOG
+Fr lnga raderX
+kan inte ta bort rad %luX
+kan inte lgga till p rad %luX
+kan inte stta in p rad %luX
+kan inte lagra rad %luX
+kan inte hmta sista radenX
+Fel: kan inte hmta rad %luX
+LoggningsfilX
+Loggning utfrs inte, ngra r inte mjligtX
+Inga ndringar att ngraX
+Loggning utfrs inte, ngra r inte mjligtX
+Loggning utfrs inte, ngra ngra r inte mjligtX
+Inga ndringar att tergraX
+%s/%d: fel vid loggningX
+Vi:s standard in och ut mste g till en terminalX
+Markering %s: inte sattX
+Markering %s: raden har tagits bortX
+Markering %s: markrpositionen finns inte lngreX
+Fel: X
+ny filX
+namnet ndradesX
+ndradX
+ofrndradX
+OLSTX
+inte skrivbarX
+rad %lu av %lu [%ld%%]X
+tom filX
+rad %luX
+Filen %s r ingen meddelandekatalogX
+Kan inte stta standardvrde fr %s flagganX
+Anvndning: %sX
+set: %s r en oknd flagga: "set all" visar alla flaggorX
+set: [no]%s flaggan kan inte ges ett vrdeX
+set: %s flaggan r inte boleanskX
+set: %s flaggan: %sX
+set: %s flaggan: %s: fr stort vrdeX
+set: %s flaggan: %s r ett otilltet talX
+set: %s flaggan r inte boleanskX
+Fnsterkolumnerna r fr f, mindre n %dX
+Fnsterkolumnerna r fr mnga, fler n %dX
+Fnsterraderna r fr f, mindre n %dX
+Fnsterraderna r fr mnga, fler n %dX
+Lisp flaggan r inte implementeradX
+meddelanden r inte avslagna: %sX
+meddelanden r inte pslagna: %sX
+
+Paragraph flaggan mste ges i teckengrupper om tvX
+Section flaggan mste ges i teckengrupper om tvX
+
+
+
+Standardbufferten r tomX
+Buffer %s r tomX
+Filer med radmatning i namnet kan inte terskapasX
+ndringar kan inte terskapas om programmet krascharX
+Kopierar filen fr terskapning...X
+Skerhetskopiering misslyckades: %sX
+ndringar kan inte terskapas om programmet krascharX
+Misslyckades att skerhetskopiera filen: %sX
+Kopierar filen fr terskapning...X
+Kan inte hitta information om anvndaridentitet %uX
+Kan inte lsa terskapningsfilenX
+terskapningsfilens buffer verskrivenX
+terskapningsfilX
+%s: terskapningsfilen r korruptX
+%s: terskapningsfilen r korruptX
+Det finns ingen fil %s, lsbar av dig, att terskapaX
+Det finns ldre versioner av denna fil som du kan terskapaX
+Det finns andra filer du kan terskapaX
+skickar inte email: %sX
+Filen r tom; inget att ska iX
+Kom till slutet p filen utan att hitta skstrngenX
+Ingen tidigare skstrngX
+Hittar inte skstrngenX
+Kom till brjan av filen utan att hitta skstrngenX
+Skningen slog runtX
+Sker...X
+Inga icke skrivbara tecken funnaX
+Oknt kommandonamnX
+
+%s: kommandot r inte tillgngligt i "ex" lgeX
+Talet fr inte vara nollX
+%s: Ogiltig radspecifikationX
+Fel i intern syntaxtabell (%s: %s)X
+Anvndning: %sX
+%s: temporrbuffert inte frislpptX
+Offset r fre rad 1X
+Offset r efter slutet p filenX
+@ med intervall exekverades nr filen/fnstret ndradesX
+Global/v kommando exekverades nr filen/fnstret ndradesX
+Ex kommando misslyckades: efterfljande kommandon ignoreradeX
+Ex kommando misslyckades: omdefinierade tangenter ignoreradeX
+Den andra adressen r mindre n den frstaX
+Inget namn p markering givetX
+\\ fljs inte av / eller ?X
+Referens till ett radnummer mindre n 0X
+%s kommandot r inte kntX
+Vrdet p adressen r fr stortX
+Vrdet p adressen r fr litetX
+Otillten adresskombinationX
+Otillten adress: bara %lu rader finns i filenX
+Otillten adress: filen r tomX
+%s kommandot tillter inte en adress som r 0X
+Inga frkortningar att visaX
+Frkortningar mste sluta med ett "ord" teckenX
+Frkortningar kan inte innehlla mellanslag eller tabX
+Frkortningar kan inte blanda "ord"/"icke ord" tecken, utom i slutetX
+"%s" r ingen frkortningX
+Vi kommando misslyckades: omdefinierade tangenter ignoreradeX
+Inga fler filer att editeraX
+Inga tidigare filer att editeraX
+Inga tidigare filer att spela tillbakaX
+Ingen fillista att visaX
+Inget tidigare kommando att erstta "!" medX
+Inget filnamn att erstta %% medX
+Inget filnamn att erstta # medX
+Fel: execl: %sX
+I/O fel: %sX
+Filen ndrad efter sista skrivning; spara eller anvnd !X
+Kan inte hitta hemkatalogX
+Ny nuvarande katalog: %sX
+Inga "cut buffers" att visaX
+%s kommandot kan inte anvnds som del i ett "global" eller v kommandoX
+%s/%s: inte lst: varken du eller root r gareX
+%s/%s: inte lst: du r inte gareX
+%s/%s: inte lst: skrivbar av annan n garenX
+%s: inte lst: varken du eller root r gareX
+%s: inte lst: du r inte gareX
+%s: inte lst: skrivbar av annan n garenX
+Ingen nsta rad att stta ihop medX
+Det finns inget i inmatningsmappningenX
+Det finns inget i kommandomappningenX
+%s tecknet kan inte mappas omX
+"%s" r inte ommappat just nuX
+Namn p markeringar mste vara ett tecken lngaX
+%s finns, inget sparat; anvnd ! fr att sparaX
+Ny exrc fil: %sX
+Mlraden ligger inne i omrdet som ska flyttasX
+Open kommandot krver att open flaggan r sattX
+Open kommandot r inte implementerat nnuX
+Skerhetskopiering av filen r inte mjligtX
+Filen skerhetskopieradX
+%s expanderade till fr mnga filnamnX
+Endast vanliga filer och namngivna rr kan lsasX
+%s: lslset r otillgngligtX
+Lser...X
+%s: %lu rader, %lu teckenX
+Inga bakgrundsfnster att visaX
+Script kommandot finns bara i "vi" lgeX
+Inget kommando att exekveraX
+shiftwidth flaggan satt till 0X
+Talet har fr stort vrdeX
+Talet har fr litet vrdeX
+Reguljrt uttryck r givet; r flaggan r meningslsX
+#, l och p flaggorna kan inte kombineras med c flaggan i "vi" lgeX
+Ingen matchande text funnenX
+Inget tidigare mrke har givitsX
+Det r frre n %s mrken i stacken; anvnd :display t[ags]X
+Det finns ingen fil %s i mrkesstacken; anvnd :display t[ags]X
+Tryck Enter fr att fortstta: X
+%s: mrke inte funnetX
+%s: korrupt mrke i %sX
+%s: mrkets radnummer r bortom filslutetX
+Mrkesstacken r tomX
+%s: skstrngen inte funnenX
+%d filer till att editeraX
+Buffert %s r tomX
+Bekrfta ndring? [n]X
+AvbrutenX
+Ingen tidigare buffert att exekveraX
+Inget tidigare reguljrt uttryckX
+%s kommandot krver att en fil redan lsts inX
+Anvndning: %sX
+Visual kommandot krver att open flaggan r sattX
+
+Tom filX
+Ingen tidigare F, f, T eller t skningX
+%s inte funnenX
+Ingen tidigare fil att editeraX
+Markren r inte i ett talX
+Det resulterande talet r fr stortX
+Det resulterande talet r fr litetX
+Inget matchande tecken p denna radX
+Matchande tecken inte funnetX
+Det finns inga tecken att ersttaX
+Det finns inget fnster att byta tillX
+Tecken efter skstrng, radoffset och/eller z kommandotX
+Ingen tidigare skstrngX
+Skningen slog runt till ursprungliga positionenX
+Frkortning verskred expanderingsgrnsen: tecken har tagits bortX
+Ogiltigt tecken; anvnd "quote" fr att stta inX
+Redan i brjan p insttningenX
+Inga fler tecken att ta bortX
+Frsk att g bortom slutet p filenX
+Frsk att g bortom slutet p radenX
+Ingen frflyttning gjordX
+Redan i brjan p filenX
+Frsk att g fre brjan p filenX
+Redan i frsta kolumnenX
+Buffertar mste anges fre kommandotX
+Redan i slutet av filenX
+Redan p slutet av radenX
+%s r inte ett "vi" kommandoX
+Anvndning: %sX
+Inga tecken att ta bortX
+Q kommandot krver "ex" i terminallgeX
+Inget kommando att repeteraX
+Filen r tomX
+%s kan inte anvndas som ett frflyttningskommandoX
+Redan i kommando lgeX
+Markren r inte i ett ordX
+
+Windows flaggans vrde r fr stor, strsta vrde r %uX
+Lgg tillX
+ndraX
+KommandoX
+Stt inX
+ErsttX
+Frflyttning bortom fnsterslutX
+Frflyttning till fre fnstrets brjanX
+Fnstret mste vara strre n %d rader fr delningX
+Det finns inga fnster i bakgrundenX
+Det finns inget fnster i bakgrunden som editerar filen %sX
+Du fr inte stta ditt enda synliga fnster i bakgrundenX
+Fnstret kan bara krympa till %d raderX
+Fnstret kan inte krympaX
+Fnstret kan inte vxaX
+
+Detta fnster kan inte pausasX
+Avbrutet: omdefinierade tangenter ignoreradeX
+vi: temporrbuffertar inte frislpptaX
+Denna terminal har ingen %s tangentX
+Endast en buffert kan angesX
+Talet r strre n %luX
+AvbrutetX
+Kan inte skapa temporr filX
+Warning: %s r inte en normal filX
+%s r redan lst, detta blir en icke skrivbar sessionX
+%s: ta bortX
+%s: stngX
+%s: ta bortX
+%s: ta bortX
+Ej skrivbar fil, filen inte sparad; anvnd ! fr att skriva verX
+Ej skrivbar fil, filen inte sparadX
+%s finns, ej sparad; anvnd ! fr att utfra operationenX
+%s finns, filen inte sparadX
+Ofullstndig fil, filen inte sparad, anvnd ! fr att skriva verX
+Ofullstndig fil, filen inte sparadX
+%s: filen ndrad efter denna kopia togs; anvnd ! fr att utfra operationenX
+%s: filen ndrad efter denna kopia togsX
+%s: skrivlset r otillgngligtX
+Skriver...X
+%s: VARNING: FILEN TRUNKERADX
+Redan vid frsta mrket i denna gruppX
+%s: ny fil: %lu rader, %lu teckenX
+%s: %lu rader, %lu teckenX
+%s expanderade till fr mnga filnamnX
+%s r inte en normal filX
+%s gs inte av digX
+%s r tkomstbar av andra n garenX
+Filen har ndrats efter den sparats; spara eller anvnd !X
+Filen har ndrats efter den sparats; spara eller anvnd :edit!X
+Filen har ndrats efter den sparats; spara eller anvnd !X
+Filen r temporr; exit kastar bort ndringarnaX
+Ej skrivbar fil, ndringar har inte automatsparatsX
+Loggningen startar omX
+bekrfta? [ynq]X
+Tryck p en tangent fr att fortstta: X
+Tryck p en tangent fr att fortstta [: fr att ge fler kommandon]: X
+Tryck p en tangent fr att fortstta [q fr att avsluta]: X
+Den formen av %s krver "ex" i terminallgeX
+Gr till "ex" inmatningslge.X
+Kommandot misslyckades, ingen fil inlst nnu.X
+ forts?X
+Ovntad teckenhndelseX
+Ovntad filslutshndelseX
+Skningen hittade ingentingX
+Ovntad avbrottshndelseX
+Ovntad avslutningshndelseX
+Ovntad omritningshndelseX
+Redan vid sista mrket i denna gruppX
+%s kommandot krver "ex" i terminallgeX
+Den formen av %s r inte tillgnglig nr secure edit flaggan r sattX
+Ovntad strnghndelseX
+Ovntad tidshndelseX
+Ovntad skrivhndelseX
+
+Skalexpansion r inte tillgnglig nr secure edit flaggan r sattX
+%s kommandot r inte tillgnglig nr secure edit flaggan r sattX
+set: %s kan inte sls avX
+Fnstret fr litet.X
+tillagdaX
+ndradeX
+borttagnaX
+ihopsattaX
+flyttadeX
+flyttadeX
+inklistradeX
+radX
+raderX
+Vi har inte lnkats med en Tcl tolkX
+Filen har ndrats efter den sparats.X
+Skalexpansion misslyckadesX
+Ingen %s edit flagga givenX
+Vi har inte lnkats med en Perl tolkX
+Inga "ex" kommandon att exekveraX
+Tryck <CR> fr att exekvera kommando, :q fr att avslutaX
+Gr "cscope help" fr hjlpX
+Inga cscope kopplingar krsX
+%s: oknd sktyp: anvnd en av %sX
+%d: ingen sdan cscope sessionX
+set: %s flaggan fr aldrig sls pX
+set: %s flaggan fr aldrig sttas till 0X
+%s: tillagt: %lu rader, %lu teckenX
+Ovntad storleksndringX
+%d filer att editeraX
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/swedish.base	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,307 @@
+002 "Fr lnga rader"
+003 "kan inte ta bort rad %lu"
+004 "kan inte lgga till p rad %lu"
+005 "kan inte stta in p rad %lu"
+006 "kan inte lagra rad %lu"
+007 "kan inte hmta sista raden"
+008 "Fel: kan inte hmta rad %lu"
+009 "Loggningsfil"
+010 "Loggning utfrs inte, ngra r inte mjligt"
+011 "Inga ndringar att ngra"
+012 "Loggning utfrs inte, ngra r inte mjligt"
+013 "Loggning utfrs inte, ngra ngra r inte mjligt"
+014 "Inga ndringar att tergra"
+015 "%s/%d: fel vid loggning"
+016 "Vi:s standard in och ut mste g till en terminal"
+017 "Markering %s: inte satt"
+018 "Markering %s: raden har tagits bort"
+019 "Markering %s: markrpositionen finns inte lngre"
+020 "Fel: "
+021 "ny fil"
+022 "namnet ndrades"
+023 "ndrad"
+024 "ofrndrad"
+025 "OLST"
+026 "inte skrivbar"
+027 "rad %lu av %lu [%ld%%]"
+028 "tom fil"
+029 "rad %lu"
+030 "Filen %s r ingen meddelandekatalog"
+031 "Kan inte stta standardvrde fr %s flaggan"
+032 "Anvndning: %s"
+033 "set: %s r en oknd flagga: "set all" visar alla flaggor"
+034 "set: [no]%s flaggan kan inte ges ett vrde"
+035 "set: %s flaggan r inte boleansk"
+036 "set: %s flaggan: %s"
+037 "set: %s flaggan: %s: fr stort vrde"
+038 "set: %s flaggan: %s r ett otilltet tal"
+039 "set: %s flaggan r inte boleansk"
+040 "Fnsterkolumnerna r fr f, mindre n %d"
+041 "Fnsterkolumnerna r fr mnga, fler n %d"
+042 "Fnsterraderna r fr f, mindre n %d"
+043 "Fnsterraderna r fr mnga, fler n %d"
+044 "Lisp flaggan r inte implementerad"
+045 "meddelanden r inte avslagna: %s"
+046 "meddelanden r inte pslagna: %s"
+048 "Paragraph flaggan mste ges i teckengrupper om tv"
+049 "Section flaggan mste ges i teckengrupper om tv"
+053 "Standardbufferten r tom"
+054 "Buffer %s r tom"
+055 "Filer med radmatning i namnet kan inte terskapas"
+056 "ndringar kan inte terskapas om programmet kraschar"
+057 "Kopierar filen fr terskapning..."
+058 "Skerhetskopiering misslyckades: %s"
+059 "ndringar kan inte terskapas om programmet kraschar"
+060 "Misslyckades att skerhetskopiera filen: %s"
+061 "Kopierar filen fr terskapning..."
+062 "Kan inte hitta information om anvndaridentitet %u"
+063 "Kan inte lsa terskapningsfilen"
+064 "terskapningsfilens buffer verskriven"
+065 "terskapningsfil"
+066 "%s: terskapningsfilen r korrupt"
+067 "%s: terskapningsfilen r korrupt"
+068 "Det finns ingen fil %s, lsbar av dig, att terskapa"
+069 "Det finns ldre versioner av denna fil som du kan terskapa"
+070 "Det finns andra filer du kan terskapa"
+071 "skickar inte email: %s"
+072 "Filen r tom; inget att ska i"
+073 "Kom till slutet p filen utan att hitta skstrngen"
+074 "Ingen tidigare skstrng"
+075 "Hittar inte skstrngen"
+076 "Kom till brjan av filen utan att hitta skstrngen"
+077 "Skningen slog runt"
+078 "Sker..."
+079 "Inga icke skrivbara tecken funna"
+080 "Oknt kommandonamn"
+082 "%s: kommandot r inte tillgngligt i "ex" lge"
+083 "Talet fr inte vara noll"
+084 "%s: Ogiltig radspecifikation"
+085 "Fel i intern syntaxtabell (%s: %s)"
+086 "Anvndning: %s"
+087 "%s: temporrbuffert inte frislppt"
+088 "Offset r fre rad 1"
+089 "Offset r efter slutet p filen"
+090 "@ med intervall exekverades nr filen/fnstret ndrades"
+091 "Global/v kommando exekverades nr filen/fnstret ndrades"
+092 "Ex kommando misslyckades: efterfljande kommandon ignorerade"
+093 "Ex kommando misslyckades: omdefinierade tangenter ignorerade"
+094 "Den andra adressen r mindre n den frsta"
+095 "Inget namn p markering givet"
+096 "\\ fljs inte av / eller ?"
+097 "Referens till ett radnummer mindre n 0"
+098 "%s kommandot r inte knt"
+099 "Vrdet p adressen r fr stort"
+100 "Vrdet p adressen r fr litet"
+101 "Otillten adresskombination"
+102 "Otillten adress: bara %lu rader finns i filen"
+103 "Otillten adress: filen r tom"
+104 "%s kommandot tillter inte en adress som r 0"
+105 "Inga frkortningar att visa"
+106 "Frkortningar mste sluta med ett "ord" tecken"
+107 "Frkortningar kan inte innehlla mellanslag eller tab"
+108 "Frkortningar kan inte blanda "ord"/"icke ord" tecken, utom i slutet"
+109 ""%s" r ingen frkortning"
+110 "Vi kommando misslyckades: omdefinierade tangenter ignorerade"
+111 "Inga fler filer att editera"
+112 "Inga tidigare filer att editera"
+113 "Inga tidigare filer att spela tillbaka"
+114 "Ingen fillista att visa"
+115 "Inget tidigare kommando att erstta "!" med"
+116 "Inget filnamn att erstta %% med"
+117 "Inget filnamn att erstta # med"
+118 "Fel: execl: %s"
+119 "I/O fel: %s"
+120 "Filen ndrad efter sista skrivning; spara eller anvnd !"
+121 "Kan inte hitta hemkatalog"
+122 "Ny nuvarande katalog: %s"
+123 "Inga "cut buffers" att visa"
+124 "%s kommandot kan inte anvnds som del i ett "global" eller v kommando"
+125 "%s/%s: inte lst: varken du eller root r gare"
+126 "%s/%s: inte lst: du r inte gare"
+127 "%s/%s: inte lst: skrivbar av annan n garen"
+128 "%s: inte lst: varken du eller root r gare"
+129 "%s: inte lst: du r inte gare"
+130 "%s: inte lst: skrivbar av annan n garen"
+131 "Ingen nsta rad att stta ihop med"
+132 "Det finns inget i inmatningsmappningen"
+133 "Det finns inget i kommandomappningen"
+134 "%s tecknet kan inte mappas om"
+135 ""%s" r inte ommappat just nu"
+136 "Namn p markeringar mste vara ett tecken lnga"
+137 "%s finns, inget sparat; anvnd ! fr att spara"
+138 "Ny exrc fil: %s"
+139 "Mlraden ligger inne i omrdet som ska flyttas"
+140 "Open kommandot krver att open flaggan r satt"
+141 "Open kommandot r inte implementerat nnu"
+142 "Skerhetskopiering av filen r inte mjligt"
+143 "Filen skerhetskopierad"
+144 "%s expanderade till fr mnga filnamn"
+145 "Endast vanliga filer och namngivna rr kan lsas"
+146 "%s: lslset r otillgngligt"
+147 "Lser..."
+148 "%s: %lu rader, %lu tecken"
+149 "Inga bakgrundsfnster att visa"
+150 "Script kommandot finns bara i "vi" lge"
+151 "Inget kommando att exekvera"
+152 "shiftwidth flaggan satt till 0"
+153 "Talet har fr stort vrde"
+154 "Talet har fr litet vrde"
+155 "Reguljrt uttryck r givet; r flaggan r meningsls"
+156 "#, l och p flaggorna kan inte kombineras med c flaggan i "vi" lge"
+157 "Ingen matchande text funnen"
+158 "Inget tidigare mrke har givits"
+159 "Det r frre n %s mrken i stacken; anvnd :display t[ags]"
+160 "Det finns ingen fil %s i mrkesstacken; anvnd :display t[ags]"
+161 "Tryck Enter fr att fortstta: "
+162 "%s: mrke inte funnet"
+163 "%s: korrupt mrke i %s"
+164 "%s: mrkets radnummer r bortom filslutet"
+165 "Mrkesstacken r tom"
+166 "%s: skstrngen inte funnen"
+167 "%d filer till att editera"
+168 "Buffert %s r tom"
+169 "Bekrfta ndring? [n]"
+170 "Avbruten"
+171 "Ingen tidigare buffert att exekvera"
+172 "Inget tidigare reguljrt uttryck"
+173 "%s kommandot krver att en fil redan lsts in"
+174 "Anvndning: %s"
+175 "Visual kommandot krver att open flaggan r satt"
+177 "Tom fil"
+178 "Ingen tidigare F, f, T eller t skning"
+179 "%s inte funnen"
+180 "Ingen tidigare fil att editera"
+181 "Markren r inte i ett tal"
+182 "Det resulterande talet r fr stort"
+183 "Det resulterande talet r fr litet"
+184 "Inget matchande tecken p denna rad"
+185 "Matchande tecken inte funnet"
+186 "Det finns inga tecken att erstta"
+187 "Det finns inget fnster att byta till"
+188 "Tecken efter skstrng, radoffset och/eller z kommandot"
+189 "Ingen tidigare skstrng"
+190 "Skningen slog runt till ursprungliga positionen"
+191 "Frkortning verskred expanderingsgrnsen: tecken har tagits bort"
+192 "Ogiltigt tecken; anvnd "quote" fr att stta in"
+193 "Redan i brjan p insttningen"
+194 "Inga fler tecken att ta bort"
+195 "Frsk att g bortom slutet p filen"
+196 "Frsk att g bortom slutet p raden"
+197 "Ingen frflyttning gjord"
+198 "Redan i brjan p filen"
+199 "Frsk att g fre brjan p filen"
+200 "Redan i frsta kolumnen"
+201 "Buffertar mste anges fre kommandot"
+202 "Redan i slutet av filen"
+203 "Redan p slutet av raden"
+204 "%s r inte ett "vi" kommando"
+205 "Anvndning: %s"
+206 "Inga tecken att ta bort"
+207 "Q kommandot krver "ex" i terminallge"
+208 "Inget kommando att repetera"
+209 "Filen r tom"
+210 "%s kan inte anvndas som ett frflyttningskommando"
+211 "Redan i kommando lge"
+212 "Markren r inte i ett ord"
+214 "Windows flaggans vrde r fr stor, strsta vrde r %u"
+215 "Lgg till"
+216 "ndra"
+217 "Kommando"
+218 "Stt in"
+219 "Erstt"
+220 "Frflyttning bortom fnsterslut"
+221 "Frflyttning till fre fnstrets brjan"
+222 "Fnstret mste vara strre n %d rader fr delning"
+223 "Det finns inga fnster i bakgrunden"
+224 "Det finns inget fnster i bakgrunden som editerar filen %s"
+225 "Du fr inte stta ditt enda synliga fnster i bakgrunden"
+226 "Fnstret kan bara krympa till %d rader"
+227 "Fnstret kan inte krympa"
+228 "Fnstret kan inte vxa"
+230 "Detta fnster kan inte pausas"
+231 "Avbrutet: omdefinierade tangenter ignorerade"
+232 "vi: temporrbuffertar inte frislppta"
+233 "Denna terminal har ingen %s tangent"
+234 "Endast en buffert kan anges"
+235 "Talet r strre n %lu"
+236 "Avbrutet"
+237 "Kan inte skapa temporr fil"
+238 "Warning: %s r inte en normal fil"
+239 "%s r redan lst, detta blir en icke skrivbar session"
+240 "%s: ta bort"
+241 "%s: stng"
+242 "%s: ta bort"
+243 "%s: ta bort"
+244 "Ej skrivbar fil, filen inte sparad; anvnd ! fr att skriva ver"
+245 "Ej skrivbar fil, filen inte sparad"
+246 "%s finns, ej sparad; anvnd ! fr att utfra operationen"
+247 "%s finns, filen inte sparad"
+248 "Ofullstndig fil, filen inte sparad, anvnd ! fr att skriva ver"
+249 "Ofullstndig fil, filen inte sparad"
+250 "%s: filen ndrad efter denna kopia togs; anvnd ! fr att utfra operationen"
+251 "%s: filen ndrad efter denna kopia togs"
+252 "%s: skrivlset r otillgngligt"
+253 "Skriver..."
+254 "%s: VARNING: FILEN TRUNKERAD"
+255 "Redan vid frsta mrket i denna grupp"
+256 "%s: ny fil: %lu rader, %lu tecken"
+257 "%s: %lu rader, %lu tecken"
+258 "%s expanderade till fr mnga filnamn"
+259 "%s r inte en normal fil"
+260 "%s gs inte av dig"
+261 "%s r tkomstbar av andra n garen"
+262 "Filen har ndrats efter den sparats; spara eller anvnd !"
+263 "Filen har ndrats efter den sparats; spara eller anvnd :edit!"
+264 "Filen har ndrats efter den sparats; spara eller anvnd !"
+265 "Filen r temporr; exit kastar bort ndringarna"
+266 "Ej skrivbar fil, ndringar har inte automatsparats"
+267 "Loggningen startar om"
+268 "bekrfta? [ynq]"
+269 "Tryck p en tangent fr att fortstta: "
+270 "Tryck p en tangent fr att fortstta [: fr att ge fler kommandon]: "
+271 "Tryck p en tangent fr att fortstta [q fr att avsluta]: "
+272 "Den formen av %s krver "ex" i terminallge"
+273 "Gr till "ex" inmatningslge."
+274 "Kommandot misslyckades, ingen fil inlst nnu."
+275 " forts?"
+276 "Ovntad teckenhndelse"
+277 "Ovntad filslutshndelse"
+278 "Skningen hittade ingenting"
+279 "Ovntad avbrottshndelse"
+280 "Ovntad avslutningshndelse"
+281 "Ovntad omritningshndelse"
+282 "Redan vid sista mrket i denna grupp"
+283 "%s kommandot krver "ex" i terminallge"
+284 "Den formen av %s r inte tillgnglig nr secure edit flaggan r satt"
+285 "Ovntad strnghndelse"
+286 "Ovntad tidshndelse"
+287 "Ovntad skrivhndelse"
+289 "Skalexpansion r inte tillgnglig nr secure edit flaggan r satt"
+290 "%s kommandot r inte tillgnglig nr secure edit flaggan r satt"
+291 "set: %s kan inte sls av"
+292 "Fnstret fr litet."
+293 "tillagda"
+294 "ndrade"
+295 "borttagna"
+296 "ihopsatta"
+297 "flyttade"
+298 "flyttade"
+299 "inklistrade"
+300 "rad"
+301 "rader"
+302 "Vi har inte lnkats med en Tcl tolk"
+303 "Filen har ndrats efter den sparats."
+304 "Skalexpansion misslyckades"
+305 "Ingen %s edit flagga given"
+306 "Vi har inte lnkats med en Perl tolk"
+307 "Inga "ex" kommandon att exekvera"
+308 "Tryck <CR> fr att exekvera kommando, :q fr att avsluta"
+309 "Gr "cscope help" fr hjlp"
+310 "Inga cscope kopplingar krs"
+311 "%s: oknd sktyp: anvnd en av %s"
+312 "%d: ingen sdan cscope session"
+313 "set: %s flaggan fr aldrig sls p"
+314 "set: %s flaggan fr aldrig sttas till 0"
+315 "%s: tillagt: %lu rader, %lu tecken"
+316 "Ovntad storleksndring"
+317 "%d filer att editera"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/swedish.check	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,40 @@
+Unused message id's (this is okay):
+001
+047
+050
+051
+052
+081
+176
+213
+229
+288
+=========================
+MISSING ERROR MESSAGES (Please add!):
+288
+318
+319
+320
+=========================
+Extra error messages (just delete them):
+280
+287
+=========================
+MESSAGES WITH THE SAME MESSAGE ID's (FIX!):
+=========================
+Duplicate messages, both id and message (this is okay):
+=========================
+Duplicate messages, just message (this is okay):
+   2 %s expanderade till fr mnga filnamnX
+   2 %s: %lu rader, %lu teckenX
+   2 %s: terskapningsfilen r korruptX
+   2 Filen har ndrats efter den sparats; spara eller anvnd !X
+   2 Ingen tidigare skstrngX
+   2 Kopierar filen fr terskapning...X
+   2 Loggning utfrs inte, ngra r inte mjligtX
+   2 flyttadeX
+   2 set: %s flaggan r inte boleanskX
+   2 ndringar kan inte terskapas om programmet krascharX
+   3 %s: ta bortX
+   4 Anvndning: %sX
+=========================
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/catalog/swedish.owner	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,1 @@
+Jan Djarv <jan.djarv@mbox200.swipnet.se>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/cl/README.signal	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,174 @@
+#	$Id: README.signal,v 1.1.1.1 2008/05/16 18:03:08 aymeric Exp $ (Berkeley) $Date: 2008/05/16 18:03:08 $
+
+There are six (normally) asynchronous actions about which vi cares:
+SIGHUP, SIGINT, SIGQUIT, SIGTERM, SIGTSTP and SIGWINCH.
+
+The assumptions:
+	1: The DB routines are not reentrant.
+	2: The curses routines may not be reentrant.
+	3: Neither DB nor curses will restart system calls.
+
+XXX
+Note, most C library functions don't restart system calls.  So, we should
+*probably* start blocking around any imported function that we don't know
+doesn't make a system call.  This is going to be a genuine annoyance...
+
+SIGHUP, SIGTERM
+	Used for file recovery.  The DB routines can't be reentered, nor
+	can they handle interrupted system calls, so the vi routines that
+	call DB block signals.  This means that DB routines could be
+	called at interrupt time, if necessary.
+
+SIGQUIT
+	Disabled by the signal initialization routines.  Historically, ^\
+	switched vi into ex mode, and we continue that practice.
+
+SIGWINCH:
+	The interrupt routine sets a global bit which is checked by the
+ 	key-read routine, so there are no reentrancy issues.  This means
+	that the screen will not resize until vi runs out of keys, but
+	that doesn't seem like a problem.
+
+SIGINT and SIGTSTP are a much more difficult issue to resolve.  Vi has
+to permit the user to interrupt long-running operations.  Generally, a
+search, substitution or read/write is done on a large file, or, the user
+creates a key mapping with an infinite loop.  This problem will become
+worse as more complex semantics are added to vi, especially things like
+making it a pure text widget.  There are four major solutions on the table,
+each of which have minor permutations.
+
+1:	Run in raw mode.
+
+	The up side is that there's no asynchronous behavior to worry about,
+	and obviously no reentrancy problems.  The down side is that it's easy
+	to misinterpret characters (e.g. :w big_file^Mi^V^C is going to look
+	like an interrupt) and it's easy to get into places where we won't see
+	interrupt characters (e.g. ":map a ixx^[hxxaXXX" infinitely loops in
+	historic implementations of vi).  Periodically reading the terminal
+	input buffer might solve the latter problem, but it's not going to be
+	pretty.
+
+	Also, we're going to be checking for ^C's and ^Z's both, all over
+	the place -- I hate to litter the source code with that.  For example,
+	the historic version of vi didn't permit you to suspend the screen if
+	you were on the colon command line.  This isn't right.  ^Z isn't a vi
+	command, it's a terminal event.  (Dammit.)
+
+2:	Run in cbreak mode.  There are two problems in this area.  First, the
+	current curses implementations (both System V and Berkeley) don't give
+	you clean cbreak modes. For example, the IEXTEN bit is left on, turning
+	on DISCARD and LNEXT.  To clarify, what vi WANTS is 8-bit clean, with
+	the exception that flow control and signals are turned on, and curses
+	cbreak mode doesn't give you this.
+
+	We can either set raw mode and twiddle the tty, or cbreak mode and
+	twiddle the tty.  I chose to use raw mode, on the grounds that raw
+	mode is better defined and I'm less likely to be surprised by a curses
+	implementation down the road.  The twiddling consists of setting ISIG,
+	IXON/IXOFF, and disabling some of the interrupt characters (see the
+	comments in cl_init.c).  This is all found in historic System V (SVID
+	3) and POSIX 1003.1-1992, so it should be fairly portable.
+
+	The second problem is that vi permits you to enter literal signal
+	characters, e.g. ^V^C.  There are two possible solutions.  First, you
+	can turn off signals when you get a ^V, but that means that a network
+	packet containing ^V and ^C will lose, since the ^C may take effect
+	before vi reads the ^V.  (This is particularly problematic if you're
+	talking over a protocol that recognizes signals locally and sends OOB
+	packets when it sees them.)  Second, you can turn the ^C into a literal
+	character in vi, but that means that there's a race between entering
+	^V<character>^C, i.e. the sequence may end up being ^V^C<character>.
+	Also, the second solution doesn't work for flow control characters, as
+	they aren't delivered to the program as signals.
+
+	Generally, this is what historic vi did.  (It didn't have the curses
+	problems because it didn't use curses.)  It entered signals following
+	^V characters into the input stream, (which is why there's no way to
+	enter a literal flow control character).
+
+3:	Run in mostly raw mode; turn signals on when doing an operation the
+	user might want to interrupt, but leave them off most of the time.
+
+	This works well for things like file reads and writes.  This doesn't
+	work well for trying to detect infinite maps.  The problem is that
+	you can write the code so that you don't have to turn on interrupts
+	per keystroke, but the code isn't pretty and it's hard to make sure
+	that an optimization doesn't cover up an infinite loop.  This also
+	requires interaction or state between the vi parser and the key
+	reading routines, as an infinite loop may still be returning keys
+	to the parser.
+
+	Also, if the user inserts an interrupt into the tty queue while the
+	interrupts are turned off, the key won't be treated as an interrupt,
+	and requiring the user to pound the keyboard to catch an interrupt
+	window is nasty.
+
+4:	Run in mostly raw mode, leaving signals on all of the time.  Done
+	by setting raw mode, and twiddling the tty's termios ISIG bit.
+
+	This works well for the interrupt cases, because the code only has
+	to check to see if the interrupt flag has been set, and can otherwise
+	ignore signals.  It's also less likely that we'll miss a case, and we
+	don't have to worry about synchronizing between the vi parser and the
+	key read routines.
+
+	The down side is that we have to turn signals off if the user wants
+	to enter a literal character (e.g. ^V^C).  If the user enters the
+	combination fast enough, or as part of a single network packet,
+	the text input routines will treat it as a signal instead of as a
+	literal character.  To some extent, we have this problem already,
+	since we turn off flow control so that the user can enter literal
+	XON/XOFF characters.
+
+	This is probably the easiest to code, and provides the smoothest
+	programming interface.
+
+There are a couple of other problems to consider.
+
+First, System V's curses doesn't handle SIGTSTP correctly.  If you use the
+newterm() interface, the TSTP signal will leave you in raw mode, and the
+final endwin() will leave you in the correct shell mode.  If you use the
+initscr() interface, the TSTP signal will return you to the correct shell
+mode, but the final endwin() will leave you in raw mode.  There you have
+it: proof that drug testing is not making any significant headway in the
+computer industry.  The 4BSD curses is deficient in that it does not have
+an interface to the terminal keypad.  So, regardless, we have to do our
+own SIGTSTP handling.
+
+The problem with this is that if we do our own SIGTSTP handling, in either
+models #3 or #4, we're going to have to call curses routines at interrupt
+time, which means that we might be reentering curses, which is something we
+don't want to do.
+
+Second, SIGTSTP has its own little problems.  It's broadcast to the entire
+process group, not sent to a single process.  The scenario goes something
+like this: the shell execs the mail program, which execs vi.  The user hits
+^Z, and all three programs get the signal, in some random order.  The mail
+program goes to sleep immediately (since it probably didn't have a SIGTSTP
+handler in place).  The shell gets a SIGCHLD, does a wait, and finds out
+that the only child in its foreground process group (of which it's aware)
+is asleep.  It then optionally resets the terminal (because the modes aren't
+how it left them), and starts prompting the user for input.  The problem is
+that somewhere in the middle of all of this, vi is resetting the terminal,
+and getting ready to send a SIGTSTP to the process group in order to put
+itself to sleep.  There's a solution to all of this: when vi starts, it puts
+itself into its own process group, and then only it (and possible child
+processes) receive the SIGTSTP.  This permits it to clean up the terminal
+and switch back to the original process group, where it sends that process
+group a SIGTSTP, putting everyone to sleep and waking the shell.
+
+Third, handing SIGTSTP asynchronously is further complicated by the child
+processes vi may fork off.  If vi calls ex, ex resets the terminal and
+starts running some filter, and SIGTSTP stops them both, vi has to know
+when it restarts that it can't repaint the screen until ex's child has
+finished running.  This is solveable, but it's annoying.
+
+Well, somebody had to make a decision, and this is the way it's going to be
+(unless I get talked out of it).  SIGINT is handled asynchronously, so
+that we can pretty much guarantee that the user can interrupt any operation
+at any time.  SIGTSTP is handled synchronously, so that we don't have to
+reenter curses and so that we don't have to play the process group games.
+^Z is recognized in the standard text input and command modes.  (^Z should
+also be recognized during operations that may potentially take a long time.
+The simplest solution is probably to twiddle the tty, install a handler for
+SIGTSTP, and then restore normal tty modes when the operation is complete.)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/cl/cl.h	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,116 @@
+/*-
+ * Copyright (c) 1993, 1994
+ *	The Regents of the University of California.  All rights reserved.
+ * Copyright (c) 1993, 1994, 1995, 1996
+ *	Keith Bostic.  All rights reserved.
+ *
+ * See the LICENSE file for redistribution information.
+ *
+ *	$Id: cl.h,v 1.1.1.1 2008/05/16 18:03:08 aymeric Exp $ (Berkeley) $Date: 2008/05/16 18:03:08 $
+ */
+
+/* Avoid clash on OSF1 */
+#undef DB
+
+#ifdef USE_SLANG_CURSES
+#include <slcurses.h>
+#else
+#ifdef HAVE_NCURSESW_NCURSES_H /* { */
+#include <ncursesw/ncurses.h>
+#else /* } { */
+#ifdef HAVE_NCURSES_H /* { */
+#include <ncurses.h>
+#else /* } { */
+#include <curses.h>
+#endif /* } */
+#endif
+#endif
+
+typedef struct _cl_private {
+	char	 ibuf[256];	/* Input keys. */
+
+	size_t	 skip;		/* Remaining keys. */
+
+	CONVWIN cw;		/* Conversion buffer. */
+
+	int	 eof_count;	/* EOF count. */
+
+	struct termios orig;	/* Original terminal values. */
+	struct termios ex_enter;/* Terminal values to enter ex. */
+	struct termios vi_enter;/* Terminal values to enter vi. */
+
+	char	*el;		/* Clear to EOL terminal string. */
+	char	*cup;		/* Cursor movement terminal string. */
+	char	*cuu1;		/* Cursor up terminal string. */
+	char	*rmso, *smso;	/* Inverse video terminal strings. */
+	char	*smcup, *rmcup;	/* Terminal start/stop strings. */
+
+	char	*oname;		/* Original screen window name. */
+
+	SCR	*focus;		/* Screen that has the "focus". */
+
+	int	 killersig;	/* Killer signal. */
+#define	INDX_HUP	0
+#define	INDX_INT	1
+#define	INDX_TERM	2
+#define	INDX_WINCH	3
+#define	INDX_MAX	4	/* Original signal information. */
+	struct sigaction oact[INDX_MAX];
+
+	enum {			/* Tty group write mode. */
+	    TGW_UNKNOWN=0, TGW_SET, TGW_UNSET } tgw;
+
+	enum {			/* Terminal initialization strings. */
+	    TE_SENT=0, TI_SENT } ti_te;
+
+#define	CL_IN_EX	0x0001	/* Currently running ex. */
+#define	CL_LAYOUT	0x0002	/* Screen layout changed. */
+#define	CL_RENAME	0x0004	/* X11 xterm icon/window renamed. */
+#define	CL_RENAME_OK	0x0008	/* User wants the windows renamed. */
+#define	CL_SCR_EX_INIT	0x0010	/* Ex screen initialized. */
+#define	CL_SCR_VI_INIT	0x0020	/* Vi screen initialized. */
+#define	CL_SIGHUP	0x0040	/* SIGHUP arrived. */
+#define	CL_SIGINT	0x0080	/* SIGINT arrived. */
+#define	CL_SIGTERM	0x0100	/* SIGTERM arrived. */
+#define	CL_SIGWINCH	0x0200	/* SIGWINCH arrived. */
+#define	CL_STDIN_TTY	0x0400	/* Talking to a terminal. */
+	u_int32_t flags;
+} CL_PRIVATE;
+
+#define	CLP(sp)		((CL_PRIVATE *)((sp)->gp->cl_private))
+#define	GCLP(gp)	((CL_PRIVATE *)gp->cl_private)
+#define	CLSP(sp)	((WINDOW *)((sp)->cl_private))
+
+/* Return possibilities from the keyboard read routine. */
+typedef enum { INP_OK=0, INP_EOF, INP_ERR, INP_INTR, INP_TIMEOUT } input_t;
+
+/* The screen position relative to a specific window. */
+/*
+#define	RCNO(sp, cno)	(sp)->coff + (cno)
+#define	RLNO(sp, lno)	(sp)->roff + (lno)
+*/
+#define	RCNO(sp, cno)	(cno)
+#define	RLNO(sp, lno)	(lno)
+
+/*
+ * XXX
+ * Some implementations of curses.h don't define these for us.  Used for
+ * compatibility only.
+ */
+#ifndef TRUE
+#define	TRUE	1
+#endif
+#ifndef FALSE
+#define	FALSE	0
+#endif
+
+#include "extern.h"
+
+#ifdef USE_PERL_SETENV
+#include "../perl_api/extern.h"
+#define cl_setenv(sp,name,val)	perl_setenv(sp,name,val)
+#define cl_unsetenv(sp,name)	perl_setenv(sp,name,NULL)
+#else
+#define cl_setenv(sp,name,val)	setenv(name,val,1)
+#define cl_unsetenv(sp,name)	unsetenv(name)
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/cl/cl_bsd.c	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,346 @@
+/*-
+ * Copyright (c) 1995, 1996
+ *	Keith Bostic.  All rights reserved.
+ *
+ * See the LICENSE file for redistribution information.
+ */
+
+#include "config.h"
+
+#ifndef lint
+static const char sccsid[] = "$Id: cl_bsd.c,v 1.1.1.1 2008/05/16 18:03:09 aymeric Exp $ (Berkeley) $Date: 2008/05/16 18:03:09 $";
+#endif /* not lint */
+
+#include <sys/types.h>
+#include <sys/queue.h>
+#include <sys/time.h>
+
+#include <bitstring.h>
+#include <ctype.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <termios.h>
+#include <unistd.h>
+
+#include "../common/common.h"
+#include "../vi/vi.h"
+#include "cl.h"
+
+static char	*ke;				/* Keypad on. */
+static char	*ks;				/* Keypad off. */
+static char	*vb;				/* Visible bell string. */
+
+/*
+ * HP's support the entire System V curses package except for the tigetstr
+ * and tigetnum functions.  Ultrix supports the BSD curses package except
+ * for the idlok function.  Cthulu only knows why.  Break things up into a
+ * minimal set of functions.
+ */
+
+#ifndef HAVE_CURSES_WADDNSTR
+/*
+ * waddnstr --
+ *
+ * PUBLIC: #ifndef HAVE_CURSES_WADDNSTR
+ * PUBLIC: int waddnstr __P((WINDOW*, char *, int));
+ * PUBLIC: #endif
+ */
+int
+waddnstr(w, s, n)
+	WINDOW *w;
+	char *s;
+	int n;
+{
+	int ch;
+
+	while (n-- && (ch = *s++))
+		waddch(w, ch);
+	return (OK);
+}
+#endif
+
+#ifndef	HAVE_CURSES_BEEP
+/*
+ * beep --
+ *
+ * PUBLIC: #ifndef HAVE_CURSES_BEEP
+ * PUBLIC: void beep __P((void));
+ * PUBLIC: #endif
+ */
+void
+beep()
+{
+	(void)write(1, "\007", 1);	/* '\a' */
+}
+#endif /* !HAVE_CURSES_BEEP */
+
+#ifndef	HAVE_CURSES_FLASH
+/*
+ * flash --
+ *	Flash the screen.
+ *
+ * PUBLIC: #ifndef HAVE_CURSES_FLASH
+ * PUBLIC: void flash __P((void));
+ * PUBLIC: #endif
+ */
+void
+flash()
+{
+	if (vb != NULL) {
+		(void)tputs(vb, 1, cl_putchar);
+		(void)fflush(stdout);
+	} else
+		beep();
+}
+#endif /* !HAVE_CURSES_FLASH */
+
+#ifndef	HAVE_CURSES_IDLOK
+/*
+ * idlok --
+ *	Turn on/off hardware line insert/delete.
+ *
+ * PUBLIC: #ifndef HAVE_CURSES_IDLOK
+ * PUBLIC: void idlok __P((WINDOW *, int));
+ * PUBLIC: #endif
+ */
+void
+idlok(win, bf)
+	WINDOW *win;
+	int bf;
+{
+	return;
+}
+#endif /* !HAVE_CURSES_IDLOK */
+
+#ifndef	HAVE_CURSES_KEYPAD
+/*
+ * keypad --
+ *	Put the keypad/cursor arrows into or out of application mode.
+ *
+ * PUBLIC: #ifndef HAVE_CURSES_KEYPAD
+ * PUBLIC: int keypad __P((void *, int));
+ * PUBLIC: #endif
+ */
+int
+keypad(a, on)
+	void *a;
+	int on;
+{
+	char *p;
+
+	if ((p = tigetstr(on ? "smkx" : "rmkx")) != (char *)-1) {
+		(void)tputs(p, 0, cl_putchar);
+		(void)fflush(stdout);
+	}
+	return (0);
+}
+#endif /* !HAVE_CURSES_KEYPAD */
+
+#ifndef	HAVE_CURSES_NEWTERM
+/*
+ * newterm --
+ *	Create a new curses screen.
+ *
+ * PUBLIC: #ifndef HAVE_CURSES_NEWTERM
+ * PUBLIC: void *newterm __P((const char *, FILE *, FILE *));
+ * PUBLIC: #endif
+ */
+void *
+newterm(a, b, c)
+	const char *a;
+	FILE *b, *c;
+{
+	return (initscr());
+}
+#endif /* !HAVE_CURSES_NEWTERM */
+
+#ifndef	HAVE_CURSES_SETUPTERM
+/*
+ * setupterm --
+ *	Set up terminal.
+ *
+ * PUBLIC: #ifndef HAVE_CURSES_SETUPTERM
+ * PUBLIC: void setupterm __P((char *, int, int *));
+ * PUBLIC: #endif
+ */
+void
+setupterm(ttype, fno, errp)
+	char *ttype;
+	int fno, *errp;
+{
+	static char buf[2048];
+	char *p;
+
+	if ((*errp = tgetent(buf, ttype)) > 0) {
+		if (ke != NULL)
+			free(ke);
+		ke = ((p = tigetstr("rmkx")) == (char *)-1) ?
+		    NULL : strdup(p);
+		if (ks != NULL)
+			free(ks);
+		ks = ((p = tigetstr("smkx")) == (char *)-1) ?
+		    NULL : strdup(p);
+		if (vb != NULL)
+			free(vb);
+		vb = ((p = tigetstr("flash")) == (char *)-1) ?
+		    NULL : strdup(p);
+	}
+}
+#endif /* !HAVE_CURSES_SETUPTERM */
+
+#ifndef	HAVE_CURSES_TIGETSTR
+/* Terminfo-to-termcap translation table. */
+typedef struct _tl {
+	char *terminfo;			/* Terminfo name. */
+	char *termcap;			/* Termcap name. */
+} TL;
+static const TL list[] = {
+	"cols",		"co",		/* Terminal columns. */
+	"cup",		"cm",		/* Cursor up. */
+	"cuu1",		"up",		/* Cursor up. */
+	"el",		"ce",		/* Clear to end-of-line. */
+	"flash",	"vb",		/* Visible bell. */
+	"kcub1",  	"kl",		/* Cursor left. */
+	"kcud1",	"kd",		/* Cursor down. */
+	"kcuf1",	"kr",		/* Cursor right. */
+	"kcuu1",  	"ku",		/* Cursor up. */
+	"kdch1",	"kD",		/* Delete character. */
+	"kdl1",		"kL",		/* Delete line. */
+	"ked",		"kS",		/* Delete to end of screen. */
+	"kel",		"kE",		/* Delete to eol. */
+	"kend",		"@7",		/* Go to eol. */
+	"khome",	"kh",		/* Go to sol. */
+	"kich1",	"kI",		/* Insert at cursor. */
+	"kil1",		"kA",		/* Insert line. */
+	"kind",		"kF",		/* Scroll down. */
+	"kll",		"kH",		/* Go to eol. */
+	"knp",		"kN",		/* Page down. */
+	"kpp",		"kP",		/* Page up. */
+	"kri",		"kR",		/* Scroll up. */
+	"lines",	"li",		/* Terminal lines. */
+	"rmcup",	"te",		/* Terminal end string. */
+	"rmkx",		"ke",		/* Exit "keypad-transmit" mode. */
+	"rmso",		"se",		/* Standout end. */
+	"smcup",	"ti",		/* Terminal initialization string. */
+	"smkx",		"ks",		/* Enter "keypad-transmit" mode. */
+	"smso",		"so",		/* Standout begin. */
+};
+
+#ifdef _AIX
+/*
+ * AIX's implementation for function keys greater than 10 is different and
+ * only goes as far as 36.
+ */
+static const char codes[] = {
+/*  0-10 */ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ';',
+/* 11-20 */ '<', '>', '!', '@', '#', '$', '%', '^', '&', '*',
+/* 21-30 */ '(', ')', '-', '_', '+', ',', ':', '?', '[', ']',
+/* 31-36 */ '{', '}', '|', '~', '/', '='
+};
+
+#else
+
+/*
+ * !!!
+ * Historically, the 4BSD termcap code didn't support functions keys greater
+ * than 9.  This was silently enforced -- asking for key k12 would return the
+ * value for k1.  We try and get around this by using the tables specified in
+ * the terminfo(TI_ENV) man page from the 3rd Edition SVID.  This assumes the
+ * implementors of any System V compatibility code or an extended termcap used
+ * those codes.
+ */
+static const char codes[] = {
+/*  0-10 */ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ';',
+/* 11-19 */ '1', '2', '3', '4', '5', '6', '7', '8', '9',
+/* 20-63 */ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
+	    'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
+	    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
+	    'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+};
+#endif /* _AIX */
+
+/*
+ * lcmp --
+ *	list comparison routine for bsearch.
+ */
+static int
+lcmp(a, b)
+	const void *a, *b;
+{
+	return (strcmp(a, ((TL *)b)->terminfo));
+}
+
+/*
+ * tigetstr --
+ *
+ * Vendors put the prototype for tigetstr into random include files, including
+ * <term.h>, which we can't include because it makes other systems unhappy.
+ * Try and work around the problem, since we only care about the return value.
+ *
+ * PUBLIC: #ifdef HAVE_CURSES_TIGETSTR
+ * PUBLIC: char *tigetstr();
+ * PUBLIC: #else
+ * PUBLIC: char *tigetstr __P((char *));
+ * PUBLIC: #endif
+ */
+char *
+tigetstr(name)
+	char *name;
+{
+	static char sbuf[256];
+	TL *tlp;
+	int n;
+	char *p, keyname[3];
+
+	if ((tlp = bsearch(name,
+	    list, sizeof(list) / sizeof(TL), sizeof(TL), lcmp)) == NULL) {
+#ifdef _AIX
+		if (name[0] == 'k' &&
+		    name[1] == 'f' && (n = atoi(name + 2)) <= 36) {
+			keyname[0] = 'k';
+			keyname[1] = codes[n];
+			keyname[2] = '\0';
+#else
+		if (name[0] == 'k' &&
+		    name[1] == 'f' && (n = atoi(name + 2)) <= 63) {
+			keyname[0] = n <= 10 ? 'k' : 'F';
+			keyname[1] = codes[n];
+			keyname[2] = '\0';
+#endif
+			name = keyname;
+		}
+	} else
+		name = tlp->termcap;
+
+	p = sbuf;
+#ifdef _AIX
+	return ((p = tgetstr(name, &p)) == NULL ? (char *)-1 : strcpy(sbuf, p));
+#else
+	return (tgetstr(name, &p) == NULL ? (char *)-1 : sbuf);
+#endif
+}
+
+/*
+ * tigetnum --
+ *
+ * PUBLIC: #ifndef HAVE_CURSES_TIGETSTR
+ * PUBLIC: int tigetnum __P((char *));
+ * PUBLIC: #endif
+ */
+int
+tigetnum(name)
+	char *name;
+{
+	TL *tlp;
+	int val;
+
+	if ((tlp = bsearch(name,
+	    list, sizeof(list) / sizeof(TL), sizeof(TL), lcmp)) != NULL) {
+		name = tlp->termcap;
+	}
+
+	return ((val = tgetnum(name)) == -1 ? -2 : val);
+}
+#endif /* !HAVE_CURSES_TIGETSTR */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/cl/cl_funcs.c	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,890 @@
+/*-
+ * Copyright (c) 1993, 1994
+ *	The Regents of the University of California.  All rights reserved.
+ * Copyright (c) 1993, 1994, 1995, 1996
+ *	Keith Bostic.  All rights reserved.
+ *
+ * See the LICENSE file for redistribution information.
+ */
+
+#include "config.h"
+
+#ifndef lint
+static const char sccsid[] = "$Id: cl_funcs.c,v 1.1.1.1 2008/05/16 18:03:09 aymeric Exp $ (Berkeley) $Date: 2008/05/16 18:03:09 $";
+#endif /* not lint */
+
+#include <sys/types.h>
+#include <sys/queue.h>
+#include <sys/time.h>
+
+#include <bitstring.h>
+#include <ctype.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <termios.h>
+#include <unistd.h>
+
+#include "../common/common.h"
+#include "../vi/vi.h"
+#include "cl.h"
+
+static void cl_rdiv __P((SCR *));
+
+static int 
+addstr4(SCR *sp, void *str, size_t len, int wide)
+{
+	CL_PRIVATE *clp;
+	WINDOW *win;
+	size_t y, x;
+	int iv;
+
+	clp = CLP(sp);
+	win = CLSP(sp) ? CLSP(sp) : stdscr;
+
+	/*
+	 * If ex isn't in control, it's the last line of the screen and
+	 * it's a split screen, use inverse video.
+	 */
+	iv = 0;
+	getyx(win, y, x);
+	if (!F_ISSET(sp, SC_SCR_EXWROTE) &&
+	    y == RLNO(sp, LASTLINE(sp)) && IS_SPLIT(sp)) {
+		iv = 1;
+		(void)wstandout(win);
+	}
+
+#ifdef USE_WIDECHAR
+	if (wide) {
+	    if (waddnwstr(win, str, len) == ERR)
+		return (1);
+	} else 
+#endif
+	    if (waddnstr(win, str, len) == ERR)
+		    return (1);
+
+	if (iv)
+		(void)wstandend(win);
+	return (0);
+}
+
+/*
+ * cl_waddstr --
+ *	Add len bytes from the string at the cursor, advancing the cursor.
+ *
+ * PUBLIC: int cl_waddstr __P((SCR *, const CHAR_T *, size_t));
+ */
+int
+cl_waddstr(SCR *sp, const CHAR_T *str, size_t len)
+{
+    return addstr4(sp, (void *)str, len, 1);
+}
+
+/*
+ * cl_addstr --
+ *	Add len bytes from the string at the cursor, advancing the cursor.
+ *
+ * PUBLIC: int cl_addstr __P((SCR *, const char *, size_t));
+ */
+int
+cl_addstr(SCR *sp, const char *str, size_t len)
+{
+    return addstr4(sp, (void *)str, len, 0);
+}
+
+/*
+ * cl_attr --
+ *	Toggle a screen attribute on/off.
+ *
+ * PUBLIC: int cl_attr __P((SCR *, scr_attr_t, int));
+ */
+int
+cl_attr(SCR *sp, scr_attr_t attribute, int on)
+{
+	CL_PRIVATE *clp;
+	WINDOW *win;
+
+	clp = CLP(sp);
+	win = CLSP(sp) ? CLSP(sp) : stdscr;
+
+	switch (attribute) {
+	case SA_ALTERNATE:
+	/*
+	 * !!!
+	 * There's a major layering violation here.  The problem is that the
+	 * X11 xterm screen has what's known as an "alternate" screen.  Some
+	 * xterm termcap/terminfo entries include sequences to switch to/from
+	 * that alternate screen as part of the ti/te (smcup/rmcup) strings.
+	 * Vi runs in the alternate screen, so that you are returned to the
+	 * same screen contents on exit from vi that you had when you entered
+	 * vi.  Further, when you run :shell, or :!date or similar ex commands,
+	 * you also see the original screen contents.  This wasn't deliberate
+	 * on vi's part, it's just that it historically sent terminal init/end
+	 * sequences at those times, and the addition of the alternate screen
+	 * sequences to the strings changed the behavior of vi.  The problem
+	 * caused by this is that we don't want to switch back to the alternate
+	 * screen while getting a new command from the user, when the user is
+	 * continuing to enter ex commands, e.g.:
+	 *
+	 *	:!date				<<< switch to original screen
+	 *	[Hit return to continue]	<<< prompt user to continue
+	 *	:command			<<< get command from user
+	 *
+	 * Note that the :command input is a true vi input mode, e.g., input
+	 * maps and abbreviations are being done.  So, we need to be able to
+	 * switch back into the vi screen mode, without flashing the screen. 
+	 *
+	 * To make matters worse, the curses initscr() and endwin() calls will
+	 * do this automatically -- so, this attribute isn't as controlled by
+	 * the higher level screen as closely as one might like.
+	 */
+	if (on) {
+		if (clp->ti_te != TI_SENT) {
+			clp->ti_te = TI_SENT;
+			if (clp->smcup == NULL)
+				(void)cl_getcap(sp, "smcup", &clp->smcup);
+			if (clp->smcup != NULL)
+				(void)tputs(clp->smcup, 1, cl_putchar);
+		}
+	} else
+		if (clp->ti_te != TE_SENT) {
+			clp->ti_te = TE_SENT;
+			if (clp->rmcup == NULL)
+				(void)cl_getcap(sp, "rmcup", &clp->rmcup);
+			if (clp->rmcup != NULL)
+				(void)tputs(clp->rmcup, 1, cl_putchar);
+			(void)fflush(stdout);
+		}
+		(void)fflush(stdout);
+		break;
+	case SA_INVERSE:
+		if (F_ISSET(sp, SC_EX | SC_SCR_EXWROTE)) {
+			if (clp->smso == NULL)
+				return (1);
+			if (on)
+				(void)tputs(clp->smso, 1, cl_putchar);
+			else
+				(void)tputs(clp->rmso, 1, cl_putchar);
+			(void)fflush(stdout);
+		} else {
+			if (on)
+				(void)wstandout(win);
+			else
+				(void)wstandend(win);
+		}
+		break;
+	default:
+		abort();
+	}
+	return (0);
+}
+
+/*
+ * cl_baud --
+ *	Return the baud rate.
+ *
+ * PUBLIC: int cl_baud __P((SCR *, u_long *));
+ */
+int
+cl_baud(SCR *sp, u_long *ratep)
+{
+	CL_PRIVATE *clp;
+
+	/*
+	 * XXX
+	 * There's no portable way to get a "baud rate" -- cfgetospeed(3)
+	 * returns the value associated with some #define, which we may
+	 * never have heard of, or which may be a purely local speed.  Vi
+	 * only cares if it's SLOW (w300), slow (w1200) or fast (w9600).
+	 * Try and detect the slow ones, and default to fast.
+	 */
+	clp = CLP(sp);
+	switch (cfgetospeed(&clp->orig)) {
+	case B50:
+	case B75:
+	case B110:
+	case B134:
+	case B150:
+	case B200:
+	case B300:
+	case B600:
+		*ratep = 600;
+		break;
+	case B1200:
+		*ratep = 1200;
+		break;
+	default:
+		*ratep = 9600;
+		break;
+	}
+	return (0);
+}
+
+/*
+ * cl_bell --
+ *	Ring the bell/flash the screen.
+ *
+ * PUBLIC: int cl_bell __P((SCR *));
+ */
+int
+cl_bell(SCR *sp)
+{
+       if (F_ISSET(sp, SC_EX | SC_SCR_EXWROTE | SC_SCR_EX))
+		(void)write(STDOUT_FILENO, "\07", 1);		/* \a */
+	else {
+		/*
+		 * Vi has an edit option which determines if the terminal
+		 * should be beeped or the screen flashed.
+		 */
+		if (O_ISSET(sp, O_FLASH))
+			(void)flash();
+		else
+			(void)beep();
+	}
+	return (0);
+}
+
+/*
+ * cl_clrtoeol --
+ *	Clear from the current cursor to the end of the line.
+ *
+ * PUBLIC: int cl_clrtoeol __P((SCR *));
+ */
+int
+cl_clrtoeol(SCR *sp)
+{
+	WINDOW *win;
+	size_t spcnt, y, x;
+
+	win = CLSP(sp) ? CLSP(sp) : stdscr;
+
+#if 0
+	if (IS_VSPLIT(sp)) {
+		/* The cursor must be returned to its original position. */
+		getyx(win, y, x);
+		for (spcnt = (sp->coff + sp->cols) - x; spcnt > 0; --spcnt)
+			(void)waddch(win, ' ');
+		(void)wmove(win, y, x);
+		return (0);
+	} else
+#endif
+		return (wclrtoeol(win) == ERR);
+}
+
+/*
+ * cl_cursor --
+ *	Return the current cursor position.
+ *
+ * PUBLIC: int cl_cursor __P((SCR *, size_t *, size_t *));
+ */
+int
+cl_cursor(SCR *sp, size_t *yp, size_t *xp)
+{
+	WINDOW *win;
+	win = CLSP(sp) ? CLSP(sp) : stdscr;
+	/*
+	 * The curses screen support splits a single underlying curses screen
+	 * into multiple screens to support split screen semantics.  For this
+	 * reason the returned value must be adjusted to be relative to the
+	 * current screen, and not absolute.  Screens that implement the split
+	 * using physically distinct screens won't need this hack.
+	 */
+	getyx(win, *yp, *xp);
+	/*
+	*yp -= sp->roff;
+	*xp -= sp->coff;
+	*/
+	return (0);
+}
+
+/*
+ * cl_deleteln --
+ *	Delete the current line, scrolling all lines below it.
+ *
+ * PUBLIC: int cl_deleteln __P((SCR *));
+ */
+int
+cl_deleteln(SCR *sp)
+{
+	CHAR_T ch;
+	CL_PRIVATE *clp;
+	WINDOW *win;
+	size_t col, lno, spcnt, y, x;
+
+	clp = CLP(sp);
+	win = CLSP(sp) ? CLSP(sp) : stdscr;
+
+	/*
+	 * This clause is required because the curses screen uses reverse
+	 * video to delimit split screens.  If the screen does not do this,
+	 * this code won't be necessary.
+	 *
+	 * If the bottom line was in reverse video, rewrite it in normal
+	 * video before it's scrolled.
+	 *
+	 * Check for the existence of a chgat function; XSI requires it, but
+	 * historic implementations of System V curses don't.   If it's not
+	 * a #define, we'll fall back to doing it by hand, which is slow but
+	 * acceptable.
+	 *
+	 * By hand means walking through the line, retrieving and rewriting
+	 * each character.  Curses has no EOL marker, so track strings of
+	 * spaces, and copy the trailing spaces only if there's a non-space
+	 * character following.
+	 */
+	if (!F_ISSET(sp, SC_SCR_EXWROTE) && IS_SPLIT(sp)) {
+		getyx(win, y, x);
+#ifdef mvchgat
+		mvwchgat(win, RLNO(sp, LASTLINE(sp)), 0, -1, A_NORMAL, 0, NULL);
+#else
+		for (lno = RLNO(sp, LASTLINE(sp)), col = spcnt = 0;;) {
+			(void)wmove(win, lno, col);
+			ch = winch(win);
+			if (isblank(ch))
+				++spcnt;
+			else {
+				(void)wmove(win, lno, col - spcnt);
+				for (; spcnt > 0; --spcnt)
+					(void)waddch(win, ' ');
+				(void)waddch(win, ch);
+			}
+			if (++col >= sp->cols)
+				break;
+		}
+#endif
+		(void)wmove(win, y, x);
+	}
+
+	/*
+	 * The bottom line is expected to be blank after this operation,
+	 * and other screens must support that semantic.
+	 */
+	return (wdeleteln(win) == ERR);
+}
+
+/* 
+ * cl_discard --
+ *	Discard a screen.
+ *
+ * PUBLIC: int cl_discard __P((SCR *, SCR **));
+ */
+int
+cl_discard(SCR *discardp, SCR **acquirep)
+{
+	CL_PRIVATE *clp;
+	SCR*	tsp;
+
+	if (discardp) {
+	    clp = CLP(discardp);
+	    F_SET(clp, CL_LAYOUT);
+
+	    if (CLSP(discardp)) {
+		    delwin(CLSP(discardp));
+		    discardp->cl_private = NULL;
+	    }
+	}
+
+	/* no screens got a piece; we're done */
+	if (!acquirep) 
+		return 0;
+
+	for (; (tsp = *acquirep) != NULL; ++acquirep) {
+		clp = CLP(tsp);
+		F_SET(clp, CL_LAYOUT);
+
+		if (CLSP(tsp))
+			delwin(CLSP(tsp));
+		tsp->cl_private = subwin(stdscr, tsp->rows, tsp->cols,
+					   tsp->roff, tsp->coff);
+	}
+
+	/* discardp is going away, acquirep is taking up its space. */
+	return (0);
+}
+
+/* 
+ * cl_ex_adjust --
+ *	Adjust the screen for ex.  This routine is purely for standalone
+ *	ex programs.  All special purpose, all special case.
+ *
+ * PUBLIC: int cl_ex_adjust __P((SCR *, exadj_t));
+ */
+int
+cl_ex_adjust(SCR *sp, exadj_t action)
+{
+	CL_PRIVATE *clp;
+	int cnt;
+
+	clp = CLP(sp);
+	switch (action) {
+	case EX_TERM_SCROLL:
+		/* Move the cursor up one line if that's possible. */
+		if (clp->cuu1 != NULL)
+			(void)tputs(clp->cuu1, 1, cl_putchar);
+		else if (clp->cup != NULL)
+			(void)tputs(tgoto(clp->cup,
+			    0, LINES - 2), 1, cl_putchar);
+		else
+			return (0);
+		/* FALLTHROUGH */
+	case EX_TERM_CE:
+		/* Clear the line. */
+		if (clp->el != NULL) {
+			(void)putchar('\r');
+			(void)tputs(clp->el, 1, cl_putchar);
+		} else {
+			/*
+			 * Historically, ex didn't erase the line, so, if the
+			 * displayed line was only a single glyph, and <eof>
+			 * was more than one glyph, the output would not fully
+			 * overwrite the user's input.  To fix this, output
+			 * the maxiumum character number of spaces.  Note,
+			 * this won't help if the user entered extra prompt
+			 * or <blank> characters before the command character.
+			 * We'd have to do a lot of work to make that work, and
+			 * it's almost certainly not worth the effort.
+			 */
+			for (cnt = 0; cnt < MAX_CHARACTER_COLUMNS; ++cnt)
+				(void)putchar('\b');
+			for (cnt = 0; cnt < MAX_CHARACTER_COLUMNS; ++cnt)
+				(void)putchar(' ');
+			(void)putchar('\r');
+			(void)fflush(stdout);
+		}
+		break;
+	default:
+		abort();
+	}
+	return (0);
+}
+
+/*
+ * cl_insertln --
+ *	Push down the current line, discarding the bottom line.
+ *
+ * PUBLIC: int cl_insertln __P((SCR *));
+ */
+int
+cl_insertln(SCR *sp)
+{
+	WINDOW *win;
+	win = CLSP(sp) ? CLSP(sp) : stdscr;
+	/*
+	 * The current line is expected to be blank after this operation,
+	 * and the screen must support that semantic.
+	 */
+	return (winsertln(win) == ERR);
+}
+
+/*
+ * cl_keyval --
+ *	Return the value for a special key.
+ *
+ * PUBLIC: int cl_keyval __P((SCR *, scr_keyval_t, CHAR_T *, int *));
+ */
+int
+cl_keyval(SCR *sp, scr_keyval_t val, CHAR_T *chp, int *dnep)
+{
+	CL_PRIVATE *clp;
+
+	/*
+	 * VEOF, VERASE and VKILL are required by POSIX 1003.1-1990,
+	 * VWERASE is a 4BSD extension.
+	 */
+	clp = CLP(sp);
+	switch (val) {
+	case KEY_VEOF:
+		*dnep = (*chp = clp->orig.c_cc[VEOF]) == _POSIX_VDISABLE;
+		break;
+	case KEY_VERASE:
+		*dnep = (*chp = clp->orig.c_cc[VERASE]) == _POSIX_VDISABLE;
+		break;
+	case KEY_VKILL:
+		*dnep = (*chp = clp->orig.c_cc[VKILL]) == _POSIX_VDISABLE;
+		break;
+#ifdef VWERASE
+	case KEY_VWERASE:
+		*dnep = (*chp = clp->orig.c_cc[VWERASE]) == _POSIX_VDISABLE;
+		break;
+#endif
+	default:
+		*dnep = 1;
+		break;
+	}
+	return (0);
+}
+
+/*
+ * cl_move --
+ *	Move the cursor.
+ *
+ * PUBLIC: int cl_move __P((SCR *, size_t, size_t));
+ */
+int
+cl_move(SCR *sp, size_t lno, size_t cno)
+{
+	WINDOW *win;
+	win = CLSP(sp) ? CLSP(sp) : stdscr;
+	/* See the comment in cl_cursor. */
+	if (wmove(win, RLNO(sp, lno), RCNO(sp, cno)) == ERR) {
+		msgq(sp, M_ERR, "Error: move: l(%u + %u) c(%u + %u)",
+		    lno, sp->roff, cno, sp->coff);
+		return (1);
+	}
+	return (0);
+}
+
+/*
+ * cl_refresh --
+ *	Refresh the screen.
+ *
+ * PUBLIC: int cl_refresh __P((SCR *, int));
+ */
+int
+cl_refresh(SCR *sp, int repaint)
+{
+	GS *gp;
+	CL_PRIVATE *clp;
+	WINDOW *win;
+	SCR *psp, *tsp;
+	size_t y, x;
+
+	gp = sp->gp;
+	clp = CLP(sp);
+	win = CLSP(sp) ? CLSP(sp) : stdscr;
+
+	/*
+	 * If we received a killer signal, we're done, there's no point
+	 * in refreshing the screen.
+	 */
+	if (clp->killersig)
+		return (0);
+
+	/*
+	 * If repaint is set, the editor is telling us that we don't know
+	 * what's on the screen, so we have to repaint from scratch.
+	 *
+	 * If repaint set or the screen layout changed, we need to redraw
+	 * any lines separating vertically split screens.  If the horizontal
+	 * offsets are the same, then the split was vertical, and need to
+	 * draw a dividing line.
+	 */
+	if (repaint || F_ISSET(clp, CL_LAYOUT)) {
+		getyx(stdscr, y, x);
+		for (psp = sp; 
+		    psp != (void *)&sp->wp->scrq; psp = psp->q.cqe_next)
+			for (tsp = psp->q.cqe_next;
+			    tsp != (void *)&sp->wp->scrq; 
+			    tsp = tsp->q.cqe_next)
+				if (psp->roff == tsp->roff) {
+				    if (psp->coff + psp->cols + 1 == tsp->coff)
+					cl_rdiv(psp);
+				    else 
+				    if (tsp->coff + tsp->cols + 1 == psp->coff)
+					cl_rdiv(tsp);
+				}
+		(void)wmove(stdscr, y, x);
+		F_CLR(clp, CL_LAYOUT);
+	}
+
+	/*
+	 * In the curses library, doing wrefresh(curscr) is okay, but the
+	 * screen flashes when we then apply the refresh() to bring it up
+	 * to date.  So, use clearok().
+	 */
+	if (repaint)
+		clearok(curscr, 1);
+	/*
+	 * Only do an actual refresh, when this is the focus window,
+	 * i.e. the one holding the cursor. This assumes that refresh
+	 * is called for that window after refreshing the others.
+	 * This prevents the cursor being drawn in the other windows.
+	 */
+	return (wnoutrefresh(stdscr) == ERR || 
+		wnoutrefresh(win) == ERR || 
+		(sp == clp->focus && doupdate() == ERR));
+}
+
+/*
+ * cl_rdiv --
+ *	Draw a dividing line between two vertically split screens.
+ */
+static void
+cl_rdiv(SCR *sp)
+{
+	size_t cnt;
+
+	for (cnt = 0; cnt < sp->rows - 1; ++cnt) {
+		wmove(stdscr, sp->roff + cnt, sp->cols + sp->coff);
+		waddch(stdscr, '|');
+	}
+}
+
+/*
+ * cl_rename --
+ *	Rename the file.
+ *
+ * PUBLIC: int cl_rename __P((SCR *, char *, int));
+ */
+int
+cl_rename(SCR *sp, char *name, int on)
+{
+	CL_PRIVATE *clp;
+	FILE *pfp;
+	GS *gp;
+	char buf[256], *p;
+
+	gp = sp->gp;
+	clp = CLP(sp);
+
+	if (on) {
+		clp->focus = sp;
+		if (!F_ISSET(clp, CL_RENAME_OK))
+			return (0);
+
+		/*
+		 * XXX
+		 * We can only rename windows for xterm.
+		 */
+		if (strncmp(OG_STR(gp, GO_TERM), "xterm", sizeof("xterm") - 1))
+			return (0);
+
+		/*
+		 * XXX
+		 * Try and figure out the current name of this window.  There
+		 * are two forms of the xwininfo output I've seen:
+		 *
+		 * Window id: 0x400000d "name"
+		 * Window id: 0x140000d (name)
+		 */
+#define	COMMAND \
+	"expr \"`xwininfo -id $WINDOWID | grep id:`\" : '.* [\"(]\\(.*\\)[\")]'"
+
+		if (clp->oname == NULL &&
+		    (pfp = popen(COMMAND, "r")) != NULL) {
+			if (fgets(buf, sizeof(buf), pfp) != NULL &&
+			    (p = strchr(buf, '\n')) != NULL) {
+				*p = '\0';
+				clp->oname = strdup(buf);
+			}
+			(void)fclose(pfp);
+		}
+
+		cl_setname(gp, name);
+
+		F_SET(clp, CL_RENAME);
+	} else
+		if (F_ISSET(clp, CL_RENAME)) {
+			cl_setname(gp, clp->oname);
+
+			F_CLR(clp, CL_RENAME);
+		}
+	return (0);
+}
+
+/*
+ * cl_setname --
+ *	Set a X11 icon/window name.
+ *
+ * PUBLIC: void cl_setname __P((GS *, char *));
+ */
+void
+cl_setname(GS *gp, char *name)
+{
+/* X11 xterm escape sequence to rename the icon/window. */
+#define	XTERM_RENAME	"\033]0;%s\007"
+
+	(void)printf(XTERM_RENAME, name == NULL ? OG_STR(gp, GO_TERM) : name);
+	(void)fflush(stdout);
+}
+
+/* 
+ * cl_split --
+ *	Split a screen.
+ *
+ * PUBLIC: int cl_split __P((SCR *, SCR *));
+ */
+int
+cl_split(SCR *origp, SCR *newp)
+{
+	CL_PRIVATE *clp;
+
+	clp = CLP(origp);
+	F_SET(clp, CL_LAYOUT);
+
+	if (CLSP(origp))
+		delwin(CLSP(origp));
+
+	origp->cl_private = subwin(stdscr, origp->rows, origp->cols,
+				     origp->roff, origp->coff);
+	newp->cl_private = subwin(stdscr, newp->rows, newp->cols,
+				     newp->roff, newp->coff);
+
+	/* origp is the original screen, giving up space to newp. */
+	return (0);
+}
+
+/*
+ * cl_suspend --
+ *	Suspend a screen.
+ *
+ * PUBLIC: int cl_suspend __P((SCR *, int *));
+ */
+int
+cl_suspend(SCR *sp, int *allowedp)
+{
+	struct termios t;
+	CL_PRIVATE *clp;
+	WINDOW *win;
+	GS *gp;
+	size_t y, x;
+	int changed;
+
+	gp = sp->gp;
+	clp = CLP(sp);
+	win = CLSP(sp) ? CLSP(sp) : stdscr;
+	*allowedp = 1;
+
+	/*
+	 * The ex implementation of this function isn't needed by screens not
+	 * supporting ex commands that require full terminal canonical mode
+	 * (e.g. :suspend).
+	 *
+	 * The vi implementation of this function isn't needed by screens not
+	 * supporting vi process suspension, i.e. any screen that isn't backed
+	 * by a UNIX shell.
+	 *
+	 * Setting allowedp to 0 will cause the editor to reject the command.
+	 */
+	if (F_ISSET(sp, SC_EX)) { 
+		/* Save the terminal settings, and restore the original ones. */
+		if (F_ISSET(clp, CL_STDIN_TTY)) {
+			(void)tcgetattr(STDIN_FILENO, &t);
+			(void)tcsetattr(STDIN_FILENO,
+			    TCSASOFT | TCSADRAIN, &clp->orig);
+		}
+
+		/* Stop the process group. */
+		(void)kill(0, SIGTSTP);
+
+		/* Time passes ... */
+
+		/* Restore terminal settings. */
+		if (F_ISSET(clp, CL_STDIN_TTY))
+			(void)tcsetattr(STDIN_FILENO, TCSASOFT | TCSADRAIN, &t);
+		return (0);
+	}
+
+	/*
+	 * Move to the lower left-hand corner of the screen.
+	 *
+	 * XXX
+	 * Not sure this is necessary in System V implementations, but it
+	 * shouldn't hurt.
+	 */
+	getyx(win, y, x);
+	(void)wmove(win, LINES - 1, 0);
+	(void)wrefresh(win);
+
+	/*
+	 * Temporarily end the screen.  System V introduced a semantic where
+	 * endwin() could be restarted.  We use it because restarting curses
+	 * from scratch often fails in System V.  4BSD curses didn't support
+	 * restarting after endwin(), so we have to do what clean up we can
+	 * without calling it.
+	 */
+	/* Save the terminal settings. */
+	(void)tcgetattr(STDIN_FILENO, &t);
+
+	/* Restore the cursor keys to normal mode. */
+	(void)keypad(stdscr, FALSE);
+
+	/* Restore the window name. */
+	(void)cl_rename(sp, NULL, 0);
+
+#ifdef HAVE_BSD_CURSES
+	(void)cl_attr(sp, SA_ALTERNATE, 0);
+#else
+	(void)endwin();
+#endif
+	/*
+	 * XXX
+	 * Restore the original terminal settings.  This is bad -- the
+	 * reset can cause character loss from the tty queue.  However,
+	 * we can't call endwin() in BSD curses implementations, and too
+	 * many System V curses implementations don't get it right.
+	 */
+	(void)tcsetattr(STDIN_FILENO, TCSADRAIN | TCSASOFT, &clp->orig);
+
+	/* Stop the process group. */
+	(void)kill(0, SIGTSTP);
+
+	/* Time passes ... */
+
+	/*
+	 * If we received a killer signal, we're done.  Leave everything
+	 * unchanged.  In addition, the terminal has already been reset
+	 * correctly, so leave it alone.
+	 */
+	if (clp->killersig) {
+		F_CLR(clp, CL_SCR_EX_INIT | CL_SCR_VI_INIT);
+		return (0);
+	}
+
+	/* Restore terminal settings. */
+	wrefresh(win);			    /* Needed on SunOs/Solaris ? */
+	if (F_ISSET(clp, CL_STDIN_TTY))
+		(void)tcsetattr(STDIN_FILENO, TCSASOFT | TCSADRAIN, &t);
+
+#ifdef HAVE_BSD_CURSES
+	(void)cl_attr(sp, SA_ALTERNATE, 1);
+#endif
+
+	/* Set the window name. */
+	(void)cl_rename(sp, sp->frp->name, 1);
+
+	/* Put the cursor keys into application mode. */
+	(void)keypad(stdscr, TRUE);
+
+	/* Refresh and repaint the screen. */
+	(void)wmove(win, y, x);
+	(void)cl_refresh(sp, 1);
+
+	/* If the screen changed size, set the SIGWINCH bit. */
+	if (cl_ssize(sp, 1, NULL, NULL, &changed))
+		return (1);
+	if (changed)
+		F_SET(CLP(sp), CL_SIGWINCH);
+
+	return (0);
+}
+
+/*
+ * cl_usage --
+ *	Print out the curses usage messages.
+ * 
+ * PUBLIC: void cl_usage __P((void));
+ */
+void
+cl_usage(void)
+{
+#define	USAGE "\
+usage: ex [-eFRrSsv] [-c command] [-t tag] [-w size] [file ...]\n\
+usage: vi [-eFlRrSv] [-c command] [-t tag] [-w size] [file ...]\n"
+	(void)fprintf(stderr, "%s", USAGE);
+#undef	USAGE
+}
+
+#ifdef DEBUG
+/*
+ * gdbrefresh --
+ *	Stub routine so can flush out curses screen changes using gdb.
+ */
+int
+gdbrefresh(void)
+{
+	refresh();
+	return (0);		/* XXX Convince gdb to run it. */
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dist/nvi/cl/cl_main.c	Fri May 16 18:03:01 2008 +0000
@@ -0,0 +1,429 @@
+/*-
+ * Copyright (c) 1993, 1994
+ *	The Regents of the University of California.  All rights reserved.
+ * Copyright (c) 1993, 1994, 1995, 1996
+ *	Keith Bostic.  All rights reserved.
+ *
+ * See the LICENSE file for redistribution information.
+ */
+
+#include "config.h"
+
+#ifndef lint
+static const char sccsid[] = "$Id: cl_main.c,v 1.1.1.1 2008/05/16 18:03:10 aymeric Exp $ (Berkeley) $Date: 2008/05/16 18:03:10 $";
+#endif /* not lint */
+
+#include <sys/types.h>
+#include <sys/queue.h>
+
+#include <bitstring.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <termios.h>
+#include <unistd.h>
+
+#include "../common/common.h"
+#include "../ip/extern.h"
+#include "cl.h"
+#include "pathnames.h"
+
+GS *__global_list;				/* GLOBAL: List of screens. */
+sigset_t __sigblockset;				/* GLOBAL: Blocked signals. */
+
+static void	   cl_func_std __P((WIN *));
+static void	   cl_end __P((CL_PRIVATE *));
+static CL_PRIVATE *cl_init __P((WIN *));
+static void	   perr __P((char *, char *));
+static int	   setsig __P((int, struct sigaction *, void (*)(int)));
+static void	   sig_end __P((GS *));
+static void	   term_init __P((char *, char *));
+
+/*
+ * main --
+ *	This is the main loop for the standalone curses editor.
+ */
+int
+main(int argc, char **argv)
+{
+	static int reenter;
+	CL_PRIVATE *clp;
+	GS *gp;
+	WIN *wp;
+	size_t rows, cols;
+	int rval;
+	char **p_av, **t_av, *ttype;
+
+	/* If loaded at 0 and jumping through a NULL pointer, stop. */
+	if (reenter++)
+		abort();
+
+	/* Create and initialize the global structure. */
+	__global_list = gp = gs_init(argv[0]);
+
+	/*
+	 * Strip out any arguments that vi isn't going to understand.  There's
+	 * no way to portably call getopt twice, so arguments parsed here must
+	 * be removed from the argument list.
+	 */
+	for (p_av = t_av = argv;;) {
+		if (*t_av == NULL) {
+			*p_av = NULL;
+			break;
+		}
+		if (!strcmp(*t_av, "--")) {
+			while ((*p_av++ = *t_av++) != NULL);
+			break;
+		}
+		*p_av++ = *t_av++;
+	}
+
+	/* Create new window */
+	wp = gs_new_win(gp);
+		
+	/* Create and initialize the CL_PRIVATE structure. */
+	clp = cl_init(wp);
+
+	/*
+	 * Initialize the terminal information.
+	 *
+	 * We have to know what terminal it is from the start, since we may
+	 * have to use termcap/terminfo to find out how big the screen is.
+	 */
+	if ((ttype = getenv("TERM")) == NULL)
+		ttype = "unknown";
+	term_init(gp->progname, ttype);
+
+	/* Add the terminal type to the global structure. */
+	if ((OG_D_STR(gp, GO_TERM) =
+	    OG_STR(gp, GO_TERM) = strdup(ttype)) == NULL)
+		perr(gp->progname, NULL);
+
+	/* Figure out how big the screen is. */
+	if (cl_ssize(NULL, 0, &rows, &cols, NULL))
+		exit (1);
+
+	/* Add the rows and columns to the global structure. */
+	OG_VAL(gp, GO_LINES) = OG_D_VAL(gp, GO_LINES) = rows;
+	OG_VAL(gp, GO_COLUMNS) = OG_D_VAL(gp, GO_COLUMNS) = cols;
+
+	/* Ex wants stdout to be buffered. */
+	(void)setvbuf(stdout, NULL, _IOFBF, 0);
+
+	/* Start catching signals. */
+	if (sig_init(gp, NULL))
+		exit (1);
+
+	/* Run ex/vi. */
+	rval = editor(wp, argc, argv);
+
+	/* Clean out the global structure. */
+	gs_end(gp);
+
+	/* Clean up signals. */
+	sig_end(gp);
+
+	/* Clean up the terminal. */
+	(void)cl_quit(gp);
+
+	/*
+	 * XXX
+	 * Reset the O_MESG option.
+	 */
+	if (clp->tgw != TGW_UNKNOWN)
+		(void)cl_omesg(NULL, clp, clp->tgw == TGW_SET);
+
+	/*
+	 * XXX
+	 * Reset the X11 xterm icon/window name.
+	 */
+	if (F_ISSET(clp, CL_RENAME))
+		cl_setname(gp, clp->oname);
+
+	/* If a killer signal arrived, pretend we just got it. */
+	if (clp->killersig) {
+		(void)signal(clp->killersig, SIG_DFL);
+		(void)kill(getpid(), clp->killersig);
+		/* NOTREACHED */
+	}
+
+	/* Free the global and CL private areas. */
+#if defined(DEBUG) || defined(PURIFY) || defined(LIBRARY)
+	cl_end(clp);
+	free(gp);
+#endif
+
+	exit (rval);
+}
+
+/*
+ * cl_init --
+ *	Create and partially initialize the CL structure.
+ */
+static CL_PRIVATE *
+cl_init(WIN *wp)
+{
+	CL_PRIVATE *clp;
+	int fd;
+	GS *gp;
+
+	gp = wp->gp;
+
+	/* Allocate the CL private structure. */
+	CALLOC_NOMSG(NULL, clp, CL_PRIVATE *, 1, sizeof(CL_PRIVATE));
+	if (clp == NULL)
+		perr(gp->progname, NULL);
+	gp->cl_private = clp;
+
+	/*
+	 * Set the CL_STDIN_TTY flag.  It's purpose is to avoid setting
+	 * and resetting the tty if the input isn't from there.  We also
+	 * use the same test to determine if we're running a script or
+	 * not.
+	 */
+	if (isatty(STDIN_FILENO))
+		F_SET(clp, CL_STDIN_TTY);
+	else
+		F_SET(gp, G_SCRIPTED);
+
+	/*
+	 * We expect that if we've lost our controlling terminal that the
+	 * open() (but not the tcgetattr()) will fail.
+	 */
+	if (F_ISSET(clp, CL_STDIN_TTY)) {
+		if (tcgetattr(STDIN_FILENO, &clp->orig) == -1)
+			goto tcfail;
+	} else if ((fd = open(_PATH_TTY, O_RDONLY, 0)) != -1) {
+		if (tcgetattr(fd, &clp->orig) == -1) {
+tcfail:			perr(gp->progname, "tcgetattr");
+			exit (1);
+		}
+		(void)close(fd);
+	}
+
+	/* Initialize the list of curses functions. */
+	cl_func_std(wp);
+
+	return (clp);
+}
+
+/*
+ * cl_end --
+ *	Discard the CL structure.
+ */
+static void
+cl_end(CL_PRIVATE *clp)
+{
+	if (clp->oname != NULL)
+		free(clp->oname);
+	free(clp);
+}
+
+/*
+ * term_init --
+ *	Initialize terminal information.
+ */
+static void
+term_init(char *name, char *ttype)
+{
+	int err;
+
+	/* Set up the terminal database information. */
+	setupterm(ttype, STDOUT_FILENO, &err);
+	switch (err) {
+	case -1:
+		(void)fprintf(stderr,
+		    "%s: No terminal database found\n", name);
+		exit (1);
+	case 0:
+		(void)fprintf(stderr,
+		    "%s: %s: unknown terminal type\n", name, ttype);
+		exit (1);
+	}
+}
+
+#define	GLOBAL_CLP \
+	CL_PRIVATE *clp = GCLP(__global_list);
+static void
+h_hup(int signo)
+{
+	GLOBAL_CLP;
+
+	F_SET(clp, CL_SIGHUP);
+	clp->killersig = SIGHUP;
+}
+
+static void
+h_int(int signo)
+{
+	GLOBAL_CLP;
+
+	F_SET(clp, CL_SIGINT);
+}
+
+static void
+h_term(int signo)
+{
+	GLOBAL_CLP;
+
+	F_SET(clp, CL_SIGTERM);
+	clp->killersig = SIGTERM;
+}
+
+static void
+h_winch(int signo)
+{
+	GLOBAL_CLP;
+
+	F_SET(clp, CL_SIGWINCH);
+}
+#undef	GLOBAL_CLP
+
+/*
+ * sig_init --
+ *	Initialize signals.
+ *
+ * PUBLIC: int sig_init __P((GS *, SCR *));
+ */
+int
+sig_init(GS *gp, SCR *sp)
+{
+	CL_PRIVATE *clp;
+
+	clp = GCLP(gp);
+
+	if (sp == NULL) {
+		(void)sigemptyset(&__sigblockset);
+		if (sigaddset(&__sigblockset, SIGHUP) ||
+		    setsig(SIGHUP, &clp->oact[INDX_HUP], h_hup) ||
+		    sigaddset(&__sigblockset, SIGINT) ||
+		    setsig(SIGINT, &clp->oact[INDX_INT], h_int) ||
+		    sigaddset(&__sigblockset, SIGTERM) ||
+		    setsig(SIGTERM, &clp->oact[INDX_TERM], h_term)
+#ifdef SIGWINCH
+		    ||
+		    sigaddset(&__sigblockset, SIGWINCH) ||
+		    setsig(SIGWINCH, &clp->oact[INDX_WINCH], h_winch)
+#endif
+		    ) {
+			perr(gp->progname, NULL);
+			return (1);
+		}
+	} else
+		if (setsig(SIGHUP, NULL, h_hup) ||
+		    setsig(SIGINT, NULL, h_int) ||
+		    setsig(SIGTERM, NULL, h_term)
+#ifdef SIGWINCH
+		    ||
+		    setsig(SIGWINCH, NULL, h_winch)
+#endif
+		    ) {
+			msgq(sp, M_SYSERR, "signal-reset");
+		}
+	return (0);
+}
+
+/*
+ * setsig --
+ *	Set a signal handler.
+ */
+static int
+setsig(int signo, struct sigaction *oactp, void (*handler) (int))
+{
+	struct sigaction act;
+
+	/*
+	 * Use sigaction(2), not signal(3), since we don't always want to
+	 * restart system calls.  The example is when waiting for a command
+	 * mode keystroke and SIGWINCH arrives.  Besides, you can't portably
+	 * restart system calls (thanks, POSIX!).  On the other hand, you
+	 * can't portably NOT restart system calls (thanks, Sun!).  SunOS
+	 * used SA_INTERRUPT as their extension to NOT restart read calls.
+	 * We sure hope nobody else used it for anything else.  Mom told me
+	 * there'd be days like this.  She just never told me that there'd
+	 * be so many.
+	 */
+	act.sa_handler = handler;
+	sigemptyset(&act.sa_mask);
+
+#ifdef SA_INTERRUPT
+	act.sa_flags = SA_INTERRUPT;
+#else
+	act.sa_flags = 0;
+#endif
+	return (sigaction(signo, &act, oactp));
+}
+
+/*
+ * sig_end --
+ *	End signal setup.
+ */
+static void
+sig_end(GS *gp)
+{
+	CL_PRIVATE *clp;
+
+	clp = GCLP(gp);
+	(void)sigaction(SIGHUP, NULL, &clp->oact[INDX_HUP]);
+	(void)sigaction(SIGINT, NULL, &clp->oact[INDX_INT]);
+	(void)sigaction(SIGTERM, NULL, &clp->oact[INDX_TERM]);
+#ifdef SIGWINCH
+	(void)sigaction(SIGWINCH, NULL, &clp->oact[INDX_WINCH]);
+#endif
+}
+
+/*
+ * cl_func_std --
+ *	Initialize the standard curses functions.
+ */
+static void
+cl_func_std(WIN *wp)
+{
+	GS *gp;
+
+	gp = wp->gp;
+
+	gp->scr_addstr = cl_addstr;
+	gp->scr_waddstr = cl_waddstr;
+	gp->scr_attr = cl_attr;
+	gp->scr_baud = cl_baud;
+	gp->scr_bell = cl_bell;
+	gp->scr_busy = NULL;
+	gp->scr_child = NULL;
+	gp->scr_clrtoeol = cl_clrtoeol;
+	gp->scr_cursor = cl_cursor;
+	gp->scr_deleteln = cl_deleteln;
+	gp->scr_reply = NULL;
+	gp->scr_discard = cl_discard;
+	gp->scr_event = cl_event;
+	gp->scr_ex_adjust = cl_ex_adjust;
+	gp->scr_fmap = cl_fmap;
+	gp->scr_insertln = cl_insertln;
+	gp->scr_keyval = cl_keyval;
+	gp->scr_move = cl_move;
+	wp->scr_msg = NULL;
+	gp->scr_optchange = cl_optchange;
+	gp->scr_refresh = cl_refresh;
+	gp->scr_rename = cl_rename;
+	gp->scr_screen = cl_screen;
+	gp->scr_split = cl_split;
+	gp->scr_suspend = cl_suspend;
+	gp->scr_usage = cl_usage;
+}
+