[[https://travis-ci.org/jojojames/dired-sidebar][file:https://travis-ci.org/jojojames/dired-sidebar.svg?branch=master]] [[https://melpa.org/#/dired-sidebar][file:https://melpa.org/packages/dired-sidebar-badge.svg]] [[https://stable.melpa.org/#/dired-sidebar][file:https://stable.melpa.org/packages/dired-sidebar-badge.svg]]
Screenshots With [[https://github.com/jojojames/vscode-icon-emacs][VsCode Icons]] & [[https://github.com/syl20bnr/spacemacs-theme][Spacemacs Light]] [[./screenshots/vscode.png]]
With [[https://github.com/jtbm37/all-the-icons-dired][All the Icons]] & [[https://github.com/sellout/emacs-color-theme-solarized][Solarized Light]] [[./screenshots/one.png]]
With Arrows & [[https://github.com/anandpiyer/seoul256-emacs][Seoul-256]] [[./screenshots/arrows.png]]
With Text UI & [[https://github.com/hlissner/emacs-doom-themes][Doom Peacock]] [[./screenshots/tui.png]]
Installation ** Melpa I recommend using [[https://github.com/jwiegley/use-package][use-package]].
(use-package dired-sidebar :ensure t :commands (dired-sidebar-toggle-sidebar))
** Minimal Bootstrap using Git
git clone https://github.com/jojojames/dired-sidebar cd dired-sidebar pwd # [Put this in load path.]
git clone https://github.com/Fuco1/dired-hacks cd dired-hacks pwd # [Put this in load path.]
Add config to Emacs:
(add-to-list 'load-path "path from pwd") (require 'dired-sidebar) M-x dired-sidebar-toggle-sidebar
My Settings
(use-package dired-sidebar :bind (("C-x C-n" . dired-sidebar-toggle-sidebar)) :ensure t :commands (dired-sidebar-toggle-sidebar) :init (add-hook 'dired-sidebar-mode-hook (lambda () (unless (file-remote-p default-directory) (auto-revert-mode)))) :config (push 'toggle-window-split dired-sidebar-toggle-hidden-commands) (push 'rotate-windows dired-sidebar-toggle-hidden-commands)
(setq dired-sidebar-subtree-line-prefix "__") (setq dired-sidebar-theme 'vscode) (setq dired-sidebar-use-term-integration t) (setq dired-sidebar-use-custom-font t))
For configuration, I recommend looking at the defcustoms in ~dired-sidebar.el~.
Sidebar can also be toggled together with [[https://github.com/jojojames/ibuffer-sidebar][ibuffer-sidebar]].
(defun sidebar-toggle ()
"Toggle both dired-sidebar' and
ibuffer-sidebar'."
(interactive)
(dired-sidebar-toggle-sidebar)
(ibuffer-sidebar-toggle-sidebar))
Features Dired As a result of using ~dired~ as a base, many features and functionality already exist in a polished state with standard keybindings an Emacs user will already be familiar with. Because of this ~dired-sidebar~'s codebase can stay small and lean, serving as the glue to several different packages. Fast Having used the [[#alternatives][alternatives]] listed below, in my opinion, ~dired-sidebar~ is the fastest of the bunch.
Trying to open and navigate in emacs/src/lisp (or another directory I've forgotten) led to writing my own sidebar as I was not satisfied with the speed of the other drawers. Multiple Frames Sidebar may be used in multiple frames with each frame having its own sidebar state. File Following Sidebar can be periodically set to refresh to reflect the currently selected file.
When Sidebar is initially opened, folders will be automatically expanded to point to the current file. Mouse Support Close/expand folders and open files with left click. Session Persistence Leverages ~dired~'s ~desktop-save-mode~ support for persistence. ** Projectile Integrated with [[https://github.com/bbatsov/projectile][projectile]].
Sidebar opens up with ~projectile~'s root as sidebar's root. Sidebar will also automatically update its root when projectile changes root. ** Dired Subtree Integrated with [[https://github.com/Fuco1/dired-hacks][dired-subtree]].
Close and expand folders with dired-subtree. ** Ace Window Integrated with [[https://github.com/abo-abo/ace-window][ace-window]].
Select the window files are to be opened in. ** File Watching / Automatic Refresh ~dired-sidebar~ will automatically update to reflect file changes as well as after a few special commands.
Take a look at ~dired-sidebar-refresh-on-special-commands~ and ~dired-sidebar-special-refresh-commands~ for more configuration. All The Icons Uses [[https://github.com/jtbm37/all-the-icons-dired][all-the-icons]] for icons. Terminal Support Icons will be replaced with "+" and "-" to indicate folder nesting in terminals. Evil Keys are bound for [[https://github.com/emacs-evil/evil][evil]]. Magit Integrated with [[https://github.com/magit/magit][magit]].
Toggling the sidebar in ~magit~ sets sidebar's root at ~magit~'s directory. If point was on a file in ~magit~, point at the file upon opening ~dired-sidebar~. IBuffer ~dired-sidebar~ will open sidebar and point at buffer's file. Dependencies Only ~dired-subtree~ is required. The other integrations are optional and dynamically detected.
Alternatives https://github.com/Alexander-Miller/treemacs
Running Tests
cask make compile make lint make test
Help Wanted Look at issues page! :)