Code Monkey home page Code Monkey logo

dirvish's People

Contributors

adomas-beep-boop-maggots avatar agsdot avatar aikrahguzar avatar alexluigit avatar dvzubarev avatar feltcat avatar gcv avatar isamert avatar kngwyu avatar liguangsheng avatar phundrak avatar rainstormstudio avatar tarsius avatar tpeacock19 avatar zrquan avatar zsxh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

dirvish's Issues

font size is larger in dirvish windows

dirvish windows appear to be using a larger font size than other windows, and there appears to be no custom setting related to it. Additionally, if I try to reduce the font size with text-scale-adjust, it will be smaller than other windows (the scale seems to be different overall, rather than a step up from "normal" size) and will run into the header above. I see how the header scale can be adjusted, but the height seems to remain the same (just the text is smaller).

It would also be nice to have customization to help make the windows more compact:

  • adjust/remove space before icons
  • adjust/remove space after icons
  • remove »
  • remove scollbars
  • remove other spacing (outside of the line highlight area)

My first impression of dirvish is positive, and I look forward to using it more. Thanks for publishing it.

Add other ranger mode line items

It would be nice if dirvish had the remaining missing items from ranger's mode line, specifically everything that would be shown for the file in dired details mode. I wouldn't need the size again (though someone might want it), but everything else is useful (permissions, # links, owner, group, mtime).

Customize height of mode and header lines?

I'd like to make the mode line a little taller.

I also use a header line for buffers instead of a mode line, and the height of my header line shown in the preview window is a little smaller than the height of dirvish's header line. I'd like to be able to control the height to make them match.

There is dirvish-header-line-text-size, but it does not seem to work anymore? Also, more fine-grained control would be nice if possible (like doom-modeline-height).

scroll-other-window not work

Just run dirvish and press C-M-v, get end of buffer.

And I can not run it with emacs -Q because it says no dash installed (install dicvish via straight).

Make `dirvish-side` follow the current project.

When projectile-switch-project is called, the dirvish side window doesn't update to reflect the change. Lisp code such as

(with-current-buffer (dirvish-side-buffer)
  (quit-window))
(dirvish-side)

as an post advice on projectile-switch-project should do the trick, I'm just not sure what to substitute for (dirvish-side-buffer).

Precache images in the background

Previously I was not using image preview with ranger.el (and the alternative packages) at all because it was too slow. Dirvish image preview is fast and instant once an image is cached. It might be nice if there was an option to cache the current directory in the background (maybe after a certain amount of idle time). Then it could be instant more of the time.

dirvish--get-filesize: Search failed: "\\(^[0-9.,]+[a-zA-Z]*\\).*total$"

I am trying to use dirvish-yank to copy a file to a destination folder, and got the error:

dirvish--get-filesize: Search failed: "\(^[0-9.,]+[a-zA-Z]*\).*total$"

I tried two files, one file is successfully copied to the folder, and other one got failed.
And try to run "du" command in terminal, got below outputs
2022-04-13_14-57-24

dired-do-copy with two dirvish-dired windows open doesn't behave like dired windows

When you have two dired windows open, mark a file/directory and run dired-do-copy the minibuffer prompt defaults to the directory of the other open window (the inactive one).

However when you try to do the same thing with dirvish-dired windows, the prompt defaults to the directory of the current window.

The same behavior can also be seen with similar commands to dired-do-copy like dired-do-rename or dired-rsync

Duplicate icons column in spacemacs

Windows 10
Emacs 27.2.50
Spacemacs 011b1454e1dd9bbb1cad425572501ad7506e51bc
dirvish-20220316.720

Steps to reproduce:

  1. M-x dirvish
  2. M-x dirvish-setup-menu
  3. i
  4. i

After step 1:

2022-03-16 12_27_53-Window

After step 3:

2022-03-16 12_29_11-Window_dirvish_icons

After step 4:

2022-03-16 12_30_12-Window_no_dirvish_icons

`(embark-act)` with `(dirvish)` cannot prompt a buffer.

This is only appeared on (dirvish) (full frame) and not on (dirvish-dirid).

Reproduce

  1. (dirvish) in any dir
  2. (embark-act) on any file.
  3. Wait for several second, emacs is crashed.

After restarting, emacs won't crash in such situation, but no embark buffer is prompted. By the way, embark-act can work.

Version

  • Emacs: GNU Emacs 28.1
  • dirvish: dirvish-20220523.1338
  • embark: embark-20220521.1736

Cannot use Doom 'search-project' after opening Dirvish

Doom's +default/search-project gives this error Wrong number of arguments: (1 . 1), 3 after opening Dirvish. This error only occurs when using the provided example config.

Particularly this bit:

(use-package dirvish
  :custom
  ;; Feel free to replace `all-the-icons' with `vscode-icon'.
  (dirvish-attributes '(expanded-state all-the-icons file-size))
  ;; Maybe the icons are too big to your eyes
  ;; (dirvish-all-the-icons-height 0.8)
  ;; Go back home? Just press `bh'
  (dirvish-bookmarks-alist
   '(("h" "~/"                          "Home")
     ("d" "~/Downloads/"                "Downloads")
     ("m" "/mnt/"                       "Drives")
     ("t" "~/.local/share/Trash/files/" "TrashCan")))
  ;; List directories that has over 10000 files asynchronously
  ;; This feature is disabled by default
  ;; (dirvish-async-listing-threshold 10000)
  :config
  (dirvish-override-dired-mode)
  (dirvish-peek-mode)
  ;; In case you want the details at startup like `dired'
  ;; :hook
  ;; (dirvish-mode . (lambda () (dired-hide-details-mode -1)))
  :bind
  (nil ; Bind `dirvish', `dirvish-dired' and `dirvish-side' as you see fit
   :map dired-mode-map
   ("SPC" . dirvish-show-history)
   ("r"   . dirvish-roam)
   ("b"   . dirvish-goto-bookmark)
   ("f"   . dirvish-file-info-menu)
   ("M-a" . dirvish-mark-actions-menu)
   ("M-s" . dirvish-setup-menu)
   ("M-f" . dirvish-toggle-fullscreen)
   ([remap dired-summary] . dirvish-dispatch)
   ([remap dired-do-copy] . dirvish-yank)
   ([remap mode-line-other-buffer] . dirvish-other-buffer)))

Any help is appreciated.

Optional 2-pane mode and larger preview

This is also minor. I love the 3-pane mode, but it might also be nice to be able to toggle into a 2-pane mode or make the preview area bigger. For example, in ranger, I have a key that toggles into 2 panes and makes the preview really big.

Preview on bottom with Doom

Hey, I've been using this package for a while and I'm really enjoying it (was using ranger.el before) but i have this problem where the preview on dirvish-toggle-fullscreen is at the bottom and it's really small.
image
I tried playing around with dirvish-peek-display-alist but nothing seemed to change anything nor did changing backends of dirvish-peek-backend.
I don't know a lot about Emacs, so any help would be appreciated.

M-x dirvish seems not work well with moody

It seems that moody's (moody-replace-mode-line-buffer-identification) prevents M-x dirvish from working.

To reproduce:

emacs -Q -L dirvish -L ht -L dash -L moody -l seq -l dirvish -l moody

Then eval:

(setq debug-on-error t)
(moody-replace-mode-line-buffer-identification)

Then M-x dirvish ...

Debugger entered--Lisp error: (wrong-type-argument dirvish nil)
  signal(wrong-type-argument (dirvish nil))
  (or (and (memq (type-of cl-x) cl-struct-dirvish-tags) t) (signal 'wrong-type-argument (list 'dirvish cl-x)))
  (let ((cl-x (dirvish-curr))) (or (and (memq (type-of cl-x) cl-struct-dirvish-tags) t) (signal 'wrong-type-argument (list 'dirvish cl-x))) (let* ((v cl-x)) (aset v 8 new-window)))
  (let* ((inhibit-modification-hooks t) (buf (progn (let* ((id (frame-parameter nil ...)) (h-name (format " *Dirvish %s-%s*" ... id)) (buf (get-buffer-create h-name))) (save-current-buffer (set-buffer buf) buf)))) (win-alist (list '(side . right) (cons 'window-width dirvish-preview-width))) (fringe 30) (new-window (display-buffer buf (cons 'dirvish--display-buffer win-alist)))) (set-window-fringes new-window fringe fringe nil t) (let ((cl-x (dirvish-curr))) (or (and (memq (type-of cl-x) cl-struct-dirvish-tags) t) (signal 'wrong-type-argument (list 'dirvish cl-x))) (let* ((v cl-x)) (aset v 8 new-window))))
  dirvish-build-preview()
  (if (dirvish-dired-p) nil (delete-other-windows) (dirvish-build-preview) (dirvish-build-header) (dirvish-build-footer))
  dirvish-build()
  dirvish-find-file("/home/yewton/.emacs.d/")
  dirvish(nil)
  funcall-interactively(dirvish nil)
  call-interactively(dirvish record nil)
  command-execute(dirvish record)
  execute-extended-command(nil "dirvish" "dirvish")
  funcall-interactively(execute-extended-command nil "dirvish" "dirvish")
  call-interactively(execute-extended-command nil nil)
  command-execute(execute-extended-command)

But if invoked by a key binding or by eval-last-sexp, dirvish command seems work well.
So it's not a critical issue.

Thanks,

Question Regarding Clocking Out Of Tasks

Hey there,

I like your project a ton. The only issue I'm having is that if I launch 'dirvish' from an Org Mode buffer containing a clocked-in task, Dirvish asks me if I want to clock out of the task itself.

Is there any way I can prevent this action from occurring? I ask because I am finding this to be hindering since I use Org mode based todolists for work all of the time with clock in tasks, so I would love to know how to not allow Dirvish to interfere with this.

Thanks,

Sam

Used and total free space in modeline

It would be nice if there were segments to show total free space and the total used space of the directory like in ranger. Total free space would be more useful I think.

`void-function` error after upgrade

I'm getting this after updating to dirvish 20220525.714, I'm absolutelly clueless
Any ideas?

dirvish--render-attributes: Symbol’s function definition is void: nilError during redisplay: (eval (let* ((dv (dirvish-curr)) (fullscreenp (dv-layout dv)) (buf (alist-get (dv-index-dir dv) (dv-root-dir-buf-alist dv) nil nil #'equal)) (hts dirvish-header-line-height) (scale 1) (bar-h (if fullscreenp (cdr hts) (car hts))) (win-width (floor (/ (window-width) scale))) (str-left (format-mode-line '((:eval (dirvish-path-ml dv))) nil nil buf)) (str-right (format-mode-line 'nil nil nil buf)) (str-left-length (1- (length str-left))) (str-right-length (string-width str-right)) (str-length (+ (string-width str-left) str-right-length)) (filling-spaces (propertize " " 'display `((space :align-to (- (+ right right-fringe right-margin) ,(ceiling (* scale (string-width str-right))))))))) (concat (format-mode-line '(:eval (dirvish--bar-image bar-h))) (if (< str-length win-width) str-left (let ((trim (1- (- win-width str-right-length)))) (if (>= trim 0) (substring str-left 0 (min trim str-left-length)) ""))) filling-spaces str-right))) signaled (wrong-type-argument dirvish nil)
Error during redisplay: (eval (let* ((dv (dirvish-curr)) (fullscreenp (dv-layout dv)) (buf (alist-get (dv-index-dir dv) (dv-root-dir-buf-alist dv) nil nil #'equal)) (hts dirvish-mode-line-height) (scale 1) (bar-h (if fullscreenp (cdr hts) (car hts))) (win-width (floor (/ (window-width) scale))) (str-left (format-mode-line '((:eval (dirvish-sort-ml dv)) (:eval (dirvish-omit-ml dv)) (:eval (dirvish-symlink-ml dv))) nil nil buf)) (str-right (format-mode-line '((:eval (dirvish-index-ml dv))) nil nil buf)) (str-left-length (1- (length str-left))) (str-right-length (string-width str-right)) (str-length (+ (string-width str-left) str-right-length)) (filling-spaces (propertize " " 'display `((space :align-to (- (+ right right-fringe right-margin) ,(ceiling (* scale (string-width str-right))))))))) (concat (format-mode-line '(:eval (dirvish--bar-image bar-h))) (if (< str-length win-width) str-left (let ((trim (1- (- win-width str-right-length)))) (if (>= trim 0) (substring str-left 0 (min trim str-left-length)) ""))) filling-spaces str-right))) signaled (wrong-type-argument dirvish nil)
Error during redisplay: (eval (let* ((dv (dirvish-curr)) (fullscreenp (dv-layout dv)) (buf (alist-get (dv-index-dir dv) (dv-root-dir-buf-alist dv) nil nil #'equal)) (hts dirvish-header-line-height) (scale 1) (bar-h (if fullscreenp (cdr hts) (car hts))) (win-width (floor (/ (window-width) scale))) (str-left (format-mode-line '((:eval (dirvish-path-ml dv))) nil nil buf)) (str-right (format-mode-line 'nil nil nil buf)) (str-left-length (1- (length str-left))) (str-right-length (string-width str-right)) (str-length (+ (string-width str-left) str-right-length)) (filling-spaces (propertize " " 'display `((space :align-to (- (+ right right-fringe right-margin) ,(ceiling (* scale (string-width str-right))))))))) (concat (format-mode-line '(:eval (dirvish--bar-image bar-h))) (if (< str-length win-width) str-left (let ((trim (1- (- win-width str-right-length)))) (if (>= trim 0) (substring str-left 0 (min trim str-left-length)) ""))) filling-spaces str-right))) signaled (wrong-type-argument dirvish nil)
Error during redisplay: (eval (let* ((dv (dirvish-curr)) (fullscreenp (dv-layout dv)) (buf (alist-get (dv-index-dir dv) (dv-root-dir-buf-alist dv) nil nil #'equal)) (hts dirvish-mode-line-height) (scale 1) (bar-h (if fullscreenp (cdr hts) (car hts))) (win-width (floor (/ (window-width) scale))) (str-left (format-mode-line '((:eval (dirvish-sort-ml dv)) (:eval (dirvish-omit-ml dv)) (:eval (dirvish-symlink-ml dv))) nil nil buf)) (str-right (format-mode-line '((:eval (dirvish-index-ml dv))) nil nil buf)) (str-left-length (1- (length str-left))) (str-right-length (string-width str-right)) (str-length (+ (string-width str-left) str-right-length)) (filling-spaces (propertize " " 'display `((space :align-to (- (+ right right-fringe right-margin) ,(ceiling (* scale (string-width str-right))))))))) (concat (format-mode-line '(:eval (dirvish--bar-image bar-h))) (if (< str-length win-width) str-left (let ((trim (1- (- win-width str-right-length)))) (if (>= trim 0) (substring str-left 0 (min trim str-left-length)) ""))) filling-spaces str-right))) signaled (wrong-type-argument dirvish nil)

Allow disabling or customizing listing colorization

It's nice to have colourization like diredfl but it would be nicer since this can be customized, on my setup/theme I find them a bit too much (ie: here the dates are not very readable)

image

I am on emacs28/pgtk-native-comp and dired shows up like this for me :

image

( i did try to disabled diredfl as well and dirvish still colour listing)

dirvish-setup-menu commands do not work

For some reason I always get an error when I try to toggle something on the dirvish setup menu

Debugger entered--Lisp error: (wrong-type-argument dirvish nil)
  signal(wrong-type-argument (dirvish nil))
  (or (progn (and (memq (type-of cl-x) cl-struct-dirvish-tags) t)) (signal 'wrong-type-argument (list 'dirvish cl-x)))
  (progn (or (progn (and (memq (type-of cl-x) cl-struct-dirvish-tags) t)) (signal 'wrong-type-argument (list 'dirvish cl-x))) (aref cl-x 19))
  dv-attributes(nil)
  funcall(dv-attributes nil)
  (let* ((dv (dirvish-curr)) (item (eieio-oref obj 'variable)) (slot-name (eieio-oref obj 'scope)) (curr-val (funcall slot-name dv)) (new-val (if (eq value 'On) (setq curr-val (cons item curr-val)) (remq item curr-val)))) (cond ((memql slot-name ''dv-attributes) (progn (or (progn (and (memq ... cl-struct-dirvish-tags) t)) (signal 'wrong-type-argument (list 'dirvish dv))) (let* ((v dv)) (aset v 19 new-val)))) ((memql slot-name ''dv-preview-dispatchers) (progn (or (progn (and (memq ... cl-struct-dirvish-tags) t)) (signal 'wrong-type-argument (list 'dirvish dv))) (let* ((v dv)) (aset v 24 new-val))))) (dirvish--refresh-slots dv) (revert-buffer))
  (progn (let* ((dv (dirvish-curr)) (item (eieio-oref obj 'variable)) (slot-name (eieio-oref obj 'scope)) (curr-val (funcall slot-name dv)) (new-val (if (eq value 'On) (setq curr-val (cons item curr-val)) (remq item curr-val)))) (cond ((memql slot-name ''dv-attributes) (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... dv))) (let* ((v dv)) (aset v 19 new-val)))) ((memql slot-name ''dv-preview-dispatchers) (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... dv))) (let* ((v dv)) (aset v 24 new-val))))) (dirvish--refresh-slots dv) (revert-buffer)))
  (closure (t) (obj value) (progn (let* ((dv (dirvish-curr)) (item (eieio-oref obj 'variable)) (slot-name (eieio-oref obj 'scope)) (curr-val (funcall slot-name dv)) (new-val (if (eq value ...) (setq curr-val ...) (remq item curr-val)))) (cond ((memql slot-name '...) (progn (or ... ...) (let* ... ...))) ((memql slot-name '...) (progn (or ... ...) (let* ... ...)))) (dirvish--refresh-slots dv) (revert-buffer))))(#<dirvish-menu:toggle dirvish-menu:toggle-15721444b4a4> On)
  apply((closure (t) (obj value) (progn (let* ((dv (dirvish-curr)) (item (eieio-oref obj 'variable)) (slot-name (eieio-oref obj 'scope)) (curr-val (funcall slot-name dv)) (new-val (if (eq value ...) (setq curr-val ...) (remq item curr-val)))) (cond ((memql slot-name '...) (progn (or ... ...) (let* ... ...))) ((memql slot-name '...) (progn (or ... ...) (let* ... ...)))) (dirvish--refresh-slots dv) (revert-buffer)))) #<dirvish-menu:toggle dirvish-menu:toggle-15721444b4a4> On)
  transient-infix-set(#<dirvish-menu:toggle dirvish-menu:toggle-15721444b4a4> On)
  (let ((obj (transient-suffix-object))) (transient-infix-set obj (transient-infix-read obj)))
  dirvish-vc-state-infix()
  funcall-interactively(dirvish-vc-state-infix)
  command-execute(dirvish-vc-state-infix)

I'm not sure if this is a configuration issue on my part. Any ideas? Setting dirvish-attributes works fine.

History navigation commands

This is a fairly minor issue, but the equivalent of ranger's :history_go command would be nice to navigate forward and backwards in the history. This is useful if you want to go back to a previous directory after having jumped far away either with a bookmark, find-file, or whatever command. If it was only a 1 or 2 directories ago, it's faster to have a "go back" key than to use dirvish-show-history.

Thank you!

Thank you so much for this package. You've done a brilliant job. This is not an issue. I just wanted to say how great this package is and try to explain why it's so great. This may not be very useful to you, but it might help someone else considering trying it. Feel free to link to this blurb in the readme if you want. I don't think the readme makes it immediately clear just how awesome dirvish is. From a brief glance at the readme, it looks like dirvish might just be another package like dired-hacks that adds some nice extra functionality, but after trying it, I can say that dirvish has completely changed the experience of dired for me in a single day. I plan to write a full blog post once I play with dirvish more.

I randomly found out about dirvish the other day and then saw a comment you had made about it:

With all the things being done, I found myself still miss lf/ranger very often. I also found that a lot of people are using ranger/lf in a terminal/shell inside of Emacs. If Dired is really far better than those ones, why would people do that? You might say, because they don't understand enough about dired/emacs/elisp. But I don't see it that way, instead I believe ranger/lf or other similar ones really did something right, and Dired should absorb their good points.

Once I read this and your readme, I was already sold on trying dirvish. I've used both ranger and dired extensively, and this matches my experience exactly. Most Emacs users say that dired is much better than ranger, but I think they are often the ones who don't understand enough about ranger. Dired can do a lot of useful things as a result of being part of Emacs and is a lot more malleable. Obviously I'd prefer to use it, but there were just too many issues or missing features for dired to be able to replace ranger for me.

Every now and then I stumble upon a new package that is not just useful but transformational. After haven been beaten down by the clunkiness of ranger.el for so long, I was elated after trying dirvish.

Dirvish is a work of art. It is fast. It is unobtrusive. It is elegant. It is exactly what a file manager in Emacs should be.

The name is perfect. Not just stylish but also meaningful. While it is nothing like vim-dirvish, it has the same design philosophy of working with builtin functionality. In the context of Emacs, this means augmenting dired rather than replacing it. The simplicity of the current implementation of dired-yank is a testament to how well this works. There's no reason to try to duplicate ranger exactly. Dirvish's multi-stage marking is actually better than ranger's because it doesn't force the user to pick "cut" or "copy" at the beginning. While you normally know what you want to do beforehand, ranger also has a bunch of options for pasting (e.g. paste symlink, relative symlink, hardlink, etc.). You can choose "delete" in ranger and then actually just make a symlink, which doesn't really make sense. It makes more sense to just choose what you want to do with marked items all in one step instead of partially at the beginning and partially at the end.

Dirvish has fixed every major issue I had with dired and ranger.el:

  • It provides file copying/movement that is both multi-stage and asynchronous
  • Image preview is actually fast and usable. I had stopped using all packages for image preview before because they didn't work well. With dirvish, once an image is cached, it's as fast as any preview method that ranger has, and there is no flicker (unlike some ranger preview methods). This is a game changer.
  • File preview in general works flawlessly out of the box and is customizable
  • Dirvish is gorgeous, more so than ranger, but without sacrificing speed
    • The mode line is simple, customizable, and easy on the eyes
    • Icon display is fast/lazy unlike dired-all-the-icons, which is unusably slow
    • It can also replace the functionality of dired-k (very slow) and dired-git-info
    • I only had to customize one face to get it to look great with my theme
  • It provides a 3-pane layout that just works (parent directory, current directory, preview). I never used ranger.el's 3-pane layout, but I will use dirvish's.
  • It provides various other helpful commands/features like bookmarks
  • It is a minimal layer on top of dired and requires minimal configuration. I had to make many more keybindings for ranger.el since it creates alternatives for a lot of existing dired commands, and I had a bunch of ugly configuration because it was comparably invasive (as both a dired user and as an evil user):
;; prevent ranger from using `evil-make-overriding-map' and making the initial
;; evil state motion state
(general-add-advice '(ranger-define-additional-maps ranger--normalize-keymaps)
                    :override #'ignore)
...
;; completely delete ranger-mode-map
(setq ranger-mode-map (make-sparse-keymap))
...
;; make ranger quiet
(general-add-advice '(ranger-window-check ranger-revert)
                    :around #'noct-no-message)

Ranger.el is a good package that adds functionality I was missing from dired, but dirvish is polished and has a more general appeal. The ingenuity of dirvish may not be obvious to someone who has not used both ranger.el and ranger for years, but for me, dirvish is revolutionary. The experience of everything "just working" in dirvish with basically no setup is absolutely sublime. Dirvish is dired, just refined. Like orderless and vertico, dirvish is another good example of an actual case where less is more.

I came to Emacs using a wide ranger of TUI applications (vim for editing, mutt for email, weechat for IRC, ncmpcpp and vimus for music, etc.). Ranger is my last TUI application and has been for years. I thought I would be using ranger as my main file manager indefinitely. Maybe ranger.el would find a new, more active developer, or an alternative package would appear that would eventually be good enough for me to switch, but that wouldn't happen any time soon. I thought ranger was still lightyears ahead of dired, but dirvish has proved me wrong. Thank you!

display-buffer-alist is not restored properly

  1. dirvish-saved-display-buffer-alist is initialized at load time so modifications to display-buffer-alist after that will be gone
  2. Even if update dirvish-saved-display-buffer-alist before dirvish-activate,
    dirvish-deactivate does not always restore display-buffer-alist for some reason.
    As a result, display-buffer-alist will be updated to dirvish-display-buffer-alist

Possible workaround:

(defun ad-dirvish-activate (&rest _)
  (setq dirvish-saved-display-buffer-alist display-buffer-alist))

(defun ad-dirvish-deactivate (&rest _)
  (setq display-buffer-alist dirvish-saved-display-buffer-alist))

(advice-add 'dirvish-activate :before #'ad-dirvish-activate)
(advice-add 'dirvish-deactivate :before #'ad-dirvish-deactivate)

dirvish session not re-used

dirvish-override-dired-mode: t

From an initial dirvish session:

dirvish_reuse_1

when pressing RET on the extensions folder, a dired buffer replaces the middle and right pane:

dirvish_reuse_2

Pressing q goes back to the initial dirvish session. Similar behavior for other dired dir-changing commands such as ^. Is this expected or am I missing something?

Windows compat: dirvish--get-image-cache-for-file

Windows 10, Emacs 27.2.50, dirvish-20220313.911

Steps to reproduce:

  1. M-x dirvish
  2. M-x dirvish-setup-menu
  3. s

Backtrace:

Debugger entered--Lisp error: (file-error "Creating directory" #("Invalid argument" 0 16 (charset windows-1252)) "c:/Users/LeimgruberF/.cache/dirvish/1059c:/Users/L...")
  signal(file-error ("Creating directory" #("Invalid argument" 0 16 (charset windows-1252)) "c:/Users/LeimgruberF/.cache/dirvish/1059c:/Users/L..."))
  files--ensure-directory("c:/Users/LeimgruberF/.cache/dirvish/1059c:/Users/L...")
  make-directory("c:/Users/LeimgruberF/.cache/dirvish/1059c:/Users/L..." t)
  dirvish--get-image-cache-for-file("c:/Users/LeimgruberF/lg/ait.org" 1059 ".*")
  dirvish-clean-preview-images(("c:/Users/LeimgruberF/lg/ait.org"))
  dirvish-revert(nil nil)
  revert-buffer()
  (let* ((dv (dirvish-curr)) (item (eieio-oref obj 'variable)) (slot-name (eieio-oref obj 'scope)) (curr-val (funcall slot-name dv)) (new-val (if (eq value 'On) (setq curr-val (cons item curr-val)) (delq item curr-val)))) (cond ((memql slot-name ''dv-raw-attributes) (progn (or (and (memq (type-of dv) cl-struct-dirvish-tags) t) (signal 'wrong-type-argument (list 'dirvish dv))) (let* ((v dv)) (aset v 20 new-val)))) ((memql slot-name ''dv-raw-preview-dps) (progn (or (and (memq (type-of dv) cl-struct-dirvish-tags) t) (signal 'wrong-type-argument (list 'dirvish dv))) (let* ((v dv)) (aset v 24 new-val))))) (dirvish--refresh-slots dv) (revert-buffer))
  (progn (let* ((dv (dirvish-curr)) (item (eieio-oref obj 'variable)) (slot-name (eieio-oref obj 'scope)) (curr-val (funcall slot-name dv)) (new-val (if (eq value 'On) (setq curr-val (cons item curr-val)) (delq item curr-val)))) (cond ((memql slot-name ''dv-raw-attributes) (progn (or (and (memq ... cl-struct-dirvish-tags) t) (signal 'wrong-type-argument (list ... dv))) (let* ((v dv)) (aset v 20 new-val)))) ((memql slot-name ''dv-raw-preview-dps) (progn (or (and (memq ... cl-struct-dirvish-tags) t) (signal 'wrong-type-argument (list ... dv))) (let* ((v dv)) (aset v 24 new-val))))) (dirvish--refresh-slots dv) (revert-buffer)))
  (closure (t) (obj value) (progn (let* ((dv (dirvish-curr)) (item (eieio-oref obj 'variable)) (slot-name (eieio-oref obj 'scope)) (curr-val (funcall slot-name dv)) (new-val (if (eq value ...) (setq curr-val ...) (delq item curr-val)))) (cond ((memql slot-name '...) (progn (or ... ...) (let* ... ...))) ((memql slot-name '...) (progn (or ... ...) (let* ... ...)))) (dirvish--refresh-slots dv) (revert-buffer))))(#<dirvish--toggle dirvish--toggle-7c65f648b4> On)
  apply((closure (t) (obj value) (progn (let* ((dv (dirvish-curr)) (item (eieio-oref obj 'variable)) (slot-name (eieio-oref obj 'scope)) (curr-val (funcall slot-name dv)) (new-val (if (eq value ...) (setq curr-val ...) (delq item curr-val)))) (cond ((memql slot-name '...) (progn (or ... ...) (let* ... ...))) ((memql slot-name '...) (progn (or ... ...) (let* ... ...)))) (dirvish--refresh-slots dv) (revert-buffer)))) #<dirvish--toggle dirvish--toggle-7c65f648b4> On)
  transient-infix-set(#<dirvish--toggle dirvish--toggle-7c65f648b4> On)
  (let ((obj (transient-suffix-object))) (transient-infix-set obj (transient-infix-read obj)))
  dirvish-file-size-infix()
  funcall-interactively(dirvish-file-size-infix)
  call-interactively(dirvish-file-size-infix nil nil)
  command-execute(dirvish-file-size-infix)

Paste conflict alternative renaming to preserve extension

It would be nice if there was an option to add to before the first period in the filename, so that the extension doesn't change. Alternatively, it could add at the beginning. This is one thing that still annoys me about ranger since changing the extension breaks rifle, for example.

Multiple instances

Hello,

Thanks again alex for this wonderful mode,

I think (or maybe I am not using it correctly) dirvish is not playing well with multiple 'instance'

I often use multiple emacs tabs.

I start opening dirvish in the current tab and leave it there.

when I open a new tab with new dirvish browser and then if I quit that new dirvish, the old ones would quit as well and would show the 3 columuns but with no dirvish buffers.

let me know if that make sense, or if not I can make a bit more visual bug report with screenshots to explain what i mean.

All history rewritten

It appears that you have rewritten all history. If you did this on purpose, then you should also update the tags. If not, then you should undo it as soon as possible.

Symlink display issues

The file size is not shown for me for symlinks when dired-hide-details-hide-symlink-targets is t. If I change it to nil, I see the sizes. I'm not sure if this is related to the symlink-target attribute. I am not sure what the symlink-target attribute does. It does not seem to have any effect for me (regardless of the value of dired-hide-details-hide-symlink-targets).

What I'd like is for an attribute and amode line item that would allow symlink display to be like ranger: symlinks just show an arrow (instead of the full path on every line), and if the focused item is a symlink, the target path will be shown in the modeline.

project.el Find File opens dired even with override dired mode

Hi, awesome package. I am encountering an issue though with project.el.
Using:
Emacs 27.2
project.el 0.8.1
dirvish 20220325.1418
When I open one of my projects with project.el and use Find Directory it ends up using dired instead of dirvish although I have specified in my config to override dired:

(use-package dirvish
  :custom
  (dirvish-bookmarks-alist
   '(("h" "~/"                          "Home")
     ("d" "~/Downloads/"                "Downloads")
     ("m" "/mnt/"                       "Drives")))
  :config
  (dirvish-override-dired-mode)
  (dirvish-peek-mode)
  (setq dirvish-attributes '(all-the-icons file-size))
  :bind
  (:map dired-mode-map
        ("SPC" . dirvish-show-history)
        ("r"   . dirvish-roam)
        ("b"   . dirvish-goto-bookmark)
        ("f"   . dirvish-file-info-menu)
        ("M-a" . dirvish-mark-actions-menu)
        ("M-s" . dirvish-setup-menu)
        ("M-f" . dirvish-toggle-fullscreen)
        ([remap dired-summary] . dirvish-dispatch)
        ([remap dired-do-copy] . dirvish-yank)
        ([remap mode-line-other-buffer] . dirvish-other-buffer)))

Could this be because of something conflicting somewhere else in my config file or is this something kind of expected?

-m option on ffmpegthumbnailer 2.1.1 breaks it

`(image-cache . ("ffmpegthumbnailer" "-i" ,file "-o" ,cache "-s" ,(number-to-string width) "-m"))))))

ubuntu 20.4, current updates, emacs 27.2.

it never generates the thumbnail with this switch, after removing it and reevaluating the defun works fine.

PS: I know 2.1.1 is a pretty old version, but it's what is installed from apt sources.

Handle pasting duplicates multiple times

In ranger, if you keep pasting duplicates it will automatically increment the number (e.g. foo_ then foo_0 then foo_1. It looks like with dirvish and both append-to-filename or append-to-ext, you can only paste a duplicate one time. I get foo1~.txt the first time but not foo2~.txt the next time if I try to paste. Instead dirvish overwrites foo1~.txt. Dirvish should check if the new name exists as well instead of overwriting it.

Make Dirvish compatible with `auto-dim-other-buffers-mode`

From the screenshots I see that you don't have any examples of more than one Dirvish instance at the time, so maybe Dirvish isn't meant to be used this way. However I often use Dired as a "dual-pane" file manager with one directory to the left and one to the right (two windows). I've set dired-dwim-target to t. This means that a dired-do-copy suggests the other window directory as the target.

When I try to have two Dirvish buffers side by side I noticed two issues:

  1. dired-do-copy suggests one of them, not the other one. So if I am on the left window buffer it might suggest the left one instead of the right.
  2. I'm using auto-dim-other-buffers-mode which visually makes windows without focus less prominent. This doesn't work very well with Dirvish. It is somewhat random, but usually the Dirvish window(s) always look like they have focus. So if run in "dual-pane" it looks like both have focus.

dirvish crashes Emacs?

-------------------------------------
Translated Report (Full Report Below)
-------------------------------------

Process:               Emacs [63482]
Path:                  /opt/homebrew/*/Emacs.app/Contents/MacOS/Emacs
Identifier:            org.gnu.Emacs
Version:               Version 28.1 (9.0)
Code Type:             ARM-64 (Native)
Parent Process:        launchd [1]
User ID:               501

Date/Time:             2022-05-27 19:06:48.6056 +0800
OS Version:            macOS 12.4 (21F79)
Report Version:        12
Anonymous UUID:        75548F30-FE51-464E-A529-3BB5F24AE882

Sleep/Wake UUID:       5B08E4C3-6DFC-491B-AC93-89AC9FBC0A35

Time Awake Since Boot: 170000 seconds
Time Since Wake:       2981 seconds

System Integrity Protection: disabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGABRT)
Exception Codes:       KERN_INVALID_ADDRESS at 0x000000000000108d
Exception Codes:       0x0000000000000001, 0x000000000000108d
Exception Note:        EXC_CORPSE_NOTIFY

VM Region Info: 0x108d is not in any region.  Bytes before following region: 105553518915443
      REGION TYPE                    START - END         [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      UNUSED SPACE AT START
--->  
      MALLOC_NANO (reserved)   600018000000-600020000000 [128.0M] rw-/rwx SM=NUL  ...(unallocated)

Kernel Triage:
VM - pmap_enter failed with resource shortage
VM - pmap_enter failed with resource shortage
VM - pmap_enter failed with resource shortage
VM - pmap_enter failed with resource shortage
VM - pmap_enter failed with resource shortage


Thread 0 Crashed::  Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	       0x1b6496d98 __pthread_kill + 8
1   libsystem_pthread.dylib       	       0x1b64cbee0 pthread_kill + 288
2   libsystem_c.dylib             	       0x1b63ce680 raise + 32
3   Emacs                         	       0x102a8a220 terminate_due_to_signal + 204
4   Emacs                         	       0x102a8a89c emacs_abort + 20
5   Emacs                         	       0x102a5bb24 ns_term_shutdown + 132
6   Emacs                         	       0x102971ad0 shut_down_emacs + 328
7   Emacs                         	       0x102a8a1e8 terminate_due_to_signal + 148
8   Emacs                         	       0x10298c67c handle_fatal_signal + 16
9   Emacs                         	       0x10298c6f8 deliver_thread_signal + 124
10  Emacs                         	       0x10298b0e0 deliver_fatal_thread_signal + 12
11  Emacs                         	       0x10298c738 handle_sigsegv + 64
12  libsystem_platform.dylib      	       0x1b64e34a4 _sigtramp + 56
13  Emacs                         	       0x1029af67c find_newline + 444
14  Emacs                         	       0x1029afe64 find_before_next_newline + 56
15  Emacs                         	       0x1029d5394 Fline_end_position + 192
16  dired-6a3ae2bc-4d19216a.eln   	       0x284dceed0 F64697265642d6d6f76652d746f2d66696c656e616d65_dired_move_to_filename_0 + 268
17  Emacs                         	       0x1029e2b68 funcall_subr + 284
18  Emacs                         	       0x1029e2334 Ffuncall + 600
19  dired-6a3ae2bc-4d19216a.eln   	       0x284dce1fc F64697265642d6765742d66696c656e616d65_dired_get_filename_0 + 1100
20  Emacs                         	       0x1029e2b68 funcall_subr + 284
21  Emacs                         	       0x1029e2334 Ffuncall + 600
22  dirvish-cdf30b1c-312e86b7.eln 	       0x31f2a2ecc F646972766973682d706174682d6d6c_dirvish_path_ml_0 + 508
23  Emacs                         	       0x1029df08c eval_sub + 1064
24  Emacs                         	       0x1029e1a80 Feval + 100
25  Emacs                         	       0x1029e2b68 funcall_subr + 284
26  Emacs                         	       0x1029e2334 Ffuncall + 600
27  Emacs                         	       0x1029e0ee8 internal_condition_case_n + 120
28  Emacs                         	       0x1028f233c safe__call + 344
29  Emacs                         	       0x1028f23f4 safe__call1 + 36
30  Emacs                         	       0x1028ffe30 display_mode_element + 800
31  Emacs                         	       0x102901450 display_mode_element + 6464
32  Emacs                         	       0x1028ff730 Fformat_mode_line + 760
33  Emacs                         	       0x1029df194 eval_sub + 1328
34  Emacs                         	       0x1029dfeac FletX + 136
35  Emacs                         	       0x1029df0b4 eval_sub + 1104
36  Emacs                         	       0x1029e1a80 Feval + 100
37  Emacs                         	       0x1029e2b68 funcall_subr + 284
38  Emacs                         	       0x1029e2334 Ffuncall + 600
39  Emacs                         	       0x1029e0ee8 internal_condition_case_n + 120
40  Emacs                         	       0x1028f233c safe__call + 344
41  Emacs                         	       0x1028f23f4 safe__call1 + 36
42  Emacs                         	       0x1028ffe30 display_mode_element + 800
43  Emacs                         	       0x102901450 display_mode_element + 6464
44  Emacs                         	       0x1028ec794 display_mode_line + 368
45  Emacs                         	       0x1029155d0 display_mode_lines + 528
46  Emacs                         	       0x10291d734 redisplay_window + 16988
47  Emacs                         	       0x1029194cc redisplay_window_0 + 44
48  Emacs                         	       0x1029e0b98 internal_condition_case_1 + 100
49  Emacs                         	       0x102918aac redisplay_windows + 168
50  Emacs                         	       0x102918a90 redisplay_windows + 140
51  Emacs                         	       0x102918a90 redisplay_windows + 140
52  Emacs                         	       0x1028f81ec redisplay_internal + 4652
53  Emacs                         	       0x102977bbc read_char + 2104
54  Emacs                         	       0x102975ea8 read_key_sequence + 1084
55  Emacs                         	       0x102974afc command_loop_1 + 768
56  Emacs                         	       0x1029e0b0c internal_condition_case + 96
57  Emacs                         	       0x1029747e8 command_loop_2 + 52
58  Emacs                         	       0x1029e0618 internal_catch + 88
59  Emacs                         	       0x102a8a534 command_loop.cold.1 + 80
60  Emacs                         	       0x102974178 command_loop + 156
61  Emacs                         	       0x102974078 recursive_edit_1 + 120
62  Emacs                         	       0x1029742b0 Frecursive_edit + 288
63  Emacs                         	       0x1029736f0 main + 7116
64  dyld                          	       0x10339508c start + 520

Thread 1:: gmain
0   libsystem_kernel.dylib        	       0x1b6499598 __select + 8
1   libglib-2.0.0.dylib           	       0x10374dc74 g_poll + 424
2   libglib-2.0.0.dylib           	       0x103740f10 g_main_context_iterate + 336
3   libglib-2.0.0.dylib           	       0x103740fd8 g_main_context_iteration + 60
4   libglib-2.0.0.dylib           	       0x10374241c glib_worker_main + 48
5   libglib-2.0.0.dylib           	       0x103764cd4 g_thread_proxy + 68
6   libsystem_pthread.dylib       	       0x1b64cc26c _pthread_start + 148
7   libsystem_pthread.dylib       	       0x1b64c708c thread_start + 8

Thread 2:
0   libsystem_kernel.dylib        	       0x1b6499598 __select + 8
1   Emacs                         	       0x102a5cecc -[EmacsApp fd_handler:] + 200
2   Foundation                    	       0x1b747363c __NSThread__start__ + 808
3   libsystem_pthread.dylib       	       0x1b64cc26c _pthread_start + 148
4   libsystem_pthread.dylib       	       0x1b64c708c thread_start + 8

Thread 3:: com.apple.NSEventThread
0   libsystem_kernel.dylib        	       0x1b648e8b0 mach_msg_trap + 8
1   libsystem_kernel.dylib        	       0x1b648ed20 mach_msg + 76
2   CoreFoundation                	       0x1b65992b0 __CFRunLoopServiceMachPort + 372
3   CoreFoundation                	       0x1b6597760 __CFRunLoopRun + 1180
4   CoreFoundation                	       0x1b6596b24 CFRunLoopRunSpecific + 600
5   AppKit                        	       0x1b926a374 _NSEventThread + 196
6   libsystem_pthread.dylib       	       0x1b64cc26c _pthread_start + 148
7   libsystem_pthread.dylib       	       0x1b64c708c thread_start + 8

Thread 4:
0   libsystem_pthread.dylib       	       0x1b64c7078 start_wqthread + 0

Thread 5:
0   libsystem_pthread.dylib       	       0x1b64c7078 start_wqthread + 0


Thread 0 crashed with ARM Thread State (64-bit):
    x0: 0x0000000000000000   x1: 0x0000000000000000   x2: 0x0000000000000000   x3: 0x00000001b62db04c
    x4: 0x0000600001ecaf20   x5: 0x0000000000000000   x6: 0x0000000000000600   x7: 0x0000000000000100
    x8: 0xaa9dcafc26603675   x9: 0xaa9dcafd2520b3f5  x10: 0x0000000000000001  x11: 0x020000020ee9696d
   x12: 0x000000000000017a  x13: 0x00000000884ae8f5  x14: 0x00000000886af000  x15: 0x000000000000015e
   x16: 0x0000000000000148  x17: 0x0000000210557680  x18: 0x0000000000000000  x19: 0x0000000000000006
   x20: 0x0000000103408580  x21: 0x0000000000000103  x22: 0x0000000103408660  x23: 0x0000000000000f00
   x24: 0x0000000000004645  x25: 0x0000000000000000  x26: 0x0000000000000000  x27: 0x0000000000000001
   x28: 0x0000000000000f00   fp: 0x0000000102ed6060   lr: 0x00000001b64cbee0
    sp: 0x0000000102ed6040   pc: 0x00000001b6496d98 cpsr: 0x40001000
   far: 0x000000000000108d  esr: 0x56000080  Address size fault

Binary Images:
       0x1b648d000 -        0x1b64c4fff libsystem_kernel.dylib (*) <03f48dc5-caa7-3678-af61-1a3c7fa8b06e> /usr/lib/system/libsystem_kernel.dylib
       0x1b64c5000 -        0x1b64d1fff libsystem_pthread.dylib (*) <42166a2c-89a9-3c38-a215-f028544cea23> /usr/lib/system/libsystem_pthread.dylib
       0x1b638c000 -        0x1b640dfff libsystem_c.dylib (*) <86746b94-88e3-342d-b2b2-54303404e492> /usr/lib/system/libsystem_c.dylib
       0x1028cc000 -        0x102acbfff org.gnu.Emacs (Version 28.1) <267914ca-10d1-3d61-b4ff-d60b1392d3c5> /opt/homebrew/*/Emacs.app/Contents/MacOS/Emacs
       0x1b64df000 -        0x1b64e6fff libsystem_platform.dylib (*) <d7aba99f-ba00-36e9-945d-48acf57fc568> /usr/lib/system/libsystem_platform.dylib
       0x284dc4000 -        0x284ddffff dired-6a3ae2bc-4d19216a.eln (*) <49dc7e96-17e2-31bb-aa2a-bd0edd429038> /Users/USER/*/dired-6a3ae2bc-4d19216a.eln
       0x31f290000 -        0x31f2affff dirvish-cdf30b1c-312e86b7.eln (*) <bccf5391-476b-3b6b-a8be-6bb3421e9bb7> /Users/USER/*/dirvish-cdf30b1c-312e86b7.eln
       0x103390000 -        0x1033effff dyld (*) <d9c2a46e-8dc4-3950-9d6a-f799e8ccb683> /usr/lib/dyld
       0x10370c000 -        0x1037effff libglib-2.0.0.dylib (*) <397aee53-70e4-3b62-a470-46c9de77d6f7> /opt/homebrew/*/libglib-2.0.0.dylib
       0x1b7417000 -        0x1b7808fff com.apple.Foundation (6.9) <a2e534d9-cdf0-397f-a41e-147559c83893> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
       0x1b6514000 -        0x1b6a5afff com.apple.CoreFoundation (6.9) <994db908-11a1-3e43-b7df-25c09d51368a> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
       0x1b90bc000 -        0x1b9f73fff com.apple.AppKit (6.9) <a773dd23-b1c8-3c9b-9175-9a71d210ace0> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
               0x0 - 0xffffffffffffffff ??? (*) <00000000-0000-0000-0000-000000000000> ???

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=942.2M resident=0K(0%) swapped_out_or_unallocated=942.2M(100%)
Writable regions: Total=3.2G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=3.2G(100%)

                                VIRTUAL   REGION 
REGION TYPE                        SIZE    COUNT (non-coalesced) 
===========                     =======  ======= 
Accelerate framework               512K        4 
Activity Tracing                   256K        1 
CG backing stores                 3520K        4 
CG image                           240K       11 
ColorSync                          496K       24 
CoreAnimation                      128K        7 
CoreGraphics                        16K        1 
CoreImage                           16K        1 
CoreUI image data                  992K        7 
Foundation                          16K        1 
Image IO                          41.2M        5 
Kernel Alloc Once                   32K        1 
MALLOC                           768.8M      157 
MALLOC guard page                  192K       10 
MALLOC_MEDIUM (reserved)           1.0G        9         reserved VM address space (unallocated)
MALLOC_NANO (reserved)           384.0M        1         reserved VM address space (unallocated)
STACK GUARD                         80K        5 
Stack                             10.6M        6 
Stack (reserved)                  1616K        1         reserved VM address space (unallocated)
Stack Guard                       54.4M        1 
VM_ALLOCATE                        208K       13 
__AUTH                            1933K      192 
__AUTH_CONST                      11.4M      356 
__CTF                               756        1 
__DATA                             1.0G     1070 
__DATA_CONST                      20.1M      734 
__DATA_DIRTY                       874K      121 
__FONT_DATA                          4K        1 
__LINKEDIT                       610.6M      618 
__OBJC_CONST                      1817K      164 
__OBJC_RO                         83.0M        1 
__OBJC_RW                         3152K        1 
__TEXT                           331.6M      987 
__UNICODE                          592K        1 
dyld private memory               1024K        1 
mapped file                        2.1G      626 
shared memory                      864K       15 
===========                     =======  ======= 
TOTAL                              6.4G     5159 
TOTAL, minus reserved VM space     5.1G     5159 



-----------
Full Report
-----------

{"app_name":"Emacs","timestamp":"2022-05-27 19:06:48.00 +0800","app_version":"Version 28.1","slice_uuid":"267914ca-10d1-3d61-b4ff-d60b1392d3c5","build_version":"9.0","platform":1,"bundleID":"org.gnu.Emacs","share_with_app_devs":0,"is_first_party":0,"bug_type":"309","os_version":"macOS 12.4 (21F79)","incident_id":"CE7EA71E-BB6F-4C92-9B99-790A955C9FF3","name":"Emacs"}
{
  "uptime" : 170000,
  "procLaunch" : "2022-05-27 18:34:39.3423 +0800",
  "procRole" : "Foreground",
  "version" : 2,
  "userID" : 501,
  "deployVersion" : 210,
  "modelCode" : "MacBookPro18,3",
  "procStartAbsTime" : 4077601806587,
  "coalitionID" : 1206,
  "osVersion" : {
    "train" : "macOS 12.4",
    "build" : "21F79",
    "releaseType" : "User"
  },
  "captureTime" : "2022-05-27 19:06:48.6056 +0800",
  "incident" : "CE7EA71E-BB6F-4C92-9B99-790A955C9FF3",
  "bug_type" : "309",
  "pid" : 63482,
  "procExitAbsTime" : 4123902650975,
  "translated" : false,
  "cpuType" : "ARM-64",
  "procName" : "Emacs",
  "procPath" : "\/opt\/homebrew\/*\/Emacs.app\/Contents\/MacOS\/Emacs",
  "bundleInfo" : {"CFBundleShortVersionString":"Version 28.1","CFBundleVersion":"9.0","CFBundleIdentifier":"org.gnu.Emacs"},
  "storeInfo" : {"deviceIdentifierForVendor":"C4F05C8D-7DC5-58AA-9C05-DBF43789EC38","thirdParty":true},
  "parentProc" : "launchd",
  "parentPid" : 1,
  "coalitionName" : "org.gnu.Emacs",
  "crashReporterKey" : "75548F30-FE51-464E-A529-3BB5F24AE882",
  "wakeTime" : 2981,
  "sleepWakeUUID" : "5B08E4C3-6DFC-491B-AC93-89AC9FBC0A35",
  "sip" : "disabled",
  "vmRegionInfo" : "0x108d is not in any region.  Bytes before following region: 105553518915443\n      REGION TYPE                    START - END         [ VSIZE] PRT\/MAX SHRMOD  REGION DETAIL\n      UNUSED SPACE AT START\n--->  \n      MALLOC_NANO (reserved)   600018000000-600020000000 [128.0M] rw-\/rwx SM=NUL  ...(unallocated)",
  "isCorpse" : 1,
  "exception" : {"codes":"0x0000000000000001, 0x000000000000108d","rawCodes":[1,4237],"type":"EXC_BAD_ACCESS","signal":"SIGABRT","subtype":"KERN_INVALID_ADDRESS at 0x000000000000108d"},
  "ktriageinfo" : "VM - pmap_enter failed with resource shortage\nVM - pmap_enter failed with resource shortage\nVM - pmap_enter failed with resource shortage\nVM - pmap_enter failed with resource shortage\nVM - pmap_enter failed with resource shortage\n",
  "vmregioninfo" : "0x108d is not in any region.  Bytes before following region: 105553518915443\n      REGION TYPE                    START - END         [ VSIZE] PRT\/MAX SHRMOD  REGION DETAIL\n      UNUSED SPACE AT START\n--->  \n      MALLOC_NANO (reserved)   600018000000-600020000000 [128.0M] rw-\/rwx SM=NUL  ...(unallocated)",
  "extMods" : {"caller":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"system":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"targeted":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"warnings":0},
  "faultingThread" : 0,
  "threads" : [{"triggered":true,"id":1292882,"threadState":{"x":[{"value":0},{"value":0},{"value":0},{"value":7351414860,"symbolLocation":0,"symbol":"nanov2_free_definite_size"},{"value":105553148555040},{"value":0},{"value":1536},{"value":256},{"value":12294205742115731061},{"value":12294205746389758965},{"value":1},{"value":144115196915968365,"symbolLocation":144115188075855877,"symbol":"OBJC_CLASS_$__CFXPreferences"},{"value":378},{"value":2286610677},{"value":2288709632},{"value":350},{"value":328},{"value":8863970944},{"value":0},{"value":6},{"value":4349527424,"symbolLocation":0,"symbol":"_main_thread"},{"value":259},{"value":4349527648,"symbolLocation":224,"symbol":"_main_thread"},{"value":3840},{"value":17989},{"value":0},{"value":0},{"value":1},{"value":3840}],"flavor":"ARM_THREAD_STATE64","lr":{"value":7353450208},"cpsr":{"value":1073745920},"fp":{"value":4344078432},"sp":{"value":4344078400},"esr":{"value":1442840704,"description":" Address size fault"},"pc":{"value":7353232792,"matchesCrashFrame":1},"far":{"value":4237}},"queue":"com.apple.main-thread","frames":[{"imageOffset":40344,"symbol":"__pthread_kill","symbolLocation":8,"imageIndex":0},{"imageOffset":28384,"symbol":"pthread_kill","symbolLocation":288,"imageIndex":1},{"imageOffset":272000,"symbol":"raise","symbolLocation":32,"imageIndex":2},{"imageOffset":1827360,"symbol":"terminate_due_to_signal","symbolLocation":204,"imageIndex":3},{"imageOffset":1829020,"symbol":"emacs_abort","symbolLocation":20,"imageIndex":3},{"imageOffset":1637156,"symbol":"ns_term_shutdown","symbolLocation":132,"imageIndex":3},{"imageOffset":678608,"symbol":"shut_down_emacs","symbolLocation":328,"imageIndex":3},{"imageOffset":1827304,"symbol":"terminate_due_to_signal","symbolLocation":148,"imageIndex":3},{"imageOffset":788092,"symbol":"handle_fatal_signal","symbolLocation":16,"imageIndex":3},{"imageOffset":788216,"symbol":"deliver_thread_signal","symbolLocation":124,"imageIndex":3},{"imageOffset":782560,"symbol":"deliver_fatal_thread_signal","symbolLocation":12,"imageIndex":3},{"imageOffset":788280,"symbol":"handle_sigsegv","symbolLocation":64,"imageIndex":3},{"imageOffset":17572,"symbol":"_sigtramp","symbolLocation":56,"imageIndex":4},{"imageOffset":931452,"symbol":"find_newline","symbolLocation":444,"imageIndex":3},{"imageOffset":933476,"symbol":"find_before_next_newline","symbolLocation":56,"imageIndex":3},{"imageOffset":1086356,"symbol":"Fline_end_position","symbolLocation":192,"imageIndex":3},{"imageOffset":44752,"symbol":"F64697265642d6d6f76652d746f2d66696c656e616d65_dired_move_to_filename_0","symbolLocation":268,"imageIndex":5},{"imageOffset":1141608,"symbol":"funcall_subr","symbolLocation":284,"imageIndex":3},{"imageOffset":1139508,"symbol":"Ffuncall","symbolLocation":600,"imageIndex":3},{"imageOffset":41468,"symbol":"F64697265642d6765742d66696c656e616d65_dired_get_filename_0","symbolLocation":1100,"imageIndex":5},{"imageOffset":1141608,"symbol":"funcall_subr","symbolLocation":284,"imageIndex":3},{"imageOffset":1139508,"symbol":"Ffuncall","symbolLocation":600,"imageIndex":3},{"imageOffset":77516,"symbol":"F646972766973682d706174682d6d6c_dirvish_path_ml_0","symbolLocation":508,"imageIndex":6},{"imageOffset":1126540,"symbol":"eval_sub","symbolLocation":1064,"imageIndex":3},{"imageOffset":1137280,"symbol":"Feval","symbolLocation":100,"imageIndex":3},{"imageOffset":1141608,"symbol":"funcall_subr","symbolLocation":284,"imageIndex":3},{"imageOffset":1139508,"symbol":"Ffuncall","symbolLocation":600,"imageIndex":3},{"imageOffset":1134312,"symbol":"internal_condition_case_n","symbolLocation":120,"imageIndex":3},{"imageOffset":156476,"symbol":"safe__call","symbolLocation":344,"imageIndex":3},{"imageOffset":156660,"symbol":"safe__call1","symbolLocation":36,"imageIndex":3},{"imageOffset":212528,"symbol":"display_mode_element","symbolLocation":800,"imageIndex":3},{"imageOffset":218192,"symbol":"display_mode_element","symbolLocation":6464,"imageIndex":3},{"imageOffset":210736,"symbol":"Fformat_mode_line","symbolLocation":760,"imageIndex":3},{"imageOffset":1126804,"symbol":"eval_sub","symbolLocation":1328,"imageIndex":3},{"imageOffset":1130156,"symbol":"FletX","symbolLocation":136,"imageIndex":3},{"imageOffset":1126580,"symbol":"eval_sub","symbolLocation":1104,"imageIndex":3},{"imageOffset":1137280,"symbol":"Feval","symbolLocation":100,"imageIndex":3},{"imageOffset":1141608,"symbol":"funcall_subr","symbolLocation":284,"imageIndex":3},{"imageOffset":1139508,"symbol":"Ffuncall","symbolLocation":600,"imageIndex":3},{"imageOffset":1134312,"symbol":"internal_condition_case_n","symbolLocation":120,"imageIndex":3},{"imageOffset":156476,"symbol":"safe__call","symbolLocation":344,"imageIndex":3},{"imageOffset":156660,"symbol":"safe__call1","symbolLocation":36,"imageIndex":3},{"imageOffset":212528,"symbol":"display_mode_element","symbolLocation":800,"imageIndex":3},{"imageOffset":218192,"symbol":"display_mode_element","symbolLocation":6464,"imageIndex":3},{"imageOffset":133012,"symbol":"display_mode_line","symbolLocation":368,"imageIndex":3},{"imageOffset":300496,"symbol":"display_mode_lines","symbolLocation":528,"imageIndex":3},{"imageOffset":333620,"symbol":"redisplay_window","symbolLocation":16988,"imageIndex":3},{"imageOffset":316620,"symbol":"redisplay_window_0","symbolLocation":44,"imageIndex":3},{"imageOffset":1133464,"symbol":"internal_condition_case_1","symbolLocation":100,"imageIndex":3},{"imageOffset":314028,"symbol":"redisplay_windows","symbolLocation":168,"imageIndex":3},{"imageOffset":314000,"symbol":"redisplay_windows","symbolLocation":140,"imageIndex":3},{"imageOffset":314000,"symbol":"redisplay_windows","symbolLocation":140,"imageIndex":3},{"imageOffset":180716,"symbol":"redisplay_internal","symbolLocation":4652,"imageIndex":3},{"imageOffset":703420,"symbol":"read_char","symbolLocation":2104,"imageIndex":3},{"imageOffset":695976,"symbol":"read_key_sequence","symbolLocation":1084,"imageIndex":3},{"imageOffset":690940,"symbol":"command_loop_1","symbolLocation":768,"imageIndex":3},{"imageOffset":1133324,"symbol":"internal_condition_case","symbolLocation":96,"imageIndex":3},{"imageOffset":690152,"symbol":"command_loop_2","symbolLocation":52,"imageIndex":3},{"imageOffset":1132056,"symbol":"internal_catch","symbolLocation":88,"imageIndex":3},{"imageOffset":1828148,"symbol":"command_loop.cold.1","symbolLocation":80,"imageIndex":3},{"imageOffset":688504,"symbol":"command_loop","symbolLocation":156,"imageIndex":3},{"imageOffset":688248,"symbol":"recursive_edit_1","symbolLocation":120,"imageIndex":3},{"imageOffset":688816,"symbol":"Frecursive_edit","symbolLocation":288,"imageIndex":3},{"imageOffset":685808,"symbol":"main","symbolLocation":7116,"imageIndex":3},{"imageOffset":20620,"symbol":"start","symbolLocation":520,"imageIndex":7}]},{"id":1292889,"name":"gmain","frames":[{"imageOffset":50584,"symbol":"__select","symbolLocation":8,"imageIndex":0},{"imageOffset":269428,"symbol":"g_poll","symbolLocation":424,"imageIndex":8},{"imageOffset":216848,"symbol":"g_main_context_iterate","symbolLocation":336,"imageIndex":8},{"imageOffset":217048,"symbol":"g_main_context_iteration","symbolLocation":60,"imageIndex":8},{"imageOffset":222236,"symbol":"glib_worker_main","symbolLocation":48,"imageIndex":8},{"imageOffset":363732,"symbol":"g_thread_proxy","symbolLocation":68,"imageIndex":8},{"imageOffset":29292,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8332,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":1292898,"frames":[{"imageOffset":50584,"symbol":"__select","symbolLocation":8,"imageIndex":0},{"imageOffset":1642188,"symbol":"-[EmacsApp fd_handler:]","symbolLocation":200,"imageIndex":3},{"imageOffset":378428,"symbol":"__NSThread__start__","symbolLocation":808,"imageIndex":9},{"imageOffset":29292,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8332,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":1292904,"name":"com.apple.NSEventThread","frames":[{"imageOffset":6320,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":0},{"imageOffset":7456,"symbol":"mach_msg","symbolLocation":76,"imageIndex":0},{"imageOffset":545456,"symbol":"__CFRunLoopServiceMachPort","symbolLocation":372,"imageIndex":10},{"imageOffset":538464,"symbol":"__CFRunLoopRun","symbolLocation":1180,"imageIndex":10},{"imageOffset":535332,"symbol":"CFRunLoopRunSpecific","symbolLocation":600,"imageIndex":10},{"imageOffset":1762164,"symbol":"_NSEventThread","symbolLocation":196,"imageIndex":11},{"imageOffset":29292,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8332,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":1311125,"frames":[{"imageOffset":8312,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":1}]},{"id":1311583,"frames":[{"imageOffset":8312,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":1}]}],
  "usedImages" : [
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7353192448,
    "size" : 229376,
    "uuid" : "03f48dc5-caa7-3678-af61-1a3c7fa8b06e",
    "path" : "\/usr\/lib\/system\/libsystem_kernel.dylib",
    "name" : "libsystem_kernel.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7353421824,
    "size" : 53248,
    "uuid" : "42166a2c-89a9-3c38-a215-f028544cea23",
    "path" : "\/usr\/lib\/system\/libsystem_pthread.dylib",
    "name" : "libsystem_pthread.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7352139776,
    "size" : 532480,
    "uuid" : "86746b94-88e3-342d-b2b2-54303404e492",
    "path" : "\/usr\/lib\/system\/libsystem_c.dylib",
    "name" : "libsystem_c.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4337745920,
    "CFBundleShortVersionString" : "Version 28.1",
    "CFBundleIdentifier" : "org.gnu.Emacs",
    "size" : 2097152,
    "uuid" : "267914ca-10d1-3d61-b4ff-d60b1392d3c5",
    "path" : "\/opt\/homebrew\/*\/Emacs.app\/Contents\/MacOS\/Emacs",
    "name" : "Emacs",
    "CFBundleVersion" : "9.0"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7353528320,
    "size" : 32768,
    "uuid" : "d7aba99f-ba00-36e9-945d-48acf57fc568",
    "path" : "\/usr\/lib\/system\/libsystem_platform.dylib",
    "name" : "libsystem_platform.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 10818961408,
    "size" : 114688,
    "uuid" : "49dc7e96-17e2-31bb-aa2a-bd0edd429038",
    "path" : "\/Users\/USER\/*\/dired-6a3ae2bc-4d19216a.eln",
    "name" : "dired-6a3ae2bc-4d19216a.eln"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 13407682560,
    "size" : 131072,
    "uuid" : "bccf5391-476b-3b6b-a8be-6bb3421e9bb7",
    "path" : "\/Users\/USER\/*\/dirvish-cdf30b1c-312e86b7.eln",
    "name" : "dirvish-cdf30b1c-312e86b7.eln"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 4349034496,
    "size" : 393216,
    "uuid" : "d9c2a46e-8dc4-3950-9d6a-f799e8ccb683",
    "path" : "\/usr\/lib\/dyld",
    "name" : "dyld"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4352688128,
    "size" : 933888,
    "uuid" : "397aee53-70e4-3b62-a470-46c9de77d6f7",
    "path" : "\/opt\/homebrew\/*\/libglib-2.0.0.dylib",
    "name" : "libglib-2.0.0.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7369486336,
    "CFBundleShortVersionString" : "6.9",
    "CFBundleIdentifier" : "com.apple.Foundation",
    "size" : 4136960,
    "uuid" : "a2e534d9-cdf0-397f-a41e-147559c83893",
    "path" : "\/System\/Library\/Frameworks\/Foundation.framework\/Versions\/C\/Foundation",
    "name" : "Foundation",
    "CFBundleVersion" : "1863"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7353745408,
    "CFBundleShortVersionString" : "6.9",
    "CFBundleIdentifier" : "com.apple.CoreFoundation",
    "size" : 5533696,
    "uuid" : "994db908-11a1-3e43-b7df-25c09d51368a",
    "path" : "\/System\/Library\/Frameworks\/CoreFoundation.framework\/Versions\/A\/CoreFoundation",
    "name" : "CoreFoundation",
    "CFBundleVersion" : "1863"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7399522304,
    "CFBundleShortVersionString" : "6.9",
    "CFBundleIdentifier" : "com.apple.AppKit",
    "size" : 15433728,
    "uuid" : "a773dd23-b1c8-3c9b-9175-9a71d210ace0",
    "path" : "\/System\/Library\/Frameworks\/AppKit.framework\/Versions\/C\/AppKit",
    "name" : "AppKit",
    "CFBundleVersion" : "2113.50.132"
  },
  {
    "size" : 0,
    "source" : "A",
    "base" : 0,
    "uuid" : "00000000-0000-0000-0000-000000000000"
  }
],
  "sharedCache" : {
  "base" : 7350124544,
  "size" : 3136077824,
  "uuid" : "513553bb-5ca5-3b9e-a613-b0603ffe3038"
},
  "vmSummary" : "ReadOnly portion of Libraries: Total=942.2M resident=0K(0%) swapped_out_or_unallocated=942.2M(100%)\nWritable regions: Total=3.2G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=3.2G(100%)\n\n                                VIRTUAL   REGION \nREGION TYPE                        SIZE    COUNT (non-coalesced) \n===========                     =======  ======= \nAccelerate framework               512K        4 \nActivity Tracing                   256K        1 \nCG backing stores                 3520K        4 \nCG image                           240K       11 \nColorSync                          496K       24 \nCoreAnimation                      128K        7 \nCoreGraphics                        16K        1 \nCoreImage                           16K        1 \nCoreUI image data                  992K        7 \nFoundation                          16K        1 \nImage IO                          41.2M        5 \nKernel Alloc Once                   32K        1 \nMALLOC                           768.8M      157 \nMALLOC guard page                  192K       10 \nMALLOC_MEDIUM (reserved)           1.0G        9         reserved VM address space (unallocated)\nMALLOC_NANO (reserved)           384.0M        1         reserved VM address space (unallocated)\nSTACK GUARD                         80K        5 \nStack                             10.6M        6 \nStack (reserved)                  1616K        1         reserved VM address space (unallocated)\nStack Guard                       54.4M        1 \nVM_ALLOCATE                        208K       13 \n__AUTH                            1933K      192 \n__AUTH_CONST                      11.4M      356 \n__CTF                               756        1 \n__DATA                             1.0G     1070 \n__DATA_CONST                      20.1M      734 \n__DATA_DIRTY                       874K      121 \n__FONT_DATA                          4K        1 \n__LINKEDIT                       610.6M      618 \n__OBJC_CONST                      1817K      164 \n__OBJC_RO                         83.0M        1 \n__OBJC_RW                         3152K        1 \n__TEXT                           331.6M      987 \n__UNICODE                          592K        1 \ndyld private memory               1024K        1 \nmapped file                        2.1G      626 \nshared memory                      864K       15 \n===========                     =======  ======= \nTOTAL                              6.4G     5159 \nTOTAL, minus reserved VM space     5.1G     5159 \n",
  "legacyInfo" : {
  "threadTriggered" : {
    "queue" : "com.apple.main-thread"
  }
},
  "trialInfo" : {
  "rollouts" : [
    {
      "rolloutId" : "61af99aeda72d16a4beb7756",
      "factorPackIds" : {

      },
      "deploymentId" : 240000188
    },
    {
      "rolloutId" : "60356660bbe37970735c5624",
      "factorPackIds" : {

      },
      "deploymentId" : 240000027
    }
  ],
  "experiments" : [

  ]
}
}

Model: MacBookPro18,3, BootROM 7459.121.3, proc 10:8:2 processors, 16 GB, SMC 
Graphics: Apple M1 Pro, Apple M1 Pro, Built-In
Display: Color LCD, 3024 x 1964 Retina, Main, MirrorOff, Online
Memory Module: LPDDR5
AirPort: Wi-Fi, wl0: Apr  6 2022 05:55:54 version 20.90.45.0.8.7.118 FWID 01-e7138ff2
Bluetooth: Version (null), 0 services, 0 devices, 0 incoming serial ports
Network Service: Wi-Fi, AirPort, en0
USB Device: USB31Bus
USB Device: USB31Bus
USB Device: USB31Bus
Thunderbolt Bus: MacBook Pro, Apple Inc.
Thunderbolt Bus: MacBook Pro, Apple Inc.
Thunderbolt Bus: MacBook Pro, Apple Inc.

More dired-yank commands

It would be nice if dired-yank provided specific commands for each possibility (commands for move, relalink, and symlink), so that I don't have to make them myself.

It would also be nice if support was added for hardlinks (and ranger's hardlinked_subtree subtree if possible). I use hardlinks way more often than symlinks because I don't have to worry about them breaking if I move files.

Doesn't work with doom?

(dirvish) results in (file-missing "Cannot open load file" "No such file or directory" "posframe")

Double icon and keybind issue in doom emacs

First, really liked you package, Keep up the good work. It's lot faster than ranger.el (without running daemon).
Second, I'm new to emacs world and still learning. I'm currently using doom emacs.

image

This is dirvish without configuring anything just added the lines that is shown in the README.
As you can see here the icons shows twice for some reason.
If I press 'h' or 'l' it does not go to up directory nor go to down directory (I have to press '-' or run command 'dirvish-up-directory')

if you take ranger, nnn or any other terminal file manger who uses vi keys, pressing 'h' goes back to prev directory and 'l' goes to next directory or opens a file. It would be awesome if I can achieve that.

There is a bug maybe, if run 'dirvish-dired' by 'M-x' while on doom dashboard and press qq after opening 'dirvish-dired' then emacs hangs and cpu usages rises as you can see here otherwise pressing 'q' closes the window while I'm in a buffer. Again I'm new to emacs I may have done something wrong, If you need any more info please mention it.

image

PS: English is not my native language, please excuse my mistakes.

Optional posframe dependency

Hi,

I like the idea of your file manager - minimal, built on dired, preview etc! Would it be possible to avoid the posframe dependency or make it optional, such that dirvish only uses posframe if installed independently? It seems posframe is not crucial for dirvish? Thank you!

Slow navigation on remote host via TRAMP

I tries to use Dirvish with kubel (kubernetes UI for Emacs) to browse filesystem inside container, and it was extremely slow comparing to plain dired. Is it possible to add some sort of "remote" mode which will minimize unnecessary readings from the file system?

Copying files over TRAMP

Dirvish's file copying mechanics sadly don't work over tramp, while dired default copying/moving works fine.

incorrect sorting information in modelline?

调用dired-sort-toggle-or-edit函数,可以切换排序,不过modelline没有变化。
image
还有这个箭头,应该是向下还是向上,不太确定,这是苹果文件夹排序的箭头。
image

Add back dirvish-sort-by-criteria or an equivalent

I'd prefer to be able to bind a key directly to this, so that I could change the sorting method in two keypresses. Having it was a lot faster for me than going through the current ls switches transient.

turning off exa colors

Hi,

How do you turn off exa colors. I'm using Doom Emacs and timestamp color is not prominent. I override dirvish-preview-directory-exa-dispatcher function in my config.el, but didn't work. Blue color tone doesn't look good to me.

image

how to set opening .mp4 file with external program

Firstly, thank you for the great package! It's really awesome. I've a question when I used dirvish as titled. Details is as following:

Environment:

  • The latest version of dirvish installed today.
  • Emacs 29
  • MacOS 12.3.1

I've installed mpv via brew and can open .mp4 files via mpv xxxx.mp4 in command line.

When I open .mp4 file via find-file or in dirvish window, it opened inside Emacs instead of mpv. See screenshot below.
Could you please help identify how to achieve this? Thanks a lot.
图片

BTW, I've also tried to customize dirvish-open-with-programs as following:

(defcustom dirvish-open-with-programs
  '(("video/" . ("mpv" "%f"))
    ("audio/" . ("mpv" "%f"))
    (("mp4")  . ("mpv" "%f"))
    (("html") . ("firefox" "%f")))
  "Association list of mimetype and external program for `find-file'.
Each element is of the form (TYPE . (CMD . ARGS)).  TYPE can be a
 string that stands for a mimetype or a list of file name
 extensions.  Once the TYPE is matched with FILENAME in
 `find-file', a subprocess according to CMD and its ARGS is
 issued to open the file outside of Emacs.  The special
 placeholder \"%f\" in the ARGS is replaced by the FILENAME at
 runtime.  Set it to nil disables this feature."
  :group 'dirvish
  :type '(alist :key-type ((choice string (repeat string)) :tag "File mimetype or extensions")
                :value-type ((repeat string) :tag "External command and args")))

Still not working, maybe I configured in a wrong way. (sorry that I'm not good at elisp)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.