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>