Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Directory tree comparison mode for Emacs
Emacs Lisp
Branch: master

Reshuffled readme

latest commit 4a935eece0
Alexey Veretennikov authored

README.md

ztree

Ztree is a project dedicated to implementation of several text-tree applications inside GNU Emacs. It consists of 2 subprojects: ztree-diff and ztree-dir (the basis of ztree-diff). Available in GNU ELPA and MELPA.

Installation

Using ELPA

Press M-x in GNU Emacs and write list-packages. Find the ztree in the list of packages and press i to select this package, x to install the package.

Using MELPA

Add to your .emacs or .emacs.d/init.el following lines:

(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
                         ("melpa" . "http://melpa.milkbox.net/packages/")))

Follow the installation instructions for the GNU ELPA above.

Manual

Add the following to your .emacs file:

(push (substitute-in-file-name "path-to-ztree-directory") load-path)
(require 'ztree)

ztree-diff

ztree-diff is a directory-diff tool for Emacs inspired by commercial tools like Beyond Compare or Araxis Merge. It supports showing the difference between two directories; calling Ediff for not matching files, copying between directories, deleting file/directories, hiding/showing equal files/directories.

The comparison itself performed with the external GNU diff tool, so make sure to have one in the executable path. Verified on OSX and Linux.

If one wants to have a stand-alone application, consider the (WIP)zdircmp project based on ztree-diff.

Call the ztree-diff interactive function:

M-x ztree-diff

Then you need to specify the left and right directories to compare.

Hotkeys supported

  • Open/close directories with double-click, RET or Space keys.
  • To jump to the parent directory, hit the Backspace key.
  • To toggle open/closed state of the subtree of the current directory, hit the x key.
  • RET on different files starts the Ediff (or open file if one absent or the same)
  • Space show the simple diff window for the current file instead of Ediff (or view file if one absent or the same)
  • TAB to fast switch between panels
  • h key to toggle show/hide identical files/directories
  • H key to toggle show/hide hidden/ignored files/directories
  • C key to copy current file or directory to the left or right panel
  • D key to delete current file or directory
  • v key to quick view the current file
  • r initiates the rescan/refresh of current file or subdirectory
  • F5 forces the full rescan.

Customizations

By default all files starting with dot (like .gitignore) are not shown and excluded from the difference status for directories. One can add an additional regexps to the list ztree-diff-filter-list.

One also could turn on unicode characters to draw the tree with instead of normal ASCII-characters. This is controlled by the ztree-draw-unicode-lines variable.

Screenshots

ztreediff emacsx11

ztreediff-diff emacsx11

ztree-dir

ztree-dir is a simple text-mode directory tree for Emacs. See screenshots below for the GUI and the terminal versions of the ztree-dir.

Call the ztree-dir interactive function:

M-x ztree-dir

Hotkeys supported

  • Open/close directories with double-click, RET or Space keys.
  • To jump to the parent directory, hit the Backspace key.
  • To toggle open/closed state of the subtree of the current directory, hit the x key.
  • To visit a file, press Space key.
  • To open file in other window, use RET key.

Customizations

Set the ztree-dir-move-focus variable to t in order to move focus to the other window when the RET key is pressed; the default behavior is to keep focus in ztree-dir window.

ztree emacsapp

ztree emacsx11

Contributions

You can contribute to ztree in one of the following ways.

  • Submit a bug report
  • Submit a feature request
  • Submit a simple pull request (with changes < 15 lines)

Copyright issues

Since ztree is a part of GNU ELPA, it is copyrighted by the Free Software Foundation, Inc.. Therefore in order to submit nontrivial changes (with total amount of lines > 15), one needs to to grant the right to include your works in GNU Emacs to the FSF.

For this you need to complete this form, and send it to assign@gnu.org. The FSF will send you the assignment contract that both you and the FSF will sign.

For more information one can read here to understand why it is needed.

As soon as the paperwork is done one can contribute to ztree with bigger pull requests. Note what pull requests without paperwork done will not be accepted, so please notify the maintainer if everything is in place.

Something went wrong with that request. Please try again.