feat(dired): open dirvish sidebar w/ '<leader> o {p,P}'
A new alternative to neotree and treemacs.
This commit is contained in:
parent
07eae64509
commit
47c8c905b8
3 changed files with 40 additions and 0 deletions
|
@ -249,6 +249,9 @@
|
|||
(:when (modulep! :ui treemacs)
|
||||
:desc "Project sidebar" "p" #'+treemacs/toggle
|
||||
:desc "Find file in project rsidebar" "P" #'treemacs-find-file)
|
||||
(:when (modulep! :emacs dired +dirvish)
|
||||
:desc "Project sidebar" "p" #'dirvish-side
|
||||
:desc "Find file in project sidebar" "P" #'+dired/dirvish-side-and-follow)
|
||||
(:when (modulep! :term shell)
|
||||
:desc "Toggle shell popup" "t" #'+shell/toggle
|
||||
:desc "Open shell here" "T" #'+shell/here)
|
||||
|
|
|
@ -697,6 +697,9 @@
|
|||
(:when (modulep! :ui treemacs)
|
||||
:desc "Project sidebar" "p" #'+treemacs/toggle
|
||||
:desc "Find file in project sidebar" "P" #'treemacs-find-file)
|
||||
(:when (modulep! :emacs dired +dirvish)
|
||||
:desc "Project sidebar" "p" #'dirvish-side
|
||||
:desc "Find file in project sidebar" "P" #'+dired/dirvish-side-and-follow)
|
||||
(:when (modulep! :term shell)
|
||||
:desc "Toggle shell popup" "t" #'+shell/toggle
|
||||
:desc "Open shell here" "T" #'+shell/here)
|
||||
|
|
|
@ -13,3 +13,37 @@
|
|||
(and (not (file-remote-p default-directory))
|
||||
(locate-dominating-file "." ".git")
|
||||
(dired-git-info-mode 1)))
|
||||
|
||||
;;;###autoload
|
||||
(defun +dired/dirvish-side-or-follow (&optional arg)
|
||||
"Open `dirvish-side' then find the currently focused file.
|
||||
|
||||
If dirvish is already open, remotely jump to the file in Dirvish.
|
||||
If given the prefix ARG, then prompt for a directory (replaces existing Dirvish
|
||||
sidebars)."
|
||||
(interactive "P")
|
||||
(save-selected-window
|
||||
(let ((win (dirvish-side--session-visible-p)))
|
||||
(when (and win arg)
|
||||
(with-selected-window win
|
||||
(dirvish-quit))
|
||||
(setq win nil))
|
||||
(unless win
|
||||
(call-interactively #'dirvish-side))
|
||||
(when-let* (((not dirvish--this))
|
||||
(dir (or (dirvish--get-project-root) default-directory))
|
||||
(win (dirvish-side--session-visible-p))
|
||||
(dv (with-selected-window win (dirvish-curr)))
|
||||
((not (active-minibuffer-window)))
|
||||
(file buffer-file-name))
|
||||
(with-selected-window win
|
||||
(when dir
|
||||
(setq dirvish--this dv)
|
||||
(let (buffer-list-update-hook) (dirvish-find-entry-a dir))
|
||||
(if dirvish-side-auto-expand (dirvish-subtree-expand-to file)
|
||||
(dired-goto-file file))
|
||||
(dirvish-prop :cus-header 'dirvish-side-header)
|
||||
(dirvish--setup-mode-line (car (dv-layout dv)))
|
||||
(dirvish-update-body-h))
|
||||
(setq dirvish--this nil)))))
|
||||
(select-window (dirvish-side--session-visible-p)))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue