Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 13 May 1996 20:24:27 -0400 (EDT)
From:      Keith Bostic <bostic@bsdi.com>
To:        bostic@bsdi.com
Subject:   nex/nvi version 1.65 is now available for anonymous ftp
Message-ID:  <199605140024.UAA24816@mongoose.bostic.com>

next in thread | raw e-mail | index | archive | help
Version 1.65 of nex/nvi is now available.

There have been a number of changes since the last public release
of nvi:

    + I've integrated the System V tool Cscope into the nvi tags stack
      frame.  This means that you can use Cscope to generate tags stacks
      and move around in them, much like the tags stacks generated using
      ctags.  I've attached a description of how Cscope works with nvi
      below.

    + I've added a "cedit" edit option, and colon command-line editing is
      now optional, instead of required.  If you set both the cedit and
      filec edit options to the same character, it acts as a colon
      command-line command if it's entered as the first character of the
      line, and as a file completion command otherwise.

    + Nvi has an additional way to specify case-independent RE's, enabled
      using the iclower edit option.  If the iclower edit option is set,
      all RE's are case-insensitive as long as they don't contain any
      upper-case characters.  If they contain any upper-case characters,
      the search or substitution is case sensitive.  For example, the vi
      search command /foo would be case-insensitive, whereas the search
      command /Foo would be case-sensitive.

    + Nvi now has incremental searching, enabled using the searchincr edit
      option.  If this option is set, each new character you enter in the
      search string continues the search and updates the screen to the
      new location.  This feature is still a little new and has some rough
      edges.  If this is a feature that you care about, I'd be interested
      in getting some feedback.

    + Paths in the initial startup screen are now truncated so that they
      fit on a single line, if possible.  This should help the problem
      where user keystrokes were lost when entering vi.  The file and ^G
      commands still display the entire path, regardless of the message
      lines that are required.

There's a backward compatibility issue in version 1.65:

    + The cursor now ends up on the FIRST character of the put text for
      all versions of the vi put commands, regardless of the source of
      the text.  (The problem was that, historically, put commands for
      named buffers behaved differently than for unnamed buffers.)  This
      change is necessary in order to match some amount of System III/V
      derived behavior and to match POSIX 1003.2, however, it is likely
      to break user macros.

If you're interested in a further review of the changes that have been
made, a complete change log is included in the distribution, in the file
docs/changelog.

Version 1.65 is available for anonymous ftp from the usual two sites:

	ftp.cs.berkeley.edu:ucb/4bsd/nvi.ALPHA.1.65.tar.gz
	ftp.bostic.com:pub/nvi.ALPHA.1.65.tar.gz

Note, the UC Berkeley site is likely to provide faster transfer speeds.

Please let me know if you have any problems, and thanks for using nvi!

--keith

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Cscope Notes:

The nvi tags structure has been reworked to handle the notion of multiple
locations per tag.  This supports cscope, which returns multiple locations
per query.  It will hopefully support ctags programs that create databases
with multiple locations per tag as well.

There is now a list of "tag queues" chained from each screen.  Each tag
queue has one or more "tag locations".

   +----+    +----+	+----+     +----+
   | EP | -> | Q1 | <-- | T1 | <-- | T2 |
   +----+    +----+ --> +----+ --> +----+
  	     |
  	     +----+     +----+
  	     | Q2 | <-- | T1 |
  	     +----+ --> +----+
  	     |
  	     +----+	+----+
  	     | Q3 | <-- | T1 |
  	     +----+ --> +----+
  
In the above diagram, each "Q" is a "tag queue", and each "T" is a
tag location.  Generally, the commands:

	:tag			create a new Q
	^[			create a new Q
	:cscope find		create a new Q
	:tagnext		move to the next T
	:tagprev		move to the previous T
	:tagpop			discard one or more Q's
	^T			discard the most recent Q
	:tagtop			discard all Q's

More specifically:

:cs[cope] a[dd] cscope-dir

	Attach to the cscope database in cscope-dir.

:cs[cope] f[ind] c|d|e|f|g|i|s|t buffer|pattern

	Query all attached cscopes for the pattern.  The pattern is a
	regular expression.  If the pattern is a double-quote character
	followed by a valid buffer name (e.g., "t), then the contents
	of the named buffer are used as the pattern.

	c: find callers of name
	d: find all function calls made from name
	e: find pattern
	f: find files with name as substring
	g: find definition of name
	i: find files #including name
	s: find all uses of name
	t: find assignments to name

	The find command pushes the current location onto the tags stack,
	and switches to the first location resulting from the query, if
	the query returned at least one result.

:cs[cope] h[elp] [command]
	
	List the cscope commands, or usage help on one command.

:display c[onnections]

	Display the list of cscope connections

:display t[ags]

	The tags display has been enhanced to display multiple tag
	locations per tag query.

:cs[cope] k[ill] #

	Kill cscope connection number #.

:cs[cope] r[eset]
	Kill all attached cscopes.  Useful if one got hung but you don't
	know which one.

:tagn[ext][!]

	Move to the next tag resulting from a query.

:tagpr[ev][!]

	Return to the previous tag resulting from a query.

:tagp[op], ^T

	Return to the previous tag group (no change).

:tagt[op]

	Discard all tag groups (no change).

Maps that you may find useful:

	" ^N: move to the next tag
	map ^N :tagnext^M
	" ^P: move to the previous tag
	map ^P :tagprev^M

	" Tab+letter performs a C-Scope query on the current word.
	" C-Scope 12.9 has a text-string query (type t).
	" C-Scope 13.3 replaces it with an assignment query; hence a==t.
	map <tab>a "tye:cs find t"t
	map <tab>c "tye:cs find c"t
	map <tab>d "tye:cs find d"t
	map <tab>e "tye:cs find e"t
	map <tab>f "tye:cs find f"t
	map <tab>g "tye:cs find g"t
	map <tab>i "tye:cs find i"t
	map <tab>s "tye:cs find s"t
	map <tab>t "tye:cs find t"t

To initialize nvi with a set of cscope directories, use the environment
variable CSCOPE_DIRS.  This variable should contain a <blank>-separated
list of directories containing cscope databases.  (This MAY be changed to
be an edit option, I haven't decided, yet.)

Each cscope directory must contain a file named "cscope.out" which is the
main cscope database, or nvi will not attempt to connect to a cscope to
handle requests for that database.

The file "cscope.tpath" may contain a colon-separated directory search
path which will be used to find the files reported by cscope.  If the
cscope.tpath does not exist, then the paths are assumed to be relative
to the cscope directory itself.  This is an extension to the standard
cscope, but seems important enough to keep.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Cscope Availability:

UNIXWare System V Release 4.0 variants such as Sun Solaris 2.x
(/opt/SUNWspro/bin) have version 11.5, and UNIXWare System V
Release 4.1 has version 12.10 with an option for much faster
searching.

You can buy version 13.3 source with an unrestricted license
for $400 from AT&T Software Solutions by calling +1-800-462-8146.
Binary redistribution of cscope is an additional $1500.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199605140024.UAA24816>