Permalink
Browse files

Import Elvis 2.0 (written by Steve Kirkendall)

  • Loading branch information...
1 parent 6335386 commit cf92e3bea3c7bdb30caf2f7b0c48f953323824f4 @mbert committed Dec 10, 2011
Showing with 9,296 additions and 9,446 deletions.
  1. +101 −0 BUGS
  2. +13 −0 COPYING
  3. +0 −8 Elvis.lnk
  4. +0 −132 Elvis.mak
  5. +0 −30 Elvis.prj
  6. +237 −71 INSTALL
  7. +0 −37 MANIFEST
  8. +267 −0 Makefile.in
  9. +0 −748 Makefile.mix
  10. +0 −173 Pkgfile
  11. +0 −27 README
  12. +585 −0 README.html
  13. +0 −100 SourceFiles
  14. +0 −234 amiga.c
  15. +0 −67 amiprsv.c
  16. +0 −48 amistat.h
  17. +0 −195 amisysio.c
  18. +0 −334 amitty.c
  19. +0 −322 amiwild.c
  20. +0 −161 atari.c
  21. +0 −497 blk.c
  22. +0 −18 borland.h
  23. +1,587 −0 buffer.c
  24. +113 −0 buffer.h
  25. +18 −0 buffer2.h
  26. +1,181 −0 calc.c
  27. +10 −0 calc.h
  28. +0 −2,029 cmd1.c
  29. +0 −994 cmd2.c
  30. +0 −766 config.h
  31. +572 −0 configure
  32. +280 −161 ctags.c
  33. +0 −76 ctype.c
  34. +0 −44 ctype.h
  35. +0 −1,146 curses.c
  36. +0 −370 curses.h
  37. +420 −658 cut.c
  38. +13 −0 cut.h
  39. +344 −0 digraph.c
  40. +12 −0 digraph.h
  41. +277 −0 display.c
  42. +6 −0 display.h
  43. +60 −0 display2.h
  44. +283 −0 dmhex.c
  45. +2,917 −0 dmmarkup.c
Sorry, we could not display the entire diff because it was too big.
View
101 BUGS
@@ -0,0 +1,101 @@
+Report bugs to kirkenda@cs.pdx.edu (Steve Kirkendall)
+
+NOTE: Each bug in this file is marked with either "*", "/", or "?" character.
+The "*" means the bug is still pending. The "/" means that I believe it has
+been solved. A "?" means that I've done some work on it, and *hope* it is
+solved because it seems to work better but I never really understood what
+was wrong in the first place. A "?" will become a "/" if I don't receive
+more reports of that bug.
+
+NOTE: Not all of these are truly bugs. This file also serves as my "to do"
+list, so some items are just unimplemented features that sounded like a good
+idea at one time or another.
+
+* If you use the scrollbar to scroll to the bottom of a large file in html,
+ man, or hex mode, then when you reach the very end of the file (where you
+ would expect see no part of the file, just ~'s) it jumps back so the window
+ is completely filled with lines from the file.
+
+* The "hex" display mode does strange things to 0x0a characters. Those quirks
+ are hard to eliminate, because that's the newline character and several
+ commands are sensitive to newlines. But eventually something should be done.
+
+* Problems with German keyboards under X11. The modifiers don't appear to
+ work correctly, which prevents { } [ ] ~ @ \ | from being enterable.
+ Reported by Juergen Preuss (preuss@cach02.chm.tu-dresden.de).
+
+* In the "html" display mode, if a token begins with   then elvis
+ mistakes the token for a whitespace token; the remaining characters aren't
+ displayed.
+
+* Under Win32, it should be able to parse UNC names (\\machine\directory\file)
+
+* Control-V should display a carat on the screen, while waiting for the
+ quoted character.
+
+* In the "syntax" display mode, if a multi-line comment ends on the last
+ character of the line just above the top of the window, and the comment
+ ender string is one character long (which happens in Pascal, but not C),
+ then elvis assumes that the top line of the window is a continuation of
+ that comment.
+
+? Sometimes the X11 interface refuses to give up keyboard focus. I've seen
+ this *VERY RARELY* with FVWM under Linux. It has also been reported under
+ OLVWM. I suspect there is a race condition, perhaps because elvis (or
+ something else?) isn't including a timestamp on a request?
+
+* In normal mode, you can't edit text that occurs after the last newline.
+ The vertical movement function for "normal" display mode won't let you
+ move the cursor past the last newline, even if there are other characters
+ after it. (You can edit those extra bytes in hex mode, though.)
+
+* The htmlescape() function in dmmarkup.c is reported to cause core dumps
+ on an RS6000 running AIX, when compiled with optimization enabled. If
+ compiled for debugging, it doesn't dump core so specifics are hard to
+ come by on this one.
+
+* An expose event causes the scrollbar to be redrawn, even if it should really
+ be blanked out (because the cursor is on the bottom row).
+
+* Ex command-line history is very weird. If you recall an earlier command
+ and edit it, you're actually editing the historic version. I would prefer
+ to have a new copy of that line created at the end of the history buffer,
+ and have the editing take place on that new copy.
+
+ The same thing happens with regular-expression history, and filter-program
+ history.
+
+* The :& command doesn't seem to be working correctly in all circumstances.
+ After doing a ":%s/.$" on one buffer, and then switching to another buffer,
+ the command ":%&" did not work.
+
+ This is because the "elvis.arf" file uses a :s command to locate and
+ execute modelines. There is no easy way to fix this, unless you think
+ ":set nomodelines" is an acceptable solution.
+
+* Idea for ex macros:
+ * ":macro name [argtypes]" is followed by existing commands which
+ implement the new command. A line containing a single "."
+ marks the end of the definition. This is handy because :insert
+ already uses a similar notation.
+ * The new commands are added to the end of the command list in ex.c,
+ so if existing commands are abbreviated, they'll never be mistaken
+ for new commands.
+ * While executing new commands, some options are temporarily inserted
+ into the option list, so the definition can access the arguments.
+ * The visual : command also adds options giving the current line and
+ column, and the word under the cursor (if any).
+ * Each macro has a recursion counter which is incremented when the
+ macro starts, and decremented when it ends. If the counter exceeds
+ some limit, a "macro recursion" error is generated.
+
+* Some ideas for errlist:
+ * Allow the "makeprg" and "ccprg" options to be set from elvis.syn
+ / If there is a window showing (Elvis error list)...
+ / Highlight the current line, and leave the cursor at the end
+ of it (so we can be sure the window will show that line).
+ / Start the next error search at its cursor position.
+
+* It occurs to me that the digraph table could be used to assign a collation
+ sequence to the non-ascii letters. This would allow regular expressions
+ such as /[a-z]/ to match non-ascii letters as well as ascii ones.
View
13 COPYING
@@ -0,0 +1,13 @@
+Elvis 2.0 Copyright 1996 by Steve Kirkendall
+
+Elvis 2.0 is copyrighted freeware. It is provided in the hope that it will
+be useful, but with no warranty.
+
+You can distribute copies of it in either source form or binary form,
+provided my copyright notice remains intact. If you distribute *MODIFIED*
+versions, please mark them as being modified.
+
+You can use portions of elvis source code in your own projects. If you use
+fewer than 500 lines, then no special permission is required. For 500 or
+more lines, please obtain permission from the author at kirkenda@cs.pdx.edu;
+in general, such permission will be granted without compensation.
View
8 Elvis.lnk
@@ -1,8 +0,0 @@
-blk.obj cmd1.obj ctype.obj cmd2.obj curses.obj cut.obj +
-ex.obj input.obj main.obj misc.obj modify.obj +
-move1.obj move2.obj move3.obj move4.obj move5.obj +
-opts.obj recycle.obj redraw.obj regexp.obj +
-regsub.obj system.obj tio.obj tmp.obj vars.obj +
-vcmd.obj vi.obj pc.obj sysdos.obj tinytcap.obj /co /noi /map +
-/pac /far /stack:0x4000
-elvis.exe;
View
132 Elvis.mak
@@ -1,132 +0,0 @@
-# Makefile for MSC - if you don't have NDmake, use this one,
-# but don't expect to be happy.
-# And don't expect to do anything but making the executables, either.
-
-OBJS= blk.obj cmd1.obj cmd2.obj ctype.obj curses.obj cut.obj ex.obj input.obj \
- main.obj misc.obj modify.obj move1.obj move2.obj move3.obj move4.obj \
- move5.obj opts.obj recycle.obj redraw.obj regexp.obj regsub.obj \
- system.obj tio.obj tmp.obj vars.obj vcmd.obj vi.obj \
- pc.obj sysdos.obj tinytcap.obj
-
-CFLAGS= -DCS_IBMPC -DCS_SPECIAL -DRAINBOW -DBLKSIZE=1024
-CC= cl -AM
-
-blk.obj: blk.c
- $(CC) $(CFLAGS) -c blk.c
-
-cmd1.obj: cmd1.c
- $(CC) $(CFLAGS) -c cmd1.c
-
-cmd2.obj: cmd2.c
- $(CC) $(CFLAGS) -c cmd2.c
-
-ctype.obj: ctype.c
- $(CC) $(CFLAGS) -c ctype.c
-
-curses.obj: curses.c
- $(CC) $(CFLAGS) -c curses.c
-
-cut.obj: cut.c
- $(CC) $(CFLAGS) -c cut.c
-
-ex.obj: ex.c
- $(CC) $(CFLAGS) -c ex.c
-
-input.obj: input.c
- $(CC) $(CFLAGS) -c input.c
-
-main.obj: main.c
- $(CC) $(CFLAGS) -c main.c
-
-misc.obj: misc.c
- $(CC) $(CFLAGS) -c misc.c
-
-modify.obj: modify.c
- $(CC) $(CFLAGS) -c modify.c
-
-move1.obj: move1.c
- $(CC) $(CFLAGS) -c move1.c
-
-move2.obj: move2.c
- $(CC) $(CFLAGS) -c move2.c
-
-move3.obj: move3.c
- $(CC) $(CFLAGS) -c move3.c
-
-move4.obj: move4.c
- $(CC) $(CFLAGS) -c move4.c
-
-move5.obj: move5.c
- $(CC) $(CFLAGS) -c move5.c
-
-opts.obj: opts.c
- $(CC) $(CFLAGS) -c opts.c
-
-recycle.obj: recycle.c
- $(CC) $(CFLAGS) -c recycle.c
-
-redraw.obj: redraw.c
- $(CC) $(CFLAGS) -c redraw.c
-
-regexp.obj: regexp.c
- $(CC) $(CFLAGS) -c regexp.c
-
-regsub.obj: regsub.c
- $(CC) $(CFLAGS) -c regsub.c
-
-system.obj: system.c
- $(CC) $(CFLAGS) -c system.c
-
-tio.obj: tio.c
- $(CC) $(CFLAGS) -c tio.c
-
-tmp.obj: tmp.c
- $(CC) $(CFLAGS) -c tmp.c
-
-vars.obj: vars.c
- $(CC) $(CFLAGS) -c vars.c
-
-vcmd.obj: vcmd.c
- $(CC) $(CFLAGS) -c vcmd.c
-
-vi.obj: vi.c
- $(CC) $(CFLAGS) -c vi.c
-
-pc.obj: pc.c
- $(CC) $(CFLAGS) -c pc.c
-
-sysdos.obj: sysdos.c
- $(CC) $(CFLAGS) -c sysdos.c
-
-tinytcap.obj: tinytcap.c
- $(CC) $(CFLAGS) -c tinytcap.c
-
-elvis.exe: $(OBJS)
- link @elvis.lnk
-
-ctags.exe: ctags.c wildcard.c
- $(CC) ctags.c -o ctags.exe
-
-fmt.exe: fmt.c
- $(CC) fmt.c -o fmt.exe
-
-ref.exe: ref.c
- $(CC) /F 4000 ref.c -o ref.exe
-
-elvrec.exe: elvrec.c
- $(CC) $(CFLAGS) elvrec.c -o elvrec.exe
-
-elvprsv.exe: elvprsv.c prsvdos.c wildcard.c ctype.c
- $(CC) $(CFLAGS) elvprsv.c -o elvprsv.exe
-
-wildcard.exe: wildcard.c ctype.c
- $(CC) wildcard.c -o wildcard.exe
-
-ex.exe: alias.c
- $(CC) alias.c -o ex.exe
-
-vi.exe: ex.exe
- copy ex.exe vi.exe
-
-view.exe: ex.exe
- copy ex.exe view.exe
View
30 Elvis.prj
@@ -1,30 +0,0 @@
-blk
-cmd1
-cmd2
-ctype
-curses
-cut
-ex
-input
-main
-misc
-modify
-move1
-move2
-move3
-move4
-move5
-opts
-recycle
-redraw
-regexp
-regsub
-system
-tio
-tmp
-vars
-vcmd
-vi
-pc
-sysdos
-tinytcap
View
308 INSTALL
@@ -1,71 +1,237 @@
-Installation varies from one Operating System to another. For complete
-instructions, see the appropriate subsection in the "Versions" section
-of the manual. Basically, though, it goes like this:
-
- VMS: There is a batch file called "vmsbuild.com" which compiles
- elvis and the related utilities. You just need to say
- "@vmsbuild" and wait a while. (On a little old VAX with
- heavy load, elvis can take up to half an hour to compile!)
-
- After that, the programs need to be set up as foreign
- commands. A batch file called "vmssetup.com" does this.
-
- DOS: If you're using MS-C 5.x (for a fairly recent x), then
- you can compile elvis and the related programs by saying
- "make elvis.mak" and waiting a while.
-
- If you're using Turbo-C or Borland C, then you will probably
- want to copy "Makefile.mix" to "Makefile", and then edit
- "Makefile" to select the Turbo-C group of settings. Then run
- "make".
-
- Regardless of how you compile elvis, you must make a directory
- called "C:\TMP" before elvis will run correctly.
-
- EVERYTHING ELSE:
- Copy "Makefile.mix" to "Makefile", and then edit "Makefile"
- to select the proper group of settings. Then run "make".
-
- When its done, run "make install" to copy the executables
- to /usr/local/bin (or whatever -- check the Makefile) and
- change their permissions. On UNIX systems, you'll need to
- do this as "root".
-
-That's the gist of it. For complete instructions, you should look in the
-"Versions" section of the manual. You may also wish to browse through the
-"CFLAGS" and "Makefile" sections of the manual.
-
-The manual resides in a subdirectory called "doc". Each section of the
-manual is in a separate file, so it could be split across several shar
-archives. On a UNIX system, you can go into the "doc" directory and say
-"make" to have these parts be appended to form a single file called
-"Elvisman.txt". On other systems, your best bet is probably to just
-print out all of the "*.doc" files, and then append them in the following
-order:
- title.doc title page
- index.doc index page
- intro.doc introductory fluff
- visual.doc visual commands and input mode
- ex.doc table of ex commands, and descriptions
- regexp.doc description of regular expressions and substitutions
- options.doc detailed description of ":set" command
- cutbufs.doc short discussion of cut-buffers and @ macros
- differ.doc list of (known) differences between elvis and vi
- internal.doc implementation details
- cflags.doc compile-time options
- makefile.doc description of the Makefile.mix file
- termcap.doc how elvis uses termcap fields -- terminal descriptions
- environ.doc environment variables that affect elvis
- versions.doc OS-dependent information
- question.doc some frquently asked questions & answers
- ctags.doc man-page for "ctags" program
- elvis.doc man-page for "elvis" program
- elvprsv.doc man-page for "elvprsv" program
- elvrec.doc man-page for "elvrec" program
- fmt.doc man-page for "fmt" program
- ref.doc man-page for "ref" program
-
-NOTE: The manual pages are formatted for 66-line pages. The last 6 lines of
-each page are blank, for skipping page breaks. Many laser printers default
-to 60 lines per page, so you may have to delete those extra blank lines, or
-replace them by formfeeds or something.
+HOW TO COMPILE & INSTALL ELVIS 2.0
+
+Separate sets of instructions are provided below for UNIX, Windows-NT, and
+MS-DOS.
+
+For Win32 and MS-DOS, I've constructed batch files which, when run, cause
+the programs to be compiled. This is the preferred way to compile elvis
+and its related programs. However, you can also use MSVC++'s interactive
+development environment if you prefer. Separate instructions are given
+for both compilation methods, for both operating systems.
+
+All of these instructions assume that you have already unpacked the files
+from the source code archive, "elvis-2.0.tgz". That's a gzipped tar archive.
+If you don't have the gzip and tar utilities, then the easiest way for you
+to unpack them is to compile the "untar.c" program (available via anonymous
+FTP from ftp://ftp.cs.pdx.edu/pub/elvis/unreleased/untar.c). The files will
+be placed in a subdirectory named "elvis-2.0". The MS-DOS *.MAK files
+assume that you've unpacked them while in C:\MSVC, so the files themselves
+should end up in C:\MSVC\elvis-2.0.
+
+================================================================================
+
+UNIX
+ 1) Run the "configure" shell script to create "Makefile" and "config.h"
+ files. I tried to make this "configure" script work about the same
+ as GNU ones. For a complete list of options, run "configure -?"
+ Here's a list of some of the more important ones, but YOU PROBABLY
+ DON'T NEED TO USE ANY OF THEM because the defaults are pretty smart.
+
+ --with-x[=no]
+ This forces elvis to include support for X-windows, or
+ (with "=no") forces it not to support X-windows. If you
+ omit this flag, configure will automatically detect
+ whether X is installed on your system, and use it if
+ available.
+
+ --without-x
+ This is a synonym for "--with-x=no".
+
+ --x-includes=directory
+ configure has a built-in list of likely places where
+ X-windows header files might be installed. This argument
+ adds another possible location to the list. The list is
+ used for the automatic inspection if "--with-x[=no]" was
+ omitted, and the actual directory where the files were
+ found are incorporated into the Makefile.
+
+ The X-windows header files are actually expected to
+ reside in a subdirectory named "X11" under the given
+ directory. For example, if your system has a file named
+ /usr/local/X11R6/include/X11/X.h then you would give the
+ argument "--x-includes=/usr/local/X11R6/include"
+
+ --x-libraries=directory
+ Similarly, this adds a directory to the list of
+ directories where X-windows libraries might reside. The
+ directory where they actually do reside is incorporated
+ into the Makefile.
+
+ --bindir=directory
+ This value is incorporated into the Makefile. The
+ command "make install" will copy the executables into
+ this directory. The default is /usr/local/bin.
+
+ --datadir=directory
+ This is incorporated into both the Makefile and the
+ config.h file. It is the directory where elvis' support
+ files will reside after a "make install". The default is
+ /usr/local/lib/elvis.
+
+ --libs=string
+ This option allows you to specify which library to use
+ for the "termcap" user interface. It will usually be
+ either -ltermcap or -lcurses.
+
+ --ioctl=tty-style
+ There are three possibilities: termios, termio, and
+ sgtty. These use Posix, SysV, and BSD terminal control
+ calls, respectively. The Posix termios calls usually
+ work best. The default is chosen by inspecting the
+ header files in /usr/include.
+
+ 2) Give the command "make". This should eventually produce programs
+ named "elvis" and "ref". Source code is also included for "ctags"
+ and "fmt" but these aren't normally compiled because your UNIX system
+ probably already has better versions of them. If you want to use
+ elvis' versions of "ctags" and "fmt" then you should edit the Makefile
+ to add those programs to the definition of the ALL macro.
+
+ Exception: Linux gets all four programs by default, because the
+ versions of "ctags" and "fmt" distributed with Linux actually came
+ from elvis 1.8, so the 2.0 versions are newer.
+
+ 3) You should be able to run "elvis" in the source code directory now.
+ Try "e2 README.html" or "e2 config.h".
+
+ Note that we're running the e2 shell script instead of the elvis
+ executable. e2 simply runs elvis in such a way that it looks for
+ its support files in the "lib" subdirectory, instead of the usual
+ directory.
+
+ 4) If all goes well, you can install elvis by becoming the superuser and
+ running the command "make install". (Later, if you decide to uninstall
+ it you can do so via the command "make uninstall".)
+
+ --------------------------------------------------------------------
+ | NOTE: If you want to compile elvis with multiple configurations, |
+ | you should compile it with each configuration separately, and then |
+ | rename the executables, and "make clean" before running the |
+ | configure script for the next configuration. For example, to make |
+ | elvis both with and without X-windows, you could... |
+ | |
+ | configure --with-x linux |
+ | make |
+ | mv elvis xelvis |
+ | make clean |
+ | configure --with-x=no linux |
+ | make |
+ --------------------------------------------------------------------
+
+================================================================================
+
+MS-Windows/NT (or Windows95?), with Visual C++ 2.0 (Method #1):
+ 1) Run the "makwin32.bat" file.
+
+ makwin32
+
+ 2) You can install elvis.exe by copying it into some directory in your
+ executation path, and the "lib" files into a subdirectory named "lib"
+ under the directory where you installed elvis.exe. The following
+ commands are APPROXIMATELY what you need to do:
+
+ mkdir \localbin
+ copy *.exe \localbin
+ path %path%;\localbin
+ mkdir \localbin\lib
+ copy lib\*.* \localbin\lib
+
+
+MS-Windows/NT (or Windows95?), with Visual C++ 2.0 (Method #2):
+ 1) Copy all of the "*.mak" files from files from the oswin32 subdirectory.
+
+ copy oswin32\*.mak
+
+ 2) Copy the file "osconfig.h" from the oswin32 directory to "config.h"
+ (without the initial "os") in the current directory.
+
+ copy oswin32\osconfig.h config.h
+
+ 3) Start Visual C++ 2.0, and open the "elvis.mak" file. Select the
+ "Release" target.
+
+ 4) Select the "Project->Build elvis.exe" menu item, and wait a while.
+ Eventually this should give you an "elvis.exe" program in the
+ WinRel subdirectory. You can test this program from inside
+ VC++ via the <F5> key.
+
+ 5) Repeat steps 3 and 4 for the "ctags.mak", "ref.mak", and "fmt.mak"
+ files.
+
+ 6) You can install elvis.exe by copying it into some directory in your
+ executation path, and the "lib" files into a subdirectory named "lib"
+ under the execution directory. The following commands are
+ APPROXIMATELY what you need to do:
+
+ mkdir \localbin
+ copy WinRel\*.exe \localbin
+ copy *.exe \localbin
+ path %path%;\localbin
+ mkdir \localbin\lib
+ copy lib\*.* \localbin\lib
+
+================================================================================
+
+MS-DOS, using Visual C++ 1.5 (Method #1):
+ REMINDER: MSVC++ 1.5 always puts the complete pathnames of all files into
+ its NMAKE files. Because of this, you *MUST* install the source code
+ into a directory named "C:\MSVC\elvis-2.0". The "elvis-2.0" component
+ of that directory name is stored in the "elvis-2.0r.tgz" archive file,
+ so you should be in the C:\MSVC directory when you extract the files.
+ After extracting the files, do a "cd elvis-2.0"
+
+ 1) Run the "makmsdos.bat" file
+
+ makmsdos
+
+ 2) You can install elvis by copying the *.EXE files into some directory
+ in your execution path, and copying the "lib" files into a subdirectory
+ named "lib" under the directory where you installed the *.EXE files.
+ The following commands are APPROXIMATELY what you need to do:
+
+ mkdir \localbin
+ copy *.exe \localbin
+ mkdir \localbin\lib
+ copy \lib\*.* \localbin\lib
+ path {OLD PATH HERE};\localbin
+
+
+MS-DOS, using Visual C++ 1.5 (Method #2):
+ REMINDER: MSVC++ 1.5 always puts the complete pathnames of all files into
+ its NMAKE files. Because of this, you *MUST* install the source code
+ into a directory named "C:\MSVC\elvis-2.0". The "elvis-2.0" component
+ of that directory name is stored in the "elvis-2.0.tgz" archive file,
+ so you should be in the C:\MSVC directory when you extract the files.
+
+ 1) Copy all of the "C:\MSVC\elvis-2.0\OSMSDOS\*.MAK" files into the
+ "C:\MSVC\elvis-2.0" directory.
+
+ c:
+ cd \msvc\elvis-2.0
+ copy osmsdos\*.mak
+
+ 2) Copy the "\MSVC\elvis-2.0\OSMSDOS\OSCONFIG.H" file to
+ "\MSVC\elvis-2.0\CONFIG.H" Note that the "OS" is dropped from the
+ filename.
+
+ copy osmsdos\osconfig.h config.h
+
+ 3) Start Visual C++ 1.5, and open the "ELVIS.MAK" project.
+
+ 4) Select the "Project->Build ELVIS.EXE" menu item, and wait a while.
+ Eventually this should give you an "ELVIS.EXE" program in the
+ current directory. You can test this program from inside VC++
+ via the <F5> key.
+
+ 5) Repeat steps 3 and 4 for "CTAGS.MAK", "REF.MAK", and "FMT.MAK".
+
+ 6) You can install elvis by copying the *.EXE files into some directory
+ in your execution path, and copying the "lib" files into a subdirectory
+ named "lib" under the directory where you installed the *.EXE files.
+ The following commands are APPROXIMATELY what you need to do:
+
+ mkdir \localbin
+ copy *.exe \localbin
+ mkdir \localbin\lib
+ copy \lib\*.* \localbin\lib
+ path {OLD PATH HERE};\localbin
View
37 MANIFEST
@@ -1,37 +0,0 @@
-Elvis may be distributed in either source form or executable form.
-For executables, the exact list of files will vary.
-
-Source Files:
- Elvis.lnk curses.c doc/title.ms prsvunix.c
- Elvis.mak curses.h doc/ver.ms recycle.c
- Elvis.prj cut.c doc/versions.ms redraw.c
- INSTALL doc/Makefile doc/visual.ms ref.c
- MANIFEST doc/cflags.ms elvprsv.c regexp.c
- Makefile.mix doc/ctags.man elvrec.c regexp.h
- Pkgfile doc/cutbufs.ms ex.c regsub.c
- README doc/differ.ms fmt.c shell.c
- SourceFiles doc/elvcol input.c sysdos.c
- alias.c doc/elvis.man instman.sh system.c
- amiga.c doc/elvprsv.man main.c tinyprnt.c
- amiprsv.c doc/elvrec.man misc.c tinytcap.c
- amistat.h doc/environ.ms modify.c tio.c
- amisysio.c doc/ex.ms move1.c tmp.c
- amitty.c doc/fmt.man move2.c unix.c
- amiwild.c doc/index.ms move3.c vars.c
- atari.c doc/init.ms move4.c vcmd.c
- blk.c doc/internal.ms move5.c vi.c
- borland.h doc/intro.ms novice.rc vi.h
- cmd1.c doc/makefile.ms opts.c vmsbuild.com
- cmd2.c doc/options.ms osk.c vmsio.c
- config.h doc/question.ms osk.h vmslink.opt
- ctags.c doc/ref.man pc.c vmssetup.com
- ctype.c doc/regexp.ms profile.sh vmswild.c
- ctype.h doc/termcap.ms prsvdos.c wildcard.c
-
-MS-DOS executables:
- CHANGES README elvis.man elvrec.man ref.exe
- Elvisman.txt ctags.doc elvprsv.doc ex.exe ref.man
- INSTALL ctags.exe elvprsv.exe fmt.doc vi.exe
- MANIFEST ctags.man elvprsv.man fmt.exe view.exe
- PATCHES elvis.doc elvrec.doc fmt.man wildcard.exe
- Pkgfile elvis.exe elvrec.exe ref.doc
View
267 Makefile.in
@@ -0,0 +1,267 @@
+# Makefile.in
+# $Id: Makefile.in,v 2.21 1996/10/01 19:53:00 steve Exp $
+#
+# Makefile.in should not be modified! The "configure" script reads Makefile.in
+# and writes a customized Makefile by editing the values of the following
+# macros. If the "configure" script doesn't support your version of UNIX,
+# I suggest you do a plain "configure unix" and then hand-edit the resulting
+# Makefile. That will also create a "config.h" file which may require some
+# tweaking.
+
+################################################################################
+# This is the name of the compiler, along with any flags that should be used
+# both for compiling and for linking. Typical values are "cc -g" or "cc -O".
+# If you're compiling with X-windows support, you may need to add a
+# "-I/usr/X11/include" flag or something similar.
+#CC=gcc -g -Wall -pedantic -Wtraditional -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes
+CC=cc -O
+
+################################################################################
+# This macro gives any arguments which will be needed during linking.
+# Mostly, this means "-Llibdir" and "-llib" flags. If you're compiling with
+# X-windows support, then you'll have to add a "-lX11" and maybe a
+# "-L/usr/X11/lib" flag or something similar.
+LIBS=-ltermcap
+
+################################################################################
+# This should be "unix" for all UNIX variants. It causes the compiler to use
+# files from the osunix subdirectory, and do a UNIX-style installation.
+OS=unix
+
+################################################################################
+# This is a command for compiling files in a subdirectory, and placing the
+# resultant object files in the current directory. Most UNIX compilers behave
+# this way naturally, so you probably won't need to modify this.
+OSCC=$(CC) -I. $(CFLAGS) $(FLAGC)
+
+################################################################################
+# This is the separator between a subdirectory name and a file name. For UNIX
+# this should always be a "/" character.
+SLASH=/
+
+################################################################################
+# This is the file name extension for object files. For UNIX, this is almost
+# always ".o"
+OBJ=.o
+
+################################################################################
+# This is the file name extension for executable files. For UNIX, this is
+# always a null string because UNIX doesn't use file name extensions to mark
+# executable files.
+EXE=
+
+################################################################################
+# This is the shell command which is used for deleting a file if it exists.
+# The "-f" causes "rm" to be silent if the file doesn't exist.
+RM=rm -f
+
+################################################################################
+# This is the compiler flag which causes compilation but not linking. For
+# most UNIX compilers, this is "-c".
+FLAGC=-c
+
+################################################################################
+# This is the compiler flag for adding a directory to the list of directories
+# to be searched for #include files. For most UNIX compilers, this is "-I".
+FLAGI=-I
+
+################################################################################
+# This is a list of programs to be created by "make all". The possible list
+# includes elvis$(EXE), ref$(EXE), ctags$(EXE), and fmt$(EXE). The $(EXE) on
+# the end is just in case this Makefile is reconfigured for an operating
+# system which requires the EXE macro to be something like ".exe".
+ALL=elvis$(EXE) ref$(EXE)
+
+################################################################################
+# This is the directory where "make install" will place the executable programs
+BINDIR=/usr/local/bin
+
+################################################################################
+# This is the directory where "make install" will place elvis' support files,
+# such as the help text and the default initialization scripts. If you change
+# the value here, then you also need to change it in "config.h"
+LIBDIR=/usr/local/lib/elvis
+
+################################################################################
+# This is the shell command for copying one file to another
+CP=cp
+
+###############################################################################
+###############################################################################
+###############################################################################
+########### ###########
+########### S T O P ! ###########
+########### ###########
+########### You shouldn't need to modify anything below this line ###########
+########### ###########
+###############################################################################
+###############################################################################
+###############################################################################
+
+###############################################################################
+# Portable compilation rules
+
+MISC= BUGS README.html COPYING INSTALL Makefile.in configure instman.sh\
+ elvis.lsm makwin32.bat makmsdos.bat e2
+OSSRCS= os$(OS)$(SLASH)osblock.c os$(OS)$(SLASH)osdir.c\
+ os$(OS)$(SLASH)osprg.c os$(OS)$(SLASH)ostext.c\
+ os$(OS)$(SLASH)tcaphelp.c
+OSOBJS= osblock$(OBJ) osdir$(OBJ) osprg$(OBJ) ostext$(OBJ)
+OSOBJS2=tcaphelp$(OBJ)
+OSHDRS= os$(OS)$(SLASH)osdef.h
+GUISRCS=guix11.c guicurs.c guitcap.c guiopen.c
+GUIOBJS=guix11$(OBJ) guicurs$(OBJ) guitcap$(OBJ) guiopen$(OBJ)
+LPSRCS= lpescape.c lpovrtyp.c lpps.c
+LPOBJS= lpescape$(OBJ) lpovrtyp$(OBJ) lpps$(OBJ)
+HDRS= $(OSHDRS) buffer.h buffer2.h calc.h cut.h digraph.h display.h\
+ display2.h draw.h draw2.h elvis.h elvisio.h event.h ex.h gui.h gui2.h\
+ input.h lowbuf.h lp.h map.h mark.h message.h misc.h more.h move.h\
+ need.h operator.h opsys.h optglob.h options.h regexp.h safe.h scan.h\
+ session.h state.h state2.h version.h vi.h vicmd.h window.h config.h
+SRCS= $(OSSRCS) $(GUISRCS) $(LPSRCS) buffer.c calc.c cut.c digraph.c\
+ display.c dmhex.c dmmarkup.c dmnormal.c dmsyntax.c draw.c\
+ event.c ex.c exaction.c exconfig.c exedit.c exmake.c gui.c input.c\
+ io.c lowbuf.c lp.c map.c mark.c message.c misc.c more.c move.c\
+ need.c operator.c optglob.c options.c regexp.c regsub.c safe.c scan.c\
+ search.c session.c state.c vi.c vicmd.c window.c
+OBJ1= $(OSOBJS) optglob$(OBJ) options$(OBJ) safe$(OBJ) session$(OBJ)
+OBJ2= buffer$(OBJ) calc$(OBJ) digraph$(OBJ) display$(OBJ) gui$(OBJ)\
+ lowbuf$(OBJ) mark$(OBJ) misc$(OBJ) io$(OBJ) dmhex$(OBJ)\
+ dmmarkup$(OBJ) dmnormal$(OBJ) dmsyntax$(OBJ) scan$(OBJ)
+OBJ3= $(OSOBJS2) cut$(OBJ) draw$(OBJ) event$(OBJ) ex$(OBJ) exaction$(OBJ)\
+ exconfig$(OBJ) exedit$(OBJ) exmake$(OBJ) input$(OBJ) lp$(OBJ)\
+ map$(OBJ) message$(OBJ) move$(OBJ) more$(OBJ) need$(OBJ) operator$(OBJ)\
+ regexp$(OBJ) regsub$(OBJ) search$(OBJ) state$(OBJ) tinytcap$(OBJ)\
+ vi$(OBJ) vicmd$(OBJ) window$(OBJ)
+OBJS= $(OBJ1) $(OBJ2) $(OBJ3)
+CFLAGS= $(FLAGI)os$(OS)
+EVERY= $(ALL) verify$(EXE) elvdump$(EXE) calc$(EXE)
+SHELL= /bin/sh
+DISTRIB=elvis-2.0
+
+all: $(ALL)
+
+every: $(EVERY)
+
+elvis$(EXE): $(HDRS) main$(OBJ) $(OBJS) $(GUIOBJS) $(LPOBJS)
+ $(CC) $(CFLAGS) main$(OBJ) $(OBJS) $(GUIOBJS) $(LPOBJS) $(LIBS) -o elvis$(EXE)
+
+ctags$(EXE): ctags.c os$(OS)$(SLASH)osdir.c
+ $(CC) $(CFLAGS) -DSORT$(OS) ctags.c -o ctags$(EXE)
+
+ref$(EXE): ref.c os$(OS)$(SLASH)osdir.c
+ $(CC) $(CFLAGS) ref.c -o ref$(EXE)
+
+fmt$(EXE): fmt.c os$(OS)$(SLASH)osdir.c
+ $(CC) $(CFLAGS) fmt.c -o fmt$(EXE)
+
+verify$(EXE): $(HDRS) verify$(OBJ) $(OBJ1) $(OBJ2)
+ $(CC) $(CFLAGS) verify$(OBJ) $(OBJ1) $(OBJ2) -o verify$(EXE)
+
+elvdump$(EXE): $(HDRS) elvdump$(OBJ) $(OBJ1)
+ $(CC) $(CFLAGS) elvdump$(OBJ) $(OBJ1) -o elvdump$(EXE)
+
+calc: $(HDRS) calc.c
+ $(CC) $(CFLAGS) -DTRY calc.c -o calc
+
+###############################################################################
+# Rules for os-dependent files
+
+osblock$(OBJ): os$(OS)$(SLASH)osblock.c
+ $(OSCC) os$(OS)$(SLASH)osblock.c
+
+osdir$(OBJ): os$(OS)$(SLASH)osdir.c
+ $(OSCC) os$(OS)$(SLASH)osdir.c
+
+osprg$(OBJ): os$(OS)$(SLASH)osprg.c
+ $(OSCC) os$(OS)$(SLASH)osprg.c
+
+ostext$(OBJ): os$(OS)$(SLASH)ostext.c
+ $(OSCC) os$(OS)$(SLASH)ostext.c
+
+tcaphelp$(OBJ): os$(OS)$(SLASH)tcaphelp.c
+ $(OSCC) os$(OS)$(SLASH)tcaphelp.c
+
+###############################################################################
+# Handy commands
+
+clean: clean.$(OS)
+
+clean.unix:
+ $(RM) *$(OBJ)
+ $(RM) core
+ $(RM) errlist
+ $(RM) verify.elv
+ $(RM) $(DISTRIB).tgz
+
+clean.msdos:
+ $(RM) *$(OBJ)
+
+clobber: clean
+ $(RM) $(EVERY)
+ $(RM) tags
+ $(RM) detail
+ $(RM) .elv*
+ $(RM) foo
+ $(RM) stderr
+
+sure: verify
+ $(RM) verify.elv
+ verify >detail || gdb verify core
+
+wc: $(SRCS) $(HDRS)
+ wc $(SRCS) $(HDRS) | sort -n
+
+tags: $(SRCS) $(HDRS)
+ ctags -stv $(SRCS) $(HDRS)
+
+ciall: $(SRCS) $(HDRS)
+ ci -u$(REV) Makefile $(SRCS) $(HDRS)
+
+cinever:
+ for i in *.[ch]; do [ -f RCS/$$i,v ] || echo $$i; done
+ for i in os*/.; do (cd $$i; for j in *.[ch]; do [ -f $$j,v ] || echo $$i/$$j; done); done
+
+$(DISTRIB).tgz:
+ rm -rf $(DISTRIB)
+ mkdir $(DISTRIB)
+ mkdir $(DISTRIB)/lib
+ for i in os*; do if [ -d $$i ]; then mkdir $(DISTRIB)/$$i; fi; done
+ #for i in gui*; do if [ -d $$i ]; then mkdir $(DISTRIB)/$$i; fi; done
+ cp *.c *.h $(MISC) $(DISTRIB)
+ rm -f $(DISTRIB)/sample.c
+ cp lib/* $(DISTRIB)/lib
+ for i in os*/*.c os*/*.h os*/*.mak; do cp $$i $(DISTRIB)/$$i; done
+ #for i in gui*/*; do if [ -f $$i ]; then cp $$i $(DISTRIB)/$$i; fi; done
+ rm -f $(DISTRIB)/osunix/osconfig.h
+ rm -f $(DISTRIB)/config.h
+ rm -f $(DISTRIB)/Makefile
+ tar czf $(DISTRIB).tgz $(DISTRIB)
+ rm -rf $(DISTRIB)
+
+lib$(SLASH)elvistrs.msg: $(SRCS)
+ sed -n '/%[cds]/d; /[a-z]:/d; s/\[[a-zA-Z]*\]//; s/\\\\/\\/g; s/.*msg(MSG_[A-Z]*, "\([^ "][^"]*\)".*/\1/p' *.c os*$(SLASH)*.c | sort -u >lib$(SLASH)elvistrs.msg
+
+###############################################################################
+
+install: install.$(OS)
+
+install.unix: $(ALL)
+ rm -f lib/*.bak
+ cp $(ALL) $(BINDIR)
+ (cd $(BINDIR); chmod 0755 $(ALL))
+ test -d $(LIBDIR) || mkdir $(LIBDIR)
+ rm -f $(LIBDIR)/elvis*.hlp
+ cp lib/* $(LIBDIR)
+ (cd lib; for i in *; do chmod 0644 $(LIBDIR)/$$i; done)
+ sh instman.sh -b$(BINDIR) $(ALL)
+
+###############################################################################
+
+uninstall: uninstall.$(OS)
+
+uninstall.unix:
+ (cd $(BINDIR); $(RM) $(ALL))
+ (cd lib; for i in *; do $(RM) $(LIBDIR)/$$i; done)
+ -rmdir $(LIBDIR)
+ sh instman.sh -r -b$(BINDIR) $(ALL)
View
748 Makefile.mix
@@ -1,748 +0,0 @@
-# combined Makefile for ELVIS - a clone of `vi`
-#
-# After editing this Makefile as described below, you should...
-#
-# Use `make` to compile all programs
-# Use `make install` to copy the programs to the BIN directory
-# Use `make clean` to remove all object files
-# Use `make clobber` to remove everything except source & documentation
-# Use `make uue` to produce uuencoded compressed tar archives of the source
-# Use `make sh` to produce shar archives of the source
-#
-# Several groups of Makefile settings are included below. Choose *ONE* group
-# of settings for your particular system, and leave the others commented out.
-# The meanings of these settings are:
-# OBJ filename extension for unlinked object files -- usually .o
-# EXE filename extension for elvis executable file -- .exe, .tpp or null
-# COM filename extension for executable support files -- .com, .tpp or null
-# EXTRA version-specific object files used in elvis
-# EXTRA2 version-specific object files used in elvis & elvrec
-# LIBS any special libraries, such as "-ltermcap"
-# BIN directory where executables should be installed
-# CC the C compiler command, possibly with "memory model" flags
-# CFLAGS compiler flags used to select compile-time options
-# LNK the linker command needed to link OBJ files (if not cc)
-# LFLAGS linker flags used to select link-time options
-# SMALL flag for special small memory model compilation -- usually null
-# LARGE flag for special large memory model compilation -- usually null
-# OF link flag to control the output file's name -- usually -o<space>
-# RF flag used to denote "compile but don't link" -- usually -c
-# PROGS the list of all programs
-# CHMEM any extra commands to be run after ELVIS is linked
-# SORT if the "tags" file must be sorted, then SORT=-DSORT
-# RM the name of a program that deletes files
-# CP name of a program that copies files -- copy or cp, usually
-# LN name of a program that "links" files -- copy or ln, usually
-# SYS type of system & compiler: unx/tos/os9/dos (maybe vms?)
-# DUMMY usually nothing, but OS9 needs "dummy"
-# CFG name of compiler configuration file -- usually null
-
-#---- These settings are recommended for Linux
-#OBJ= .o
-#EXE=
-#COM=
-#EXTRA= unix$(OBJ)
-#EXTRA2=
-#LIBS= -ltermcap
-#BIN= /usr/bin
-#CC= gcc
-#CFLAGS= -DNO_SHIFT_FKEYS -O2
-#SMALL= -s -N
-#LARGE= -s
-#OF= -o ""
-#RF= -c
-#PROGS= elvis$(EXE) ctags$(COM) ref$(COM) elvrec$(COM) fmt$(COM) \
-# elvprsv$(COM)
-#CHMEM=
-#SORT= -DSORT
-#RM= rm -f
-#CP= cp
-#LN= ln -f
-#SYS= unx
-#DUMMY=
-#CFG=
-
-#---- These settings are recommended for System-V UNIX and SCO XENIX-386 ----
-#---- For AIX, add "-D_POSIX_SOURCE -DAIX -DTERMIOS" to CFLAGS.
-#---- For SCO (and maybe others) add "-DNEED_PTEM" to CFLAGS.
-#---- For HPUX add "-DTERMIOS" to CFLAGS and set LIBS=-lcurses. [sdw]
-#OBJ= .o
-#EXE=
-#COM=
-#EXTRA= unix$(OBJ)
-#EXTRA2=
-#LIBS= -ltermcap
-#BIN= /usr/local/bin
-#CC= cc
-#CFLAGS= -DM_SYSV -O -DNO_SHIFT_FKEYS
-#SMALL=
-#LARGE=
-#OF= -o ""
-#RF= -c
-#PROGS= elvis$(EXE) ctags$(COM) ref$(COM) elvrec$(COM) fmt$(COM) \
-# elvprsv$(COM)
-#CHMEM=
-#SORT= -DSORT
-#RM= rm -f
-#CP= cp
-#LN= ln
-#SYS= unx
-#DUMMY=
-#CFG=
-
-#---- These settings are recommended for SCO XENIX-286 ----
-#OBJ= .o
-#EXE=
-#COM=
-#EXTRA= unix$(OBJ)
-#EXTRA2=
-#LIBS= -ltcap
-#BIN= /usr/local/bin
-#CC= cc
-#CFLAGS= -Ox -DCS_IBMPC
-#SMALL=
-#LARGE= -M2m
-#OF= -o ""
-#RF= -c
-#PROGS= elvis$(EXE) ctags$(COM) ref$(COM) elvrec$(COM) fmt$(COM) \
-# elvprsv$(COM)
-#CHMEM=
-#SORT= -DSORT
-#RM= rm -f
-#CP= cp
-#LN= ln
-#SYS= unx
-#DUMMY=
-#CFG=
-###### compilation rule for Xenix-286
-#.c.o:
-# $(CC) $(LARGE) $(CFLAGS) $(RF) $<
-
-#---- These settings are recommended for BSD 4.3 UNIX and SunOS ----
-#---- For BSD386, add "-DTERMIOS" to CFLAGS
-#OBJ= .o
-#EXE=
-#COM=
-#EXTRA= unix$(OBJ)
-#EXTRA2=
-#LIBS= -ltermcap
-#BIN= /usr/local/bin
-#CC= cc
-#CFLAGS= -Dbsd -O
-#SMALL=
-#LARGE=
-#OF= -o ""
-#RF= -c
-#PROGS= elvis$(EXE) ctags$(COM) ref$(COM) elvrec$(COM) elvprsv$(COM)
-#CHMEM=
-#SORT= -DSORT
-#RM= rm -f
-#CP= cp
-#LN= ln
-#SYS= unx
-#DUMMY=
-#CFG=
-
-#---- These settings are recommended for Coherent 4.0 ----
-#OBJ=.o
-#EXE=
-#COM=
-#EXTRA= unix$(OBJ) tinyprnt$(OBJ)
-#EXTRA2=
-#LIBS= -ltermcap
-#BIN= /usr/bin
-#CC= cc
-#CFLAGS= -O -VSUVAR -DNO_S5WINSIZE
-#SMALL=
-#LARGE=
-#OF= -o ""
-#RF= -c
-#PROGS= elvis$(EXE) ctags$(COM) ref$(COM) elvrec$(COM) fmt$(COM) \
-# elvprsv$(COM)
-#CHMEM=
-#SORT=
-#RM= rm -f
-#CP= cp
-#LN= ln
-#SYS= unx
-#DUMMY=
-#CFG=
-
-#---- These settings are recommended for Coherent 3.x ----
-#OBJ=.o
-#EXE=
-#COM=
-#EXTRA= unix$(OBJ) tinyprnt$(OBJ)
-#EXTRA2=
-#LIBS= -lterm
-#BIN= /usr/bin
-#CC= cc
-#CFLAGS= -O -DCOHERENT -VSUVAR -DCRUNCH -DNO_CHARATTR -DNO_CURSORSHAPE \
-# -DNO_DIGRAPH -DNO_MKEXRC -DNO_POPUP -DNO_FKEYS -DNO_ABBR -DNO_TAGSTACK
-#SMALL=
-#LARGE=
-#OF= -o ""
-#RF= -c
-#EVAL= eval
-#PROGS= elvis$(EXE) ctags$(COM) ref$(COM) elvrec$(COM) fmt$(COM) \
-# elvprsv$(COM)
-#CHMEM= fixstack 2000 elvis$(EXE)
-#SORT=
-#RM= rm -f
-#CP= cp
-#LN= ln
-#SYS= unx
-#DUMMY=
-#CFG=
-
-#---- These settings are recommended for Minix-ST ----
-#OBJ= .o
-#EXE=
-#COM=
-#EXTRA= unix$(OBJ)
-#EXTRA2=
-#LIBS=
-#BIN= /usr/bin
-#CC= cc
-##CC= gcc -s
-#CFLAGS=
-#SMALL=
-#LARGE=
-#OF= -o ""
-#RF= -c
-#PROGS= elvis$(EXE) ctags$(COM) ref$(COM) elvrec$(COM) fmt$(COM) \
-# elvprsv$(COM)
-#CHMEM= chmem =18000 elvis$(EXE)
-#SORT=
-#RM= rm -f
-#CP= cp
-#LN= ln
-#SYS= unx
-#DUMMY=
-#CFG=
-
-#---- These settings are recommended for Minix-PC ----
-#OBJ= .o
-#EXE=
-#COM=
-#EXTRA= tinytcap$(OBJ) unix$(OBJ) tinyprnt$(OBJ)
-#EXTRA2=
-#LIBS=
-#BIN= /usr/bin
-#CC= cc
-#CFLAGS= -O -m -w -DCRUNCH \
-# -DNO_MKEXRC -DNO_CURSORSHAPE -DNO_CHARATTR -DNO_SHOWMODE \
-# -DNO_MODELINE -DNO_OPTCOLS -DNO_DIGRAPH -DNO_EXTENSIONS \
-# -DNO_ERRLIST -DNO_FKEY -DNO_VISIBLE -DNO_COLOR -DNO_POPUP \
-# -DNO_TAGSTACK
-###(not -NO_AT -DNO_SENTENCE -DNO_ABBR -DNO_RECYCLE -DNO_MAGIC -DNO_CHARSEARCH)
-#SMALL=
-#LARGE=
-#OF= -o ""
-#RF= -c
-#PROGS= elvis$(EXE) ctags$(COM) ref$(COM) elvrec$(COM) fmt$(COM) \
-# elvprsv$(COM)
-#CHMEM=
-#SORT=
-#RM= rm -f
-#CP= cp
-#LN= ln
-#SYS= unx
-#DUMMY=
-#CFG=
-
-#---- These settings are recommended for Amiga port done using Aztec 5.2b ----
-# For AmigaDOS 2.04, you're all set! Its the default target!
-#OBJ= .o
-#EXE=
-#COM=
-#EXTRA= amiga$(OBJ) amitty$(OBJ) amisysio$(OBJ)
-#EXTRA2= tinytcap$(OBJ)
-#LIBS= -lc
-#BIN= sys:utilities
-#CC= cc
-#CFLAGS= -sob -Damiga
-#LNK= ln
-#LFLAGS=
-#SMALL=
-#LARGE=
-#OF= -o
-#RF=
-#PROGS1= elvis$(EXE) ctags$(COM) ref$(COM) elvrec$(COM) fmt$(COM)
-#PROGS2= elvprsv$(COM) ex$(COM) vi$(COM) view$(COM) input$(COM)
-#PROGS= $(PROGS1) $(PROGS2)
-#CHMEM=
-#SORT=
-#RM= delete
-#CP= copy
-#LN= copy
-#SYS= ami
-#DUMMY=
-#CFG=
-
-#---- These settings are recommended for MS-DOS + MS-C + NDMAKE ----
-#OBJ= .obj
-#EXE= .exe
-#COM= .exe # .com might work, try it
-#EXTRA= pc$(OBJ) sysdos$(OBJ) tinytcap$(OBJ)
-#EXTRA2=
-#LIBS=
-#BIN= c:\dos
-#CC= cl
-#CFLAGS= -O -DCS_IBMPC -DCS_SPECIAL -DINTERNAL_TAGS
-#SMALL= /AC
-#LARGE= /AL
-#OF= -o
-#RF= -c
-#PROGS1= elvis$(EXE) ex$(COM) ctags$(COM) ref$(COM) elvrec$(COM)
-#PROGS2= wildcard$(COM) fmt$(COM) elvprsv$(COM)
-#PROGS= $(PROGS1) $(PROGS2)
-#CHMEM= exehdr /stack:0x4000 elvis.exe
-#SORT=
-#RM= del
-#CP= copy
-#LN= copy
-#SYS= dos
-#DUMMY=
-#CFG=
-###### compilation rule for MS-C
-#.c.obj:
-# $(CC) $(LARGE) $(CFLAGS) $(RF) $<
-
-##---- These settings are recommended for MS-DOS + TURBO/BORLAND C ----
-## CFG: name of the compiler config and response files
-## TC_LIB & TC_INC: location of standard libraries and header files.
-#OBJ= .obj
-#EXE= .exe
-#COM= .exe
-#EXTRA= pc$(OBJ) sysdos$(OBJ) tinytcap$(OBJ)
-#EXTRA2=
-#LIBS=@borland.rsp
-#BIN= c:\bin
-#CFG= borland.cfg borland.rsp
-#CC= bcc
-#TC_LIB= c:\bcc\lib
-#TC_INC= c:\bcc\include
-#CFLAGS= +borland.cfg
-## uncomment next line iff using bcc, and you want to use pre-compiled headers
-#HDRS= -H -H=borland.hdr
-## uncomment next line to use med memory model for elvis
-##CRNCH= -DCRUNCH -mm
-#TC_CFLAGS1= -ml -O -f- -w- -v -vi- -G- -DCS_IBMPC -DCS_SPECIAL -DINTERNAL_TAGS
-#TC_CFLAGS2= $(HDRS) $(CRNCH) -I$(TC_INC) -L$(TC_LIB)
-## extra flags for compiling support programs
-#SMALL= -ms -lt -H- -v-
-#LARGE=
-## extra flags for linking elvis (strip symbols)
-#EFLAGS= -v-
-#OF= -e
-#RF= -c
-#PROGS1= elvis$(EXE) ex$(COM) ctags$(COM) ref$(COM) elvrec$(COM)
-#PROGS2= wildcard$(COM) fmt$(COM) elvprsv$(COM)
-#PROGS= $(PROGS1) $(PROGS2)
-#CHMEM=
-#SORT=
-#RM= del
-#CP= copy
-#LN= copy
-#SYS= dos
-#DUMMY=
-##source file compilation rule:
-#.c.obj:
-# $(CC) $(CFLAGS) $(RF) {$< }
-
-#---- These settings can make DOS executables using the SCO UNIX compiler
-#OBJ= .o
-#EXE= .exe
-#COM= .exe
-#EXTRA= pc$(OBJ) sysdos$(OBJ) tinytcap$(OBJ)
-#EXTRA2=
-#LIBS=
-#BIN= a:
-#CC= cc -dos -F 4000
-#CFLAGS= -DXDOS -O -DCS_IBMPC -DCS_SPECIAL -DINTERNAL_TAGS
-#SMALL= -M0s
-#LARGE= -M0l
-#OF= -o ""
-#RF= -c
-#PROGS1= elvis$(EXE) ex$(COM) ctags$(COM) ref$(COM) elvrec$(COM)
-#PROGS2= wildcard$(COM) fmt$(COM) elvprsv$(COM)
-#PROGS= $(PROGS1) $(PROGS2)
-#CHMEM=
-#SORT=
-#RM= rm -f
-#CP= doscp -r
-#LN= doscp -r
-#SYS= xdos
-#DUMMY=
-#CFG=
-###### compilation rule for UNIX->DOS cross compiler
-#.c.o:
-# $(CC) $(LARGE) $(CFLAGS) -c $<
-
-#--- These settings are recommended for Atari TOS + Mark Williams C or Gnu C ----
-#OBJ= .o
-#EXE= .ttp
-#COM= .ttp
-#EXTRA= sysdos$(OBJ) tinytcap$(OBJ)
-#EXTRA2= atari$(OBJ)
-#LIBS=
-#BIN= c:\ #
-#CC= cc -VPEEP
-##CC= gcc -s
-#CFLAGS= -O -DCS_IBMPC -DCS_SPECIAL
-#SMALL=
-#LARGE=
-#OF= -o
-#RF= -c
-#PROGS= elvis$(EXE) ctags$(COM) ref$(COM) elvrec$(COM) wildcard$(COM) \
-# shell$(COM) fmt$(COM) elvprsv$(COM)
-#CHMEM= @echo -n
-#SORT=
-#RM= rm -f
-#CP= copy
-#LN= copy
-#SYS= tos
-#DUMMY=
-#CFG=
-
-#---- These settings are recommended for OS-9/68K V2.3 ----
-#OBJ= .r
-#EXE=
-#COM=
-#EXTRA= tinyprnt$(OBJ)
-#EXTRA2= osk$(OBJ)
-#LIBS= -l=/dd/lib/termlib.l
-#BIN= /dd/usr/cmds
-#CC= cc
-#ODIR= /dd/usr/src/elvis
-#CFLAGS= -gq -m=2 -DNO_CURSORSHAPE
-#SMALL=
-#LARGE=
-#OF= -f=$(ODIR)/
-#RF= -r
-#PROGS= elvis$(EXE) vi$(COM) view$(COM) input$(COM) ctags$(COM) ref$(COM) \
-# elvrec$(COM) fmt$(COM) elvprsv$(COM)
-#PROGS1=
-#PROGS2=
-#CHMEM= touch elvis$(EXE)
-#SORT=
-#RM= del *.stb *.dbg
-#CP= copy
-#LN= copy
-#SYS= os9
-#DUMMY= dummy
-#CFG=
-#TC_CFLAGS1=
-#TC_CFLAGS2=
-#EFLAGS=
-#LNK=
-#LFLAGS=
-
-##---- These settings probably won't work for VAX/VMS, but they might ----
-#OBJ= .obj
-#EXE= .exe
-#COM= .exe
-#EXTRA= tinytcap$(OBJ)
-#EXTRA2= vmsio$(OBJ)
-#LIBS=
-#BIN
-#CC= cc
-#CFLAGS= /define=NO_CURSORSHAPE /define=INTERNAL_TAGS
-#SMALL=
-#LARGE=
-#OF= /exe=
-#RF=
-#PROGS= elvis.exe elvprsv.exe elvrec.exe ctags.exe ref.exe
-#CHMEM=
-#SORT=
-#RM= del
-#CP= copy
-#LN= copy
-#SYS= vms
-#DUMMY=
-#CFG= vmsopt.opt
-#
-##compilation rules
-#.exe.c:
-# $(CC) $<.c
-# link $(OF)$<.exe,vmslink/opt
-#.obj.c:
-# $(CC) $(CFLAGS) $<.c
-
-##---- These settings pretty much work for OS/2 and emx+gcc 0.8g ----
-#OBJ= .obj
-#EXE= .exe
-#COM= .exe
-#EXTRA= unix$(OBJ) sysos2$(OBJ)
-#EXTRA2=
-#LIBS= elvis.def -ltermcap
-#BIN= /usr/local/bin
-## for emx 0.8f and earlier, change -Zmtd to -Zmt
-#CC= gcc -Zomf -Zmtd -s -O
-#CFLAGS= -DOS2
-#SMALL= elvis.def
-#LARGE=
-#OF= -o
-#RF= -c
-#PROGS= elvis$(EXE) ctags$(COM) ref$(COM) elvrec$(COM) fmt$(COM) \
-# elvprsv$(COM) wildcard$(COM) ex$(COM) vi$(COM) view$(COM)
-#CHMEM=
-#SORT= -DSORT
-#RM= del
-#CP= copy
-#SYS= unx
-#DUMMY=
-#CFG=
-###### compilation rule for emx
-#.SUFFIXES: .c $(OBJ)
-#.c$(OBJ):
-# $(CC) $(LARGE) $(CFLAGS) $(RF) $<
-
-#---- Settings for QNX 4.2 (Watcom 9.5) ----
-#OBJ= .o
-#EXE=
-#COM=
-#EXTRA= unix$(OBJ)
-#EXTRA2=
-#LIBS= -ltermcap -lunix
-#BIN= /usr/bin
-#CC+= -ml
-#CFLAGS+= -DCS_IBMPC -DCS_SPECIAL -D_POSIX_SOURCE -DTERMIOS -DM_SYSV
-#SMALL=
-#LARGE=
-#OF= -o
-#RF= -c
-#PROGS= elvis$(EXE) ctags$(COM) ref$(COM) elvrec$(COM) fmt$(COM) \
-# elvprsv$(COM)
-#CHMEM=
-#SORT= -DSORT
-#RM= rm -f
-#CP= cp
-#SYS= unx
-#DUMMY=
-#CFG=
-
-
-###########################################################################
-###########################################################################
-### ###
-### The rest of this Makefile contains no user-serviceable parts ###
-### ###
-###########################################################################
-###########################################################################
-
-OBJS1= blk$(OBJ) cmd1$(OBJ) cmd2$(OBJ) ctype$(OBJ) curses$(OBJ) cut$(OBJ)
-OBJS2= ex$(OBJ) input$(OBJ) main$(OBJ) misc$(OBJ) modify$(OBJ) move1$(OBJ)
-OBJS3= move2$(OBJ) move3$(OBJ) move4$(OBJ) move5$(OBJ) opts$(OBJ) recycle$(OBJ)
-OBJS4= redraw$(OBJ) regexp$(OBJ) regsub$(OBJ) system$(OBJ) tio$(OBJ) tmp$(OBJ)
-OBJS5= vars$(OBJ) vcmd$(OBJ) vi$(OBJ)
-OBJS= $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4) $(OBJS5)
-
-ALIAS= alias$(OBJ)
-
-###########################################################################
-
-all: $(PROGS)
- @echo done.
-
-elvis$(EXE): linkelv.$(SYS)
- @echo "elvis linked."
-
-ctags$(COM): $(CFG) ctags.c wildcard.c
- $(CC) $(CFLAGS) $(SMALL) $(SORT) $(OF)ctags$(COM) ctags.c $(EXTRA2)
-
-ref$(COM): $(CFG) ref.c
- $(CC) $(CFLAGS) $(SMALL) $(OF)ref$(COM) ref.c
-
-elvrec$(COM): $(CFG) elvrec.c
- $(CC) $(CFLAGS) $(SMALL) $(OF)elvrec$(COM) elvrec.c $(EXTRA2)
-
-ex$(COM): linkex.$(SYS)
- @echo "ex done."
-
-vi$(COM): linkvi.$(SYS)
- @echo "vi done."
-
-view$(COM): linkview.$(SYS)
- @echo "view done."
-
-input$(COM): linkinput.$(SYS)
- @echo "input done."
-
-shell$(COM): $(CFG) shell.c
- $(CC) $(CFLAGS) $(SMALL) $(OF)shell$(COM) shell.c
-
-wildcard$(COM): $(CFG) wildcard.c ctype.c
- $(CC) $(CFLAGS) $(SMALL) $(OF)wildcard$(COM) wildcard.c
-
-fmt$(COM): $(CFG) fmt.c
- $(CC) $(CFLAGS) $(SMALL) $(OF)fmt$(COM) fmt.c $(EXTRA2)
-
-elvprsv$(COM): $(CFG) elvprsv.c amiprsv.c prsvunix.c prsvdos.c wildcard.c ctype.c
- $(CC) $(CFLAGS) $(SMALL) $(OF)elvprsv$(COM) elvprsv.c
-
-##############################################################################
-# "It all depends..."
-
-$(OBJS): vi.h curses.h config.h regexp.h ctype.h
-
-##############################################################################
-# The way to link elvis is system dependent, and maybe compiler dependent too.
-
-# elvis executable compilation rule for: AmigaDOS
-linkelv.ami: $(OBJS) $(EXTRA) $(EXTRA2)
- $(LNK) $(LFLAGS) $(OF)elvis$(EXE) $(OBJS) $(EXTRA) $(EXTRA2) $(LIBS)
- $(CHMEM)
- @touch $@
-
-# elvis executable compilation rule for: all unix, os9, tos, msc dos
-linkelv.unx linkelv.tos linkelv.os9 linkelv.cl linkelv.xdos: \
- $(OBJS) $(EXTRA) $(EXTRA2)
- $(CC) $(LARGE) $(CFLAGS) $(OF)elvis$(EXE) $(OBJS) $(EXTRA) $(EXTRA2) $(LIBS)
- $(CHMEM)
- @touch $@
-
-linkelv.dos: linkelv.$(CC)
-
-# elvis executable compilation rule for: borland tcc, bcc
-linkelv.bcc linkelv.tcc: $(CFG) $(OBJS) $(EXTRA) $(EXTRA2)
- $(CC) $(CFLAGS) $(LIBS)
- @echo done > linkelv.$(CC)
-
-linkelv.vms: $(OBJS) $(EXTRA) $(EXTRA2)
- link$(OF)elvis.exe main,$(CFG)/opt
-
-##############################################################################
-
-# borland/turbo c config files
-borland.cfg: $(DUMMY)
- echo $(TC_CFLAGS1)> borland.cfg
- echo $(TC_CFLAGS2)>> borland.cfg
-
-borland.rsp: $(DUMMY)
- echo $(EFLAGS) $(OF)elvis$(EXE) > borland.rsp
- echo $(OBJS1)>> borland.rsp
- echo $(OBJS2)>> borland.rsp
- echo $(OBJS3)>> borland.rsp
- echo $(OBJS4)>> borland.rsp
- echo $(OBJS5)>> borland.rsp
- echo $(EXTRA)>> borland.rsp
-
-##############################################################################
-# elvis executable compilation rule for: AmigaDOS
-linkex.ami: alias.o
- $(LNK) $(LFLAGS) $(OF)ex$(EXE) alias.o $(LIBS)
-
-linkex.unx linkex.tos linkex.xdos linkex.dos linkex.vms: $(CFG) alias.c
- $(CC) $(CFLAGS) $(SMALL) $(OF)ex$(COM) alias.c
-
-linkex.os9: $(DUMMY)
- @echo done >/nil
-
-linkvi.ami linkvi.unx linkvi.tos linkvi.xdos linkvi.dos linkvi.vms: ex$(COM)
- $(CP) ex$(COM) vi$(COM)
-
-linkvi.os9: alias.r
- $(CC) $(CFLAGS) $(OF)vi$(COM) alias.r
- @touch $@
-
-linkview.ami linkview.unx linkview.tos linkview.xdos linkview.dos linkview.vms: ex$(COM)
- $(CP) ex$(COM) view$(COM)
-
-linkview.os9: alias.r
- $(CC) $(CFLAGS) $(OF)view$(COM) alias.r
- @touch $@
-
-linkinput.ami linkinput.unx linkinput.tos linkinput.xdos linkinput.dos linkinput.vms: ex$(COM)
- $(CP) ex$(COM) input$(COM)
-
-linkinput.os9: alias.r
- $(CC) $(CFLAGS) $(OF)input$(COM) alias.r
- @touch $@
-
-##############################################################################
-# installation is system-dependent
-
-install: $(PROGS) inst.$(SYS)
- @echo Installation complete.
-
-inst.ami: $(DUMMY)
- MakeDir $(BIN)/Elvis
- Assign Elvis: $(BIN)/Elvis
- $(CP) $(PROGS) Elvis:
- @echo ::: YOU STILL NEED TO EDIT THE S:STARTUP-SEQUENCE FILE,
- @echo ::: TO HAVE TEMP FILES PRESERVED AFTER A SYSTEM CRASH.
-
-
-inst.unx: $(DUMMY)
- $(CP) $(PROGS) $(BIN)
- (cd $(BIN); chmod 755 $(PROGS))
- (cd $(BIN); chown bin $(PROGS))
- (cd $(BIN); chown root elvprsv$(COM) elvrec$(COM))
- (cd $(BIN); chmod 4755 elvprsv$(COM) elvrec$(COM))
- -$(LN) $(BIN)/elvis $(BIN)/vi
- -$(LN) $(BIN)/elvis $(BIN)/ex
- -$(LN) $(BIN)/elvis $(BIN)/view
- -$(LN) $(BIN)/elvis $(BIN)/input
- test -d /usr/preserve || (mkdir /usr/preserve; chmod 755 /usr/preserve)
- @if test -d /etc/rc2.d; then \
- echo $(BIN)/elvprsv /tmp/elv* >/etc/rc2.d/S03elvis; \
- else \
- echo "::: YOU STILL NEED TO EDIT THE /ETC/RC FILE, OR WHATEVER,"; \
- echo "::: TO HAVE TEMP FILES BE PRESERVED AFTER A SYSTEM CRASH."; \
- fi
- sh instman.sh $(PROGS)
-
-inst.dos: $(DUMMY)
- for %a in ($(PROGS1)) do copy %a $(BIN)
- for %a in ($(PROGS2)) do copy %a $(BIN)
- $(CP) $(BIN)\ex$(COM) $(BIN)\vi$(COM)
- $(CP) $(BIN)\ex$(COM) $(BIN)\view$(COM)
- $(CP) $(BIN)\ex$(COM) $(BIN)\input$(COM)
- -mkdir c:\preserve
- -mkdir c:\tmp
- @echo ::: YOU STILL NEED TO EDIT YOUR AUTOEXEC.BAT FILE TO
- @echo ::: HAVE TEMP FILES BE PRESERVED AFTER A SYSTEM CRASH.
-
-inst.xdos: $(DUMMY)
- $(CP) $(PROGS) $(BIN)
- $(CP) ex$(COM) $(BIN)/vi$(COM)
- $(CP) ex$(COM) $(BIN)/view$(COM)
- $(CP) ex$(COM) $(BIN)/input$(COM)
- @echo ::: YOU WILL NEED TO EDIT THE AUTOEXEC.BAT FILE TO
- @echo ::: HAVE TEMP FILES BE PRESERVED AFTER A SYSTEM CRASH.
-
-inst.tos: $(DUMMY)
- $(CP) $(PROGS) $(BIN)
-
-inst.os9: $(DUMMY)
- $(CP) $(PROGS) -rw=$(BIN)
- chd $(BIN); attr -epenprnpw $(PROGS)
- @echo ::: YOU STILL NEED TO EDIT THE /DD/STARTUP FILE, OR WHATEVER,
- @echo ::: TO HAVE TEMP FILES BE PRESERVED AFTER A SYSTEM CRASH.
-
-inst.vms: $(DUMMY)
- @echo how?
-
-##############################################################################
-# clobbering is system dependent, because DOS's "copy" can't handle multiple
-# filenames
-
-clobber: clean clob.$(SYS)
- @echo -n
-
-clean: $(DUMMY)
- $(RM) *$(OBJ)
- $(RM) elvis?.uue
- $(RM) elvis?.sh
- $(RM) core
- $(RM) linkelv.$(SYS)
-
-clob.unx clob.tos clob.os9 clob.xdos clob.vms: $(DUMMY)
- $(RM) tags refs $(PROGS)
-
-clob.dos : $(DUMMY)
- for %a in ($(PROGS1)) do $(RM) %a
- for %a in ($(PROGS2)) do $(RM) %a
- for %a in (tags refs) do $(RM) %a
View
173 Pkgfile
@@ -1,173 +0,0 @@
-# This file contains a list of files which are part of elvis, and which
-# are to be included in one distribution package or another. This file is
-# accessed by the "pkg" program... which you probably don't have, but that's
-# okay.
-#
-# This file is likely to be altered fairly often. Currently, the available
-# packages are:
-src: distrib makefiles source mansrc manpages examples
-dos: distrib dosexe book manpages
-os2: distrib dosexe book manpages
-
-# The above packages refer to the following subsets of files.
-# (The '@' before the subset names are clues to the pkg program. Ignore them.)
-@distrib # "README", "MANIFEST", and similar documentation files
-@makefiles # "Makefile.mix" and similar files used to guide compilation
-@source # all "*.c" and "*.h" files
-@manpages # man-pages (both plaintext & nroff forms)
-@book # "Elvisman.txt"
-@mansrc # nroff source code for book sections & man pages
-@dosexe # MS-DOS executables
-@os2exe # OS/2 executables (includes DLLs)
-@examples # sample configuration files (non-portable)
-
-# Directory where documentation is stored
-DOC=doc
-
-
-distrib:
- CHANGES
- INSTALL
- MANIFEST
- Pkgfile
- PATCHES
- README
-
-makefiles:
- Elvis.lnk
- Elvis.mak
- Elvis.prj
- Makefile.mix
- elvis.def
- instman.sh
- vmsbuild.com
- vmslink.opt
-
-source:
- alias.c
- amiga.c
- amiprsv.c
- amistat.h
- amisysio.c
- amitty.c
- amiwild.c
- atari.c
- blk.c
- borland.h
- cmd1.c
- cmd2.c
- config.h
- ctags.c
- ctype.c
- ctype.h
- curses.c
- curses.h
- cut.c
- elvprsv.c
- elvrec.c
- ex.c
- fmt.c
- input.c
- main.c
- misc.c
- modify.c
- move1.c
- move2.c
- move3.c
- move4.c
- move5.c
- opts.c
- osk.c
- osk.h
- pc.c
- prsvdos.c
- prsvunix.c
- recycle.c
- redraw.c
- ref.c
- regexp.c
- regexp.h
- regsub.c
- shell.c
- sysdos.c
- sysos2.c
- system.c
- tinyprnt.c
- tinytcap.c
- tio.c
- tmp.c
- unix.c
- vars.c
- vcmd.c
- vi.c
- vi.h
- vmsio.c
- vmswild.c
- wildcard.c
-
-examples:
- novice.rc
- profile.sh
- vmssetup.com
-
-mansrc:
- $DOC/Makefile
- $DOC/elvcol
- $DOC/cflags.ms
- $DOC/ctags.man
- $DOC/cutbufs.ms
- $DOC/differ.ms
- $DOC/elvis.man
- $DOC/elvprsv.man
- $DOC/elvrec.man
- $DOC/environ.ms
- $DOC/ex.ms
- $DOC/fmt.man
- $DOC/index.ms
- $DOC/init.ms
- $DOC/internal.ms
- $DOC/intro.ms
- $DOC/makefile.ms
- $DOC/options.ms
- $DOC/question.ms
- $DOC/ref.man
- $DOC/regexp.ms
- $DOC/termcap.ms
- $DOC/title.ms
- $DOC/ver.ms
- $DOC/versions.ms
- $DOC/visual.ms
-
-book:
- Elvisman.txt
-
-manpages:
- $DOC/ctags.man
- $DOC/elvis.man
- $DOC/elvprsv.man
- $DOC/elvrec.man
- $DOC/fmt.man
- $DOC/ref.man
- $DOC/ctags.doc
- $DOC/elvis.doc
- $DOC/elvprsv.doc
- $DOC/elvrec.doc
- $DOC/fmt.doc
- $DOC/ref.doc
-
-dosexe:
- ctags.exe
- elvis.exe
- elvprsv.exe
- elvrec.exe
- ex.exe
- vi.exe
- view.exe
- fmt.exe
- ref.exe
- wildcard.exe
-
-os2exe:
- dosexe
- emx.dll
- emxlibc.dll
View
27 README
@@ -1,27 +0,0 @@
-Elvis is a clone of vi/ex, the standard UNIX editor. Elvis supports
-nearly all of the vi/ex commands, in both visual mode and colon mode.
-
-Elvis runs under BSD UNIX, AT&T SysV UNIX, SCO Xenix, Minix, MS-DOS
-(Turbo-C or MSC 5.10), Atari TOS, OS9/68000, Coherent, VMS, and
-AmigaDos. An OS/2 port is included here for the first time; it might
-need tweaking. Ports to other operating systems are in progress.
-Contact me before you start porting it to some other OS, because
-somebody else may have already done it for you.
-
-Elvis is freely redistributable, in either source form or executable
-form.
-
-For brief instructions on how to compile and install Elvis, see the
-INSTALL file. For more complete instructions, you should begin by
-reading the appropriate part of the "VERSIONS" section of the manual
-("versions.doc"), and also the whole "CFLAGS" and "MAKEFILE" sections
-("cflags.doc" and "makefile.doc").
-
-
-Author: Steve Kirkendall
- 1500 SW Park Avenue, #326
- Portland, OR 97201
-
-E-mail: kirkenda@cs.pdx.edu
-
-Phone: (503) 228-3869 (evening)
View
585 README.html
@@ -0,0 +1,585 @@
+<HTML><HEAD>
+<TITLE>README.html file for elvis 2.0</TITLE>
+<META name="description" content="Quick intro to elvis 2.0, with links to source code and binaries">
+<META name="keywords" content="vi, elvis, unix, linux, msdos, win32, windows95 windowsNT, nt, editor, source">
+</HEAD><BODY>
+
+<STRONG>CONTENTS</STRONG>
+<MENU>
+<LI><A HREF="#thisfile">1. ABOUT THIS FILE</A>
+<LI><A HREF="#newfeatures">2. NEW FEATURES</A>
+ <MENU>
+ <li><a href="#multibuf">2.1 Multiple edit buffers</a>
+ <li><a href="#multigui">2.2 Multiple user interfaces</a>
+ <li><a href="#multiwin">2.3 Multiple windows (if the user interface supports them)</a>
+ <li><a href="#display">2.4 A variety of display modes</a>
+ <li><a href="#lpr">2.5 Hardcopy from within elvis</a>
+ <li><a href="#calc">2.6 C-like expression evaluator</a>
+ <li><a href="#config">2.7 Extremely customizable</a>
+ <li><a href="#help">2.8 Online help</a>
+ </MENU>
+<LI><A HREF="#chgfeatures">3. CHANGED FEATURES</A>
+ <MENU>
+ <li><a href="#exsyn">3.1 Ex command syntax</a>
+ <li><a href="#crash">3.2 Crash recovery</a>
+ <li><a href="#options">3.3 Options</a>
+ <li><a href="#fileinit">3.4 File initialization</a>
+ <li><a href="#if">3.5 The :if command</a>
+ </MENU>
+<LI><A HREF="#future">4. FUTURE PLANS</A>
+<LI><A HREF="#links">5. LINKS TO RELATED FILES</A>
+</MENU>
+
+<hr>
+<H1><A NAME="thisfile"></A>1. ABOUT THIS FILE</H1>
+
+This file is written in the HTML markup language.
+You can view it with any WWW viewer, such as Mosaic or Netscape.
+You can also use elvis 2.0 to view it; this version of elvis
+has the ability to view HTML documents, and print them.
+
+<P>This file has many hypertext links.
+Use them!
+If you're using elvis 2.0 to browse this file, then hypertextual
+references will appear as underlined text.
+(Except on color PCs;
+since color video cards don't support underlining,
+hypertextual references will be colored -- white on red, by default.)
+To follow the hypertext link, move the cursor onto the underlined
+text and press (Enter).
+To go back, press (Control-T).
+The (Tab) key moves the cursor forward to the next hypertext reference.
+
+<P>If elvis 2.0 doesn't automatically start up in HTML mode when you view this file,
+then you'll need to force it into HTML mode by giving the command
+"<tt>:display html</tt>".
+
+
+<H1><A NAME="newfeatures"></A>2. NEW FEATURES (Relative to elvis 1.8pl4)</H1>
+
+There are <em>a lot</em> of new features.
+The major ones are:
+<ul>
+<li><a href="#multibuf">2.1 Multiple edit buffers</a>
+<li><a href="#multigui">2.2 Multiple user interfaces</a>
+<li><a href="#multiwin">2.3 Multiple windows (if the user interface supports them)</a>
+<li><a href="#display">2.4 A variety of display modes</a>
+<li><a href="#lpr">2.5 Hardcopy from within elvis</a>
+<li><a href="#calc">2.6 C-like expression evaluator</a>
+<li><a href="#config">2.7 Extremely customizable</a>
+<li><a href="#help">2.8 Online help</a>
+</ul>
+
+<h2>2.1 Multiple edit buffers</h2><a name="multibuf"></a>
+You can be editing many files concurrently.
+Also, elvis uses some buffers internally, in addition to the buffers that
+are created for holding your files.
+The command "<tt>:bu</tt>" lists the buffers that hold your files, and
+"<tt>:bu!</tt>" (with a !) lists <em>all</em> buffers.
+
+<p>The command "<tt>:all </tt><var>command</var>" applies an ex command to all
+user buffers, and "<tt>:all! </tt><var>command</var>" applies an ex command to
+<em>all</em> buffers including internal ones.
+An example of this would be "<tt>:all set filename? readonly?</tt>" which tells you
+the status of each buffer's "readonly" option.
+
+<p>Any ex command can be preceded by a buffer name in parentheses.
+This indicates that the command should be applied to that buffer instead
+of the default buffer.
+For example, "<tt>:(foo)set noreadonly</tt>" turns off the readonly option for
+the buffer "foo" even if we're editing some other buffer.
+
+<p>To switch from one buffer to another, enter an ex command line which
+contains <em>only</em> the name of the desired buffer in parentheses.
+For example, the command "<tt>:(foo)</tt>" would cause elvis to switch to the
+buffer "foo".
+(This is intended to be analogous to giving just a line number when
+you want to move the cursor to a given line, as in "<tt>:10</tt>" to move to line 10.)
+
+<h2>2.2 Multiple user interfaces</h2><a name="multigui"></a>
+A single elvis executable can contain several user interfaces.
+Each time elvis starts up it will choose one and use that interface until
+elvis exits.
+The usage message lists the available user interfaces;
+to see this message, give the shell command "elvis -?".
+
+<p>Currently, the most important interfaces are named "x11" and "termcap".
+By default, elvis will use the x11 interface under UNIX if the DISPLAY environment
+variable is set, and the termcap interface otherwise.
+Currently both of these are very basic, but I expect them to become more
+elaborate over time.
+
+<p>The "x11" interface allows you to use the mouse to move the cursor or
+select text.
+Dragging the mouse with the left button pressed selects characters;
+the middle button selects a rectangular region of text; and the right
+button selects whole lines.
+Clicking the left button (without dragging) cancels any pending selection
+and moves the cursor; the middle button simulates keystrokes like xterm;
+the right button moves the cursor like the left button, except that the
+right button doesn't cancel any pending selection.
+Double-clicking the left button will simulate a <kbd>^]</kbd> command,
+which performs tag lookup.
+Double-clicking the right button will simulate a <kbd>^T</kbd> command,
+which returns to the previous position via the tag stack.
+When using the "x11" interface, elvis recognizes some additional command-line
+flags, including
+<strong>-fn</strong> <var>font</var> to set the normal font,
+<strong>-fb</strong> <var>font</var> to set the bold font,
+<strong>-fi</strong> <var>font</var> to set the italic font, and
+<strong>-courier</strong> <var>pointsize</var> to set all three fonts to
+appropriate Courier fonts.
+
+<p>Code is also provided for a "curses" interface, but I don't recommend it.
+I wrote this interface mostly to prove that it could be done.
+
+<h2>2.3 Multiple windows (if the user interface supports them)</h2><a name="multiwin"></a>
+Both the x11 and termcap interfaces support multiple windows.
+(The x11 interface creates a new top-level application window for each
+editing window, and the termcap interface subdivides the screen.)
+Each window can show a different edit buffer, or different windows can
+show the same buffer.
+In the latter case, any changes made in one window are immediately
+reflected in all windows that show that buffer.
+
+<p>Elvis supports most of the same window commands as <em>nvi</em> and
+<em>vim</em>.
+This includes commands such as "<tt>:split</tt>" to create a new window, and
+<kbd>^W ^W</kbd> to switch to a different window.
+
+<h2>2.4 A variety of display modes</h2><a name="display"></a>
+Display modes determine how a text is displayed.
+Elvis supports display modes named "normal", "syntax", "hex", "html", and "man".
+
+<p>Each window can be in a different display mode.
+You set the display mode via the "<tt>:dis </tt><var>mode</var>" command.
+The command "<tt>:dis</tt>" (with no <var>mode</var>) lists all available modes,
+with an asterisk next to the one that this window is currently using.
+There is also a "<tt>:no</tt>" command which is short for "<tt>:dis normal</tt>".
+
+<p>Each buffer has a "bufdisplay" option.
+Each time a window starts to display a buffer, the window's display mode
+is set according to the buffer's bufdisplay option.
+The default "elvis.arf" file automatically sets bufdisplay to a reasonable value.
+
+<p>In visual command mode, <kbd>^W d</kbd> toggles between "normal" mode and the
+buffer's bufdisplay mode.
+If the buffer's bufdisplay option is also "normal", then <kbd>^W d</kbd>
+toggles between "normal" and "hex" modes.
+
+<h2>2.5 Hardcopy from within elvis</h2><a name="lpr"></a>
+Elvis uses its display modes when sending text to the printer, just as it
+does when updating the window. Consequently elvis can be used to print
+hex dumps, pretty-printed C code, or formatted HTML documents or "man" pages.
+
+<p>Throughout the life of elvis 1.x, I was always concerned about how to
+distribute elvis' documentation.
+Many users don't have access to troff; they prefer plain text documentation.
+But people who do have troff would prefer to use it when printing the
+documentation, because the resulting output is prettier than a plain-text
+file.
+For elvis 2.0, this won't be an issue because I'll distribute the documentation
+in the form of HTML documents, and people who have Netscape or another fancy
+HTML reader can use it to print the documentation.
+People who have no fancy HTML readers can still print the documentation
+using elvis itself.
+
+<p>The command for printing a buffer is "<tt>:lpr</tt>"
+(which can be abbreviated to "<tt>:lp</tt>").
+But before you do that, you'll need to set some options...
+<pre graphic>
+.-----------.------------------------------------.
+| OPTION | MEANING |
+|-----------|------------------------------------|
+| lpcolumns | Width of the printer, in columns |
+| lpconvert | Convert Latin-1 chars to PC-8? |
+| lpcrlf | Convert newlines to CR-LF pairs? |
+| lpformfeed| Output a ^L after the last page? |
+| lplines | Length of the page, in lines |
+| lpout | Print spooler program, or filename |
+| lppaper | Paper size (for PostScript only) |
+| lptype | Printer type (see below) |
+| lpwrap | Wrap long lines? (else clip them) |
+^-----------^------------------------------------^
+</pre>
+The most important option is "lptype", since it controls what type of
+escape codes (or whatever) elvis will use to perform font changes.
+The compiled-in default value is "lptype=dumb" which is the most conservative
+value -- it doesn't attempt to perform any font changes.
+The complete list of acceptable values is:
+<pre graphic>
+.-------.----------------------------------------------.
+| VALUE | PRINTER DESCRIPTION |
+|-------|----------------------------------------------|
+| ps | PostScript, one logical page per sheet |
+| ps2 | PostScript, two logical pages per sheet |
+| epson | Most dot-matrix printers, no graphic chars |
+| pana | Panasonic dot-matrix printers |
+| ibm | Dot-matrix printers with IBM graphic chars |
+| hp | HP printers, and most non-PostScript lasers |
+| cr | Line printers, overtypes via carriage-return |
+| bs | Overtypes via backspace, like nroff |
+| dumb | Plain ASCII, no font control |
+^-------^----------------------------------------------^
+</pre>
+
+<h2>2.6 C-like expression evaluator</h2><a name="calc"></a>
+Elvis has a built-in calculator which uses a syntax resembling
+C expressions.
+The names of options can be used in place of variables, and you
+can also use "$<var>NAME</var>" to access the value of an environment
+variable.
+
+<p>Strings are supported.
+Any two strings (or expressions which evaulate to strings) placed side-by-side with no operator between them
+will have their values concatenated.
+You can truncate strings using "<var>string</var>&lt;&lt;<var>length</var>"
+or "<var>string</var>&gt;&gt;<var>length</var>".
+
+<p>There are several built-in functions.
+When you call one of these functions, there must <strong>not</strong> be any
+whitespace between the function name and the following parenthesis.
+The built-in functions are:
+<pre graphic>
+.------------------.--------------------------------------------.
+| FUNCTION(ARG) | RETURN VALUE |
+|------------------|--------------------------------------------|
+| strlen(string) | number of characters in the string |
+| toupper(string) | uppercase version of string |
+| tolower(string) | lowercase version of string |
+| isnumber(string) | "true" iff string is a decimal number |
+| hex(number) | string of hex digits representing number |
+| octal(number) | string of octal digits representing number |
+| char(number) | convert number to 1 ASCII char, as a string|
+| exists(path) | "true" iff file exists |
+| dirperm(path) | string indicating file attributes |
+| dirfile(path) | filename.ext part of a path |
+| dirname(path) | directory part of a pathname |
+| dirdir(path) | directory, like dirname(file) |
+| dirext(path) | extension (including the . ) |
+| basename(path) | filename without extension |
+| elvispath(file) | locate a file in elvis' configuration path |
+| knownsyntax(path)| "true" iff file type is listed in elvis.syn|
+| buffer(bufname) | "true" iff buffer exist |
+| current(name) | value of an internal variable (limited) |
+| feature(name) | "true" iff a given feature is supported |
+^------------------^--------------------------------------------^
+</pre>
+<p>Expressions are used by several commands, including the
+"<tt>:if </tt><var>expression</var>" command.
+The "<tt>:and</tt>" and "<tt>:or</tt>" commands of elvis 1.8 have been removed since "<tt>:if</tt>"
+can easily achieve the same effect simply by using the &amp;&amp; or
+|| operators.
+
+<p>There is also a "<tt>:let </tt><var>option</var><tt>=</tt><var>expression</var>" command,
+which evaluates the <var>expression</var> and sets the <var>option</var>
+to the resulting value.
+Note that unlike :set, :let can only assign a value to a single option at
+a time.
+
+<p>There is also a "</tt>:calc </tt><var>expression</var>" command which simply
+displays the result of the <var>expression.</var>
+Also, if you visibly select some characters (using the <kbd>v</kbd> command) and
+then apply the <kbd>=</kbd> operator to those characters, elvis will evaluate the
+selected text and replace it with the result.
+When <kbd>=</kbd> is applied to lines, it still runs an external filter program
+just as it did in version 1.8.
+
+<p>A slightly different expression syntax is used by the "<tt>:eval </tt><var>expression</var>"
+command.
+The <var>expression</var> is mostly left unchanged, except that text inside
+parentheses is evaluated in the normal syntax. Outside of parentheses the
+only characters that have special meaning are \ and $<var>NAME</var>.
+The :eval command is used to calculate commands and then execute them.
+For example, during initialization elvis performs a "<tt>:eval $EXINIT</tt>" to
+execute the value of the EXINIT environment variable.
+
+<h2>2.7 Extremely customizable</h2><a name="config"></a>
+NOTE: In the following paragraphs, when I say elvis "looks for" a file,
+I mean that it searches through any directories named in the value of the
+"elvispath" option.
+
+<p>When elvis starts up, it looks for a file named "elvis.ini".
+If this file is found, its contents are executed as a series of ex commands.
+The default "elvis.ini" file performs the traditional vi initialization
+such as "<tt>:source $HOME/.exrc</tt>".
+By changing this file, you can completely change the way elvis initializes
+itself.
+As a mild example, you could make it read <em>.elvisrc</em> instead of <em>.exrc.</em>
+
+<p>After interpretting "elvis.ini", elvis looks for a few more files
+right away.
+If it finds them, it loads them into internal edit buffers right away but
+doesn't interpret them yet.
+The most interesting ones are "elvis.arf" and "elvis.bwf".
+
+<p>The "elvis.brf" file is interpretted <b>B</b>efore <b>R</b>eading a
+<b>F</b>ile into an edit buffer.
+Typically, this will set the buffer's "binary" option, depending on its
+file name extension.
+
+<p>The "elvis.arf" file is interpretted <b>A</b>fter <b>R</b>eading a
+<b>F</b>ile into an edit buffer.
+Typically, this will set the buffer's "bufdisplay" option, depending on its
+file name extension.
+
+<p>The "elvis.bwf" files is interpretted <b>B</b>efore <b>W</b>riting the
+<b>F</b>ile back out again.
+It will typically be used to copy the original file to "filename.bak" or
+something like that.
+
+<p>Elvis also supports an "elvis.awf" files, but I haven't
+found much use for it yet.
+Perhaps it could tie-in to a revision control system?
+
+<p>You can use an "elvis.msg" file to translate the normal terse messages
+into verbose messages.
+This is meant to allow elvis to issue messages in a local language.
+Each time elvis issues a message, it attempts to look for a line that
+looks like "<var>terse message</var>: <var>verbose message</var>" and
+if found it will substitute the verbose message for the terse one.
+Messages are then subjected to the same sort of evaluation as for the
+"<tt>:eval </tt><var>expression</var>" command,
+with $1 through $9 used to represent any arguments of the message.
+
+<h2>2.8 Online help</h2><a name="help"></a>
+The command "<tt>:help</tt>" reads the file <em>elvis.html</em>
+(which is an HTML document) and displays it in a separate window.
+When "<tt>:help</tt>" is run with no arguments, it lists the Table of Contents
+which has hypertext links to all the rest of the documentation.
+You can also supply the name of an ex command, option, or vi command
+as an argument to jump directly to the relevent part of the documentation.
+For example, I suggest you try "<tt>:help :help</tt>" to get a description
+of the help command itself.
+
+<H1><a name="chgfeatures"></a>3. CHANGED FEATURES</H1>
+A few features of elvis 1.8 have changed significantly in 2.0.
+They are:
+<MENU>
+<li><a href="#exsyn">3.1 Ex command syntax</a>
+<li><a href="#crash">3.2 Crash recovery</a>
+<li><a href="#options">3.3 Options</a>
+<li><a href="#fileinit">3.4 File initialization</a>
+<li><a href="#if">3.5 The :if command</a>
+</MENU>
+
+<h2><a name="exsyn"></a>3.1 Ex command syntax</h2>
+
+The ex command interpretter in elvis 2.0 is intended to meet POSIX
+specifications, with extensions to support multiple buffers.
+
+<p>POSIX requires most commands to support print flags.
+This is a 'p', 'l', or '#' appended to the end of the command line,
+which causes the current line to be printed when the command is complete.
+For example, ":dp" deletes the current line and then prints the line that
+the cursor is left on.
+
+<p>POSIX also indicates that certain commands can take a "count" argument
+to indicate how many lines are affected.
+For example, ":10d5" is equivelent to ":10,14d".
+
+<p>To support multiple buffers, elvis allows you to precede a line address
+with the name of an edit buffer, in parentheses.
+The line address will then be interpretted as referring to lines in that
+buffer, rather than the window's current buffer.
+For example, "(foo)%t(bar)$" copies all lines of the "foo" buffer onto the
+end of the "bar" buffer.
+This notation is used during crash recovery, so you had better know it!
+
+<h2><a name="crash"></a>3.2 Crash recovery</h2>
+In elvis 1.8, if a crash occured while you were editing text, your changes
+could be preserved (moved to the /usr/preserve directory) by a program named
+<tt>elvprsv</tt>, and then recovered (moved from /usr/preserve to your working
+directory) by another program named <tt>elvrec</tt>.
+
+<p>elvis 2.0 uses a different method.
+The change was made mostly with the idea of having elvis eventualy support
+COSE desktop standards on X-windows systems, which call for all applications
+to be restartable.
+To do this, elvis stores all aspects of the edit session in a single file,
+and a later elvis process can be told to reload the same session file.
+(Note: elvis doesn't meet COSE specs yet, but this is a big step in that
+direction.)
+
+<p>The session file also offers a simple way to recover after a crash:
+simply start a new elvis process on the old session file, write your text
+using a ":w" command, and then exit elvis and delete the old session file.
+A more detailed description follows.
+
+<p>Begin by invoking "<tt>elvis -r</tt>".
+The "<tt>-r</tt>" tells elvis to look for an old session file,
+to disregard the "in use" flag,
+and to perform extra integrity checks when reloading that session file.
+If you aren't using the default session file, you'll probably need to add a
+"<tt>-f sessionfile</tt>" argument to the command line, so elvis knows which
+session you wish to recover.
+<em>Don't</em> give the name of your text file on the command line!
+
+<p>When elvis starts up, you will see an empty buffer.
+<strong>DON'T PANIC!</strong>
+Remember, elvis supports multiple edit buffers.
+It simply created a new, empty edit buffer and is showing that;
+your old edit buffer is still in there somewhere.
+You can use the command "<tt>:buf</tt>" to list the buffers.
+
+<p>Write your old buffer out to a new file.
+The command for writing the buffer is "<tt>:(buffer)w file</tt>", where
+<var>buffer</var> is the name of the buffer (usually the same as the
+name of the original file) and <var>file</var> is the name of a new file.
+(For safety's sake, you shouldn't overwrite your old text file yet.)
+Note the parentheses around the buffer name! They're important!
+
+<p>You should then exit elvis.
+Although I've tried to make elvis ensure that the recovered session file is
+intact, there will always be some doubt.
+This makes it dangerous to perform any actual editing using that session file.
+
+<p>Inspect the new file and if it looks okay, replace the old file with it.
+If it <em>doesn't</em> look okay, then there's still hope.
+Restart elvis on that session file again, and try to find an "undo" version
+of that buffer, by giving the command ":(buffer)u" where <var>buffer</var>
+is the buffer name, and then write it out to a new file via the
+"<tt>:(buffer)w file</tt>" command again.
+Hopefully the "undo" version will be in better shape.
+
+<p>After recovering the text files from the session file, you should delete
+the session file.
+The simplest way to find the name of the session file is to invoke elvis
+as "<tt>elvis -r -Gquit</tt>".
+Normally elvis deletes session files automatically when it exits,
+when in recovery mode it becomes more conservative.
+
+<p>(See? Isn't that simpler?)
+
+<h2><a name="options"></a>3.2 Options</h2>
+
+The syntax of the ":set" command has changed;
+I suggest you look it up in the online manual by starting elvis and giving
+the command ":help :set".
+In short, the changes are intended to make elvis more compatible with the
+real vi, and to handle the huge number of options that elvis 2.0 supports.
+
+<p>Not all options are global.
+Some are associated with buffers, and different buffers may have different
+values.
+When you switch buffers, the value of the option will appear to change.
+Simiarly, some are associated with windows and will vary when you switch
+from one window to another.
+Some options are associated with a particular display mode or or user
+interface, and will not exist if you switch to a different display mode or
+user interface.
+
+<p>The "flipcase" option has gone away.
+Elvis 2.0 determines which non-ascii characters are uppercase or lowercase
+letters by examining the digraph table.
+
+<p>The "charattr" and "hideformat" options have gone away.
+Elvis 2.0 has a "man" display mode which does a much nicer job
+of previewing man pages.
+
+<p>The "inputmode" option has been replaced by the new "initialstate" option,
+which is more versatile.
+
+<h2><a name="fileinit"></a>3.3 File initialization</h2>
+
+The ~/.exfilerc file is no longer executed after loading a file.
+Instead, the lib/elvis.arf file is executed.
+For a description of this, see section 10 (Initialization and sessions)
+of the online manual.
+A shorted description of this appears in the
+"<a href="#config">Extremely customizable</a>" subtopic earlier in this file.
+
+<h2><a name="if"></a>3.4 The :if command</h2>
+
+The syntax of the "<tt>:if</tt>" command has changed.
+It now uses a <a href="#calc">C-like expression syntax</a>.
+
+<p>The "<tt>:and</tt>" and "<tt>:or</tt>" commands have gone away.
+They are no longer needed, because the "<tt>:if</tt>" command can easily
+achieve the same effect using the && and || operators.
+
+<H1><a name="future"></a>3. FUTURE</H1>
+
+I haven't added any major new features for the last several months, because
+that would have interfered with the beta-testing of 2.0.
+Now that 2.0 has been released, I'm able to add features again.
+
+<p>The first feature to be added will be a graphical Win32 interface, for
+Windows95 and WindowsNT.
+Serge Pirotte has been working on this for months, and it is nearly ready
+for testing.
+There has been a lot of interest in this, so I want to make it available
+as soon as possible.
+I expect to have an alpha-test version of it available around
+the end of October.
+
+<p>Lee Johnson is working on a graphical port to OS/2, but it will probably
+take longer.
+I can't make any estimates on when it will be available.
+
+<p>To date, nobody has volunteered to port elvis to the Mac.
+(Nudge nudge wink wink)
+
+<p>The first thing I plan to do myself is add some extra smarts to the tags,
+so they can handle overloaded names better.
+I intend to make elvis use some heuristics to rank all matching tags according
+to the likelyhood that they're the tag you're trying to load.
+The most likely one will then be loaded.
+If you immediately look up the exact same tag name again, then it'll move to the second
+match, and so on.
+
+<p>I also intend to rewrite the ctags program so that it will be able to parse
+C++ code, and (optionally) place extra hints in the tags file so that elvis'
+heuristics can do a better job.
+I'm also toying with the idea of a statistical tags generator, but that's
+still pretty nebulous at this point.
+
+<p>I intend to add a true extension language to elvis someday, but I'm not
+sure it'll be in 2.1.
+Currently I'm leaning towards using Perl as the extension language.
+
+<H1><a name="links"></a>4. LINKS TO RELATED FILES</H1>
+
+Most of the following are binary files, not text or HTML files,
+so you can't view then with your Web browser.
+But you can use your browser to download the files.
+
+<dl>
+
+<dt><a href="ftp://ftp.cs.pdx.edu/pub/elvis/untar.c">untar.c</a>
+<dd>This is the complete source code for "untar",
+a little program which extracts files from a gzipped tar archive.
+Comments near the top of "untar.c" describe how to compile and use it.
+If you already have the gzip and tar utilities, then you don't need this.
+
+<dt><a href="ftp://ftp.cs.pdx.edu/pub/elvis/untardos.exe">untardos.exe</a>
+<dd>This is an MS-DOS executable, produced from the above "untar.c" file.
+It can also be run under Windows 3.1, in a Dos-prompt window.
+For brief instructions on how to use <tt>untardos,</tt>
+run it with no arguments.
+
+<dt><A href="ftp://ftp.cs.pdx.edu/pub/elvis/untarw32.exe">untarw32.exe</a>
+<dd>This is a Win32 executable, produced from the above "untar.c" file.
+It runs under WindowsNT, and (I believe) Windows95.
+It runs somewhat faster than the MS-DOS version.
+It also supports long file names, but that doesn't matter for the files in the
+following archives because all of the files in those archives have short names.
+For brief instructions on how to use <tt>untarw32,</tt>
+run it with no arguments.
+
+<dt><a href="ftp://ftp.cs.pdx.edu/pub/elvis/elvis-2.0.tgz">elvis-2.0.tgz</a>
+<dd>This is a gzipped tar archive of the source code and documentation for
+Elvis and its related programs.
+
+<dt><a href="ftp://ftp.cs.pdx.edu/pub/elvis/msdosexe.tgz">msdosexe.tgz</a>
+<dd>This archive contains the documentation and MS-DOS executables
+for Elvis 2.0.
+
+<dt><a href="ftp://ftp.cs.pdx.edu/pub/elvis/win32exe.tgz">win32exe.tgz</a>
+<dd>This archive contains the documentation and Win32 executables for Elvis 2.0.
+These were compiled and tested under WindowsNT, but should work under
+Windows95 as well.
+
+</dl>
+
+</BODY></HTML>
View
100 SourceFiles
@@ -1,100 +0,0 @@
-Elvis.lnk
-Elvis.mak
-Elvis.prj
-INSTALL
-MANIFEST
-Makefile.mix
-Pkgfile
-README
-SourceFiles
-alias.c
-amiga.c
-amiprsv.c
-amistat.h
-amisysio.c
-amitty.c
-amiwild.c
-atari.c
-blk.c
-borland.h
-cmd1.c
-cmd2.c
-config.h
-ctags.c
-ctype.c
-ctype.h
-curses.c
-curses.h
-cut.c
-elvprsv.c
-elvrec.c
-ex.c
-fmt.c
-input.c
-instman.sh
-main.c
-misc.c
-modify.c
-move1.c
-move2.c
-move3.c
-move4.c
-move5.c
-novice.rc
-opts.c
-osk.c
-osk.h
-pc.c
-prsvdos.c
-prsvunix.c
-profile.sh
-recycle.c
-redraw.c
-ref.c
-regexp.c
-regexp.h
-regsub.c
-shell.c
-sysdos.c
-system.c
-tinyprnt.c
-tinytcap.c
-tio.c
-tmp.c
-unix.c
-vars.c
-vcmd.c
-vi.c
-vi.h
-vmsbuild.com
-vmsio.c
-vmslink.opt
-vmssetup.com
-vmswild.c
-wildcard.c
-doc/Makefile
-doc/cflags.ms
-doc/elvcol
-doc/ctags.man
-doc/cutbufs.ms
-doc/differ.ms
-doc/elvis.man
-doc/elvprsv.man
-doc/elvrec.man
-doc/environ.ms
-doc/ex.ms
-doc/fmt.man
-doc/index.ms
-doc/init.ms
-doc/internal.ms
-doc/intro.ms
-doc/makefile.ms
-doc/options.ms
-doc/question.ms
-doc/ref.man
-doc/regexp.ms
-doc/termcap.ms
-doc/title.ms
-doc/ver.ms
-doc/versions.ms
-doc/visual.ms
View
0 alias.c
Sorry, we could not display the changes to this file because there were too many other changes to display.