alexluigit / dirvish Goto Github PK
View Code? Open in Web Editor NEWA polished Dired with batteries included.
License: GNU General Public License v3.0
A polished Dired with batteries included.
License: GNU General Public License v3.0
It is nice how ranger will show the number of items to the right of directories.
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:
»
My first impression of dirvish is positive, and I look forward to using it more. Thanks for publishing it.
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).
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
).
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).
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)
.
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.
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
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
This is only appeared on (dirvish)
(full frame) and not on (dirvish-dirid)
.
Reproduce
(dirvish)
in any dir(embark-act)
on any file.After restarting, emacs won't crash in such situation, but no embark buffer is prompted. By the way, embark-act can work.
Version
GNU Emacs 28.1
dirvish-20220523.1338
embark-20220521.1736
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.
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.
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.
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.
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,
Burly is a package by @alphapapa which lets you bookmark window and frame configurations. If I have two or more windows with Dired/Dirvish buffers in a bookmark, only one of them is restored when dirvish-override-dired-mode
is activated. It seems like the other dired buffers are deleted.
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
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.
Is that possible to suppress it? Likely, it might be suffice for the warning of linked file just one time for each folder?
BTW, it is possible to set dirvish to omit several file types for display? Such as not list the .DS_Store files on Mac.
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)
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)
I am on emacs28/pgtk-native-comp and dired shows up like this for me :
( i did try to disabled diredfl as well and dirvish still colour listing)
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.
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 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:
;; 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!
dirvish-saved-display-buffer-alist
is initialized at load time so modifications to display-buffer-alist
after that will be gonedirvish-saved-display-buffer-alist
before dirvish-activate
,dirvish-deactivate
does not always restore display-buffer-alist
for some reason.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-override-dired-mode: t
From an initial dirvish session:
when pressing RET
on the extensions folder, a dired buffer replaces the middle and right pane:
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 10, Emacs 27.2.50, dirvish-20220313.911
Steps to reproduce:
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)
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.
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.
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.
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.
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?
Line 1033 in 69e1348
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.
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.
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:
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.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.-------------------------------------
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.
It would be nice to list reasons why one should pick dirvish
instead of ranger.el
.
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.
(dirvish)
results in (file-missing "Cannot open load file" "No such file or directory" "posframe")
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.
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.
PS: English is not my native language, please excuse my mistakes.
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!
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?
Dirvish's file copying mechanics sadly don't work over tramp, while dired default copying/moving works fine.
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.
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:
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)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.