[comp.os.minix] Status of cv? Status of vi!

kirkenda@jove.cs.pdx.edu (Steve Kirkendall) (10/14/89)

What's the current status of cv (a.k.a "the Minix-ST linker scab") ?
Has anybody got a version that works for large programs?

A healthy cv would *really* help me work on my vi clone.  A few days
ago I ran into the cv bug for the first time, when the text segment
grew to more than about 60k (not 64k?).  My development work hasn't
stopped because of that; I just disabled all my extra debugging code
and it shrank enough to keep me going.  But the program continues to
grow, and I'm worried.  And I want that debugging code back in.

A few points of interest about my vi clone:

	- Its current size is about 55k text (without debugging code)
	  and 45k data.  When it is completed, it should fit on Minix-PC
	  with separate I&D.

	- It does NOT store the file in memory; it uses a temporary file.
	  This means that you can recover in the event of a crash, and
	  you can also edit files too big to fit in a process's memory.
	  I hope you have a hard disk!

	- It is very fast.  It scrolls fast enough to keep up with an
	  auto-repeating 'j' key, easily.  I even tried a ":map j jjjj"
	  and it still kept up.  Also, if it does start to fall behind
	  your typing, it is clever enough to skip intervening screen
	  refreshes and substitute one big refresh when it catches up.

	- Long lines are displayed differently than they are by real vi.
	  Real vi wraps long lines, so they take up multiple rows on the
	  screen; my clone scrolls sideways.

	- It has the optional ability to interpret the \fU, \fB, and \fR
	  character attributes correctly, to display underlined or bold
	  characters on the screen.

	- It uses termcap, so it is fairly terminal independent.  It even
	  gets the arrow key strings from the termcap entry.

	- It is not restricted to 7-bit ASCII; the full 8-bit character
	  set should work just fine.  Only NUL characters are forbidden.

	- I currently have completed and tested code for:
		+ The ex interface and most ex commands, including :map,
		  :insert, and :visual
		+ The vi interface, including all movement commands and
		  *some* of the change commands.
		+ Creation and control of temp files
		+ Low-level routines for insertion & deletion of any amount
		  of text.  These were hard!  Getting them done was a real
		  victory.
		+ Full undo
		+ Multiple cut buffers (don't work with multiple files yet)

	- Major tasks remaining are:
		+ Input mode, and the related vi commands (a,A,c,C,i,I,o,O)
		+ The vi . command ("do it again")
		+ Preservation of cut buffers when we switch files
		+ Regular expressions - Henry Spencer's regexp package
		  (which comes with Minix) isn't quite what vi users expect.
		  It doesn't recognize the nomagic and ignorecase options.
		  Also, I'm not sure I'm using it right...
		+ The "-r" flag to recover after a crash.  The pieces are all
		  there, so I just have to recognize the flag and *do* it.
		+ Performing .exrc and $EXINIT
		+ Tags
		+ There might be a bug.  A small one.  Maybe.
	  The above should take about 2-3 weeks.  That's 6-8 weeks realtime.
	-- Steve Kirkendall
	      ...uunet!tektronix!psueea!jove!kirkenda
	or    kirkenda@cs.pdx.edu