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