summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Downs <downsj@cvs.openbsd.org>1997-07-27 22:28:26 +0000
committerJason Downs <downsj@cvs.openbsd.org>1997-07-27 22:28:26 +0000
commit4b78d53e662bebcd37bfe64c34ee64da5e5ca0f1 (patch)
tree4072a414806b098bf4aca70cea37e6063a2d3f3e
parentd3cd71e47815755c43ebd011e6c53f532e581239 (diff)
Update to 1.79 and install as vi/ex/view.
-rw-r--r--usr.bin/vi/FAQ12
-rw-r--r--usr.bin/vi/LAYOUT7
-rw-r--r--usr.bin/vi/Makefile1
-rw-r--r--usr.bin/vi/README4
-rw-r--r--usr.bin/vi/build/Makefile30
-rw-r--r--usr.bin/vi/build/config.h7
-rw-r--r--usr.bin/vi/build/pathnames.h3
-rw-r--r--usr.bin/vi/build/port.h1
-rw-r--r--usr.bin/vi/catalog/Makefile16
-rw-r--r--usr.bin/vi/catalog/dutch12
-rw-r--r--usr.bin/vi/catalog/dutch.base12
-rw-r--r--usr.bin/vi/catalog/dutch.check1
-rw-r--r--usr.bin/vi/catalog/english11
-rw-r--r--usr.bin/vi/catalog/english.base12
-rw-r--r--usr.bin/vi/catalog/english.check1
-rw-r--r--usr.bin/vi/catalog/french317
-rw-r--r--usr.bin/vi/catalog/french.base309
-rw-r--r--usr.bin/vi/catalog/french.check34
-rw-r--r--usr.bin/vi/catalog/german12
-rw-r--r--usr.bin/vi/catalog/german.base12
-rw-r--r--usr.bin/vi/catalog/german.check1
-rw-r--r--usr.bin/vi/catalog/ru_SU.KOI8-R8
-rw-r--r--usr.bin/vi/catalog/ru_SU.KOI8-R.base8
-rw-r--r--usr.bin/vi/catalog/ru_SU.KOI8-R.check1
-rw-r--r--usr.bin/vi/catalog/spanish317
-rw-r--r--usr.bin/vi/catalog/spanish.base309
-rw-r--r--usr.bin/vi/catalog/spanish.check35
-rw-r--r--usr.bin/vi/catalog/swedish40
-rw-r--r--usr.bin/vi/catalog/swedish.base40
-rw-r--r--usr.bin/vi/catalog/swedish.check1
-rw-r--r--usr.bin/vi/cl/cl_main.c29
-rw-r--r--usr.bin/vi/common/api.c60
-rw-r--r--usr.bin/vi/common/delete.c8
-rw-r--r--usr.bin/vi/common/exf.c15
-rw-r--r--usr.bin/vi/common/main.c4
-rw-r--r--usr.bin/vi/common/options.c21
-rw-r--r--usr.bin/vi/common/options.h11
-rw-r--r--usr.bin/vi/docs/USD.doc/vi.man/vi.1 (renamed from usr.bin/vi/docs/USD.doc/vi.man/nvi.1)6
-rw-r--r--usr.bin/vi/docs/USD.doc/vi.ref/set.opt.roff7
-rw-r--r--usr.bin/vi/docs/USD.doc/vi.ref/spell.ok5
-rw-r--r--usr.bin/vi/docs/USD.doc/vi.ref/vi.ref75
-rw-r--r--usr.bin/vi/docs/changelog13
-rw-r--r--usr.bin/vi/docs/features2
-rw-r--r--usr.bin/vi/docs/interp/interp4
-rw-r--r--usr.bin/vi/docs/interp/spell.ok2
-rw-r--r--usr.bin/vi/ex/ex.c37
-rw-r--r--usr.bin/vi/ex/ex_append.c4
-rw-r--r--usr.bin/vi/ex/ex_cmd.c6
-rw-r--r--usr.bin/vi/ex/ex_delete.c4
-rw-r--r--usr.bin/vi/ex/ex_filter.c4
-rw-r--r--usr.bin/vi/ex/ex_global.c12
-rw-r--r--usr.bin/vi/ex/ex_txt.c11
-rw-r--r--usr.bin/vi/ex/version.h2
-rw-r--r--usr.bin/vi/include/com_extern.h5
-rw-r--r--usr.bin/vi/include/perl_extern.h2
-rw-r--r--usr.bin/vi/include/vi_extern.h2
-rw-r--r--usr.bin/vi/vi/v_delete.c4
-rw-r--r--usr.bin/vi/vi/v_itxt.c4
-rw-r--r--usr.bin/vi/vi/v_txt.c5
-rw-r--r--usr.bin/vi/vi/v_xchar.c6
-rw-r--r--usr.bin/vi/vi/vi.c4
-rw-r--r--usr.bin/vi/vi/vs_msg.c24
-rw-r--r--usr.bin/vi/vi/vs_refresh.c29
-rw-r--r--usr.bin/vi/vi/vs_split.c4
64 files changed, 1728 insertions, 277 deletions
diff --git a/usr.bin/vi/FAQ b/usr.bin/vi/FAQ
index 79546d184c4..357650a589b 100644
--- a/usr.bin/vi/FAQ
+++ b/usr.bin/vi/FAQ
@@ -1,4 +1,4 @@
-@(#)FAQ 8.12 (Berkeley) 8/17/96
+@(#)FAQ 8.13 (Berkeley) 10/14/96
Q: How can I get vi to display my character set?
A: Vi uses the C library routine isprint(3) to determine if a character
@@ -148,3 +148,13 @@ Q: When I update a file I already have open, and use :e to reread it, I
get nul's for the rest of the file!
A: Your system's implementation of mmap(2) has a bug; you will have to
exit vi and re-execute it.
+
+Q: Where can I get cscope?
+A: Cscope is available on UNIXWare System V Release 4.0 variants such as
+ Sun Solaris 2.x (/opt/SUNWspro/bin) and UNIXWare System V Release 4.1.
+
+ You can buy version 13.3 source with an unrestricted license for $400
+ from AT&T Software Solutions by calling +1-800-462-8146. Binary
+ redistribution of cscope is an additional $1500, one-time flat fee.
+
+ For more information, see http://www.unipress.com/att/new/cscope.html.
diff --git a/usr.bin/vi/LAYOUT b/usr.bin/vi/LAYOUT
index a7e0e81a049..e3a55ebb577 100644
--- a/usr.bin/vi/LAYOUT
+++ b/usr.bin/vi/LAYOUT
@@ -1,4 +1,4 @@
-# @(#)LAYOUT 8.11 (Berkeley) 8/11/96
+# @(#)LAYOUT 8.12 (Berkeley) 10/10/96
LAYOUT
This file: the layout of the nvi sources.
@@ -104,11 +104,6 @@ include/
bitstring.h -- The 4.4BSD bitstring operations.
sys/queue.h -- The 4.4BSD queue operations.
-install/
- Things to install on the local system.
-
- recover.script -- Vi recovery script.
-
perl_api/
Source code supporting the Perl scripting language for nvi.
diff --git a/usr.bin/vi/Makefile b/usr.bin/vi/Makefile
index bc8606c23c9..52c0bacb5ae 100644
--- a/usr.bin/vi/Makefile
+++ b/usr.bin/vi/Makefile
@@ -1,3 +1,4 @@
+# $OpenBSD: Makefile,v 1.6 1997/07/27 22:27:52 downsj Exp $
# $NetBSD: Makefile,v 1.7 1996/05/20 03:47:00 mrg Exp $
SUBDIR= build
diff --git a/usr.bin/vi/README b/usr.bin/vi/README
index 1664e11629d..33db36a5c86 100644
--- a/usr.bin/vi/README
+++ b/usr.bin/vi/README
@@ -1,4 +1,4 @@
-# @(#)README 8.146 (Berkeley) 8/18/96
+# @(#)README 8.147 (Berkeley) 10/19/96
This is the README for nex/nvi, a freely redistributable implementation
of the ex/vi text editors originally distributed as part of the Fourth
@@ -44,7 +44,7 @@ o This software is several years old and is the product of many folks' work.
George Neville-Neil added the Tcl interpreter, and the initial
interpreter design was his.
- Sven Verdoolaege added the Perl5 interpreter.
+ Sven Verdoolaege added the Perl interpreter.
Rob Mayoff provided the original Cscope support.
diff --git a/usr.bin/vi/build/Makefile b/usr.bin/vi/build/Makefile
index 97fb2a43ef2..41054fd59d7 100644
--- a/usr.bin/vi/build/Makefile
+++ b/usr.bin/vi/build/Makefile
@@ -1,12 +1,12 @@
-# $OpenBSD: Makefile,v 1.6 1996/09/22 01:03:19 downsj Exp $
-#
-# From @(#)Makefile.in 8.63 (Berkeley) 6/19/96
+# $OpenBSD: Makefile,v 1.7 1997/07/27 22:27:53 downsj Exp $
+# @(#)Makefile.in 8.75 (Berkeley) 10/23/96
CFLAGS+=-I${.CURDIR} -I${.CURDIR}/../include
-LDADD+= -lcurses -ltermlib
-DPADD+= ${LIBCURSES} ${LIBTERMLIB}
-PROG= nvi
+LDADD+= -lcurses -ltermlib
+DPADD+= ${LIBCURSES} ${LIBTERMLIB}
+PROG= vi
+
SRCS= cl_bsd.c cl_funcs.c cl_main.c cl_read.c cl_screen.c cl_term.c \
cut.c delete.c ex.c ex_abbrev.c ex_append.c ex_args.c ex_argv.c \
ex_at.c ex_bang.c ex_cd.c ex_cmd.c ex_cscope.c ex_delete.c \
@@ -26,17 +26,17 @@ SRCS= cl_bsd.c cl_funcs.c cl_main.c cl_read.c cl_screen.c cl_term.c \
v_zexit.c vi.c vs_line.c vs_msg.c vs_refresh.c vs_relative.c \
vs_smap.c vs_split.c
-LINKS= ${BINDIR}/nvi ${BINDIR}/nex
-MLINKS= nvi.1 nex.1
+LINKS= ${BINDIR}/vi ${BINDIR}/ex
+LINKS+= ${BINDIR}/vi ${BINDIR}/view
+MLINK= vi.1 ex.1
+MLINK+= vi.1 view.1
-.PATH: ${.CURDIR}/../vi ${.CURDIR}/../ex ${.CURDIR}/../cl ${.CURDIR}/../common ${.CURDIR}/../docs/USD.doc/vi.man \
-#${.CURDIR}/../svi ${.CURDIR}/../sex
+.PATH: ${.CURDIR}/../vi ${.CURDIR}/../ex ${.CURDIR}/../cl ${.CURDIR}/../common ${.CURDIR}/../docs/USD.doc/vi.man
.include <bsd.prog.mk>
.include "../../Makefile.inc"
-#cat= dutch english german ru_SU.KOI8-R swedish
-#datadir= ${DESTDIR}/usr/share
-#afterinstall:
-# install -d ${datadir}/vi/catalog
-# (cd ${.CURDIR}/../catalog && install -m $(NONBINMODE) -c $(cat) $(datadir)/vi/catalog )
+CATALOGS= dutch english french german ru_SU.KOI8-R spanish swedish
+afterinstall:
+ install -d ${DESTDIR}/usr/share/vi/catalog
+ (cd ${.CURDIR}/../catalog && install -m ${NONBINMODE} -c ${CATALOGS} ${DESTDIR}/usr/share/vi/catalog )
diff --git a/usr.bin/vi/build/config.h b/usr.bin/vi/build/config.h
index 206ed8511b5..fd1cab38693 100644
--- a/usr.bin/vi/build/config.h
+++ b/usr.bin/vi/build/config.h
@@ -1,3 +1,4 @@
+/* $OpenBSD: config.h,v 1.5 1997/07/27 22:27:54 downsj Exp $ */
/* config.h. Generated automatically by configure. */
/* config.h.in. Generated automatically from configure.in by autoheader. */
@@ -32,11 +33,11 @@
/* #undef TM_IN_SYS_TIME */
/* Define vfork as fork if vfork does not work. */
-/*#define vfork fork */
+/* #undef vfork */
/* Define if your processor stores words with the most significant
byte first (like Motorola and SPARC, unlike Intel and VAX). */
-/*#define WORDS_BIGENDIAN 1 */
+/* #undef WORDS_BIGENDIAN */
/* Define to `int' if <sys/types.h> doesn't define. */
/* #undef ssize_t */
@@ -111,7 +112,7 @@
/* #undef HAVE_TCL_INTERP */
/* Define if your sprintf returns a pointer, not a length. */
-/*#define SPRINTF_RET_CHARPNT 1 */
+/* #undef SPRINTF_RET_CHARPNT */
/* Define if you have the bsearch function. */
#define HAVE_BSEARCH 1
diff --git a/usr.bin/vi/build/pathnames.h b/usr.bin/vi/build/pathnames.h
index 5a4f5a93856..7303aae7f17 100644
--- a/usr.bin/vi/build/pathnames.h
+++ b/usr.bin/vi/build/pathnames.h
@@ -1,3 +1,4 @@
+/* $OpenBSD: pathnames.h,v 1.3 1997/07/27 22:27:54 downsj Exp $ */
/* @(#)pathnames.h.in 8.4 (Berkeley) 6/26/96 */
#ifndef _PATH_BSHELL
@@ -9,7 +10,7 @@
#endif
#ifndef _PATH_MSGCAT
-#define _PATH_MSGCAT "./"
+#define _PATH_MSGCAT "/usr/share/vi/catalog/"
#endif
#ifndef _PATH_NEXRC
diff --git a/usr.bin/vi/build/port.h b/usr.bin/vi/build/port.h
index 21f16c93902..b363a26bd89 100644
--- a/usr.bin/vi/build/port.h
+++ b/usr.bin/vi/build/port.h
@@ -1,3 +1,4 @@
+/* $OpenBSD: port.h,v 1.3 1997/07/27 22:27:54 downsj Exp $ */
/* @(#)port.h.in 8.13 (Berkeley) 6/12/96 */
/*
diff --git a/usr.bin/vi/catalog/Makefile b/usr.bin/vi/catalog/Makefile
index 5d8fc4e5c27..13fad71601b 100644
--- a/usr.bin/vi/catalog/Makefile
+++ b/usr.bin/vi/catalog/Makefile
@@ -1,9 +1,8 @@
-# $OpenBSD: Makefile,v 1.2 1996/07/24 16:15:04 mickey Exp $
-# @(#)Makefile 8.24 (Berkeley) 6/12/96
+# $OpenBSD: Makefile,v 1.3 1997/07/27 22:27:55 downsj Exp $
+# @(#)Makefile 8.29 (Berkeley) 10/19/96
-CAT= dutch english german ru_SU.KOI8-R swedish
-FILES= ../cl/*.c ../common/*.c ../ex/*.c ../perl_api/*.c ../tcl_api/*.c \
- ../tk/*.c ../vi/*.c
+CAT= dutch english french german ru_SU.KOI8-R spanish swedish
+FILES= ../cl/*.c ../common/*.c ../ex/*.c ../tk/*.c ../vi/*.c
all: dump ${CAT}
@@ -35,8 +34,8 @@ ${CAT}: english.base
grep 'NOT LEGAL' $@; \
fi
-CHK= dutch.check english.check german.check ru_SU.KOI8-R.check \
- swedish.check
+CHK= dutch.check english.check french.check german.check \
+ ru_SU.KOI8-R.check spanish.check swedish.check
check: ${CHK}
${CHK}: ${CAT}
@echo "... $@"; \
@@ -75,7 +74,8 @@ english.base: dump ${FILES} #Makefile
./dump ${FILES} |\
sed -e '/|/!d' \
-e 's/|/ "/' \
- -e 's/^"//' |\
+ -e 's/^"//' \
+ -e 's/\\"/"/g' |\
sort -n > $@
dump: dump.c
diff --git a/usr.bin/vi/catalog/dutch b/usr.bin/vi/catalog/dutch
index 5e37397420a..de9fb603bf8 100644
--- a/usr.bin/vi/catalog/dutch
+++ b/usr.bin/vi/catalog/dutch
@@ -103,16 +103,16 @@ 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 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
+"%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 voorgaand commando om "!" te vervangenX
Geen bestandsnaam voor %%X
Geen bestandsnaam voor #X
Fout: execl: %sX
@@ -132,7 +132,7 @@ 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
+"%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
@@ -306,10 +306,12 @@ 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
+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
diff --git a/usr.bin/vi/catalog/dutch.base b/usr.bin/vi/catalog/dutch.base
index 9747668e899..2d8667e6d46 100644
--- a/usr.bin/vi/catalog/dutch.base
+++ b/usr.bin/vi/catalog/dutch.base
@@ -97,16 +97,16 @@
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"
+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"
+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"
+115 "Geen voorgaand commando om "!" te vervangen"
116 "Geen bestandsnaam voor %%"
117 "Geen bestandsnaam voor #"
118 "Fout: execl: %s"
@@ -126,7 +126,7 @@
132 "Geen input map entries"
133 "Geen command map entries"
134 "Het %s karakter kan niet ge-remapped worden"
-135 "\"%s\" is niet gemapped"
+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. "
@@ -296,10 +296,12 @@
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"
+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"
diff --git a/usr.bin/vi/catalog/dutch.check b/usr.bin/vi/catalog/dutch.check
index fc5baccb14b..d651aec75cc 100644
--- a/usr.bin/vi/catalog/dutch.check
+++ b/usr.bin/vi/catalog/dutch.check
@@ -11,7 +11,6 @@ Unused message id's (this is okay):
288
=========================
MISSING ERROR MESSAGES (Please add!):
-316
=========================
Extra error messages (just delete them):
=========================
diff --git a/usr.bin/vi/catalog/english b/usr.bin/vi/catalog/english
index 4ccfaec6b74..f34451d9b6d 100644
--- a/usr.bin/vi/catalog/english
+++ b/usr.bin/vi/catalog/english
@@ -103,16 +103,16 @@ 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 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
+"%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 previous command to replace "!"X
No filename to substitute for %%X
No filename to substitute for #X
Error: execl: %sX
@@ -132,7 +132,7 @@ 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
+"%s" isn't currently mappedX
Mark names must be a single characterX
%s exists, not written; use ! to overrideX
New exrc file: %sX
@@ -306,7 +306,7 @@ 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
+Use "cscope help" for helpX
No cscope connections runningX
%s: unknown search type: use one of %sX
%d: no such cscope sessionX
@@ -314,3 +314,4 @@ 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
diff --git a/usr.bin/vi/catalog/english.base b/usr.bin/vi/catalog/english.base
index 498762a6cc7..6d8d7bf60bb 100644
--- a/usr.bin/vi/catalog/english.base
+++ b/usr.bin/vi/catalog/english.base
@@ -97,16 +97,16 @@
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"
+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"
+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 \"!\""
+115 "No previous command to replace "!""
116 "No filename to substitute for %%"
117 "No filename to substitute for #"
118 "Error: execl: %s"
@@ -126,7 +126,7 @@
132 "No input map entries"
133 "No command map entries"
134 "The %s character may not be remapped"
-135 "\"%s\" isn't currently mapped"
+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"
@@ -293,11 +293,12 @@
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"
+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"
@@ -305,3 +306,4 @@
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"
diff --git a/usr.bin/vi/catalog/english.check b/usr.bin/vi/catalog/english.check
index e2d978c995d..51093785c87 100644
--- a/usr.bin/vi/catalog/english.check
+++ b/usr.bin/vi/catalog/english.check
@@ -17,6 +17,7 @@ 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
diff --git a/usr.bin/vi/catalog/french b/usr.bin/vi/catalog/french
new file mode 100644
index 00000000000..a75c486ef9b
--- /dev/null
+++ b/usr.bin/vi/catalog/french
@@ -0,0 +1,317 @@
+VI_MESSAGE_CATALOG
+D‚passement de longueur de ligneX
+impossible de supprimer la ligne %luX
+impossible d'ajouter … la ligne %luX
+impossible d'ins‚rer devant la ligne %luX
+impossible de stocker la ligne %luX
+impossible d'obtenir la derniŠre ligneX
+Erreur : impossible de r‚cup‚rer la ligne %luX
+Fichier journalX
+Aucune connexion n'‚tant effectu‚e, impossible d'annulerX
+Aucune action … annulerX
+Aucune connexion n'‚tant effectu‚e, impossible d'annulerX
+Aucune connexion n'‚tant effectu‚e, reprise actualis‚e impossibleX
+Aucune action … refaireX
+%s/%d : Erreur d'‚criture de journalX
+L'entr‚e et la sortie Vi standards doivent ˆtre un terminalX
+Marque %s : non d‚finieX
+Marque %s : la ligne a ‚t‚ supprim‚eX
+Marque %s : la position du curseur n'existe plusX
+Erreur : X
+nouveau fichierX
+le nom a chang‚X
+modifi‚X
+non modifi‚X
+DEVERROUILLEX
+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 d‚fautX
+Utilisation : %sX
+D‚finition : pas d'option %s : 'tout d‚finir' donne toutes les valeurs optionnellesX
+D‚finition : option [no]%s ne prend pas de valeurX
+D‚finition : l'option %s n'est pas bool‚enneX
+D‚finition : option %s : %sX
+D‚finition : option %s : %s : D‚passement de valeurX
+D‚finition : option %s : %s n'est pas un nombre valideX
+D‚finition : l'option %s n'est pas bool‚enneX
+Les colonnes de l'‚cran sont trop petites, inf‚rieures … %dX
+Les colonnes de l'‚cran sont trop grandes, sup‚rieures … %dX
+Les lignes de l'‚cran sont trop courtes, inf‚rieures … %dX
+Les lignes de l'‚cran sont trop longues, sup‚rieures … %dX
+L'option lisp n'est pas impl‚ment‚eX
+Les messages ne sont pas d‚sactiv‚s : %sX
+Les messages ne sont pas activ‚s : %sX
+
+L'option de paragraphe doit ˆtre en groupe de deux caractŠresX
+L'option de section doit ˆtre en groupe de deux caractŠresX
+
+
+
+Le tampon par d‚faut est videX
+Le tampon %s est videX
+Les fichiers dont le nom contient des caractŠres de saut de ligne sont irr‚cup‚rablesX
+Impossible de r‚cup‚rer les modifications si la session ‚choueX
+Copie en cours du fichier pour r‚cup‚ration...X
+La pr‚servation a ‚chou‚ : %sX
+Impossible de r‚cup‚rer les modifications si la session ‚choueX
+La sauvegarde du fichier a ‚chou‚ : %sX
+Copie en cours du fichier pour r‚cup‚ration...X
+Les renseignements sur l'identit‚ %u de l'utilisateur sont introuvablesX
+Impossible de verrouiller le fichier de r‚cup‚rationX
+D‚bordement de tampon du fichier de r‚cup‚rationX
+Fichier de r‚cup‚rationX
+%s : Fichier de r‚cup‚ration malform‚X
+%s : Fichier de r‚cup‚ration malform‚X
+Aucun fichier nomm‚ %s … r‚cup‚rer, que vous puissiez lireX
+Il existe des versions r‚cup‚rables ant‚rieures … ce fichierX
+Vous avez d'autres fichiers … r‚cup‚rerX
+pas d'envoi d'email : %sX
+Fichier vide, rien … rechercherX
+Fin de fichier atteinte sans trouver le motifX
+Pas de motif de recherche pr‚c‚dentX
+Motif introuvableX
+D‚but du fichier atteint sans trouver le motifX
+La recherche est revenue … son point de d‚partX
+Recherche en cours...X
+CaractŠre non-imprimable introuvableX
+Nom de commande inconnuX
+
+%s : Commande non disponible en ex modeX
+Le compte ne peut ˆtre z‚roX
+%s : mauvaise sp‚cification de ligneX
+Erreur de tableau de syntaxe interne (%s: %s)X
+Utilisation : %sX
+%s : tampon temporaire non lib‚r‚X
+D‚calage de drapeau hors de la ligne 1X
+D‚calage de drapeau hors de la fin du fichierX
+@ avec plage, en cours d'ex‚cution quand le fichier/l'‚cran a chang‚X
+Commande Global/v en cours d'ex‚cution quand le fichier/l'‚cran a chang‚X
+La commande ex a ‚chou‚ : commandes en attente abandonn‚esX
+La commande ex a ‚chou‚ : les touches affect‚es sont abandonn‚esX
+La deuxiŠme adresse est plus petite que la premiŠreX
+Aucun nom de marque fourniX
+\\ pas suivi par / ou ?X
+R‚f‚rence … un num‚ro de ligne inf‚rieure … 0X
+La commande %s est inconnueX
+D‚passement de la valeur adresseX
+D‚passement n‚gatif de la valeur adresseX
+Combinaison d'adresse non valideX
+Adresse non valide : il n'y a que des lignes %lu dans le fichierX
+Adresse non valide : le fichier est videX
+La commande %s ne permet pas une adresse de 0X
+Pas d'abr‚viations … afficherX
+Les abr‚viations doivent finir par un caractŠre"motX
+Les abr‚viations ne peuvent pas contenir de tabulations ni d'espacesX
+Les abr‚viations ne peuvent pas contenir un m‚lange de caractŠres mot/non-mot, sauf … la finX
+"%s" n'est pas une abr‚viationX
+La commande Vi a ‚chou‚ : Les touches affect‚es ont ‚t‚ abandonn‚esX
+Plus de fichiers … ‚diterX
+Pas de fichiers pr‚c‚dents … ‚diterX
+Pas de fichiers pr‚c‚dents … rembobinerX
+Pas de liste de fichiers … afficherX
+Pas de commande pr‚c‚dente … 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 derniŠre ‚criture complŠte ; ‚crire ou utiliser ! pour outrepasserX
+Impossible de trouver l'emplacement du r‚pertoire d'origineX
+Nouveau r‚pertoire en cours : %sX
+Pas de tampon de coupure … afficherX
+La commande %s ne peut pas ˆtre utilis‚e … l'int‚rieur d'une commande globale ou commande vX
+%s/%s : ‚chec de source : ni vous ni le super-utilisateur n'ˆtes les propri‚taires X
+%s/%s : ‚chec de source : vous n'ˆtes pas le propri‚taireX
+%s/%s : ‚chec de source : peut ˆtre ‚crit par un utilisateur autre que le propri‚taireX
+%s : ‚chec de source : ni vous ni le super-utilisateur n'ˆtes les propri‚tairesX
+%s : ‚chec de source : vous n'ˆtes pas le propri‚taireX
+%s : ‚chec de source : peut ˆtre ‚crit par un utilisateur autre que le propri‚taireX
+Pas de lignes suivantes … joindreX
+Pas d'entr‚es de mappage d'entr‚eX
+Pas d'entr‚es de mappage de commandesX
+Le caractŠre %s ne peut pas ˆtre remapp‚X
+"%s" n'est pas actuellement mapp‚X
+Les noms de marque ne doivent avoir qu'un caractŠreX
+%s existe, non enregistr‚; utiliser ! pour outrepasserX
+Nouveau fichier exrc : %sX
+La ligne de destination est … l'int‚rieur de la plage … d‚placerX
+La commande ouverte n‚cessite que l'option ouverte soit d‚finieX
+La commande ouverte n'est pas encore impl‚ment‚eX
+La pr‚servation de ce fichier est impossibleX
+Fichier pr‚serv‚X
+%s: ‚tendu dans trop de noms de fichiersX
+Vous ne pouvez lire que les fichiers standards et les canaux de transmission nomm‚sX
+%s: Interdiction de lecture non disponibleX
+Lecture en cours...X
+%s: %lu lignes, %lu caractŠresX
+Pas d'‚crans d'arriŠre-plan … afficherX
+La commande script n'est disponible qu'en mode viX
+Pas de commande … ex‚cuterX
+Option de largeur de d‚calage d‚finie sur 0X
+Compter d‚passementX
+Compter d‚passement n‚gatifX
+Expression standard sp‚cifi‚e; drapeau r superfluX
+Vous ne pouvez pas en mode vi, combiner les drapeaux #, l et p avec le drapeau cX
+Aucune correspondance trouv‚eX
+Aucune marque pr‚c‚dente entr‚eX
+Moins de %s entr‚es 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 Entr‚e pour continuer :X
+%s : marque introuvableX
+%s : marque corrompue en %sX
+%s : le num‚ro de ligne de la marque d‚passe la fin du fichierX
+La pile de marques est videX
+%s : motif de recherche introuvableX
+%d fichiers suppl‚mentaires … ‚diterX
+Le tampon %s est vide
+Confirmer les changements ? [n]X
+InterrompuX
+Pas de tampon pr‚c‚dent … ex‚cuterX
+Pas d'expression standard pr‚c‚denteX
+La commande %s n‚cessite qu'un fichier ait d‚j… ‚t‚ lu en m‚moireX
+Utilisation : %sX
+La commande visuelle n‚cessite que l'option ouverte soit d‚finieX
+
+Fichier videX
+Pas de recherche pr‚c‚dente F, f, T ou tX
+%s introuvableX
+Pas de fichier pr‚c‚dent … ‚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 caractŠre sur cette ligneX
+CaractŠre correspondant introuvableX
+Pas de caractŠres … remplacerX
+Pas d'autre ‚cran vers lequel basculerX
+CaractŠres aprŠs la chaŒne de recherche, d‚calage de ligne et/ou commande zX
+Pas de motif de recherche pr‚c‚dentX
+La recherche est revenue … son point de d‚partX
+L'abr‚viation a d‚pass‚ la limite de l'expansion : caractŠres abandonn‚sX
+CaractŠre non valide ; guillemet pour saisirX
+D‚j… au d‚but de l'insertionX
+Plus de caractŠres … effacerX
+D‚placement hors de fin de fichierX
+D‚placement hors de fin de ligneX
+Aucun mouvement de curseur n'a ‚t‚ effectu‚X
+D‚j… au d‚but du fichierX
+D‚placement hors du d‚but du fichierX
+D‚j… dans la premiŠre colonneX
+Les tampons doivent ˆtre sp‚cifi‚s avant la commandeX
+D‚j… … la fin du fichierX
+D‚j… … la fin de la ligneX
+%s n'est pas une commande viX
+Utilisation : %sX
+Pas de caractŠres … supprimerX
+La commande Q n‚cessite une interface terminal exX
+Pas de commande … r‚p‚terX
+Le fichier est videX
+Vous ne pouvez pas utiliser %s comme commande de d‚placementX
+D‚j… en mode commandeX
+Le curseur n'est pas dans un motX
+
+Valeur optionnelle de fenˆtre trop grande, maximum est %uX
+AjouterX
+ChangerX
+CommandeX
+Ins‚rerX
+RemplacerX
+D‚placement hors de la fin d'‚cranX
+D‚placement hors du d‚but d'‚cranX
+L'‚cran doit ˆtre sup‚rieur … %d lignes pour se fractionnerX
+Il n'y a pas d'‚cran d'arriŠre-planX
+Il n'y a pas d'‚cran d'arriŠre-plan qui ‚dite un fichier nomm‚ %sX
+Vous ne pouvez pas mettre … l'arriŠre-plan votre seul ‚cran affich‚X
+L'‚cran ne peut ˆtre r‚duit qu'… %d rangsX
+L'‚cran n'est pas auto-r‚ductibleX
+L'‚cran n'est pas auto-extensibleX
+
+Vous ne pouvez pas mettre cet ‚cran en attenteX
+Interrompu : les touches affect‚es ont ‚t‚ abandonn‚esX
+vi : le tampon temporaire n' a pas ‚t‚ lib‚r‚X
+Ce terminal n'a pas de touche %sX
+Vous ne pouvez sp‚cifier qu'un seul tamponX
+Nombre sup‚rieur … %luX
+InterrompuX
+Impossible de cr‚er un fichier temporaireX
+Avertissement : %s n'est pas un fichier standardX
+%s d‚j… verrouill‚, session en lecture seuleX
+%s: supprimerX
+%s: fermerX
+%s: supprimerX
+%s: supprimerX
+Fichier en lecture seule, pas ‚crit, utiliser ! pour outrepasserX
+Fichier en lecture seule, pas ‚critX
+%s existe, pas ‚crit; utiliser ! pour outrepasserX
+%s existe, pas ‚critX
+Fichier partiel, pas ‚crit; utiliser ! pour outrepasserX
+Fichier partiel, pas ‚critX
+%s: fichier modifi‚ plus r‚cemment que cet exemplaire; utiliser ! pour outrepasserX
+%s: fichier modifi‚ plus r‚cemment que cet exemplaireX
+%s: interdiction d'‚criture non disponibleX
+Ecriture en cours...X
+%s: AVERTISSEMENT : FICHIER TRONQUEX
+PremiŠre marque de ce groupe d‚j… atteinteX
+%s: nouveau fichier : %lu lignes, %lu caractŠresX
+%s: %lu lignes, %lu caractŠresX
+%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 propri‚taireX
+Fichier modif‚ depuis la derniŠre ‚criture complŠte ; ‚crire ou utiliser ! pour outrepasser X
+Fichier modif‚ depuis la derniŠre ‚criture complŠte ; ‚crire ou utiliser :edit! pour outrepasserX
+Fichier modif‚ depuis la derniŠre ‚criture complŠte ; ‚crire ou utiliser ! pour outrepasserX
+Fichier temporaire ; quitter annulera les modificationsX
+Fichier en lecture seule ; les modifications ne sont pas ‚crites automatiquementX
+Journal red‚marr‚X
+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 n‚cessite l'interface de terminal exX
+Entr‚e de mode entr‚e ex.X
+La commande a ‚chou‚, aucun fichier n'a encore ‚t‚ lu.X
+cont?X
+Ev‚nement impr‚vu de caractŠreX
+Ev‚nement impr‚vu de fin-de-fichierX
+Pas de correspondances pour cette requˆteX
+Ev‚nement impr‚vu d'interruptionX
+Ev‚nement quitter impr‚vuX
+Ev‚nement impr‚vu de rafraŒchissementX
+La derniŠre marque de ce groupe a d‚j… ‚t‚ atteinteX
+La commande %s n‚cessite l'interface de terminal exX
+Cette forme de %s n'est pas reconnue quand l'option d'‚dition prot‚g‚e est activ‚eX
+Ev‚nement impr‚vu de chaŒneX
+Ev‚nement impr‚vu de d‚lai impartiX
+Ev‚nement d'‚criture impr‚vuX
+
+Les expansions du shell ne sont pas reconnues quand l'option d'‚dition prot‚g‚e est activ‚eX
+La commande %s n'est pas reconnue quand l'option d'‚dition prot‚g‚e est activ‚eX
+D‚finition : l'option %s ne peut pas ˆtre d‚sactiv‚eX
+Affichage trop petit.X
+ajout‚X
+chang‚X
+supprim‚X
+jointX
+d‚plac‚X
+d‚cal‚X
+coup‚X
+ligneX
+lignesX
+Vi n'a pas ‚t‚ charg‚ avec un interpr‚tateur TclX
+Ficher modifi‚ depuis le dernier enregistrement.X
+L'expansion du shell a ‚chou‚X
+Pas d'option d'‚dition %s sp‚cifi‚eX
+Vi n'a pas ‚t‚ charg‚ avec un interpr‚tateur PerlX
+Pas de commande ex … ex‚cuterX
+Entrez <CR> pour ex‚cuter une commande, :q pour quitterX
+Utiliser "cscope help" pour obtenir de l'aideX
+Aucune connexion cscope n'est lanc‚eX
+%s : type de recherche inconnu : utiliser un des %sX
+%d : Il n'existe pas de telle session cscopeX
+D‚finition : l'option %s ne peut jamais ˆtre activ‚eX
+D‚finition : l'option %s ne peut jamais ˆtre d‚finie sur 0X
+%s: joints : %lu lignes, %lu caractŠresX
+‚v‚nement impr‚vu de redimensionnementX
+%d fichiers … ‚diterX
diff --git a/usr.bin/vi/catalog/french.base b/usr.bin/vi/catalog/french.base
new file mode 100644
index 00000000000..db2d45f9b22
--- /dev/null
+++ b/usr.bin/vi/catalog/french.base
@@ -0,0 +1,309 @@
+002 "D‚passement de longueur de ligne"
+003 "impossible de supprimer la ligne %lu"
+004 "impossible d'ajouter … la ligne %lu"
+005 "impossible d'ins‚rer devant la ligne %lu"
+006 "impossible de stocker la ligne %lu"
+007 "impossible d'obtenir la derniŠre ligne"
+008 "Erreur : impossible de r‚cup‚rer la ligne %lu"
+009 "Fichier journal"
+010 "Aucune connexion n'‚tant effectu‚e, impossible d'annuler"
+011 "Aucune action … annuler"
+012 "Aucune connexion n'‚tant effectu‚e, impossible d'annuler"
+013 "Aucune connexion n'‚tant effectu‚e, reprise actualis‚e impossible"
+014 "Aucune action … refaire"
+015 "%s/%d : Erreur d'‚criture de journal"
+016 "L'entr‚e et la sortie Vi standards doivent ˆtre un terminal"
+017 "Marque %s : non d‚finie"
+018 "Marque %s : la ligne a ‚t‚ supprim‚e"
+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 "DEVERROUILLE"
+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 d‚faut"
+032 "Utilisation : %s"
+033 "D‚finition : pas d'option %s : 'tout d‚finir' donne toutes les valeurs optionnelles"
+034 "D‚finition : option [no]%s ne prend pas de valeur"
+035 "D‚finition : l'option %s n'est pas bool‚enne"
+036 "D‚finition : option %s : %s"
+037 "D‚finition : option %s : %s : D‚passement de valeur"
+038 "D‚finition : option %s : %s n'est pas un nombre valide"
+039 "D‚finition : l'option %s n'est pas bool‚enne"
+040 "Les colonnes de l'‚cran sont trop petites, inf‚rieures … %d"
+041 "Les colonnes de l'‚cran sont trop grandes, sup‚rieures … %d"
+042 "Les lignes de l'‚cran sont trop courtes, inf‚rieures … %d"
+043 "Les lignes de l'‚cran sont trop longues, sup‚rieures … %d"
+044 "L'option lisp n'est pas impl‚ment‚e"
+045 "Les messages ne sont pas d‚sactiv‚s : %s"
+046 "Les messages ne sont pas activ‚s : %s"
+048 "L'option de paragraphe doit ˆtre en groupe de deux caractŠres"
+049 "L'option de section doit ˆtre en groupe de deux caractŠres"
+053 "Le tampon par d‚faut est vide"
+054 "Le tampon %s est vide"
+055 "Les fichiers dont le nom contient des caractŠres de saut de ligne sont irr‚cup‚rables"
+056 "Impossible de r‚cup‚rer les modifications si la session ‚choue"
+057 "Copie en cours du fichier pour r‚cup‚ration..."
+058 "La pr‚servation a ‚chou‚ : %s"
+059 "Impossible de r‚cup‚rer les modifications si la session ‚choue"
+060 "La sauvegarde du fichier a ‚chou‚ : %s"
+061 "Copie en cours du fichier pour r‚cup‚ration..."
+062 "Les renseignements sur l'identit‚ %u de l'utilisateur sont introuvables"
+063 "Impossible de verrouiller le fichier de r‚cup‚ration"
+064 "D‚bordement de tampon du fichier de r‚cup‚ration"
+065 "Fichier de r‚cup‚ration"
+066 "%s : Fichier de r‚cup‚ration malform‚"
+067 "%s : Fichier de r‚cup‚ration malform‚"
+068 "Aucun fichier nomm‚ %s … r‚cup‚rer, que vous puissiez lire"
+069 "Il existe des versions r‚cup‚rables ant‚rieures … ce fichier"
+070 "Vous avez d'autres fichiers … r‚cup‚rer"
+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 pr‚c‚dent"
+075 "Motif introuvable"
+076 "D‚but du fichier atteint sans trouver le motif"
+077 "La recherche est revenue … son point de d‚part"
+078 "Recherche en cours..."
+079 "CaractŠre non-imprimable introuvable"
+080 "Nom de commande inconnu"
+082 "%s : Commande non disponible en ex mode"
+083 "Le compte ne peut ˆtre z‚ro"
+084 "%s : mauvaise sp‚cification de ligne"
+085 "Erreur de tableau de syntaxe interne (%s: %s)"
+086 "Utilisation : %s"
+087 "%s : tampon temporaire non lib‚r‚"
+088 "D‚calage de drapeau hors de la ligne 1"
+089 "D‚calage de drapeau hors de la fin du fichier"
+090 "@ avec plage, en cours d'ex‚cution quand le fichier/l'‚cran a chang‚"
+091 "Commande Global/v en cours d'ex‚cution quand le fichier/l'‚cran a chang‚"
+092 "La commande ex a ‚chou‚ : commandes en attente abandonn‚es"
+093 "La commande ex a ‚chou‚ : les touches affect‚es sont abandonn‚es"
+094 "La deuxiŠme adresse est plus petite que la premiŠre"
+095 "Aucun nom de marque fourni"
+096 "\\ pas suivi par / ou ?"
+097 "R‚f‚rence … un num‚ro de ligne inf‚rieure … 0"
+098 "La commande %s est inconnue"
+099 "D‚passement de la valeur adresse"
+100 "D‚passement n‚gatif de la valeur adresse"
+101 "Combinaison d'adresse non valide"
+102 "Adresse non valide : il n'y a que des lignes %lu dans le fichier"
+103 "Adresse non valide : le fichier est vide"
+104 "La commande %s ne permet pas une adresse de 0"
+105 "Pas d'abr‚viations … afficher"
+106 "Les abr‚viations doivent finir par un caractŠre"mot"
+107 "Les abr‚viations ne peuvent pas contenir de tabulations ni d'espaces"
+108 "Les abr‚viations ne peuvent pas contenir un m‚lange de caractŠres mot/non-mot, sauf … la fin"
+109 ""%s" n'est pas une abr‚viation"
+110 "La commande Vi a ‚chou‚ : Les touches affect‚es ont ‚t‚ abandonn‚es"
+111 "Plus de fichiers … ‚diter"
+112 "Pas de fichiers pr‚c‚dents … ‚diter"
+113 "Pas de fichiers pr‚c‚dents … rembobiner"
+114 "Pas de liste de fichiers … afficher"
+115 "Pas de commande pr‚c‚dente … 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 derniŠre ‚criture complŠte ; ‚crire ou utiliser ! pour outrepasser"
+121 "Impossible de trouver l'emplacement du r‚pertoire d'origine"
+122 "Nouveau r‚pertoire en cours : %s"
+123 "Pas de tampon de coupure … afficher"
+124 "La commande %s ne peut pas ˆtre utilis‚e … l'int‚rieur d'une commande globale ou commande v"
+125 "%s/%s : ‚chec de source : ni vous ni le super-utilisateur n'ˆtes les propri‚taires "
+126 "%s/%s : ‚chec de source : vous n'ˆtes pas le propri‚taire"
+127 "%s/%s : ‚chec de source : peut ˆtre ‚crit par un utilisateur autre que le propri‚taire"
+128 "%s : ‚chec de source : ni vous ni le super-utilisateur n'ˆtes les propri‚taires"
+129 "%s : ‚chec de source : vous n'ˆtes pas le propri‚taire"
+130 "%s : ‚chec de source : peut ˆtre ‚crit par un utilisateur autre que le propri‚taire"
+131 "Pas de lignes suivantes … joindre"
+132 "Pas d'entr‚es de mappage d'entr‚e"
+133 "Pas d'entr‚es de mappage de commandes"
+134 "Le caractŠre %s ne peut pas ˆtre remapp‚"
+135 ""%s" n'est pas actuellement mapp‚"
+136 "Les noms de marque ne doivent avoir qu'un caractŠre"
+137 "%s existe, non enregistr‚; utiliser ! pour outrepasser"
+138 "Nouveau fichier exrc : %s"
+139 "La ligne de destination est … l'int‚rieur de la plage … d‚placer"
+140 "La commande ouverte n‚cessite que l'option ouverte soit d‚finie"
+141 "La commande ouverte n'est pas encore impl‚ment‚e"
+142 "La pr‚servation de ce fichier est impossible"
+143 "Fichier pr‚serv‚"
+144 "%s: ‚tendu dans trop de noms de fichiers"
+145 "Vous ne pouvez lire que les fichiers standards et les canaux de transmission nomm‚s"
+146 "%s: Interdiction de lecture non disponible"
+147 "Lecture en cours..."
+148 "%s: %lu lignes, %lu caractŠres"
+149 "Pas d'‚crans d'arriŠre-plan … afficher"
+150 "La commande script n'est disponible qu'en mode vi"
+151 "Pas de commande … ex‚cuter"
+152 "Option de largeur de d‚calage d‚finie sur 0"
+153 "Compter d‚passement"
+154 "Compter d‚passement n‚gatif"
+155 "Expression standard sp‚cifi‚e; drapeau r superflu"
+156 "Vous ne pouvez pas en mode vi, combiner les drapeaux #, l et p avec le drapeau c"
+157 "Aucune correspondance trouv‚e"
+158 "Aucune marque pr‚c‚dente entr‚e"
+159 "Moins de %s entr‚es 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 Entr‚e pour continuer :"
+162 "%s : marque introuvable"
+163 "%s : marque corrompue en %s"
+164 "%s : le num‚ro de ligne de la marque d‚passe la fin du fichier"
+165 "La pile de marques est vide"
+166 "%s : motif de recherche introuvable"
+167 "%d fichiers suppl‚mentaires … ‚diter"
+168 "Le tampon %s est vide
+169 "Confirmer les changements ? [n]"
+170 "Interrompu"
+171 "Pas de tampon pr‚c‚dent … ex‚cuter"
+172 "Pas d'expression standard pr‚c‚dente"
+173 "La commande %s n‚cessite qu'un fichier ait d‚j… ‚t‚ lu en m‚moire"
+174 "Utilisation : %s"
+175 "La commande visuelle n‚cessite que l'option ouverte soit d‚finie"
+177 "Fichier vide"
+178 "Pas de recherche pr‚c‚dente F, f, T ou t"
+179 "%s introuvable"
+180 "Pas de fichier pr‚c‚dent … ‚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 caractŠre sur cette ligne"
+185 "CaractŠre correspondant introuvable"
+186 "Pas de caractŠres … remplacer"
+187 "Pas d'autre ‚cran vers lequel basculer"
+188 "CaractŠres aprŠs la chaŒne de recherche, d‚calage de ligne et/ou commande z"
+189 "Pas de motif de recherche pr‚c‚dent"
+190 "La recherche est revenue … son point de d‚part"
+191 "L'abr‚viation a d‚pass‚ la limite de l'expansion : caractŠres abandonn‚s"
+192 "CaractŠre non valide ; guillemet pour saisir"
+193 "D‚j… au d‚but de l'insertion"
+194 "Plus de caractŠres … effacer"
+195 "D‚placement hors de fin de fichier"
+196 "D‚placement hors de fin de ligne"
+197 "Aucun mouvement de curseur n'a ‚t‚ effectu‚"
+198 "D‚j… au d‚but du fichier"
+199 "D‚placement hors du d‚but du fichier"
+200 "D‚j… dans la premiŠre colonne"
+201 "Les tampons doivent ˆtre sp‚cifi‚s avant la commande"
+202 "D‚j… … la fin du fichier"
+203 "D‚j… … la fin de la ligne"
+204 "%s n'est pas une commande vi"
+205 "Utilisation : %s"
+206 "Pas de caractŠres … supprimer"
+207 "La commande Q n‚cessite une interface terminal ex"
+208 "Pas de commande … r‚p‚ter"
+209 "Le fichier est vide"
+209 "Le fichier est vide"
+210 "Vous ne pouvez pas utiliser %s comme commande de d‚placement"
+211 "D‚j… en mode commande"
+212 "Le curseur n'est pas dans un mot"
+214 "Valeur optionnelle de fenˆtre trop grande, maximum est %u"
+215 "Ajouter"
+216 "Changer"
+217 "Commande"
+218 "Ins‚rer"
+219 "Remplacer"
+220 "D‚placement hors de la fin d'‚cran"
+221 "D‚placement hors du d‚but d'‚cran"
+222 "L'‚cran doit ˆtre sup‚rieur … %d lignes pour se fractionner"
+223 "Il n'y a pas d'‚cran d'arriŠre-plan"
+224 "Il n'y a pas d'‚cran d'arriŠre-plan qui ‚dite un fichier nomm‚ %s"
+225 "Vous ne pouvez pas mettre … l'arriŠre-plan votre seul ‚cran affich‚"
+226 "L'‚cran ne peut ˆtre r‚duit qu'… %d rangs"
+227 "L'‚cran n'est pas auto-r‚ductible"
+228 "L'‚cran n'est pas auto-extensible"
+230 "Vous ne pouvez pas mettre cet ‚cran en attente"
+231 "Interrompu : les touches affect‚es ont ‚t‚ abandonn‚es"
+232 "vi : le tampon temporaire n' a pas ‚t‚ lib‚r‚"
+233 "Ce terminal n'a pas de touche %s"
+234 "Vous ne pouvez sp‚cifier qu'un seul tampon"
+235 "Nombre sup‚rieur … %lu"
+236 "Interrompu"
+237 "Impossible de cr‚er un fichier temporaire"
+238 "Avertissement : %s n'est pas un fichier standard"
+239 "%s d‚j… verrouill‚, session en lecture seule"
+240 "%s: supprimer"
+241 "%s: fermer"
+242 "%s: supprimer"
+243 "%s: supprimer"
+244 "Fichier en lecture seule, pas ‚crit, utiliser ! pour outrepasser"
+245 "Fichier en lecture seule, pas ‚crit"
+246 "%s existe, pas ‚crit; utiliser ! pour outrepasser"
+247 "%s existe, pas ‚crit"
+248 "Fichier partiel, pas ‚crit; utiliser ! pour outrepasser"
+249 "Fichier partiel, pas ‚crit"
+250 "%s: fichier modifi‚ plus r‚cemment que cet exemplaire; utiliser ! pour outrepasser"
+251 "%s: fichier modifi‚ plus r‚cemment que cet exemplaire"
+252 "%s: interdiction d'‚criture non disponible"
+253 "Ecriture en cours..."
+254 "%s: AVERTISSEMENT : FICHIER TRONQUE"
+255 "PremiŠre marque de ce groupe d‚j… atteinte"
+256 "%s: nouveau fichier : %lu lignes, %lu caractŠres"
+257 "%s: %lu lignes, %lu caractŠres"
+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 propri‚taire"
+262 "Fichier modif‚ depuis la derniŠre ‚criture complŠte ; ‚crire ou utiliser ! pour outrepasser "
+263 "Fichier modif‚ depuis la derniŠre ‚criture complŠte ; ‚crire ou utiliser :edit! pour outrepasser"
+264 "Fichier modif‚ depuis la derniŠre ‚criture complŠte ; ‚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 red‚marr‚"
+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 n‚cessite l'interface de terminal ex"
+273 "Entr‚e de mode entr‚e ex."
+274 "La commande a ‚chou‚, aucun fichier n'a encore ‚t‚ lu."
+275 "cont?"
+276 "Ev‚nement impr‚vu de caractŠre"
+277 "Ev‚nement impr‚vu de fin-de-fichier"
+278 "Pas de correspondances pour cette requˆte"
+279 "Ev‚nement impr‚vu d'interruption"
+280 "Ev‚nement quitter impr‚vu"
+281 "Ev‚nement impr‚vu de rafraŒchissement"
+282 "La derniŠre marque de ce groupe a d‚j… ‚t‚ atteinte"
+283 "La commande %s n‚cessite l'interface de terminal ex"
+284 "Cette forme de %s n'est pas reconnue quand l'option d'‚dition prot‚g‚e est activ‚e"
+285 "Ev‚nement impr‚vu de chaŒne"
+286 "Ev‚nement impr‚vu de d‚lai imparti"
+287 "Ev‚nement d'‚criture impr‚vu"
+289 "Les expansions du shell ne sont pas reconnues quand l'option d'‚dition prot‚g‚e est activ‚e"
+290 "La commande %s n'est pas reconnue quand l'option d'‚dition prot‚g‚e est activ‚e"
+291 "D‚finition : l'option %s ne peut pas ˆtre d‚sactiv‚e"
+292 "Affichage trop petit."
+293 "ajout‚"
+294 "chang‚"
+295 "supprim‚"
+296 "joint"
+297 "d‚plac‚"
+298 "d‚cal‚"
+299 "coup‚"
+300 "ligne"
+301 "lignes"
+302 "Vi n'a pas ‚t‚ charg‚ avec un interpr‚tateur 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 sp‚cifi‚e"
+306 "Vi n'a pas ‚t‚ charg‚ avec un interpr‚tateur Perl"
+307 "Pas de commande ex … ex‚cuter"
+308 "Entrez <CR> pour ex‚cuter une commande, :q pour quitter"
+309 "Utiliser "cscope help" pour obtenir de l'aide"
+310 "Aucune connexion cscope n'est lanc‚e"
+311 "%s : type de recherche inconnu : utiliser un des %s"
+312 "%d : Il n'existe pas de telle session cscope"
+313 "D‚finition : l'option %s ne peut jamais ˆtre activ‚e"
+314 "D‚finition : l'option %s ne peut jamais ˆtre d‚finie sur 0"
+315 "%s: joints : %lu lignes, %lu caractŠres"
+316 "‚v‚nement impr‚vu de redimensionnement"
+317 "%d fichiers … ‚diter"
diff --git a/usr.bin/vi/catalog/french.check b/usr.bin/vi/catalog/french.check
new file mode 100644
index 00000000000..1e53d93cb44
--- /dev/null
+++ b/usr.bin/vi/catalog/french.check
@@ -0,0 +1,34 @@
+Unused message id's (this is okay):
+001
+047
+050
+051
+052
+081
+176
+229
+288
+=========================
+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 "Le fichier est vide"
+ 2 304 "L'expansion du shell a ‚chou‚"
+=========================
+Duplicate messages, just message (this is okay):
+ 2 %s : Fichier de r‚cup‚ration malform‚X
+ 2 %s: %lu lignes, %lu caractŠresX
+ 2 Aucune connexion n'‚tant effectu‚e, impossible d'annulerX
+ 2 Copie en cours du fichier pour r‚cup‚ration...X
+ 2 D‚finition : l'option %s n'est pas bool‚enneX
+ 2 Impossible de r‚cup‚rer les modifications si la session ‚choueX
+ 2 InterrompuX
+ 2 La recherche est revenue … son point de d‚partX
+ 2 Pas de motif de recherche pr‚c‚dentX
+ 3 %s: supprimerX
+ 4 Utilisation : %sX
+=========================
diff --git a/usr.bin/vi/catalog/german b/usr.bin/vi/catalog/german
index e3df0c09925..0810ba6cf9b 100644
--- a/usr.bin/vi/catalog/german
+++ b/usr.bin/vi/catalog/german
@@ -103,16 +103,16 @@ Ungueltige Adresse: nur %lu Zeilen in der DateiX
Ungueltige Adresse: die Datei ist leerX
Das Kommando %s erlaubt keine Adresse 0X
Keine Abkuerzungen zum AnzeigenX
-Abkuerzungen muessen mit einem \"Wort\"-Zeichen endenX
+Abkuerzungen muessen mit einem "Wort"-Zeichen endenX
Abkuerzungen duerfen keine Tabulator- oder Leerzeichen enthaltenX
In Abkuerzungen duerfen ausser am Ende Wort- und Nicht-Wort-Zeichen nicht gemischt werdenX
-\"%s\" ist keine AbkuerzungX
+"%s" ist keine AbkuerzungX
Vi Kommando misslungen: umdefinierte Tasten ungueltigX
Keine weiteren Dateien zu edierenX
Keine vorhergehenden Dateien zu edierenX
Keine vorhergehenden Dateien fuer rewindX
Keine Dateiliste zum AnzeigenX
-Kein vorhergehendes Kommando um \"!\" zu ersetzenX
+Kein vorhergehendes Kommando um "!" zu ersetzenX
Kein Dateiname fuer %%X
Kein Dateiname fuer #X
Fehler: execl: %sX
@@ -132,7 +132,7 @@ Keine folgenden Zeilen zum VerbindenX
Kein Eingabe-Map EintragX
Kein Kommando-Map EintragX
Das %s Zeichen kann nicht umgemappt werdenX
-\"%s\" ist momentan nicht gemapptX
+"%s" ist momentan nicht gemapptX
Markennamen muessen einzelne Buchstaben seinX
%s existiert, nicht geschrieben; verwende ! zum UeberschreibenX
Neue .exrc Datei: %s. X
@@ -306,10 +306,12 @@ Es ist keine %s Edieroption angegebenX
Vi wurde nicht mit einem Perl Interpreter geladenX
Kein ex Kommando auszufuehrenX
Druecke <CR> um ein Kommando auszufuehren, :q zum verlassenX
-Verwende \"cscope help\" fuer HilestellungX
+Verwende "cscope help" fuer 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: angefuegt: %lu Zeilen, %lu ZeichenX
+unerwartetes Groessenveraenderungs - EreignisX
+%d Dateien zu edierenX
diff --git a/usr.bin/vi/catalog/german.base b/usr.bin/vi/catalog/german.base
index 80bf55b7ca3..135b72da799 100644
--- a/usr.bin/vi/catalog/german.base
+++ b/usr.bin/vi/catalog/german.base
@@ -97,16 +97,16 @@
103 "Ungueltige Adresse: die Datei ist leer"
104 "Das Kommando %s erlaubt keine Adresse 0"
105 "Keine Abkuerzungen zum Anzeigen"
-106 "Abkuerzungen muessen mit einem \"Wort\"-Zeichen enden"
+106 "Abkuerzungen muessen mit einem "Wort"-Zeichen enden"
107 "Abkuerzungen duerfen keine Tabulator- oder Leerzeichen enthalten"
108 "In Abkuerzungen duerfen ausser am Ende Wort- und Nicht-Wort-Zeichen nicht gemischt werden"
-109 "\"%s\" ist keine Abkuerzung"
+109 ""%s" ist keine Abkuerzung"
110 "Vi Kommando misslungen: umdefinierte Tasten ungueltig"
111 "Keine weiteren Dateien zu edieren"
112 "Keine vorhergehenden Dateien zu edieren"
113 "Keine vorhergehenden Dateien fuer rewind"
114 "Keine Dateiliste zum Anzeigen"
-115 "Kein vorhergehendes Kommando um \"!\" zu ersetzen"
+115 "Kein vorhergehendes Kommando um "!" zu ersetzen"
116 "Kein Dateiname fuer %%"
117 "Kein Dateiname fuer #"
118 "Fehler: execl: %s"
@@ -126,7 +126,7 @@
132 "Kein Eingabe-Map Eintrag"
133 "Kein Kommando-Map Eintrag"
134 "Das %s Zeichen kann nicht umgemappt werden"
-135 "\"%s\" ist momentan nicht gemappt"
+135 ""%s" ist momentan nicht gemappt"
136 "Markennamen muessen einzelne Buchstaben sein"
137 "%s existiert, nicht geschrieben; verwende ! zum Ueberschreiben"
138 "Neue .exrc Datei: %s. "
@@ -296,10 +296,12 @@
306 "Vi wurde nicht mit einem Perl Interpreter geladen"
307 "Kein ex Kommando auszufuehren"
308 "Druecke <CR> um ein Kommando auszufuehren, :q zum verlassen"
-309 "Verwende \"cscope help\" fuer Hilestellung"
+309 "Verwende "cscope help" fuer 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: angefuegt: %lu Zeilen, %lu Zeichen"
+316 "unerwartetes Groessenveraenderungs - Ereignis"
+317 "%d Dateien zu edieren"
diff --git a/usr.bin/vi/catalog/german.check b/usr.bin/vi/catalog/german.check
index 19d1843c429..4fd60c14e63 100644
--- a/usr.bin/vi/catalog/german.check
+++ b/usr.bin/vi/catalog/german.check
@@ -11,7 +11,6 @@ Unused message id's (this is okay):
288
=========================
MISSING ERROR MESSAGES (Please add!):
-316
=========================
Extra error messages (just delete them):
=========================
diff --git a/usr.bin/vi/catalog/ru_SU.KOI8-R b/usr.bin/vi/catalog/ru_SU.KOI8-R
index 95012d01408..7eb35b9cf26 100644
--- a/usr.bin/vi/catalog/ru_SU.KOI8-R
+++ b/usr.bin/vi/catalog/ru_SU.KOI8-R
@@ -103,16 +103,16 @@ nEPRAWILXNYJ ADRES: WSEGO %lu STROK W FAJLEX
nEPRAWILXNYJ ADRES: FAJL PUSTX
kOMMANDA %s NE MOVET ISPOLXZOWATX ADRES 0X
aBBREWIATURY OTSUTSTWU@TX
-aBBREWIATURY DOLVNY ZAKAN^IWATXSQ SIMWOLOM \"word\"X
+aBBREWIATURY DOLVNY ZAKAN^IWATXSQ SIMWOLOM "word"X
aBBREWIATURY NE MOGUT SODERVATX SIMWOLOY TABLQCII ILI PROBELYX
aBBREWIATURY NE MOGUT SO^ETATXSQ S SIMWOLAMI SLOW/NE-SLOW, ZA ISKL@^ENIEM KONCA STROKIX
-\"%s\" NE QWLQETSQ ABBREWIATUROJX
+"%s" NE QWLQETSQ ABBREWIATUROJX
fAJLOW DLQ REDAKTIROWANIQ BOLX[E NETX
oTSUTSTWIE PREDYDU]EGO FAJLA DLQ REDAKTIROWANIQX
oTSUTSTWIE PREDYDU]EGO FAJLA DLQ PROSMOTRA NAZADX
nET FAJLOWX
-oTSUTSTWIE PREDYDU]EJ KOMANDY DLQ ZAMENY \"!\"X
+oTSUTSTWIE PREDYDU]EJ KOMANDY DLQ ZAMENY "!"X
oTSUTSTWIE ZAMENY DLQ %%X
oTSUTSTWIE ZAMENY DLQ #X
o[IBKA: execl: %sX
@@ -132,7 +132,7 @@ pOSLEDU@]IE STROKI OTSUTSTWU@TX
oTSUTSTWIE PARAMETROW WWODAX
oTSUTSTWIE PARAMETROW KOMANDYX
sIMWOL %s NE MOVET BYTX PEREZAPOMNENX
-\"%s\" NA DANNYJ MOMENT NE OTME^ENX
+"%s" NA DANNYJ MOMENT NE OTME^ENX
iMQ METKI DOLVNO BYTX ODNIM SIMWOLOMX
%s SU]ESTWUET, NE ZAPISAN; ISPOLXZUJTE ! DLQ OBHODAX
nOWYJ FAJL .exrc: %sX
diff --git a/usr.bin/vi/catalog/ru_SU.KOI8-R.base b/usr.bin/vi/catalog/ru_SU.KOI8-R.base
index 983089c33cb..59efd3f53a5 100644
--- a/usr.bin/vi/catalog/ru_SU.KOI8-R.base
+++ b/usr.bin/vi/catalog/ru_SU.KOI8-R.base
@@ -83,15 +83,15 @@
103 "nEPRAWILXNYJ ADRES: FAJL PUST"
104 "kOMMANDA %s NE MOVET ISPOLXZOWATX ADRES 0"
105 "aBBREWIATURY OTSUTSTWU@T"
-106 "aBBREWIATURY DOLVNY ZAKAN^IWATXSQ SIMWOLOM \"word\""
+106 "aBBREWIATURY DOLVNY ZAKAN^IWATXSQ SIMWOLOM "word""
107 "aBBREWIATURY NE MOGUT SODERVATX SIMWOLOY TABLQCII ILI PROBELY"
108 "aBBREWIATURY NE MOGUT SO^ETATXSQ S SIMWOLAMI SLOW/NE-SLOW, ZA ISKL@^ENIEM KONCA STROKI"
-109 "\"%s\" NE QWLQETSQ ABBREWIATUROJ"
+109 ""%s" NE QWLQETSQ ABBREWIATUROJ"
111 "fAJLOW DLQ REDAKTIROWANIQ BOLX[E NET"
112 "oTSUTSTWIE PREDYDU]EGO FAJLA DLQ REDAKTIROWANIQ"
113 "oTSUTSTWIE PREDYDU]EGO FAJLA DLQ PROSMOTRA NAZAD"
114 "nET FAJLOW"
-115 "oTSUTSTWIE PREDYDU]EJ KOMANDY DLQ ZAMENY \"!\""
+115 "oTSUTSTWIE PREDYDU]EJ KOMANDY DLQ ZAMENY "!""
116 "oTSUTSTWIE ZAMENY DLQ %%"
117 "oTSUTSTWIE ZAMENY DLQ #"
118 "o[IBKA: execl: %s"
@@ -111,7 +111,7 @@
132 "oTSUTSTWIE PARAMETROW WWODA"
133 "oTSUTSTWIE PARAMETROW KOMANDY"
134 "sIMWOL %s NE MOVET BYTX PEREZAPOMNEN"
-135 "\"%s\" NA DANNYJ MOMENT NE OTME^EN"
+135 ""%s" NA DANNYJ MOMENT NE OTME^EN"
136 "iMQ METKI DOLVNO BYTX ODNIM SIMWOLOM"
137 "%s SU]ESTWUET, NE ZAPISAN; ISPOLXZUJTE ! DLQ OBHODA"
138 "nOWYJ FAJL .exrc: %s"
diff --git a/usr.bin/vi/catalog/ru_SU.KOI8-R.check b/usr.bin/vi/catalog/ru_SU.KOI8-R.check
index b3fce9b6987..ca77b891051 100644
--- a/usr.bin/vi/catalog/ru_SU.KOI8-R.check
+++ b/usr.bin/vi/catalog/ru_SU.KOI8-R.check
@@ -141,6 +141,7 @@ MISSING ERROR MESSAGES (Please add!):
314
315
316
+317
=========================
Extra error messages (just delete them):
047
diff --git a/usr.bin/vi/catalog/spanish b/usr.bin/vi/catalog/spanish
new file mode 100644
index 00000000000..fb67ee9dc42
--- /dev/null
+++ b/usr.bin/vi/catalog/spanish
@@ -0,0 +1,317 @@
+VI_MESSAGE_CATALOG
+Desbordamiento de longitud de l¡neaX
+no se puede borrar la l¡nea %luX
+no se puede a¤adir la l¡nea %luX
+no se puede insertar en la l¡nea %luX
+no se puede guardar la l¡nea %luX
+no se puede obtener la £ltima l¡neaX
+Error: no se puede recuperar la l¡nea %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 est ndar de Vi debe ser una terminalX
+Marcar %s: no determinadoX
+Marcar %s: se borr¢ la l¡neaX
+Marcar %s: la posici¢n del cursor ya no existeX
+Error: X
+nuevo archivoX
+nombre cambiadoX
+modificadoX
+no modificadoX
+DESTRABADOX
+lectura solamenteX
+l¡nea %lu de %lu [%ld%%]X
+archivo vac¡oX
+l¡nea %luX
+El archivo %s no es un cat logo de mensajesX
+No se puede determinar la opci¢n por omisi¢n %sX
+Uso: %sX
+determinar: no hay opci¢n %s: 'determinar todo' establece todos los valores de opci¢nX
+determinar: [no] hay opci¢n %s no tiene valorX
+determinar: opci¢n %s no es booleanoX
+determinar: opci¢n %s: %sX
+determinar: opci¢n %s: %s: desbordamiento de valoresX
+determinar: opci¢n %s: %s es un n£mero ilegalX
+determinar: opci¢n %s no es booleanoX
+Las columnas en pantalla son demasiado peque¤as, menos de %dX
+Las columnas en pantalla son demasiado grandes, m s de %dX
+Las l¡neas en pantalla son demasiado peque¤as, menos de %dX
+Las l¡neas en pantalla son demasiado grandes, m s de %dX
+La opci¢n lisp no est  implementadaX
+mensajes no desconectados: %sX
+mensajes no conectados: %sX
+
+La opci¢n de p rrafo debe estar en dos grupos de caracteresX
+La opci¢n de secci¢n debe estar en dos grupos de caracteresX
+
+
+
+El buffer por omisi¢n est  vac¡oX
+El buffer %s est  vac¡oX
+Los archivos con nuevas l¡neas en el nombre son irrecuperablesX
+Las modificaciones no pueden recuperarse si la sesi¢n fallaX
+Copiando archivo para recuperaci¢n...X
+Preservaci¢n fracasada: %sX
+Las modificaciones no pueden recuperarse si la sesi¢n fallaX
+Archivo de respaldo fracasado: %sX
+Copiando archivo para recuperaci¢n...X
+Informaci¢n sobre identificaci¢n del usuario %u no encontradaX
+No se puede trabar archivo de recuperaci¢nX
+Desbordamiento de buffer de archivo de recuperaci¢nX
+Archivo de recuperaci¢nX
+%s: archivo de recuperaci¢n defectuosoX
+%s: archivo de recuperaci¢n defectuosoX
+No hay archivos denominados %s, que usted pueda leer, para recuperarX
+Existen versiones m s antiguas de este archivo que usted puede recuperarX
+Existen otros archivos que usted puede recuperarX
+no env¡a email: %sX
+Archivo vac¡o; no hay nada para buscarX
+Se alcanz¢ el final del archivo sin encontrar el patr¢nX
+No hay patr¢n anterior de b£squedaX
+No se encontr¢ el patr¢nX
+ Se alcanz¢ el principio del archivo sin encontrar el patr¢nX
+B£squeda reiniciadaX
+Buscando...X
+No se encontr¢ ning£n car cter no imprimibleX
+Nombre de comando desconocidoX
+
+%s: comando no disponible en modalidad exX
+La cuenta no puede ser ceroX
+%s: mala especificaci¢n de l¡neaX
+Error interno de tabla de sintaxis (%s: %s)X
+Uso: %sX
+%s: buffer temporario no liberadoX
+Desplazamiento de marcador a antes de la l¡nea 1X
+Desplazamiento de marcador m s 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 direcci¢n es m s peque¤a que la primeraX
+No se suministra nombre de marcaX
+\\ no es seguido por / o ?X
+Referencia a un n£mero de l¡nea menor que 0X
+El comando %s es desconocidoX
+Desbordamiento de valor de direcci¢nX
+Subdesbordamiento de valor de direcci¢nX
+Combinaci¢n de direcci¢n ilegalX
+Direcci¢n ilegal: s¢lo %lu l¡neas en el archivoX
+Direcci¢n ilegal: el archivo est  vac¡oX
+El comando %s no permite una direcci¢n de 0X
+No hay abreviaturas para visualizarX
+Las abreviaturas deben terminar con un car cter 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 m s 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 ubicaci¢n 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 ra¡zX
+%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 ra¡zX
+%s: sin fuente: no le pertenece a ustedX
+%s: sin fuente: puede ser escrito por un usuario que no sea el propietarioX
+No hay l¡neas siguientes para unirX
+No hay anotaciones de mapa de entradaX
+No hay anotaciones de mapa de comandoX
+El car cter %s no puede remapearseX
+\"%s\" no est  mapeado actualmenteX
+Marca de nombres debe ser un s¢lo car cterX
+%s existe, no est  escrito; usar ! para alterarX
+Nuevo archivo exrc: %sX
+La l¡nea de destino se encuentra dentro del rango de movimientoX
+El comando abierto requiere que se determine la opci¢n abiertaX
+El comando abierto no se ha implementado a£nX
+No es posible preservar este archivoX
+Archivo preservadoX
+%s: expandido a demasiados nombres de archivoX
+S¢lo pueden leerse los archivos regulares y los conductos nombradosX
+%s: traba de lectura no disponibleX
+Leyendo...X
+%s: %lu l¡neas, %lu caracteresX
+No hay pantallas de fondo para mostrarX
+El comando de script s¢lo est  disponible en modalidad viX
+No hay comando para ejecutarX
+opci¢n de ancho de desplazamiento en 0X
+Desbordamiento de cuentaX
+Subdesbordamiento de cuentaX
+Expresi¢n 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 n£mero de l¡nea del identificador es posterior al final del archivoX
+La pila de identificadores est  vac¡aX
+%s: patr¢n de b£squeda no encontradoX
+%d archivos m s para editarX
+El buffer %s est  vac¡oX
+¨Confirmar cambio? [n]X
+InterrumpidoX
+No hay buffer anterior para ejecutarX
+No hay expresi¢n regular anteriorX
+El comando %s requiere que se haya le¡do un archivoX
+Uso: %sX
+El comando visual requiere que se determine la opci¢n abiertaX
+
+Archivo vac¡oX
+No hay b£squeda F, f, T o t anteriorX
+%s no se encontr¢X
+No hay archivo anterior para editarX
+El cursor no est  en un n£meroX
+El n£mero resultante es demasiado grandeX
+ El n£mero resultante es demasiado peque¤oX
+No hay car cter coincidente en esta l¡neaX
+No se encontr¢ un car cter coincidenteX
+No hay caracteres para reemplazarX
+No hay otra pantalla a la que se pueda pasarX
+Caracteres despu‚s de cadena de b£squeda, desplazamiento de l¡nea y/o comando zX
+No hay patr¢n anterior de b£squedaX
+B£squeda vuelve a la posici¢n inicialX
+Se super¢ el l¡mite de expansi¢n de abreviatura: se descartaron caracteresX
+Car cter ilegal; mencionar para entrarX
+Ya se encuentra al principio de la inserci¢nX
+No hay m s caracteres para borrarX
+Movimiento m s all  del final del archivoX
+Movimiento m s all  del final de la l¡neaX
+No hay movimiento del cursorX
+Ya se encuentra al principio del archivoX
+Movimiento m s 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 l¡neaX
+%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  vac¡oX
+%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 opci¢n de Windows es demasiado grande, el m x. es %uX
+A¤adirX
+CambiarX
+ComandoX
+InsertarX
+ReemplazarX
+El movimiento va m s all  del final de la pantallaX
+El movimiento va m s all  del principio de la pantallaX
+La pantalla debe tener m s de %d l¡neas 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 s¢lo 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
+S¢lo un buffer puede especificarseX
+N£mero mayor que %luX
+InterrumpidoX
+No se puede crear archivo temporarioX
+Advertencia: %s no es un archivo regularX
+%s ya se encuentra trabado, la sesi¢n 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 m s recientemente que esta copia; usar ! para alterarX
+%s: archivo modificado m s 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 l¡neas, %lu caracteresX
+%s: %lu l¡neas, %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 descartar n 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 m s 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 le¡do aun.X
+ cont?X
+Evento inesperado de car cterX
+Evento inesperado de final de archivoX
+No hay coincidencias para consultaX
+Evento inesperado de interrupci¢nX
+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 opci¢n de edici¢n 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 opci¢n de edici¢n seguraX
+El comando %s no se encuentra soportado cuando se determina la opci¢n de edici¢n seguraX
+determinar: la opci¢n %s puede no estar desconectadaX
+El monitor es demasiado peque¤o.X
+agregadoX
+cambiadoX
+borradoX
+unidoX
+movidoX
+desplazadoX
+arrancadoX
+l¡neaX
+l¡neasX
+Vi no se carg¢ con un int‚rprete TclX
+Archivo modificado desde la £ltima escritura.X
+Expansi¢n de shell fracasadaX
+No hay opci¢n de edici¢n %s especificadaX
+Vi no se carg¢ con un int‚rprete 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 b£squeda desconocido: usar uno de %sX
+%d: no existe esta sesi¢n cscopeX
+determinar: la opci¢n %s no puede conectarse nuncaX
+determinar: la opci¢n %s no puede determinarse nunca en 0X
+%s: a¤adido: %lu l¡neas, %lu caracteresX
+Evento inesperado de modificaci¢n de tama¤oX
+%d archivos para editarX
diff --git a/usr.bin/vi/catalog/spanish.base b/usr.bin/vi/catalog/spanish.base
new file mode 100644
index 00000000000..270199eee5c
--- /dev/null
+++ b/usr.bin/vi/catalog/spanish.base
@@ -0,0 +1,309 @@
+002 "Desbordamiento de longitud de l¡nea"
+003 "no se puede borrar la l¡nea %lu"
+004 "no se puede a¤adir la l¡nea %lu"
+005 "no se puede insertar en la l¡nea %lu"
+006 "no se puede guardar la l¡nea %lu"
+007 "no se puede obtener la £ltima l¡nea"
+008 "Error: no se puede recuperar la l¡nea %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 est ndar de Vi debe ser una terminal"
+017 "Marcar %s: no determinado"
+018 "Marcar %s: se borr¢ la l¡nea"
+019 "Marcar %s: la posici¢n del cursor ya no existe"
+020 "Error: "
+021 "nuevo archivo"
+022 "nombre cambiado"
+023 "modificado"
+024 "no modificado"
+025 "DESTRABADO"
+026 "lectura solamente"
+027 "l¡nea %lu de %lu [%ld%%]"
+028 "archivo vac¡o"
+029 "l¡nea %lu"
+030 "El archivo %s no es un cat logo de mensajes"
+031 "No se puede determinar la opci¢n por omisi¢n %s"
+032 "Uso: %s"
+033 "determinar: no hay opci¢n %s: 'determinar todo' establece todos los valores de opci¢n"
+034 "determinar: [no] hay opci¢n %s no tiene valor"
+035 "determinar: opci¢n %s no es booleano"
+036 "determinar: opci¢n %s: %s"
+037 "determinar: opci¢n %s: %s: desbordamiento de valores"
+038 "determinar: opci¢n %s: %s es un n£mero ilegal"
+039 "determinar: opci¢n %s no es booleano"
+040 "Las columnas en pantalla son demasiado peque¤as, menos de %d"
+041 "Las columnas en pantalla son demasiado grandes, m s de %d"
+042 "Las l¡neas en pantalla son demasiado peque¤as, menos de %d"
+043 "Las l¡neas en pantalla son demasiado grandes, m s de %d"
+044 "La opci¢n lisp no est  implementada"
+045 "mensajes no desconectados: %s"
+046 "mensajes no conectados: %s"
+048 "La opci¢n de p rrafo debe estar en dos grupos de caracteres"
+049 "La opci¢n de secci¢n debe estar en dos grupos de caracteres"
+053 "El buffer por omisi¢n est  vac¡o"
+054 "El buffer %s est  vac¡o"
+055 "Los archivos con nuevas l¡neas en el nombre son irrecuperables"
+056 "Las modificaciones no pueden recuperarse si la sesi¢n falla"
+057 "Copiando archivo para recuperaci¢n..."
+058 "Preservaci¢n fracasada: %s"
+059 "Las modificaciones no pueden recuperarse si la sesi¢n falla"
+060 "Archivo de respaldo fracasado: %s"
+061 "Copiando archivo para recuperaci¢n..."
+062 "Informaci¢n sobre identificaci¢n del usuario %u no encontrada"
+063 "No se puede trabar archivo de recuperaci¢n"
+064 "Desbordamiento de buffer de archivo de recuperaci¢n"
+065 "Archivo de recuperaci¢n"
+066 "%s: archivo de recuperaci¢n defectuoso"
+067 "%s: archivo de recuperaci¢n defectuoso"
+068 "No hay archivos denominados %s, que usted pueda leer, para recuperar"
+069 "Existen versiones m s antiguas de este archivo que usted puede recuperar"
+070 "Existen otros archivos que usted puede recuperar"
+071 "no env¡a email: %s"
+072 "Archivo vac¡o; no hay nada para buscar"
+073 "Se alcanz¢ el final del archivo sin encontrar el patr¢n"
+074 "No hay patr¢n anterior de b£squeda"
+075 "No se encontr¢ el patr¢n"
+076 " Se alcanz¢ el principio del archivo sin encontrar el patr¢n"
+077 "B£squeda reiniciada"
+078 "Buscando..."
+079 "No se encontr¢ ning£n car cter 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 especificaci¢n de l¡nea"
+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 l¡nea 1"
+089 "Desplazamiento de marcador m s 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 direcci¢n es m s peque¤a que la primera"
+095 "No se suministra nombre de marca"
+096 "\\ no es seguido por / o ?"
+097 "Referencia a un n£mero de l¡nea menor que 0"
+098 "El comando %s es desconocido"
+099 "Desbordamiento de valor de direcci¢n"
+100 "Subdesbordamiento de valor de direcci¢n"
+101 "Combinaci¢n de direcci¢n ilegal"
+102 "Direcci¢n ilegal: s¢lo %lu l¡neas en el archivo"
+103 "Direcci¢n ilegal: el archivo est  vac¡o"
+104 "El comando %s no permite una direcci¢n de 0"
+105 "No hay abreviaturas para visualizar"
+106 "Las abreviaturas deben terminar con un car cter 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 m s 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 ubicaci¢n 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 ra¡z"
+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 ra¡z"
+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 l¡neas siguientes para unir"
+132 "No hay anotaciones de mapa de entrada"
+133 "No hay anotaciones de mapa de comando"
+134 "El car cter %s no puede remapearse"
+135 "\"%s\" no est  mapeado actualmente"
+136 "Marca de nombres debe ser un s¢lo car cter"
+137 "%s existe, no est  escrito; usar ! para alterar"
+138 "Nuevo archivo exrc: %s"
+139 "La l¡nea de destino se encuentra dentro del rango de movimiento"
+140 "El comando abierto requiere que se determine la opci¢n abierta"
+141 "El comando abierto no se ha implementado a£n"
+142 "No es posible preservar este archivo"
+143 "Archivo preservado"
+144 "%s: expandido a demasiados nombres de archivo"
+145 "S¢lo pueden leerse los archivos regulares y los conductos nombrados"
+146 "%s: traba de lectura no disponible"
+147 "Leyendo..."
+148 "%s: %lu l¡neas, %lu caracteres"
+149 "No hay pantallas de fondo para mostrar"
+150 "El comando de script s¢lo est  disponible en modalidad vi"
+151 "No hay comando para ejecutar"
+152 "opci¢n de ancho de desplazamiento en 0"
+153 "Desbordamiento de cuenta"
+154 "Subdesbordamiento de cuenta"
+155 "Expresi¢n 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 n£mero de l¡nea del identificador es posterior al final del archivo"
+165 "La pila de identificadores est  vac¡a"
+166 "%s: patr¢n de b£squeda no encontrado"
+167 "%d archivos m s para editar"
+168 "El buffer %s est  vac¡o"
+169 "¨Confirmar cambio? [n]"
+170 "Interrumpido"
+171 "No hay buffer anterior para ejecutar"
+172 "No hay expresi¢n regular anterior"
+173 "El comando %s requiere que se haya le¡do un archivo"
+174 "Uso: %s"
+175 "El comando visual requiere que se determine la opci¢n abierta"
+177 "Archivo vac¡o"
+178 "No hay b£squeda 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 n£mero"
+182 "El n£mero resultante es demasiado grande"
+183 " El n£mero resultante es demasiado peque¤o"
+184 "No hay car cter coincidente en esta l¡nea"
+185 "No se encontr¢ un car cter coincidente"
+186 "No hay caracteres para reemplazar"
+187 "No hay otra pantalla a la que se pueda pasar"
+188 "Caracteres despu‚s de cadena de b£squeda, desplazamiento de l¡nea y/o comando z"
+189 "No hay patr¢n anterior de b£squeda"
+190 "B£squeda vuelve a la posici¢n inicial"
+191 "Se super¢ el l¡mite de expansi¢n de abreviatura: se descartaron caracteres"
+192 "Car cter ilegal; mencionar para entrar"
+193 "Ya se encuentra al principio de la inserci¢n"
+194 "No hay m s caracteres para borrar"
+195 "Movimiento m s all  del final del archivo"
+196 "Movimiento m s all  del final de la l¡nea"
+197 "No hay movimiento del cursor"
+198 "Ya se encuentra al principio del archivo"
+199 "Movimiento m s 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 l¡nea"
+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  vac¡o"
+209 "El archivo est  vac¡o"
+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 opci¢n de Windows es demasiado grande, el m x. es %u"
+215 "A¤adir"
+216 "Cambiar"
+217 "Comando"
+218 "Insertar"
+219 "Reemplazar"
+220 "El movimiento va m s all  del final de la pantalla"
+221 "El movimiento va m s all  del principio de la pantalla"
+222 "La pantalla debe tener m s de %d l¡neas 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 s¢lo 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 "S¢lo un buffer puede especificarse"
+235 "N£mero 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 sesi¢n 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 m s recientemente que esta copia; usar ! para alterar"
+251 "%s: archivo modificado m s 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 l¡neas, %lu caracteres"
+257 "%s: %lu l¡neas, %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 descartar n 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 m s 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 le¡do aun."
+275 " cont?"
+276 "Evento inesperado de car cter"
+277 "Evento inesperado de final de archivo"
+278 "No hay coincidencias para consulta"
+279 "Evento inesperado de interrupci¢n"
+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 opci¢n de edici¢n 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 opci¢n de edici¢n segura"
+290 "El comando %s no se encuentra soportado cuando se determina la opci¢n de edici¢n segura"
+291 "determinar: la opci¢n %s puede no estar desconectada"
+292 "El monitor es demasiado peque¤o."
+293 "agregado"
+294 "cambiado"
+295 "borrado"
+296 "unido"
+297 "movido"
+298 "desplazado"
+299 "arrancado"
+300 "l¡nea"
+301 "l¡neas"
+302 "Vi no se carg¢ con un int‚rprete Tcl"
+303 "Archivo modificado desde la £ltima escritura."
+304 "Expansi¢n de shell fracasada"
+304 "Expansi¢n de shell fracasada"
+305 "No hay opci¢n de edici¢n %s especificada"
+306 "Vi no se carg¢ con un int‚rprete 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 b£squeda desconocido: usar uno de %s"
+312 "%d: no existe esta sesi¢n cscope"
+313 "determinar: la opci¢n %s no puede conectarse nunca"
+314 "determinar: la opci¢n %s no puede determinarse nunca en 0"
+315 "%s: a¤adido: %lu l¡neas, %lu caracteres"
+316 "Evento inesperado de modificaci¢n de tama¤o"
+317 "%d archivos para editar"
diff --git a/usr.bin/vi/catalog/spanish.check b/usr.bin/vi/catalog/spanish.check
new file mode 100644
index 00000000000..c04785e3a2e
--- /dev/null
+++ b/usr.bin/vi/catalog/spanish.check
@@ -0,0 +1,35 @@
+Unused message id's (this is okay):
+001
+047
+050
+051
+052
+081
+176
+229
+288
+=========================
+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 "El archivo est  vac¡o"
+ 2 304 "Expansi¢n de shell fracasada"
+=========================
+Duplicate messages, just message (this is okay):
+ 2 %s: %lu l¡neas, %lu caracteresX
+ 2 %s: archivo de recuperaci¢n defectuosoX
+ 2 Copiando archivo para recuperaci¢n...X
+ 2 El buffer %s est  vac¡oX
+ 2 InterrumpidoX
+ 2 Las modificaciones no pueden recuperarse si la sesi¢n fallaX
+ 2 No hay patr¢n anterior de b£squedaX
+ 2 No se realiza log, no se puede deshacerX
+ 2 determinar: opci¢n %s no es booleanoX
+ 3 %s: eliminarX
+ 3 Archivo modificado desde la £ltima escritura completa; escribir o usar ! para alterarX
+ 4 Uso: %sX
+=========================
diff --git a/usr.bin/vi/catalog/swedish b/usr.bin/vi/catalog/swedish
index a7c1d97a182..044b354fa07 100644
--- a/usr.bin/vi/catalog/swedish
+++ b/usr.bin/vi/catalog/swedish
@@ -30,7 +30,7 @@ rad %luX
Filen %s är ingen meddelandekatalogX
Kan inte sätta standardvärde för %s flagganX
Användning: %sX
-set: %s är en okänd flagga: \"set all\" visar alla flaggorX
+set: %s är en okänd flagga: "set all" visar alla flaggorX
set: [no]%s flaggan kan inte ges ett värdeX
set: %s flaggan är inte boleanskX
set: %s flaggan: %sX
@@ -79,7 +79,7 @@ Söker...X
Inga icke skrivbara tecken funnaX
Okänt kommandonamnX
-%s: kommandot är inte tillgängligt i \"ex\" lägeX
+%s: kommandot är inte tillgängligt i "ex" lägeX
Talet får inte vara nollX
%s: Ogiltig radspecifikationX
Fel i intern syntaxtabell (%s: %s)X
@@ -103,16 +103,16 @@ Otillåten adress: bara %lu rader finns i filenX
Otillåten adress: filen är tomX
%s kommandot tillåter inte en adress som är 0X
Inga förkortningar att visaX
-Förkortningar måste sluta med ett \"ord\" teckenX
+Förkortningar måste sluta med ett "ord" teckenX
Förkortningar kan inte innehålla mellanslag eller tabX
-Förkortningar kan inte blanda \"ord\"/\"icke ord\" tecken, utom i slutetX
-\"%s\" är ingen förkortningX
+Förkortningar kan inte blanda "ord"/"icke ord" tecken, utom i slutetX
+"%s" är ingen förkortningX
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 ersätta \"!\" medX
+Inget tidigare kommando att ersätta "!" medX
Inget filnamn att ersätta %% medX
Inget filnamn att ersätta # medX
Fel: execl: %sX
@@ -120,8 +120,8 @@ I/O fel: %sX
Filen ändrad efter sista skrivning; spara eller använd !X
Kan inte hitta hemkatalogX
Ny nuvarande katalog: %sX
-Inga \"cut buffers\" att visaX
-%s kommandot kan inte används som del i ett \"global\" eller v kommandoX
+Inga "cut buffers" att visaX
+%s kommandot kan inte används som del i ett "global" eller v kommandoX
%s/%s: inte läst: varken du eller root är ägareX
%s/%s: inte läst: du är inte ägareX
%s/%s: inte läst: skrivbar av annan än ägarenX
@@ -132,7 +132,7 @@ Ingen nästa rad att sätta ihop medX
Det finns inget i inmatningsmappningenX
Det finns inget i kommandomappningenX
%s tecknet kan inte mappas omX
-\"%s\" är inte ommappat just nuX
+"%s" är inte ommappat just nuX
Namn på markeringar måste vara ett tecken långaX
%s finns, inget sparat; använd ! för att sparaX
Ny exrc fil: %sX
@@ -147,13 +147,13 @@ Endast vanliga filer och namngivna rör kan läsasX
Läser...X
%s: %lu rader, %lu teckenX
Inga bakgrundsfönster att visaX
-Script kommandot finns bara i \"vi\" lägeX
+Script kommandot finns bara i "vi" lägeX
Inget kommando att exekveraX
shiftwidth flaggan satt till 0X
Talet har för stort värdeX
Talet har för litet värdeX
Reguljärt uttryck är givet; r flaggan är meningslösX
-#, l och p flaggorna kan inte kombineras med c flaggan i \"vi\" lägeX
+#, l och p flaggorna kan inte kombineras med c flaggan i "vi" lägeX
Ingen matchande text funnenX
Inget tidigare märke har givitsX
Det är färre än %s märken i stacken; använd :display t[ags]X
@@ -189,7 +189,7 @@ Tecken efter söksträng, radoffset och/eller z kommandotX
Ingen tidigare söksträngX
Sökningen slog runt till ursprungliga positionenX
Förkortning överskred expanderingsgränsen: tecken har tagits bortX
-Ogiltigt tecken; använd \"quote\" för att sätta inX
+Ogiltigt tecken; använd "quote" för att sätta inX
Redan i början på insättningenX
Inga fler tecken att ta bortX
Försök att gå bortom slutet på filenX
@@ -201,10 +201,10 @@ Redan i första kolumnenX
Buffertar måste anges före kommandotX
Redan i slutet av filenX
Redan på slutet av radenX
-%s är inte ett \"vi\" kommandoX
+%s är inte ett "vi" kommandoX
Användning: %sX
Inga tecken att ta bortX
-Q kommandot kräver \"ex\" i terminallägeX
+Q kommandot kräver "ex" i terminallägeX
Inget kommando att repeteraX
Filen är tomX
%s kan inte användas som ett förflyttningskommandoX
@@ -269,8 +269,8 @@ bekräfta? [ynq]X
Tryck på en tangent för att fortsätta: X
Tryck på en tangent för att fortsätta [: för att ge fler kommandon]: X
Tryck på en tangent för att fortsätta [q för att avsluta]: X
-Den formen av %s kräver \"ex\" i terminallägeX
-Går till \"ex\" inmatningsläge.X
+Den formen av %s kräver "ex" i terminallägeX
+Går till "ex" inmatningsläge.X
Kommandot misslyckades, ingen fil inläst ännu.X
forts?X
Oväntad teckenhändelseX
@@ -280,7 +280,7 @@ Oväntad avbrottshändelseX
Oväntad avslutningshändelseX
Oväntad omritningshändelseX
Redan vid sista märket i denna gruppX
-%s kommandot kräver \"ex\" i terminallägeX
+%s kommandot kräver "ex" i terminallägeX
Den formen av %s är inte tillgänglig när secure edit flaggan är sattX
Oväntad stränghändelseX
Oväntad tidshändelseX
@@ -304,12 +304,14 @@ Filen har ändrats efter den sparats.X
Skalexpansion misslyckadesX
Ingen %s edit flagga givenX
Vi har inte länkats med en Perl tolkX
-Inga \"ex\" kommandon att exekveraX
+Inga "ex" kommandon att exekveraX
Tryck <CR> för att exekvera kommando, :q för att avslutaX
-Gör \"cscope help\" för hjälpX
+Gör "cscope help" för hjälpX
Inga cscope kopplingar körsX
%s: okänd söktyp: använd en av %sX
%d: ingen sådan cscope sessionX
set: %s flaggan får aldrig slås påX
set: %s flaggan får aldrig sättas till 0X
%s: tillagt: %lu rader, %lu teckenX
+Oväntad storleksändringX
+%d filer att editeraX
diff --git a/usr.bin/vi/catalog/swedish.base b/usr.bin/vi/catalog/swedish.base
index e9001509e8f..43bf7765a25 100644
--- a/usr.bin/vi/catalog/swedish.base
+++ b/usr.bin/vi/catalog/swedish.base
@@ -29,7 +29,7 @@
030 "Filen %s är ingen meddelandekatalog"
031 "Kan inte sätta standardvärde för %s flaggan"
032 "Användning: %s"
-033 "set: %s är en okänd flagga: \"set all\" visar alla flaggor"
+033 "set: %s är en okänd flagga: "set all" visar alla flaggor"
034 "set: [no]%s flaggan kan inte ges ett värde"
035 "set: %s flaggan är inte boleansk"
036 "set: %s flaggan: %s"
@@ -73,7 +73,7 @@
078 "Söker..."
079 "Inga icke skrivbara tecken funna"
080 "Okänt kommandonamn"
-082 "%s: kommandot är inte tillgängligt i \"ex\" läge"
+082 "%s: kommandot är inte tillgängligt i "ex" läge"
083 "Talet får inte vara noll"
084 "%s: Ogiltig radspecifikation"
085 "Fel i intern syntaxtabell (%s: %s)"
@@ -97,16 +97,16 @@
103 "Otillåten adress: filen är tom"
104 "%s kommandot tillåter inte en adress som är 0"
105 "Inga förkortningar att visa"
-106 "Förkortningar måste sluta med ett \"ord\" tecken"
+106 "Förkortningar måste sluta med ett "ord" tecken"
107 "Förkortningar kan inte innehålla mellanslag eller tab"
-108 "Förkortningar kan inte blanda \"ord\"/\"icke ord\" tecken, utom i slutet"
-109 "\"%s\" är ingen förkortning"
+108 "Förkortningar kan inte blanda "ord"/"icke ord" tecken, utom i slutet"
+109 ""%s" är ingen förkortning"
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 ersätta \"!\" med"
+115 "Inget tidigare kommando att ersätta "!" med"
116 "Inget filnamn att ersätta %% med"
117 "Inget filnamn att ersätta # med"
118 "Fel: execl: %s"
@@ -114,8 +114,8 @@
120 "Filen ändrad efter sista skrivning; spara eller använd !"
121 "Kan inte hitta hemkatalog"
122 "Ny nuvarande katalog: %s"
-123 "Inga \"cut buffers\" att visa"
-124 "%s kommandot kan inte används som del i ett \"global\" eller v kommando"
+123 "Inga "cut buffers" att visa"
+124 "%s kommandot kan inte används som del i ett "global" eller v kommando"
125 "%s/%s: inte läst: varken du eller root är ägare"
126 "%s/%s: inte läst: du är inte ägare"
127 "%s/%s: inte läst: skrivbar av annan än ägaren"
@@ -126,7 +126,7 @@
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"
+135 ""%s" är inte ommappat just nu"
136 "Namn på markeringar måste vara ett tecken långa"
137 "%s finns, inget sparat; använd ! för att spara"
138 "Ny exrc fil: %s"
@@ -141,13 +141,13 @@
147 "Läser..."
148 "%s: %lu rader, %lu tecken"
149 "Inga bakgrundsfönster att visa"
-150 "Script kommandot finns bara i \"vi\" läge"
+150 "Script kommandot finns bara i "vi" läge"
151 "Inget kommando att exekvera"
152 "shiftwidth flaggan satt till 0"
153 "Talet har för stort värde"
154 "Talet har för litet värde"
155 "Reguljärt uttryck är givet; r flaggan är meningslös"
-156 "#, l och p flaggorna kan inte kombineras med c flaggan i \"vi\" läge"
+156 "#, l och p flaggorna kan inte kombineras med c flaggan i "vi" läge"
157 "Ingen matchande text funnen"
158 "Inget tidigare märke har givits"
159 "Det är färre än %s märken i stacken; använd :display t[ags]"
@@ -182,7 +182,7 @@
189 "Ingen tidigare söksträng"
190 "Sökningen slog runt till ursprungliga positionen"
191 "Förkortning överskred expanderingsgränsen: tecken har tagits bort"
-192 "Ogiltigt tecken; använd \"quote\" för att sätta in"
+192 "Ogiltigt tecken; använd "quote" för att sätta in"
193 "Redan i början på insättningen"
194 "Inga fler tecken att ta bort"
195 "Försök att gå bortom slutet på filen"
@@ -194,10 +194,10 @@
201 "Buffertar måste anges före kommandot"
202 "Redan i slutet av filen"
203 "Redan på slutet av raden"
-204 "%s är inte ett \"vi\" kommando"
+204 "%s är inte ett "vi" kommando"
205 "Användning: %s"
206 "Inga tecken att ta bort"
-207 "Q kommandot kräver \"ex\" i terminalläge"
+207 "Q kommandot kräver "ex" i terminalläge"
208 "Inget kommando att repetera"
209 "Filen är tom"
210 "%s kan inte användas som ett förflyttningskommando"
@@ -260,8 +260,8 @@
269 "Tryck på en tangent för att fortsätta: "
270 "Tryck på en tangent för att fortsätta [: för att ge fler kommandon]: "
271 "Tryck på en tangent för att fortsätta [q för att avsluta]: "
-272 "Den formen av %s kräver \"ex\" i terminalläge"
-273 "Går till \"ex\" inmatningsläge."
+272 "Den formen av %s kräver "ex" i terminalläge"
+273 "Går till "ex" inmatningsläge."
274 "Kommandot misslyckades, ingen fil inläst ännu."
275 " forts?"
276 "Oväntad teckenhändelse"
@@ -271,7 +271,7 @@
280 "Oväntad avslutningshändelse"
281 "Oväntad omritningshändelse"
282 "Redan vid sista märket i denna grupp"
-283 "%s kommandot kräver \"ex\" i terminalläge"
+283 "%s kommandot kräver "ex" i terminalläge"
284 "Den formen av %s är inte tillgänglig när secure edit flaggan är satt"
285 "Oväntad stränghändelse"
286 "Oväntad tidshändelse"
@@ -294,12 +294,14 @@
304 "Skalexpansion misslyckades"
305 "Ingen %s edit flagga given"
306 "Vi har inte länkats med en Perl tolk"
-307 "Inga \"ex\" kommandon att exekvera"
+307 "Inga "ex" kommandon att exekvera"
308 "Tryck <CR> för att exekvera kommando, :q för att avsluta"
-309 "Gör \"cscope help\" för hjälp"
+309 "Gör "cscope help" för hjälp"
310 "Inga cscope kopplingar körs"
311 "%s: okänd söktyp: använd en av %s"
312 "%d: ingen sådan cscope session"
313 "set: %s flaggan får aldrig slås på"
314 "set: %s flaggan får aldrig sättas till 0"
315 "%s: tillagt: %lu rader, %lu tecken"
+316 "Oväntad storleksändring"
+317 "%d filer att editera"
diff --git a/usr.bin/vi/catalog/swedish.check b/usr.bin/vi/catalog/swedish.check
index 6185781b3ee..c70b9bbd409 100644
--- a/usr.bin/vi/catalog/swedish.check
+++ b/usr.bin/vi/catalog/swedish.check
@@ -11,7 +11,6 @@ Unused message id's (this is okay):
288
=========================
MISSING ERROR MESSAGES (Please add!):
-316
=========================
Extra error messages (just delete them):
=========================
diff --git a/usr.bin/vi/cl/cl_main.c b/usr.bin/vi/cl/cl_main.c
index f7693683014..2889f709cbb 100644
--- a/usr.bin/vi/cl/cl_main.c
+++ b/usr.bin/vi/cl/cl_main.c
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)cl_main.c 10.35 (Berkeley) 9/24/96";
+static const char sccsid[] = "@(#)cl_main.c 10.36 (Berkeley) 10/14/96";
#endif /* not lint */
#include <sys/types.h>
@@ -40,7 +40,7 @@ sigset_t __sigblockset; /* GLOBAL: Blocked signals. */
static void cl_func_std __P((GS *));
static CL_PRIVATE *cl_init __P((GS *));
static GS *gs_init __P((char *));
-static void nomem __P((char *));
+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 *));
@@ -127,7 +127,7 @@ main(argc, argv)
/* Add the terminal type to the global structure. */
if ((OG_D_STR(gp, GO_TERM) =
OG_STR(gp, GO_TERM) = strdup(ttype)) == NULL)
- nomem(gp->progname);
+ perr(gp->progname, NULL);
/* Figure out how big the screen is. */
if (cl_ssize(NULL, 0, &rows, &cols, NULL))
@@ -204,7 +204,7 @@ gs_init(name)
/* Allocate the global structure. */
CALLOC_NOMSG(NULL, gp, GS *, 1, sizeof(GS));
if (gp == NULL)
- nomem(name);
+ perr(name, NULL);
gp->progname = name;
@@ -225,7 +225,7 @@ cl_init(gp)
/* Allocate the CL private structure. */
CALLOC_NOMSG(NULL, clp, CL_PRIVATE *, 1, sizeof(CL_PRIVATE));
if (clp == NULL)
- nomem(gp->progname);
+ perr(gp->progname, NULL);
gp->cl_private = clp;
/*
@@ -248,8 +248,7 @@ cl_init(gp)
goto tcfail;
} else if ((fd = open(_PATH_TTY, O_RDONLY, 0)) != -1) {
if (tcgetattr(fd, &clp->orig) == -1) {
-tcfail: (void)fprintf(stderr, "%s: tcgetattr: %s\n",
- gp->progname, strerror(errno));
+tcfail: perr(gp->progname, "tcgetattr");
exit (1);
}
(void)close(fd);
@@ -355,8 +354,7 @@ sig_init(gp, sp)
setsig(SIGWINCH, &clp->oact[INDX_WINCH], h_winch)
#endif
) {
- (void)fprintf(stderr,
- "%s: %s\n", gp->progname, strerror(errno));
+ perr(gp->progname, NULL);
return (1);
}
} else
@@ -458,13 +456,16 @@ cl_func_std(gp)
}
/*
- * nomem --
- * No memory error.
+ * perr --
+ * Print system error.
*/
static void
-nomem(name)
- char *name;
+perr(name, msg)
+ char *name, *msg;
{
- (void)fprintf(stderr, "%s: %s\n", name, strerror(errno));
+ (void)fprintf(stderr, "%s:", name);
+ if (msg != NULL)
+ (void)fprintf(stderr, "%s:", msg);
+ (void)fprintf(stderr, "%s\n", strerror(errno));
exit(1);
}
diff --git a/usr.bin/vi/common/api.c b/usr.bin/vi/common/api.c
index 1f430775ee1..35d9f0c8f66 100644
--- a/usr.bin/vi/common/api.c
+++ b/usr.bin/vi/common/api.c
@@ -12,7 +12,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)api.c 8.24 (Berkeley) 9/18/96";
+static const char sccsid[] = "@(#)api.c 8.26 (Berkeley) 10/14/96";
#endif /* not lint */
#include <sys/types.h>
@@ -421,11 +421,13 @@ api_opts_get(sp, name, value, boolvalue)
char *name, **value;
int *boolvalue;
{
- int offset;
OPTLIST const *op;
+ int offset;
- if ((op = opts_search(name)) == NULL)
+ if ((op = opts_search(name)) == NULL) {
+ opts_nomatch(sp, name);
return (1);
+ }
offset = op - optlist;
if (boolvalue != NULL)
@@ -441,7 +443,7 @@ api_opts_get(sp, name, value, boolvalue)
break;
case OPT_NUM:
MALLOC_RET(sp, *value, char *, 20);
- (void)sprintf(*value, "%ld", (u_long)O_VAL(sp, offset));
+ (void)sprintf(*value, "%lu", (u_long)O_VAL(sp, offset));
break;
case OPT_STR:
if (O_STR(sp, offset) == NULL) {
@@ -461,19 +463,51 @@ api_opts_get(sp, name, value, boolvalue)
* api_opts_set --
* Set options.
*
- * PUBLIC: int api_opts_set __P((SCR *, char *));
+ * PUBLIC: int api_opts_set __P((SCR *, char *, char *, u_long, int));
*/
-int
-api_opts_set(sp, name)
+int
+api_opts_set(sp, name, str_value, num_value, bool_value)
SCR *sp;
- char *name;
+ char *name, *str_value;
+ u_long num_value;
+ int bool_value;
{
- ARGS *ap[2], a;
- EXCMD cmd;
+ ARGS *ap[2], a, b;
+ OPTLIST const *op;
+ int rval;
+ size_t blen;
+ char *bp;
- ex_cinit(&cmd, C_SET, 0, OOBLNO, OOBLNO, 0, ap);
- ex_cadd(&cmd, &a, name, strlen(name));
- return (cmd.cmd->fn(sp, &cmd));
+ if ((op = opts_search(name)) == NULL) {
+ opts_nomatch(sp, name);
+ return (1);
+ }
+
+ switch (op->type) {
+ case OPT_0BOOL:
+ case OPT_1BOOL:
+ GET_SPACE_RET(sp, bp, blen, 64);
+ a.len = snprintf(bp, 64, "%s%s", bool_value ? "" : "no", name);
+ break;
+ case OPT_NUM:
+ GET_SPACE_RET(sp, bp, blen, 64);
+ a.len = snprintf(bp, 64, "%s=%lu", name, num_value);
+ break;
+ case OPT_STR:
+ GET_SPACE_RET(sp, bp, blen, 1024);
+ a.len = snprintf(bp, 1024, "%s=%s", name, str_value);
+ break;
+ }
+ a.bp = bp;
+ b.len = 0;
+ b.bp = NULL;
+ ap[0] = &a;
+ ap[1] = &b;
+ rval = opts_set(sp, ap, NULL);
+
+ FREE_SPACE(sp, bp, blen);
+
+ return (rval);
}
/*
diff --git a/usr.bin/vi/common/delete.c b/usr.bin/vi/common/delete.c
index 2c60b341a38..001788f9bb3 100644
--- a/usr.bin/vi/common/delete.c
+++ b/usr.bin/vi/common/delete.c
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)delete.c 10.11 (Berkeley) 9/15/96";
+static const char sccsid[] = "@(#)delete.c 10.12 (Berkeley) 10/23/96";
#endif /* not lint */
#include <sys/types.h>
@@ -26,13 +26,13 @@ static const char sccsid[] = "@(#)delete.c 10.11 (Berkeley) 9/15/96";
#include "common.h"
/*
- * delete --
+ * del --
* Delete a range of text.
*
- * PUBLIC: int delete __P((SCR *, MARK *, MARK *, int));
+ * PUBLIC: int del __P((SCR *, MARK *, MARK *, int));
*/
int
-delete(sp, fm, tm, lmode)
+del(sp, fm, tm, lmode)
SCR *sp;
MARK *fm, *tm;
int lmode;
diff --git a/usr.bin/vi/common/exf.c b/usr.bin/vi/common/exf.c
index 4a17ae69bc6..39c781a3f7d 100644
--- a/usr.bin/vi/common/exf.c
+++ b/usr.bin/vi/common/exf.c
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)exf.c 10.47 (Berkeley) 8/12/96";
+static const char sccsid[] = "@(#)exf.c 10.49 (Berkeley) 10/10/96";
#endif /* not lint */
#include <sys/param.h>
@@ -1186,7 +1186,7 @@ file_comment(sp)
sp->lno = lno;
return;
}
- } else if (len >= 1 && p[0] == '/' && p[1] == '*') {
+ } else if (len > 1 && p[0] == '/' && p[1] == '*') {
F_SET(sp, SC_SCR_TOP);
do {
for (; len > 1; --len, ++p)
@@ -1195,6 +1195,17 @@ file_comment(sp)
return;
}
} while (!db_get(sp, ++lno, 0, &p, &len));
+ } else if (len > 1 && p[0] == '/' && p[1] == '/') {
+ F_SET(sp, SC_SCR_TOP);
+ p += 2;
+ len -= 2;
+ do {
+ for (; len > 1; --len, ++p)
+ if (p[0] == '/' && p[1] == '/') {
+ sp->lno = lno;
+ return;
+ }
+ } while (!db_get(sp, ++lno, 0, &p, &len));
}
}
diff --git a/usr.bin/vi/common/main.c b/usr.bin/vi/common/main.c
index 7d2269e34b3..a51d4aa391f 100644
--- a/usr.bin/vi/common/main.c
+++ b/usr.bin/vi/common/main.c
@@ -18,7 +18,7 @@ static const char copyright[] =
#endif /* not lint */
#ifndef lint
-static const char sccsid[] = "@(#)main.c 10.47 (Berkeley) 9/24/96";
+static const char sccsid[] = "@(#)main.c 10.48 (Berkeley) 10/11/96";
#endif /* not lint */
#include <sys/types.h>
@@ -511,10 +511,12 @@ v_end(gp)
if (gp->tmp_bp != NULL)
free(gp->tmp_bp);
+#if defined(DEBUG)
/* Close debugging file descriptor. */
if (gp->tracefp != NULL)
(void)fclose(gp->tracefp);
#endif
+#endif
}
/*
diff --git a/usr.bin/vi/common/options.c b/usr.bin/vi/common/options.c
index a285dc1869b..973778c78bb 100644
--- a/usr.bin/vi/common/options.c
+++ b/usr.bin/vi/common/options.c
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)options.c 10.50 (Berkeley) 10/1/96";
+static const char sccsid[] = "@(#)options.c 10.51 (Berkeley) 10/14/96";
#endif /* not lint */
#include <sys/types.h>
@@ -494,10 +494,8 @@ opts_set(sp, argv, usage)
name += 2;
op = opts_search(name);
}
-
if (op == NULL) {
- msgq_str(sp, M_ERR, name,
- "033|set: no %s option: 'set all' gives all option values");
+ opts_nomatch(sp, name);
rval = 1;
continue;
}
@@ -1043,6 +1041,21 @@ opts_search(name)
return (found);
}
+/*
+ * opts_nomatch --
+ * Standard nomatch error message for options.
+ *
+ * PUBLIC: void opts_nomatch __P((SCR *, char *));
+ */
+void
+opts_nomatch(sp, name)
+ SCR *sp;
+ char *name;
+{
+ msgq_str(sp, M_ERR, name,
+ "033|set: no %s option: 'set all' gives all option values");
+}
+
static int
opts_abbcmp(a, b)
const void *a, *b;
diff --git a/usr.bin/vi/common/options.h b/usr.bin/vi/common/options.h
index 3f7ed6c58b5..2646dc301b5 100644
--- a/usr.bin/vi/common/options.h
+++ b/usr.bin/vi/common/options.h
@@ -6,7 +6,7 @@
*
* See the LICENSE file for redistribution information.
*
- * @(#)options.h 10.18 (Berkeley) 10/1/96
+ * @(#)options.h 10.19 (Berkeley) 10/10/96
*/
/*
@@ -39,11 +39,14 @@
#define OG_D_STR(gp, o) ((gp)->opts[(o)].o_def.str)
#define OG_D_VAL(gp, o) ((gp)->opts[(o)].o_def.val)
-/* Flags to o_set(). */
+/*
+ * Flags to o_set(); need explicit OS_STR as can be setting the value to
+ * NULL.
+ */
#define OS_DEF 0x01 /* Set the default value. */
#define OS_NOFREE 0x02 /* Don't free the old string. */
-#define OS_STR 0x04 /* Set to the str value. */
-#define OS_STRDUP 0x08 /* Copy and set to the str value. */
+#define OS_STR 0x04 /* Set to string argument. */
+#define OS_STRDUP 0x08 /* Copy then set to string argument. */
struct _option {
union {
diff --git a/usr.bin/vi/docs/USD.doc/vi.man/nvi.1 b/usr.bin/vi/docs/USD.doc/vi.man/vi.1
index 63c9c50a9fd..22aee3e7e95 100644
--- a/usr.bin/vi/docs/USD.doc/vi.man/nvi.1
+++ b/usr.bin/vi/docs/USD.doc/vi.man/vi.1
@@ -8,9 +8,9 @@
.\"
.\" See the LICENSE file for redistribution information.
.\"
-.\" @(#)vi.1 8.50 (Berkeley) 9/23/96
+.\" @(#)vi.1 8.51 (Berkeley) 10/10/96
.\"
-.TH VI 1 "September 23, 1996"
+.TH VI 1 "October 10, 1996"
.UC
.SH NAME
ex, vi, view \- text editors
@@ -1079,7 +1079,7 @@ Set the number of columns in the screen.
.B "comment [off]"
.I \&Vi
only.
-Skip leading comments in shell and C-language files.
+Skip leading comments in shell, C and C++ language files.
.TP
.B "directory, dir [environment variable TMPDIR, or /tmp]"
The directory where temporary files are created.
diff --git a/usr.bin/vi/docs/USD.doc/vi.ref/set.opt.roff b/usr.bin/vi/docs/USD.doc/vi.ref/set.opt.roff
index 7ba7adbab22..838412897ab 100644
--- a/usr.bin/vi/docs/USD.doc/vi.ref/set.opt.roff
+++ b/usr.bin/vi/docs/USD.doc/vi.ref/set.opt.roff
@@ -5,7 +5,7 @@
.\"
.\" See the LICENSE file for redistribution information.
.\"
-.\" @(#)set.opt.roff 8.65 (Berkeley) 8/17/96
+.\" @(#)set.opt.roff 8.66 (Berkeley) 10/10/96
.\"
.SH 1 "Set Options"
.pp
@@ -358,12 +358,13 @@ more information.
.CO Vi
only.
If the first non-empty line of the file begins with the string
+.QT # ,
.QT /\&*
or
-.QT # ,
+.QT // ,
this option causes
.CO vi
-to skip to the end of that C-language or shell comment (probably a
+to skip to the end of that shell, C or C++ comment (probably a
terribly boring legal notice) before displaying the file.
.KY directory
.IP "directory, dir [environment variable TMPDIR, or /tmp]"
diff --git a/usr.bin/vi/docs/USD.doc/vi.ref/spell.ok b/usr.bin/vi/docs/USD.doc/vi.ref/spell.ok
index 041d648cbcf..da45f8df092 100644
--- a/usr.bin/vi/docs/USD.doc/vi.ref/spell.ok
+++ b/usr.bin/vi/docs/USD.doc/vi.ref/spell.ok
@@ -59,6 +59,7 @@ Sy
TANDARDS
TIOCGWINSZ
TMPDIR
+TOC
Tagnext
Tagprev
Tcl
@@ -107,6 +108,7 @@ bg
bigword
bigwords
bostic
+bp
brev
bsd
bugs.current
@@ -300,6 +302,7 @@ showmode
sidescroll
slowopen
sm
+smd
sourceany
sp
spell.ok
@@ -388,6 +391,7 @@ viusage
wa
whitespace
wi
+windowname
wl
wm
wn
@@ -400,5 +404,6 @@ ws
www
xaw
xit
+xterm
ya
yy
diff --git a/usr.bin/vi/docs/USD.doc/vi.ref/vi.ref b/usr.bin/vi/docs/USD.doc/vi.ref/vi.ref
index 338099a427e..a880c1659e1 100644
--- a/usr.bin/vi/docs/USD.doc/vi.ref/vi.ref
+++ b/usr.bin/vi/docs/USD.doc/vi.ref/vi.ref
@@ -8,7 +8,7 @@
.\"
.\" See the LICENSE file for redistribution information.
.\"
-.\" @(#)vi.ref 8.83 (Berkeley) 8/20/96
+.\" @(#)vi.ref 8.88 (Berkeley) 10/19/96
.\"
.\"
.so ref.so
@@ -16,7 +16,7 @@
.(l C
.ps 12
.ft B
-Ex/Vi Reference Manual
+Vi/Ex Reference Manual
.ft
.ps
.sp
@@ -96,7 +96,7 @@ Scrolling and reworking for
was done by Elan Amir.
.pp
George Neville-Neil added the Tcl interpreter,
-and Sven Verdoolaege added the Perl5 interpreter.
+and Sven Verdoolaege added the Perl interpreter.
.pp
Rob Mayoff added Cscope support.
.pp
@@ -112,8 +112,8 @@ The financial support of UUNET Communications Services is gratefully
acknowledged.
.)q
.sy echo -n >index
-.oh 'Nvi/Nex Reference''USD:13-%'
-.eh 'USD:13-%''Nvi/Nex Reference'
+.oh 'Vi/Ex Reference''USD:13-%'
+.eh 'USD:13-%''Vi/Ex Reference'
.bp 4
.SH 1 Description
.pp
@@ -272,7 +272,7 @@ The
.CO ":perld[o] cmd"
and
.CO ":tc[l] cmd"
-commands execute Perl5 and Tcl/Tk commands, respectively,
+commands execute Perl and Tcl/Tk commands, respectively,
on lines from the edit buffer.
See the
.QB "Scripting Languages"
@@ -543,38 +543,19 @@ not yet have this bit set.
This is due to the method in which the files are created.)
Such files should be deleted when the system reboots.
.pp
-A simple way to do this cleanup is to insert the following Bourne
-shell script into your
+A simple way to do this cleanup is to run the Bourne shell script
+.CO recover ,
+from your
.LI /etc/rc.local
-(or other startup) file.
+(or other system startup) file.
The script should work with the historic Bourne shell,
a POSIX 1003.2 shell or the Korn shell.
-(A copy of this script is included as
-.LI nvi/install/recover.script
-in the
+The
+.CO recover
+script is installed as part of the
.EV nex nvi
-distribution.)
-.sp
-.(b
-.ft C
-.so ../../../recover/recover.script
-.ft R
-.)b
-.sp
-.pp
-If you are not using the default value for the
-.OP recdir
-option, be sure to substitute the value you're using for the
-.LI RECDIR
-value in the recovery script.
+installation process.
.pp
-If the path of your system's
-.CO sendmail
-program (or whatever mailer you're using) is not
-.LI /usr/lib/sendmail ,
-be sure to substitute the correct pathname for the
-.LI SENDMAIL
-value in the recovery script.
Consult the manual page for details on recovering preserved or
aborted editing sessions.
.SH 1 "Sizing the Screen"
@@ -1209,9 +1190,9 @@ will be discarded.)
.pp
The
.CO nvi
-editor currently supports two scripting languages, Tcl/Tk and Perl5.
-(Note that Perl4 isn't sufficient, and that the Perl5 must be version
-5.002 or later.
+editor currently supports two scripting languages, Tcl/Tk and Perl.
+(Note that Perl4 isn't sufficient, and that the Perl5 used must be
+version 5.002 or later.
See the
.QB "Building Nvi"
section for more information.
@@ -1662,11 +1643,11 @@ This character is almost always treated identically to a
.LI <control-M>
character, but differs in that it cannot be escaped into the file text or
into a command.
-.oh 'Nvi/Nex Reference (Vi Commands)''USD:13-%'
-.eh 'USD:13-%''Nvi/Nex Reference (Vi Commands)'
+.oh 'Vi/Ex Reference (Vi Commands)''USD:13-%'
+.eh 'USD:13-%''Vi/Ex Reference (Vi Commands)'
.so vi.cmd.roff
-.oh 'Nvi/Nex Reference''USD:13-%'
-.eh 'USD:13-%''Nvi/Nex Reference'
+.oh 'Vi/Ex Reference''USD:13-%'
+.eh 'USD:13-%''Vi/Ex Reference'
.SH 1 "Ex Addressing"
.pp
Addressing in
@@ -1833,14 +1814,14 @@ The first address must be less than or equal to the second address.
The first address must be greater than or equal to the first line of the
file, and the last address must be less than or equal to the last line
of the file.
-.oh 'Nvi/Nex Reference (Ex Commands)''USD:13-%'
-.eh 'USD:13-%''Nvi/Nex Reference (Ex Commands)'
+.oh 'Vi/Ex Reference (Ex Commands)''USD:13-%'
+.eh 'USD:13-%''Vi/Ex Reference (Ex Commands)'
.so ex.cmd.roff
-.oh 'Nvi/Nex Reference (Options)''USD:13-%'
-.eh 'USD:13-%''Nvi/Nex Reference (Options)'
+.oh 'Vi/Ex Reference (Options)''USD:13-%'
+.eh 'USD:13-%''Vi/Ex Reference (Options)'
.so set.opt.roff
-.oh 'Nvi/Nex Reference''USD:13-%'
-.eh 'USD:13-%''Nvi/Nex Reference'
+.oh 'Vi/Ex Reference''USD:13-%'
+.eh 'USD:13-%''Vi/Ex Reference'
.bp
.SH 1 Index
.lp
@@ -1849,6 +1830,8 @@ of the file.
.nf
.so index.so
.fi
+.\" Force the TOC to an odd page, in case it's a duplex printer.
+.if o .bp
.bp 3
.1c
.ce 1
diff --git a/usr.bin/vi/docs/changelog b/usr.bin/vi/docs/changelog
index fee1fc00bb9..1f2a8c67b47 100644
--- a/usr.bin/vi/docs/changelog
+++ b/usr.bin/vi/docs/changelog
@@ -1,3 +1,16 @@
+1.78 -> 1.79 (10/23/96)
+ + Rename delete() to del(), for C++.
+ + Add Spanish to the list of translations.
+ + Update to Perl 5.003_06, and other Perl interpreter updates.
+ + Update the set-edit-option interface for the scripting languages.
+ + Rework ex command parsing to match historic practice for backslash
+ escaped <newline> characters inside of global commands.
+ + Enhance the comment edit option to skip C++ comments.
+ + Change installation to configure the recovery shell script to match
+ the system pathnames and to install it into the vi data directory.
+ Move the recover script into the build directory, and delete the
+ recover directory.
+ + Enhance LynxOS support.
1.76 -> 1.78 (10/01/96)
+ Fix bugs when both the leftright scrolling and number edit options
were on.
diff --git a/usr.bin/vi/docs/features b/usr.bin/vi/docs/features
index 7e49e7235dc..51650f949ef 100644
--- a/usr.bin/vi/docs/features
+++ b/usr.bin/vi/docs/features
@@ -2,7 +2,7 @@ List of things that should be added:
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+ X11 (Tk, Motif, Xaw) interface.
-+ Interpreted language (Perl5, Scheme, Tcl/Rush, Python)
++ Interpreted language (Perl, Scheme, Tcl/Rush, Python)
+ Additional ports: Windows, Windows NT, MSDOS
+ Forms editing package; use RE's to verify field contents.
+ Internationalization, including wide character and multibyte support.
diff --git a/usr.bin/vi/docs/interp/interp b/usr.bin/vi/docs/interp/interp
index 7e0c43ef704..3da5a8f656d 100644
--- a/usr.bin/vi/docs/interp/interp
+++ b/usr.bin/vi/docs/interp/interp
@@ -1,10 +1,10 @@
-# @(#)interp 8.4 (Berkeley) 1/13/95
+# @(#)interp 8.5 (Berkeley) 10/19/96
Nvi Interpreter API
Introduction:
The intention is to provide a way to graft a fairly generic extension
language into nvi. I think that the obvious candidates are Tcl/Rush,
- Scheme, Python and Perl5. Since the interpretation language chosen
+ Scheme, Python and Perl. Since the interpretation language chosen
is often a religious issue, the method should be as flexible as
possible. I don't expect to rewrite the editor in the interpreted
language, so that isn't a consideration.
diff --git a/usr.bin/vi/docs/interp/spell.ok b/usr.bin/vi/docs/interp/spell.ok
index 33d36ea853d..4ca990c2172 100644
--- a/usr.bin/vi/docs/interp/spell.ok
+++ b/usr.bin/vi/docs/interp/spell.ok
@@ -2,7 +2,7 @@ API
BERR
Mapt
Nvi
-Perl5
+Perl
SCR
SYSERR
Tcl
diff --git a/usr.bin/vi/ex/ex.c b/usr.bin/vi/ex/ex.c
index d9266c75bd0..f92d8f7c4f9 100644
--- a/usr.bin/vi/ex/ex.c
+++ b/usr.bin/vi/ex/ex.c
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)ex.c 10.55 (Berkeley) 9/24/96";
+static const char sccsid[] = "@(#)ex.c 10.57 (Berkeley) 10/10/96";
#endif /* not lint */
#include <sys/types.h>
@@ -201,7 +201,7 @@ ex_cmd(sp)
GS *gp;
MARK cur;
recno_t lno;
- size_t arg1_len, len;
+ size_t arg1_len, discard, len;
u_int32_t flags;
long ltmp;
int at_found, gv_found;
@@ -454,7 +454,7 @@ loop: ecp = gp->ecq.lh_first;
if ((ecp->cmd = ex_comm_search(p, namelen)) == NULL)
switch (p[0]) {
case 'k':
- if (p[1] && !p[2]) {
+ if (namelen == 2) {
ecp->cp -= namelen - 1;
ecp->clen += namelen - 1;
ecp->cmd = &cmds[C_K];
@@ -625,6 +625,7 @@ skip_srch: if (ecp->cmd == &cmds[C_VISUAL_EX] && F_ISSET(sp, SC_VI))
* special cases we move past their special argument(s). Then, we
* do normal command processing on whatever is left. Barf-O-Rama.
*/
+ discard = 0; /* Characters discarded from the command. */
arg1_len = 0;
ecp->save_cmd = ecp->cp;
if (ecp->cmd == &cmds[C_EDIT] || ecp->cmd == &cmds[C_EX] ||
@@ -662,6 +663,7 @@ skip_srch: if (ecp->cmd == &cmds[C_VISUAL_EX] && F_ISSET(sp, SC_VI))
ch = *ecp->cp;
if (IS_ESCAPE(sp, ecp, ch) &&
ecp->clen > 1) {
+ ++discard;
--ecp->clen;
ch = *++ecp->cp;
} else if (isblank(ch))
@@ -675,9 +677,28 @@ skip_srch: if (ecp->cmd == &cmds[C_VISUAL_EX] && F_ISSET(sp, SC_VI))
}
} else if (ecp->cmd == &cmds[C_BANG] ||
ecp->cmd == &cmds[C_GLOBAL] || ecp->cmd == &cmds[C_V]) {
- for (; ecp->clen > 0; --ecp->clen, ++ecp->cp)
- if (ecp->cp[0] == '\n')
+ /*
+ * QUOTING NOTE:
+ *
+ * We use backslashes to escape <newline> characters, although
+ * this wasn't historic practice for the bang command. It was
+ * for the global and v commands, and it's common usage when
+ * doing text insert during the command. Escaping characters
+ * are stripped as no longer useful.
+ */
+ for (p = ecp->cp; ecp->clen > 0; --ecp->clen, ++ecp->cp) {
+ ch = *ecp->cp;
+ if (ch == '\\' && ecp->clen > 1 && ecp->cp[1] == '\n') {
+ ++discard;
+ --ecp->clen;
+ ch = *++ecp->cp;
+
+ ++gp->if_lno;
+ ++ecp->if_lno;
+ } else if (ch == '\n')
break;
+ *p++ = ch;
+ }
} else if (ecp->cmd == &cmds[C_READ] || ecp->cmd == &cmds[C_WRITE]) {
/*
* For write commands, if the next character is a <blank>, and
@@ -751,7 +772,7 @@ skip_srch: if (ecp->cmd == &cmds[C_VISUAL_EX] && F_ISSET(sp, SC_VI))
* no longer useful.
*/
vi_address = ecp->clen != 0 && ecp->cp[0] != '\n';
- for (cnt = 0, p = ecp->cp; ecp->clen > 0; --ecp->clen, ++ecp->cp) {
+ for (p = ecp->cp; ecp->clen > 0; --ecp->clen, ++ecp->cp) {
ch = ecp->cp[0];
if (IS_ESCAPE(sp, ecp, ch) && ecp->clen > 1) {
tmp = ecp->cp[1];
@@ -760,9 +781,9 @@ skip_srch: if (ecp->cmd == &cmds[C_VISUAL_EX] && F_ISSET(sp, SC_VI))
++gp->if_lno;
++ecp->if_lno;
}
+ ++discard;
--ecp->clen;
++ecp->cp;
- ++cnt;
ch = tmp;
}
} else if (ch == '\n' || ch == '|') {
@@ -782,7 +803,7 @@ skip_srch: if (ecp->cmd == &cmds[C_VISUAL_EX] && F_ISSET(sp, SC_VI))
ecp->cp = ecp->save_cmd;
ecp->save_cmd = p;
ecp->save_cmdlen = ecp->clen;
- ecp->clen = ((ecp->save_cmd - ecp->cp) - 1) - cnt;
+ ecp->clen = ((ecp->save_cmd - ecp->cp) - 1) - discard;
/*
* QUOTING NOTE:
diff --git a/usr.bin/vi/ex/ex_append.c b/usr.bin/vi/ex/ex_append.c
index 42f1e93ba8e..8d89e125f51 100644
--- a/usr.bin/vi/ex/ex_append.c
+++ b/usr.bin/vi/ex/ex_append.c
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)ex_append.c 10.29 (Berkeley) 6/28/96";
+static const char sccsid[] = "@(#)ex_append.c 10.30 (Berkeley) 10/23/96";
#endif /* not lint */
#include <sys/types.h>
@@ -116,7 +116,7 @@ ex_aci(sp, cmdp, cmd)
*/
if (cmd == CHANGE && cmdp->addr1.lno != 0 &&
(cut(sp, NULL, &cmdp->addr1, &cmdp->addr2, CUT_LINEMODE) ||
- delete(sp, &cmdp->addr1, &cmdp->addr2, 1)))
+ del(sp, &cmdp->addr1, &cmdp->addr2, 1)))
return (1);
/*
diff --git a/usr.bin/vi/ex/ex_cmd.c b/usr.bin/vi/ex/ex_cmd.c
index 88a1ea660c9..8f7fc8da7a1 100644
--- a/usr.bin/vi/ex/ex_cmd.c
+++ b/usr.bin/vi/ex/ex_cmd.c
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)ex_cmd.c 10.19 (Berkeley) 7/12/96";
+static const char sccsid[] = "@(#)ex_cmd.c 10.20 (Berkeley) 10/10/96";
#endif /* not lint */
#include <sys/types.h>
@@ -152,8 +152,8 @@ EXCMDLIST const cmds[] = {
/* C_DISPLAY */
{"display", ex_display, 0,
"w1r",
- "display b[uffers] | s[creens] | t[ags]",
- "display buffers, screens or tags"},
+ "display b[uffers] | c[onnections] | s[creens] | t[ags]",
+ "display buffers, connections, screens or tags"},
/* C_EDIT */
{"edit", ex_edit, E_NEWSCREEN,
"f1o",
diff --git a/usr.bin/vi/ex/ex_delete.c b/usr.bin/vi/ex/ex_delete.c
index 591fa5e56b8..58734bbcfce 100644
--- a/usr.bin/vi/ex/ex_delete.c
+++ b/usr.bin/vi/ex/ex_delete.c
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)ex_delete.c 10.8 (Berkeley) 3/6/96";
+static const char sccsid[] = "@(#)ex_delete.c 10.9 (Berkeley) 10/23/96";
#endif /* not lint */
#include <sys/types.h>
@@ -50,7 +50,7 @@ ex_delete(sp, cmdp)
return (1);
/* Delete the lines. */
- if (delete(sp, &cmdp->addr1, &cmdp->addr2, 1))
+ if (del(sp, &cmdp->addr1, &cmdp->addr2, 1))
return (1);
/* Set the cursor to the line after the last line deleted. */
diff --git a/usr.bin/vi/ex/ex_filter.c b/usr.bin/vi/ex/ex_filter.c
index b4c73f14883..2e86e58b3ba 100644
--- a/usr.bin/vi/ex/ex_filter.c
+++ b/usr.bin/vi/ex/ex_filter.c
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)ex_filter.c 10.33 (Berkeley) 4/27/96";
+static const char sccsid[] = "@(#)ex_filter.c 10.34 (Berkeley) 10/23/96";
#endif /* not lint */
#include <sys/types.h>
@@ -264,7 +264,7 @@ err: if (input[0] != -1)
/* Delete any lines written to the utility. */
if (rval == 0 && ftype == FILTER_BANG &&
(cut(sp, NULL, fm, tm, CUT_LINEMODE) ||
- delete(sp, fm, tm, 1))) {
+ del(sp, fm, tm, 1))) {
rval = 1;
break;
}
diff --git a/usr.bin/vi/ex/ex_global.c b/usr.bin/vi/ex/ex_global.c
index ae0b23cfbc1..aba9dc5fabe 100644
--- a/usr.bin/vi/ex/ex_global.c
+++ b/usr.bin/vi/ex/ex_global.c
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)ex_global.c 10.21 (Berkeley) 6/30/96";
+static const char sccsid[] = "@(#)ex_global.c 10.22 (Berkeley) 10/10/96";
#endif /* not lint */
#include <sys/types.h>
@@ -70,6 +70,7 @@ ex_g_setup(sp, cmdp, cmd)
EXCMD *cmdp;
enum which cmd;
{
+ CHAR_T *ptrn, *p, *t;
EXCMD *ecp;
MARK abs;
RANGE *rp;
@@ -79,7 +80,7 @@ ex_g_setup(sp, cmdp, cmd)
regmatch_t match[1];
size_t len;
int cnt, delim, eval;
- char *ptrn, *p, *t;
+ char *dbp;
NEEDFILE(sp, cmdp);
@@ -172,7 +173,7 @@ usage: ex_emsg(sp, cmdp->cmd->usage, EXM_USAGE);
* because the ex parser may step on the command string when it's
* parsing it.
*/
- if ((len = strlen(p)) == 0) {
+ if ((len = cmdp->argv[0]->len - (p - cmdp->argv[0]->bp)) == 0) {
p = "pp";
len = 1;
}
@@ -212,11 +213,12 @@ usage: ex_emsg(sp, cmdp->cmd->usage, EXM_USAGE);
btype = BUSY_UPDATE;
cnt = INTERRUPT_CHECK;
}
- if (db_get(sp, start, DBG_FATAL, &p, &len))
+ if (db_get(sp, start, DBG_FATAL, &dbp, &len))
return (1);
match[0].rm_so = 0;
match[0].rm_eo = len;
- switch (eval = regexec(&sp->re_c, p, 0, match, REG_STARTEND)) {
+ switch (eval =
+ regexec(&sp->re_c, dbp, 0, match, REG_STARTEND)) {
case 0:
if (cmd == V)
continue;
diff --git a/usr.bin/vi/ex/ex_txt.c b/usr.bin/vi/ex/ex_txt.c
index 3838afd52bf..2f62ff51a47 100644
--- a/usr.bin/vi/ex/ex_txt.c
+++ b/usr.bin/vi/ex/ex_txt.c
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)ex_txt.c 10.16 (Berkeley) 9/24/96";
+static const char sccsid[] = "@(#)ex_txt.c 10.17 (Berkeley) 10/10/96";
#endif /* not lint */
#include <sys/types.h>
@@ -164,14 +164,13 @@ newtp: if ((tp = text_init(sp, NULL, 0, 32)) == NULL)
/* FALLTHROUGH */
case K_NL:
/*
- * '\' can escape <carriage-return>/<newline>. Toss
- * the backslash.
+ * '\' can escape <carriage-return>/<newline>. We
+ * don't discard the backslash because we need it
+ * to get the <newline> through the ex parser.
*/
if (LF_ISSET(TXT_BACKSLASH) &&
- tp->len != 0 && tp->lb[tp->len - 1] == '\\') {
- --tp->len;
+ tp->len != 0 && tp->lb[tp->len - 1] == '\\')
goto ins_ch;
- }
/*
* CR returns from the ex command line.
diff --git a/usr.bin/vi/ex/version.h b/usr.bin/vi/ex/version.h
index 429b3471001..7d657b635fc 100644
--- a/usr.bin/vi/ex/version.h
+++ b/usr.bin/vi/ex/version.h
@@ -1,2 +1,2 @@
#define VI_VERSION \
- "Version 1.78 (10/1/96) The CSRG, University of California, Berkeley."
+ "Version 1.79 (10/23/96) The CSRG, University of California, Berkeley."
diff --git a/usr.bin/vi/include/com_extern.h b/usr.bin/vi/include/com_extern.h
index abd086929a9..f140f9e3423 100644
--- a/usr.bin/vi/include/com_extern.h
+++ b/usr.bin/vi/include/com_extern.h
@@ -79,7 +79,7 @@ int api_swscreen __P((SCR *, SCR *));
int api_map __P((SCR *, char *, char *, size_t));
int api_unmap __P((SCR *, char *));
int api_opts_get __P((SCR *, char *, char **, int *));
-int api_opts_set __P((SCR *, char *));
+int api_opts_set __P((SCR *, char *, char *, u_long, int));
int api_run_str __P((SCR *, char *));
int cut __P((SCR *, CHAR_T *, MARK *, MARK *, int));
int cut_line __P((SCR *, recno_t, size_t, size_t, CB *));
@@ -87,7 +87,7 @@ void cut_close __P((GS *));
TEXT *text_init __P((SCR *, const char *, size_t, size_t));
void text_lfree __P((TEXTH *));
void text_free __P((TEXT *));
-int delete __P((SCR *, MARK *, MARK *, int));
+int del __P((SCR *, MARK *, MARK *, int));
FREF *file_add __P((SCR *, CHAR_T *));
int file_init __P((SCR *, FREF *, char *, int));
int file_end __P((SCR *, EXF *, int));
@@ -147,6 +147,7 @@ int opts_empty __P((SCR *, int, int));
void opts_dump __P((SCR *, enum optdisp));
int opts_save __P((SCR *, FILE *));
OPTLIST const *opts_search __P((char *));
+void opts_nomatch __P((SCR *, char *));
int opts_copy __P((SCR *, SCR *));
void opts_free __P((SCR *));
int f_altwerase __P((SCR *, OPTION *, char *, u_long *));
diff --git a/usr.bin/vi/include/perl_extern.h b/usr.bin/vi/include/perl_extern.h
index 5198675b09c..5d6dd0d33bb 100644
--- a/usr.bin/vi/include/perl_extern.h
+++ b/usr.bin/vi/include/perl_extern.h
@@ -1,5 +1,5 @@
int perl_end __P((GS *));
-int perl_init __P((GS *));
+int perl_init __P((SCR *));
int perl_screen_end __P((SCR*));
int perl_ex_perl __P((SCR*, CHAR_T *, size_t, recno_t, recno_t));
int perl_ex_perldo __P((SCR*, CHAR_T *, size_t, recno_t, recno_t));
diff --git a/usr.bin/vi/include/vi_extern.h b/usr.bin/vi/include/vi_extern.h
index fb50fac1383..b3c335e6c58 100644
--- a/usr.bin/vi/include/vi_extern.h
+++ b/usr.bin/vi/include/vi_extern.h
@@ -116,7 +116,7 @@ void vs_home __P((SCR *));
void vs_update __P((SCR *, const char *, const char *));
void vs_msg __P((SCR *, mtype_t, char *, size_t));
int vs_ex_resolve __P((SCR *, int *));
-int vs_resolve __P((SCR *, int));
+int vs_resolve __P((SCR *, SCR *, int));
int vs_repaint __P((SCR *, EVENT *));
int vs_refresh __P((SCR *, int));
int vs_column __P((SCR *, size_t *));
diff --git a/usr.bin/vi/vi/v_delete.c b/usr.bin/vi/vi/v_delete.c
index de1f47c4606..70df78b22e2 100644
--- a/usr.bin/vi/vi/v_delete.c
+++ b/usr.bin/vi/vi/v_delete.c
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)v_delete.c 10.8 (Berkeley) 5/19/96";
+static const char sccsid[] = "@(#)v_delete.c 10.9 (Berkeley) 10/23/96";
#endif /* not lint */
#include <sys/types.h>
@@ -49,7 +49,7 @@ v_delete(sp, vp)
return (1);
/* Delete the lines. */
- if (delete(sp, &vp->m_start, &vp->m_stop, lmode))
+ if (del(sp, &vp->m_start, &vp->m_stop, lmode))
return (1);
/*
diff --git a/usr.bin/vi/vi/v_itxt.c b/usr.bin/vi/vi/v_itxt.c
index 871ee8c581a..6cf93773ac3 100644
--- a/usr.bin/vi/vi/v_itxt.c
+++ b/usr.bin/vi/vi/v_itxt.c
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)v_itxt.c 10.15 (Berkeley) 9/25/96";
+static const char sccsid[] = "@(#)v_itxt.c 10.16 (Berkeley) 10/23/96";
#endif /* not lint */
#include <sys/types.h>
@@ -362,7 +362,7 @@ v_change(sp, vp)
bp = NULL;
/* Delete the text. */
- if (delete(sp, &vp->m_start, &vp->m_stop, lmode))
+ if (del(sp, &vp->m_start, &vp->m_stop, lmode))
return (1);
/* If replacing entire lines, insert a replacement line. */
diff --git a/usr.bin/vi/vi/v_txt.c b/usr.bin/vi/vi/v_txt.c
index e5dd1fb6706..93f1acea19b 100644
--- a/usr.bin/vi/vi/v_txt.c
+++ b/usr.bin/vi/vi/v_txt.c
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)v_txt.c 10.86 (Berkeley) 9/20/96";
+static const char sccsid[] = "@(#)v_txt.c 10.87 (Berkeley) 10/13/96";
#endif /* not lint */
#include <sys/types.h>
@@ -1414,7 +1414,8 @@ resolve:/*
* command line or doing file name completion, resolve them.
*/
if ((vip->totalcount != 0 || F_ISSET(gp, G_BELLSCHED)) &&
- !F_ISSET(sp, SC_TINPUT_INFO) && !filec_redraw && vs_resolve(sp, 0))
+ !F_ISSET(sp, SC_TINPUT_INFO) && !filec_redraw &&
+ vs_resolve(sp, NULL, 0))
return (1);
/*
diff --git a/usr.bin/vi/vi/v_xchar.c b/usr.bin/vi/vi/v_xchar.c
index f637fb9087c..15f155ffed3 100644
--- a/usr.bin/vi/vi/v_xchar.c
+++ b/usr.bin/vi/vi/v_xchar.c
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)v_xchar.c 10.8 (Berkeley) 3/6/96";
+static const char sccsid[] = "@(#)v_xchar.c 10.9 (Berkeley) 10/23/96";
#endif /* not lint */
#include <sys/types.h>
@@ -69,7 +69,7 @@ nodel: msgq(sp, M_BERR, "206|No characters to delete");
F_ISSET(vp, VC_BUFFER) ? &vp->buffer : NULL,
&vp->m_start, &vp->m_stop, 0))
return (1);
- return (delete(sp, &vp->m_start, &vp->m_stop, 0));
+ return (del(sp, &vp->m_start, &vp->m_stop, 0));
}
/*
@@ -103,5 +103,5 @@ v_Xchar(sp, vp)
F_ISSET(vp, VC_BUFFER) ? &vp->buffer : NULL,
&vp->m_start, &vp->m_stop, 0))
return (1);
- return (delete(sp, &vp->m_start, &vp->m_stop, 0));
+ return (del(sp, &vp->m_start, &vp->m_stop, 0));
}
diff --git a/usr.bin/vi/vi/vi.c b/usr.bin/vi/vi/vi.c
index b2dca8c1c90..d20f7f284e3 100644
--- a/usr.bin/vi/vi/vi.c
+++ b/usr.bin/vi/vi/vi.c
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)vi.c 10.56 (Berkeley) 9/25/96";
+static const char sccsid[] = "@(#)vi.c 10.57 (Berkeley) 10/13/96";
#endif /* not lint */
#include <sys/types.h>
@@ -92,7 +92,7 @@ vi(spp)
for (vip = VIP(sp), rval = 0;;) {
/* Resolve messages. */
- if (!MAPPED_KEYS_WAITING(sp) && vs_resolve(sp, 0))
+ if (!MAPPED_KEYS_WAITING(sp) && vs_resolve(sp, NULL, 0))
goto ret;
/*
diff --git a/usr.bin/vi/vi/vs_msg.c b/usr.bin/vi/vi/vs_msg.c
index 5eb83c438ac..7ef8f5343c1 100644
--- a/usr.bin/vi/vi/vs_msg.c
+++ b/usr.bin/vi/vi/vs_msg.c
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)vs_msg.c 10.76 (Berkeley) 9/26/96";
+static const char sccsid[] = "@(#)vs_msg.c 10.77 (Berkeley) 10/13/96";
#endif /* not lint */
#include <sys/types.h>
@@ -646,14 +646,11 @@ vs_ex_resolve(sp, continuep)
* vs_resolve --
* Deal with message output.
*
- * This routine is called from the main vi loop to periodically ensure that
- * the user has seen any messages that have been displayed.
- *
- * PUBLIC: int vs_resolve __P((SCR *, int));
+ * PUBLIC: int vs_resolve __P((SCR *, SCR *, int));
*/
int
-vs_resolve(sp, forcewait)
- SCR *sp;
+vs_resolve(sp, csp, forcewait)
+ SCR *sp, *csp;
int forcewait;
{
EVENT ev;
@@ -663,11 +660,20 @@ vs_resolve(sp, forcewait)
size_t oldy, oldx;
int redraw;
+ /*
+ * Vs_resolve is called from the main vi loop and the refresh function
+ * to periodically ensure that the user has seen any messages that have
+ * been displayed and that any status lines are correct. The sp screen
+ * is the screen we're checking, usually the current screen. When it's
+ * not, csp is the current screen, used for final cursor positioning.
+ */
gp = sp->gp;
vip = VIP(sp);
+ if (csp == NULL)
+ csp = sp;
/* Save the cursor position. */
- (void)gp->scr_cursor(sp, &oldy, &oldx);
+ (void)gp->scr_cursor(csp, &oldy, &oldx);
/* Ring the bell if it's scheduled. */
if (F_ISSET(gp, G_BELLSCHED)) {
@@ -742,7 +748,7 @@ vs_resolve(sp, forcewait)
(void)vs_repaint(sp, &ev);
/* Restore the cursor position. */
- (void)gp->scr_move(sp, oldy, oldx);
+ (void)gp->scr_move(csp, oldy, oldx);
return (0);
}
diff --git a/usr.bin/vi/vi/vs_refresh.c b/usr.bin/vi/vi/vs_refresh.c
index 1a91dce0bff..81587608c1a 100644
--- a/usr.bin/vi/vi/vs_refresh.c
+++ b/usr.bin/vi/vi/vs_refresh.c
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)vs_refresh.c 10.43 (Berkeley) 9/26/96";
+static const char sccsid[] = "@(#)vs_refresh.c 10.44 (Berkeley) 10/13/96";
#endif /* not lint */
#include <sys/types.h>
@@ -66,9 +66,13 @@ vs_refresh(sp, forcepaint)
SCR *sp;
int forcepaint;
{
+ GS *gp;
SCR *tsp;
+ int need_refresh;
u_int priv_paint, pub_paint;
+ gp = sp->gp;
+
/*
* 1: Refresh the screen.
*
@@ -76,8 +80,8 @@ vs_refresh(sp, forcepaint)
* that we can find, including status lines.
*/
if (F_ISSET(sp, SC_SCR_REDRAW))
- for (tsp = sp->gp->dq.cqh_first;
- tsp != (void *)&sp->gp->dq; tsp = tsp->q.cqe_next)
+ for (tsp = gp->dq.cqh_first;
+ tsp != (void *)&gp->dq; tsp = tsp->q.cqe_next)
if (tsp != sp)
F_SET(tsp, SC_SCR_REDRAW | SC_STATUS);
@@ -94,8 +98,8 @@ vs_refresh(sp, forcepaint)
priv_paint = VIP_CUR_INVALID | VIP_N_REFRESH;
if (O_ISSET(sp, O_NUMBER))
priv_paint |= VIP_N_RENUMBER;
- for (tsp = sp->gp->dq.cqh_first;
- tsp != (void *)&sp->gp->dq; tsp = tsp->q.cqe_next)
+ for (tsp = gp->dq.cqh_first;
+ tsp != (void *)&gp->dq; tsp = tsp->q.cqe_next)
if (tsp != sp && !F_ISSET(tsp, SC_EXIT | SC_EXIT_FORCE) &&
(F_ISSET(tsp, pub_paint) ||
F_ISSET(VIP(tsp), priv_paint))) {
@@ -126,11 +130,18 @@ vs_refresh(sp, forcepaint)
* the user wait. We depend heavily on there not being any other lines
* currently waiting to be displayed and the message truncation code in
* the msgq_status routine working.
+ *
+ * And, finally, if we updated any status lines, make sure the cursor
+ * gets back to where it belongs.
*/
- for (tsp = sp->gp->dq.cqh_first;
- tsp != (void *)&sp->gp->dq; tsp = tsp->q.cqe_next)
- if (F_ISSET(tsp, SC_STATUS))
- vs_resolve(tsp, 0);
+ for (need_refresh = 0, tsp = gp->dq.cqh_first;
+ tsp != (void *)&gp->dq; tsp = tsp->q.cqe_next)
+ if (F_ISSET(tsp, SC_STATUS)) {
+ need_refresh = 1;
+ vs_resolve(tsp, sp, 0);
+ }
+ if (need_refresh)
+ (void)gp->scr_refresh(sp, 0);
/*
* A side-effect of refreshing the screen is that it's now ready
diff --git a/usr.bin/vi/vi/vs_split.c b/usr.bin/vi/vi/vs_split.c
index 89492357004..d01735490e6 100644
--- a/usr.bin/vi/vi/vs_split.c
+++ b/usr.bin/vi/vi/vs_split.c
@@ -10,7 +10,7 @@
#include "config.h"
#ifndef lint
-static const char sccsid[] = "@(#)vs_split.c 10.30 (Berkeley) 9/20/96";
+static const char sccsid[] = "@(#)vs_split.c 10.31 (Berkeley) 10/13/96";
#endif /* not lint */
#include <sys/types.h>
@@ -56,7 +56,7 @@ vs_split(sp, new, ccl)
}
/* Wait for any messages in the screen. */
- vs_resolve(sp, 1);
+ vs_resolve(sp, NULL, 1);
half = sp->rows / 2;
if (ccl && half > 6)