Commit c7c643f6 authored by Colin Watson's avatar Colin Watson

Import upstream version 0.016

parents
*************************************************************************
THIS IS VIGOR THIS IS NOT NVI THIS IS VIGOR THIS IS NOT NVI THIS IS VIGOR
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
This is Vigor, a quick hack made on top of nvi. Do not expect Vigor to
work right. Do not expect Vigor to work like nvi. Above all, DO NOT
BLAME THE AUTHORS OF NVI FOR VIGOR'S PROBLEMS!
Before proceeding, please read README.vigor for information about Vigor,
including background, requirements, total lack of warranty, and the guy
who actually committed this hack.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
VIGOR IS THIS NVI NOT IS THIS VIGOR IS THIS NVI NOT IS THIS VIGOR IS THIS
*************************************************************************
@(#)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
is printable, or should be displayed as an octal or hexadecimal value
on the screen. Generally, if vi is displaying printable characters
in octal/hexadecimal forms, your environment is not configured correctly.
Try looking at the man pages that allow you to configure your locale.
For example, to configure an ISO 8859-1 locale under Solaris using csh,
you would do:
setenv LANG C
setenv LC_CTYPE iso_8859_1
Other LC_CTYPE systems/values that I'm told work:
System Value
====== =====
FreeBSD lt_LN.ISO_8859-1
HP-UX 9.X american.iso88591
HP-UX 10.X en_US.iso88591
SunOS 4.X iso_8859_1
SunOS 5.X iso_8859_1
If there's no other solution, you can use the print and noprint edit
options of vi to specify that a specific character is printable or not
printable.
Q: My map won't work!
A: One thing that you should immediately check if a vi map doesn't work
is if depends on the final cursor position after a P or p command.
Historic vi's were inconsistent as to the final position of the cursor,
and, to make matter worse, the final cursor position also depended on
whether the put text came from a named or unnamed buffer! Vi follows
the POSIX 1003.2 standard on this one, and makes this consistent, always
placing the cursor on the first character.
Q: I'm using ksh or csh as my vi edit option shell value, and file
expansions don't work right!
A: The problem may be in your ksh or csh startup files, e.g., .cshrc. Vi
executes the shell to do name expansion, and the shell generally reads
its startup files. If the startup files are not correctly configured
for non-interactive use, e.g., they always echo a prompt to the screen,
vi will be unable to parse the output and things will not work
correctly.
Q: How does the iclower edit option differ from the ignorecase (i.e. ic)
edit option?
A: The difference is that the ignorecase edit option always ignores the
case of letters in the Regular Expression (RE), and the iclower edit
option only ignores the case if there are no upper-case letters in the
RE. If any upper-case letters appear in the Regular Expression, then
it will be treated case-sensitively, as if the ignorecase edit option
was not set.
Q: When I edit binary files, vi appends a <newline> to the last line!
A: This is historic practice for vi, and further, it's required by the
POSIX 1003.2 standard. My intent is to provide a command line and/or
edit option to turn this behavior off when I switch to version 2.0 of
the Berkeley DB package.
Q: My cursor keys don't work when I'm in text input mode!
A: A common problem over slow links is that the set of characters sent by
the cursor keys don't arrive close enough together for vi to understand
that they are a single keystroke, and not separate keystrokes. Try
increasing the value of the escapetime edit option, which will cause
vi to wait longer before deciding that the <escape> character that
starts cursor key sequences doesn't have any characters following it.
Q: When I edit some files, vi seems to hang forever, and I have to kill it.
A: Vi uses flock(2) and fcntl(2) to do file locking. When it attempts to
acquired a lock for a file on an NFS mounted filesystem, it can hang
for a very long (perhaps infinite) period of time. Turning off the
"lock" edit option will keep vi from attempting to acquire any locks
on the files you edit.
Q: When I compile vi I get lots of warnings about pointer assignments
being incompatible!
A: Vi is partially written to support wide characters. When this code
interfaces with the code that doesn't yet support wide characters,
the pointer types clash. This will hopefully be fixed in the near
future, but I've been saying that for awhile, now.
Q: I get jumpy scrolling behavior in the screen!
A: This is almost certainly a problem with the system's terminfo or
termcap information for your terminal. If the terminfo/termcap entry
doesn't have the settable scrolling region capabilities, or the more
powerful scrolling commands, these behaviors can result. Historic
implementations of vi, and some of the vi clones, don't suffer from
this problem because they wrote their own screen support instead of
using the curses library.
The solution is to find a good terminfo or termcap entry for your
terminal, which will fix the problem for all of the applications on
your system, not just vi. Eric Raymond maintains the freely
redistributable termcap/terminfo entries. They can be downloaded
from http://www.ccil.org/~esr/ncurses.html, or you can contact him
at esr@snark.thyrsus.com.
Q: The entire screen repaints on every keystroke!
A: Your system's curses implementation is broken. You should use the
curses implementation provided with vi or a curses replacement such
as ncurses. Eric Raymond is one of the maintainers of the freely
redistributable ncurses package. You can download ncurses from
http://www.ccil.org/~esr/ncurses.html, or you can contact him at
esr@snark.thyrsus.com.
Q: When I use vi on a Sun console (terminal type sun-34) the screen
is occasionally trashed, usually when exiting vi!
A: The Sun console can't handle the 'al' capability of the termcap
entry (the il1 capability of terminfo entries). If you delete that
entry from your terminfo/termcap information everything should work
correctly.
Q: I don't have a version of ctags (or I have ctags, but it doesn't tag
nearly enough things)!
A: There's a version of ctags available on the 4.4BSD-Lite distributions,
as well as the FreeBSD, NetBSD, Linux and GNU distributions. Or, you
might want to try Exuberant Ctags:
Title: Exuberant Ctags
Version: 1.3
Entered-date: 16JUN96
Description:
A better ctags which generates tags for all possible tag types:
macro definitions, enumerated values (values inside enum{...}),
function and method definitions, enum/struct/union tags, external
function prototypes (optional), typedefs, and variable
declarations. It is far less easily fooled by code containing #if
preprocessor conditional constructs, using a conditional path
selection algorithm to resolve complicated choices, and a
fall-back algorithm when this one fails. Can also be used to print
out a list of selected objects found in source files.
Keywords: ctags, tags, exuberant
Author: darren@sirsi.com (Darren Hiebert)
darren@hiwaay.net (Darren Hiebert)
Maintained-by: darren@sirsi.com (Darren Hiebert)
darren@hiwaay.net (Darren Hiebert)
Primary-site: sunsite.unc.edu /pub/Linux/devel/lang/c
27kB ctags-1.3.tar.gz
Alternate-site: ftp.halcyon.com /local/gvr
27kB ctags-1.3.tar.gz
Original-site:
Platforms: UNIX, MSDOS, WindowsNT, Windows95, OS/2, Amiga
Copying-policy: Public domain
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.
*************************************************************************
THIS IS VIGOR THIS IS NOT NVI THIS IS VIGOR THIS IS NOT NVI THIS IS VIGOR
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
This is Vigor, a quick hack made on top of nvi. Do not expect Vigor to
work right. Do not expect Vigor to work like nvi. Above all, DO NOT
BLAME THE AUTHORS OF NVI FOR VIGOR'S PROBLEMS!
Before proceeding, please read README.vigor for information about Vigor,
including background, requirements, total lack of warranty, and the guy
who actually committed this hack.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
VIGOR IS THIS NVI NOT IS THIS VIGOR IS THIS NVI NOT IS THIS VIGOR IS THIS
*************************************************************************
# @(#)LAYOUT 8.12 (Berkeley) 10/10/96
LAYOUT
This file: the layout of the nvi sources.
LICENSE
Nvi's copyright notice and conditions for redistribution.
README
Welcome message and basic information.
build/
The build/configuration directory for nvi. See build/README for
more information.
catalog/
Support for message catalogs for nvi. See catalog/README for more
information.
cl/
Source files for nvi's curses screen support.
clib/
Replacement source files for C library functions.
common/
Source files for pieces of code that are shared by ex and vi,
e.g., searching and logging code or code translating line numbers
into requests to the dbopen(3) database code. It also has the
interface code for modifying "records" in the underlying database.
curses/
A stripped-down replacement curses library. Do not try and use
this library outside of nvi, many standard curses functions have
been removed because nvi doesn't use them. See build/README for
more information.
db/
A stripped-down replacement DB library. Do not try and use this
library outside of nvi, many standard DB functions have been
removed because nvi doesn't use them. See db/README for more
information.
docs/
Ex/vi documentation, both current and historic.
USD.doc/
[USD stands for "User's Supplementary Documents".]
edit/ Roff source for "Edit: A tutorial". This document
was USD:14 in the 4.3BSD manuals, but was not
distributed with 4.4BSD.
exref/ Roff source for "Ex Reference Manual -- Version
3.7". This document was USD:16 in the 4.3BSD
manuals, and USD tabbed 12 in the 4.4BSD manuals.
vi.man/ Roff source for a UNIX manual page for nex/nvi.
An updated version of the 4.4BSD manual page.
vi.ref/ Roff source for the nex/nvi reference document.
An updated version of the 4.4BSD document, USD
tabbed 13.
vitut/ Roff source for "An Introduction to Display
Editing with Vi". This document was USD:15 in
the 4.3BSD manuals, but was not distributed with
4.4BSD. It includes the historic "Vi Quick
Reference" card.
PostScript preformatted versions of the nex/nvi reference
manual and manual page are in the files named with a ".ps"
suffix, in their respective source directories. Flat text
preformatted versions of the nex/nvi reference manual and
manual page are in the files named with a ".txt" suffix,
in their respective source directories.
changelog -- Log of changes from version to version.
features -- Todo list, suggested features list.
internals/
autowrite -- Vi autowrite option discussion.
context -- Previous context marks discussion.
gdb.script -- GDB debugging scripts.
input -- Vi maps, executable buffers, and input discussion.
openmode -- Open mode behaviors.
quoting -- Vi quoting discussion.
structures -- Out-of-date nvi internal structure description.
tutorial/ -- Historic vi tutorial(s), of unknown quality.
ex/
The ex source code. Because vi has the colon command, lots of
this code is used by vi. Generally, if functionality is shared
by both ex and vi, it's in the ex directory. If it's vi only,
it's in the vi directory. Files are generally named by the
command(s) they support, but occasionally with a name that
describes their functionality.
version.h -- Version information.
include/
Replacement include files:
bitstring.h -- The 4.4BSD bitstring operations.
sys/queue.h -- The 4.4BSD queue operations.
perl_api/
Source code supporting the Perl scripting language for nvi.
perl_scripts/
Scripts for Perl included with nvi.
regex/
Henry Spencer's POSIX 1003.2 regular expression (RE) library.
tcl_api/
Source code supporting the Tcl scripting language for nvi.
tcl_scripts/
Scripts for Tcl included with nvi.
tk/
Source files for nvi's Tk screen support.
init.tcl -- Vi startup tcl script.
vi/
The vi source code.
*************************************************************************
THIS IS VIGOR THIS IS NOT NVI THIS IS VIGOR THIS IS NOT NVI THIS IS VIGOR
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
This is Vigor, a quick hack made on top of nvi. Do not expect Vigor to
work right. Do not expect Vigor to work like nvi. Above all, DO NOT
BLAME THE AUTHORS OF NVI FOR VIGOR'S PROBLEMS!
Before proceeding, please read README.vigor for information about Vigor,
including background, requirements, total lack of warranty, and the guy
who actually committed this hack.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
VIGOR IS THIS NVI NOT IS THIS VIGOR IS THIS NVI NOT IS THIS VIGOR IS THIS
*************************************************************************
Copyright (c) 2000
Joel Ray Holveck. All rights reserved.
Copyright (c) 1996, 1997
Sleepycat Software. All rights reserved.
Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996
Keith Bostic. All rights reserved.
/*
* Copyright (c) 1991, 1992, 1993, 1994
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
*************************************************************************
THIS IS VIGOR THIS IS NOT NVI THIS IS VIGOR THIS IS NOT NVI THIS IS VIGOR
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
This is Vigor, a quick hack made on top of nvi. Do not expect Vigor to
work right. Do not expect Vigor to work like nvi. Above all, DO NOT
BLAME THE AUTHORS OF NVI FOR VIGOR'S PROBLEMS!
Before proceeding, please read README.vigor for information about Vigor,
including background, requirements, total lack of warranty, and the guy
who actually committed this hack.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
VIGOR IS THIS NVI NOT IS THIS VIGOR IS THIS NVI NOT IS THIS VIGOR IS THIS
*************************************************************************
# @(#)README 8.149 (Berkeley) 7/14/97
This is version 1.79 (7/14/97) of nex/nvi, a reimplementation of the ex/vi
text editors originally distributed as part of the Fourth Berkeley
Software Distribution (4BSD), by the University of California, Berkeley.
The directory layout is as follows:
FAQ ........... Frequently asked questions.
LICENSE ....... Copyright, use and redistribution information.
README ........ This file.
catalog ....... Message catalogs; see catalog/README.
changelog ..... Log of changes from version to version.
cl ............ Vi interface to the curses(3) library.
clib .......... C library replacement source code.
common ........ Code shared by ex and vi.
curses ........ A stripped-down, replacement curses(3) library.
db ............ A stripped-down, replacement db(3) library.
dist .......... Various files used to build the vi distribution.
docs .......... Ex/vi documentation, both current and historic.
docs/README ... Documentation overview.
docs/edit ..... Edit: A tutorial.
docs/exref .... Ex Reference Manual -- Version 3.7.
docs/vi.man ... UNIX manual page for nex/nvi.
docs/vi.ref ... Nex/nvi reference manual.
docs/vitut .... An Introduction to Display Editing with Vi.
ex ............ Ex source code.
include ....... Replacement include files.
ip ............ Library interface to vi: vi side.
ipc ........... Library interface to vi: application side.
motif ......... Vi motif application.
motif_l ....... Motif library interface to vi.
perl_api ...... Perl scripting language support.
perl_scripts .. Perl scripts.
regex ......... POSIX 1003.2 regular expression library.
tcl_api ....... Tcl scripting language support.
tcl_scripts ... Tcl scripts.
vi ............ Vi source code.
Bug fixes and updated versions of this software will periodically be made
available. For more information see:
http://www.bostic.com/vi
To ask questions about vi, report vi problems, request notification of
future releases and/or bug fixes, or to contact the authors for any reason,
please send email to:
bostic@bostic.com
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
o This software is several years old and is the product of many folks' work.
This software was originally derived from software contributed to
the University of California, Berkeley by Steve Kirkendall, the
author of the vi clone elvis. Without his work, this work would
have been far more difficult.
IEEE POSIX 1003.2 style regular expression support is courtesy of
Henry Spencer, for which I am *very* grateful.
Elan Amir did the original 4BSD curses work that made it possible
to support a full-screen editor using curses.
George Neville-Neil added the Tcl interpreter, and the initial
interpreter design was his.
Sven Verdoolaege added the Perl interpreter.
Rob Mayoff provided the original Cscope support.
o Many, many people suggested enhancements, and provided bug reports and
testing, far too many to individually thank.
o From the original vi acknowledgements, by William Joy and Mark Horton:
Bruce Englar encouraged the early development of this display
editor. Peter Kessler helped bring sanity to version 2's
command layout. Bill Joy wrote versions 1 and 2.0 through 2.7,
and created the framework that users see in the present editor.
Mark Horton added macros and other features and made the editor
work on a large number of terminals and Unix systems.
o And...
The financial support of UUNET Communications Services is gratefully
acknowledged.
=-=-=-=-=-=-=-=-=-=-=
o Status:
This software is in beta test, and it's pretty stable. Almost all of the
historic functionality in ex/vi is there, the only major missing pieces
are open mode and the lisp edit option.
Nvi is largely 8-bit clean. This isn't difficult to fix, and was left in
during initial development to keep things simple. Wide character support
will be integrated at the same time that it is made fully 8-bit clean.
There aren't a lot of new features in nex/nvi, but there are a few things
you might like. The "Additional Features" section of the reference work
(docs/USD.doc/vi.ref/vi.ref.txt, docs/USD.doc/vi.ref/vi.ref.ps) has more
information.
=-=-=-=-=-=-=-=-=-=-=
o Debugging:
Code fixes are greatly appreciated, of course, but if you can't provide
them, please email me as much information as you can as to how I might
reproduce the bug, and I'll try to fix it locally. Stack traces of core
dumps are only rarely helpful -- an example file with a set of keystrokes
that causes the problem is almost invariably necessary. I know it's
annoying, but simply playing with the bug until you can reproduce it at
will, with minimal keystrokes, is immensely helpful to me.
Please include the following in the bug report;
o The version of nvi you're running (use :version to get it).
o The row/column dimensions of the screen (80 x 32).
o Unless you're confident that they're not part of the problem,
your startup files (.exrc, .nexrc) and the environment variable
(EXINIT, NEXINIT) values. (Cutting and pasting the output
of ":set all" is usually sufficient.)
If you want to do your own debugging, recompile the program with DEBUG
defined. (Configuring with --enable-debug will do this for you.) This
turns on the additional command-line option -D, that takes either s or w
as an argument. The option -Ds causes nvi to ignore the EXINIT and
.exrc files on startup, and -Dw causes nvi to print out the process id
and wait for you to enter a <carriage-return> to continue.
If you're running a memory checker (e.g. Purify) on nvi, you will first
want to recompile everything with "-DPURIFY" set in the CFLAGS. This
initializes allocated pages in the DB code, and free's allocated memory
at the end of the nvi execution.
THIS IS VIGOR!
THIS IS NOT NVI!
Vigor is designed as a vi-compatible editor, with a little (*ahem*)
extra something thrown in. It was inspired by the January 4, 2000
storyline in the User Friendly comic. If you haven't seen it yet,
check it out at http://www.userfriendly.org/ (and do so in a place you
can freely laugh). Go ahead, I'll wait.
First, let me take the blame for this atrocity, and make sure that
nobody gets the wrong idea about the authors of nvi (good people all).
Vigor is based on nvi, a wonderful vi-compatible editor written by
many people. (See the README for a list of who wrote it, and what
they did.) The Vigor build tree is mostly nvi. In order to make this
in time, I took nvi and hacked it to little bits. Vigor is not part
of nvi; it's a program that's based around it. If you find bugs in
this code, you may safely assume that they are mine. If you like the
editor, I suggest you check out the true nvi, at
http://www.bostic.com/vi/ (or ftp.bostic.com for the http-impaired).
I may at some point describe Vigor more. But I need to go create my
monster now.
Joel Ray Holveck <joelh@gnu.org>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
sub bootstrap {$curscr->bootstrap(@_)}
sub PRINT {$curscr->PRINT(@_)}
sub Msg {$curscr->Msg(@_)}
sub EndScreen {$curscr->EndScreen(@_)}
sub Edit {$curscr->Edit(@_)}
sub NewScreen {$curscr->NewScreen(@_)}
sub FindScreen {$curscr->FindScreen(@_)}
sub AppendLine {$curscr->AppendLine(@_)}
sub DelLine {$curscr->DelLine(@_)}
sub GetLine {$curscr->GetLine(@_)}
sub SetLine {$curscr->SetLine(@_)}
sub InsertLine {$curscr->InsertLine(@_)}
sub LastLine {$curscr->LastLine(@_)}
sub GetMark {$curscr->GetMark(@_)}
sub SetMark {$curscr->SetMark(@_)}
sub GetCursor {$curscr->GetCursor(@_)}
sub SetCursor {$curscr->SetCursor(@_)}
sub SwitchScreen {$curscr->SwitchScreen(@_)}
sub MapKey {$curscr->MapKey(@_)}
sub UnmapKey {$curscr->UnmapKey(@_)}
sub SetOpt {$curscr->SetOpt(@_)}
sub GetOpt {$curscr->GetOpt(@_)}
sub Run {$curscr->Run(@_)}
sub DESTROY {$curscr->DESTROY(@_)}
sub Warn {$curscr->Warn(@_)}
sub Opt {$curscr->Opt(@_)}
sub Map {$curscr->Map(@_)}