[gnu.emacs] Navigator - Directory Hierarchy Manager

sane@m.cs.uiuc.edu (Aamod Sane) (04/10/91)

Navigator is a directory manager. I work in large directory hierarchies,
and it is very useful in this situation.

Navigator works with Epoch as well as Emacs. 

Sources for Navigator are posted tar'd, compressed and uuencoded on
gnu.emacs.sources.


		From the intro message:
----------

Navigator creates and manages directory hierarchies. Navigator is similiar
in spirit to OpenLook/Macintosh and PCTOOLS. It has proven to be very useful 
when working in large directory hierarchies. 

Navigator provides 
* A directory tree to move in
* Tree creation and in place expansions.
  Depth of the tree can be specified. After expansion, the tree can be
  edited in text-mode.
  The tree can be saved in a file.
* Shells cd'ed to a directory. Compiles and Debugs can then
  take place in that directory. 
* Shell+ Directory Listing pair. Current directory for this pair can be 
  changed from the navigator. It is also possible to continuosly track the 
  Navigator current directory.
* A shell command on current directory.
* Current directory listing (ls). From the listing, 
    - file find.
    - shell command on directory.
    - shell command with current file as last argument.
* Tracking-Shell and Multi-Shell (in the file multishell.el)
      - Multi-Shell creates multiple instances of shells.
      - Tracking-Shell cd's to the current directory of the buffer from 
      which it is invoked. Thus to do something in the current directory of 
      a buffer,pop up a tracking-shell, do whatever, and close the shell. 
      Automatic cd'ing allows direct usage of shell commands; complicated 
      key sequences are not neccessary for file manipulation.
      - *These are independent of Navigator*. Navigator uses Multi-Shell for 
      its shells. Navigator shells are based on CMU Shell; the distribution 
      contains copies of cmushell.el and comint.el.
* Dired invocations from Shell or Directory listing. Dired is actually not
  necessary for file manipulations -- you can create a shell and use standard
  shell commands. No arcane keystrokes need be remembered for doing file 
  manipulations.

Navigator presents the tree as:
	root
	   child
               grandchild
           child
etc.
Currently, there must be one and only one root.

The cursor points to the current navigator directory. At the current directory:

Type f or C-xC-f   find file in current directory.
	( Dired can be popped by f RET ).
Type s to pop up a shell with cd set to the current directory.
Type t to pop up a shell + directory listing which can track the current directory.
Type t again on a different directory to track further.
Type c to run a shell command on the current directory.
Type d to get a quick directory listing.
Type C-xd to pop up dired.
Type x to expand the current directory in place.
Type e to edit the navigator buffer to quickly insert directories.
Type C-xC-s to save the navigator data structure in a file

Type j to traverse sibling upward .
Type k to traverse sibling downward.
Type h to go to children.
Type l to go to parent.

Type ? to get this message.

In a directory window:
	Type f or C-xC-f to find file
	Type c to run a shell command on the current directory.
	Type k to run shell command on current directory with current file arg.
	Type C-xd to get dired window on current directory.

If running epoch:
	Control-mouse-left to in navigator get quick directory listing.
	Control-mouse-middle in navigator to get tracked shell and ls
	Control-mouse-left in directory window to find that file.

Customisation variables: (default in parens)
navigator-mode-hook   (nil)
nav-indent-value      (4)
nav-hierarchy-dir     (~/emacs/hierarchy) ;; must set after (load \"navigator\")
nav-track-ls-and-sh   (t) ;; track directory listing and shell or just shell
nav-track-continually (nil) ;; track with every key movement
nav-ls-new-screen     (t) ;; separate screen for ls (epoch only)
nav-ls-file-separators ( \\t\\n@/*) ;; Unix specific

Creating hierarchies:
     
     You will be asked for the root directory of the tree, the depth
     and a file to save the hierarchy in. Unless you have changed the
     nav-hierarchy-dir variable, the hierarchy file will be put in
     ~/emacs/hierarchy. 
     
     The first time is determined by the existence of nav-hierarchy-dir.
     
Problem areas:
* The directory hierarchy is created using find + awk. 'find' does
  not go through symlinks. The root, however, may be a symlink.
  This script is defined in nav-read-dir-tree-command.

Bug reports and fixes:
  Aamod Sane (sane@cs.uiuc.edu)

-------------

Navigator depends on two modifications of cmushell. These are included
in the file multishell.el. The distribution also contains cmushell.el
and comint.el for those who do not have it.

At present, Navigator has mouse bindings only for Epoch. I do not
know how to set up Emacs mouse bindings. I will be very happy to get
these from people on the net.

Enjoy,

Aamod Sane
sane@cs.uiuc.edu