Skip to content

Latest commit

 

History

269 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dired Sidebar

https://github.com/jojojames/dired-sidebar/actions/workflows/ci.yml/badge.svg https://melpa.org/packages/dired-sidebar-badge.svg https://stable.melpa.org/packages/dired-sidebar-badge.svg https://elpa.gnu.org/packages/dired-sidebar.svg

Screenshots

With VsCode Icons & Spacemacs Light ./screenshots/vscode.png

With All the Icons & Solarized Light ./screenshots/one.png

With Arrows & Seoul-256 ./screenshots/arrows.png

With Text UI & Doom Peacock ./screenshots/tui.png

Installation

Melpa

I recommend using use-package.

(use-package dired-subtree
  :commands (dired-subtree-toggle dired-subtree-cycle)
  :config
  (setq dired-subtree-line-prefix " ")
  (setq dired-subtree-use-backgrounds nil))
(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-subtree
  :commands (dired-subtree-toggle dired-subtree-cycle)
  :config
  (setq dired-subtree-line-prefix " ")
  (setq dired-subtree-use-backgrounds nil))

(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 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.

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.

Projectile

Integrated with 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 dired-subtree.

Close and expand folders with dired-subtree.

Ace Window

Integrated with 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

Can use all-the-icons for icons.

Nerd Icons

Can use nerd-icons.

(use-package nerd-icons :defer t)
(use-package nerd-icons-dired
  :commands (nerd-icons-dired-mode))
(setq dired-sidebar-theme 'nerd-icons)

Terminal Support

Icons will be replaced with “+” and “-” to indicate folder nesting in terminals.

Evil

Keys are bound for evil.

Magit

Integrated with 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.

Running Tests

cask
make compile
make lint
make test

Help Wanted

Look at issues page! :)

About

Sidebar for Emacs leveraging Dired

Resources

Stars

595 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages