I tried to make it use the spooler program, PRINT, but failed. The first problem I ran into was the fact that PRINT can't read data from stdin; it must be given the name of a file. To work around this problem, I modified the osmsdos/osprg.c file to allow $1 in the command line to be replaced by the name of elvis' temporary file that contains the print data.
This lead to the the second problem: PRINT doesn't make a copy of the file, and elvis deletes the temporary file as soon as PRINT exits. Since PRINT exits before the file has been printed completely, this means that the file is deleted before PRINT is through reading it. The print job is truncated. I was unable to find a way around this problem, so I gave up and just set lpout=prn.
If TERM is set to "ansi" then elvis will output escape sequences which are supported by the ANSI.SYS driver. This isn't recommended; ANSI.SYS is just as slow as the BIOS, and it isn't as powerful so elvis is forced to redraw the screen instead of scrolling it, in some circumstances.
If TERM is set to "nansi" then elvis will output escape sequences which are supported by more capable drivers, such as NANSI.SYS and FANSI.SYS. These drivers usually bypass the BIOS, so they are very fast. If you're looking for a way to speed up elvis, this is probably your best bet.
The "$1" is there to work around a problem: PRINT can't read data from stdin. It must be given the name of a file, so I modified the oswin32/osprg.c file to allow $1 in the command line to be replaced by the name of elvis' temporary file that contains the print data.
When elvis starts, it creates a separate buffer which is the same size as the window. Elvis does this mostly so the scrollbar will go away. If you change the buffer size while elvis is running, elvis will adjust the size of the window to match the new buffer size, and then redraw the text to take advantage of the new screen size.
When you exit elvis, the console will revert to its original buffer and original window size.
There is a weird bug in WindowsNT's console mouse support. If, when the console is shown in a window, part of that console is located off-screen, then the mouse won't be able to move there, even if you're currently in full-screen mode! Since WindowsNT will sometimes resize your console when you switch between full-screen and windowed modes, this might not be obvious. But if the mouse refuses to move onto part of your full-screen console, I suggest you switch back to windowed mode and reduce the size of your font there. When you switch back to full-screen mode again it will look exactly the same, but the mouse should be able to go where no mouse has gone before.
Since elvis (and vi, for that matter) were originally designed and written for UNIX, there aren't many quirks that show up for generic UNIX. Most of this section will describe the quirks of individual UNIX versions.
The SunOS port uses BSD's sgtty ioctl calls, instead of the POSIX calls, even though SunOS supports the POSIX calls. This choice was made because differences in signal handling were preventing the SunOS port from responding to window resize signals.
Solaris2 seems to have a bad implementation of rlogin, at least on the system where I tested it. It couldn't handle 2000-character write() calls. Because this is a communication issue, and not purely a Solaris issue, I decided to reduce the size of the output buffer for all systems to 1500 bytes.
The SunOS port uses termcap because I prefer it. The Solaris port uses terminfo because Solaris doesn't seem to have a termcap library.
If you configure elvis to support X-windows, and your LD_LIBRARY_PATH environment variable doesn't contain an X11 library directory, then the configure script will output a warning message telling you how to set that variable.
The primary weirdness is that it uses tinytcap.c (by defining NEED_TGETENT in the config.h file) instead of the real terminfo functions. I suggest you try compiling without NEED_TGETENT.
Interestingly, the BSD port is configured to use POSIX ioctl calls instead of BSD's own sgtty calls. This may be a mistake. If elvis fails to adjust when you resize your xterm, then I suggest you add -DUSE_SGTTY to the end of the CC= line in Makefile, and recompile.