Dirvish: 基于 Dired 的极简、一站式文件管理器

Maihime Tenkawa 现搜的 我不认识 :robot:

赞,抽空再试试

Debugger entered--Lisp error: (error "Selecting deleted buffer")
  ad-Advice-set-window-buffer(#<subr set-window-buffer> nil #<killed buffer> nil)
  apply(ad-Advice-set-window-buffer #<subr set-window-buffer> (nil #<killed buffer> nil))
  set-window-buffer(nil #<killed buffer> nil)
  #<subr switch-to-buffer>(#<killed buffer>)
  apply(#<subr switch-to-buffer> #<killed buffer>)
  switch-to-buffer(#<killed buffer>)
  dirvish-quit-h()
  funcall(dirvish-quit-h)
  (condition-case e (funcall hook) ((debug error) (signal 'doom-hook-error (list hook e))))
  doom-run-hook(dirvish-quit-h)
  run-hook-wrapped(doom-run-hook dirvish-quit-h)
  (condition-case e (run-hook-wrapped hook #'doom-run-hook) ((debug doom-hook-error) (if debug-on-error nil (lwarn hook :error "Error running hook %S because: %s" (if (symbolp (car (cdr e))) (symbol-name (car (cdr e))) (car (cdr e))) (car (cdr (cdr e))))) (signal 'doom-hook-error (cons hook (cdr e)))))
  (let ((hook (car --dolist-tail--))) (condition-case e (run-hook-wrapped hook #'doom-run-hook) ((debug doom-hook-error) (if debug-on-error nil (lwarn hook :error "Error running hook %S because: %s" (if (symbolp (car ...)) (symbol-name (car ...)) (car (cdr e))) (car (cdr (cdr e))))) (signal 'doom-hook-error (cons hook (cdr e))))) (setq --dolist-tail-- (cdr --dolist-tail--)))
  (while --dolist-tail-- (let ((hook (car --dolist-tail--))) (condition-case e (run-hook-wrapped hook #'doom-run-hook) ((debug doom-hook-error) (if debug-on-error nil (lwarn hook :error "Error running hook %S because: %s" (if (symbolp ...) (symbol-name ...) (car ...)) (car (cdr ...)))) (signal 'doom-hook-error (cons hook (cdr e))))) (setq --dolist-tail-- (cdr --dolist-tail--))))
  (let ((--dolist-tail-- hooks)) (while --dolist-tail-- (let ((hook (car --dolist-tail--))) (condition-case e (run-hook-wrapped hook #'doom-run-hook) ((debug doom-hook-error) (if debug-on-error nil (lwarn hook :error "Error running hook %S because: %s" (if ... ... ...) (car ...))) (signal 'doom-hook-error (cons hook (cdr e))))) (setq --dolist-tail-- (cdr --dolist-tail--)))))
  doom-run-hooks(quit-window-hook)
  apply(doom-run-hooks quit-window-hook)
  run-hooks(quit-window-hook)
  apply(run-hooks quit-window-hook)
  #<subr quit-window>(nil)
  apply(#<subr quit-window> nil)
  quit-window(nil)
  apply(quit-window nil)
  +dired/quit-all(nil)
  funcall-interactively(+dired/quit-all nil)
  command-execute(+dired/quit-all)

今天启动之后总是遇到这个问题

你是不是手动把 dirvish-temp-buffer 杀了?

应该是,我看了下是没有了,不知道它是干啥的,可能顺手就杀掉了

问下 preview 可以delay嘛?还有是否可以在 preview 前做个判断什么的,有些文件不是很想 preview (

刚刚加了一个选项 dirvish-preview-disabled-exts, 可以设置不想预览的文件类型。

如果你想要的禁止规则比较复杂,你可以自己定义一个预览策略

(dirvish-define-preview disable-for-foo-files (file)
  "Disable preview for FOO."
  (when (string-match "foo" file)
    '(info . "No preview for FOO files.")))

(add-to-list 'dirvish-preview-dispatchers 'disable-for-foo-files)

Delay 是指什么呢? 把 dirvish--debouncing-delay 的值调大点看看?

我在 doom 基础设置上添加 all-the-icons 到 dirvish-attributes 遇到了这样一个 error

请问是使用 all-the-icons 需要什么额外的配置吗, 谢谢

你的版本好像不对。你先 pin 到最新的 commit 看看。

最新的 commit 没有问题, thx

BTW dirvish 的第三个 buffer 有什么作用呢(左下角空的那个)?

delay 是指,推迟预览。当我快速从上往下移动的时候,经过的那些文件我不想预览。希望光标停在某个文件名一段时间后再进行预览

1 个赞

我上面写的你试过了吗? (setq dirvish--debouncing-delay 2)

是不是光标没隐藏? 能截图看看吗

(setq-default cursor-in-non-selected-windows nil)

设置这个之后还是一样吗

应该不是光标?

这里左下的 d 窗口

哦,这个 buffer 是用来显示底下那个 mode-line (sort: default …) 的。

(set-frame-parameter nil 'bottom-divider-width 0)

就看不见这条线了。 你也可以直接把这个关了

(setq dirvish-mode-line-format nil)

嗯,才更新,可行w

dirvish-peek-mode 有什么依赖吗?我这显示不了,我用的是内置的 icomplete-vertical-mode

文档有写,目前只支持 vertico/selectrum (因为我只用过这两个)。icomplete-vertical-mode 我晚点支持一下,之前不知道内置了。

Peek 2022-03-17 16-21

现在可以实现异步的文件夹读取。对经常需要访问超大文件夹 (机器学习之类) 的朋友可能比较有用。默认不开启,需要自己设置文件数阈值。

;; 异步读取含 10000 个以上文件的文件夹
(setq dirvish-async-listing-threshold 10000)

@fu123456

1 个赞

楼主的这个项目和EAF的文件管理器理念非常一致,都是默认提供带预览的文件管理体验,很棒,以后多多交流。 :wink: