rainstormstudio / nerd-icons-dired

GNU General Public License v3.0
50 stars 11 forks source link

[BUG] Some remote directories cannot be opened when nerd-icons-dired-mode hook is added #21

Open rennsax opened 2 months ago

rennsax commented 2 months ago

After (add-hook 'dired-mode-hook #'nerd-icons-dired-mode), some remote folder cannot be opened via tramp.

The debugger information:

Debugger entered--Lisp error: (file-error "Process has died")
  signal(file-error ("Process has died"))
  tramp-error(#<process *tramp/ssh <remote-host>*> file-error "Process has died")
  apply(tramp-error #<process *tramp/ssh <remote-host>*> file-error "Process has died" nil)
  tramp-wait-for-regexp(#<process *tramp/ssh <remote-host>*> nil "\\(?:^\\|\0\\)\\(?:[^\n#$]*///04ba40fb6b4571d11b5e25a114...")
  tramp-wait-for-output(#<process *tramp/ssh <remote-host>*>)
  tramp-send-command((tramp-file-name "ssh" nil nil "<remote-host>" nil "/home/<user>/OS-Course-Lab/user/system-services" nil) "test -d /home/<user>/OS-Course-Lab/user/system-...")
  tramp-send-command-and-check((tramp-file-name "ssh" nil nil "<remote-host>" nil "/home/<user>/OS-Course-Lab/user/system-services" nil) "test -d /home/<user>/OS-Course-Lab/user/system-...")
  tramp-run-test((tramp-file-name "ssh" nil nil "<remote-host>" nil "/home/<user>/OS-Course-Lab/user/system-services" nil) "-d" "/home/<user>/OS-Course-Lab/user/system-services")
  tramp-sh-handle-file-directory-p("/ssh:<remote-host>:/home/<user>/OS-Course-Lab/user/system...")
  tramp-sh-file-name-handler(file-directory-p "/ssh:<remote-host>:/home/<user>/OS-Course-Lab/user/system...")
  apply(tramp-sh-file-name-handler file-directory-p "/ssh:<remote-host>:/home/<user>/OS-Course-Lab/user/system...")
  tramp-file-name-handler(file-directory-p "/ssh:<remote-host>:/home/<user>/OS-Course-Lab/user/system...")
  file-directory-p("system-services")
  (if (file-directory-p file) (nerd-icons-icon-for-dir file :face 'nerd-icons-dired-dir-face :v-adjust nerd-icons-dired-v-adjust) (nerd-icons-icon-for-file file :v-adjust nerd-icons-dired-v-adjust))
  (let ((icon (if (file-directory-p file) (nerd-icons-icon-for-dir file :face 'nerd-icons-dired-dir-face :v-adjust nerd-icons-dired-v-adjust) (nerd-icons-icon-for-file file :v-adjust nerd-icons-dired-v-adjust))) (inhibit-read-only t)) (if (member file '("." "..")) (nerd-icons-dired--add-overlay (dired-move-to-filename) "  \11") (nerd-icons-dired--add-overlay (dired-move-to-filename) (concat icon "\11"))))
  (progn (let ((icon (if (file-directory-p file) (nerd-icons-icon-for-dir file :face 'nerd-icons-dired-dir-face :v-adjust nerd-icons-dired-v-adjust) (nerd-icons-icon-for-file file :v-adjust nerd-icons-dired-v-adjust))) (inhibit-read-only t)) (if (member file '("." "..")) (nerd-icons-dired--add-overlay (dired-move-to-filename) "  \11") (nerd-icons-dired--add-overlay (dired-move-to-filename) (concat icon "\11")))))
  (if file (progn (let ((icon (if (file-directory-p file) (nerd-icons-icon-for-dir file :face 'nerd-icons-dired-dir-face :v-adjust nerd-icons-dired-v-adjust) (nerd-icons-icon-for-file file :v-adjust nerd-icons-dired-v-adjust))) (inhibit-read-only t)) (if (member file '("." "..")) (nerd-icons-dired--add-overlay (dired-move-to-filename) "  \11") (nerd-icons-dired--add-overlay (dired-move-to-filename) (concat icon "\11"))))))
  (let ((file (dired-get-filename 'relative 'noerror))) (if file (progn (let ((icon (if (file-directory-p file) (nerd-icons-icon-for-dir file :face ... :v-adjust nerd-icons-dired-v-adjust) (nerd-icons-icon-for-file file :v-adjust nerd-icons-dired-v-adjust))) (inhibit-read-only t)) (if (member file '("." "..")) (nerd-icons-dired--add-overlay (dired-move-to-filename) "  \11") (nerd-icons-dired--add-overlay (dired-move-to-filename) (concat icon "\11")))))))
  (progn (let ((file (dired-get-filename 'relative 'noerror))) (if file (progn (let ((icon (if ... ... ...)) (inhibit-read-only t)) (if (member file '...) (nerd-icons-dired--add-overlay (dired-move-to-filename) "  \11") (nerd-icons-dired--add-overlay (dired-move-to-filename) (concat icon "\11"))))))))
  (if (dired-move-to-filename nil) (progn (let ((file (dired-get-filename 'relative 'noerror))) (if file (progn (let ((icon ...) (inhibit-read-only t)) (if (member file ...) (nerd-icons-dired--add-overlay ... "  \11") (nerd-icons-dired--add-overlay ... ...))))))))
  (while (not (eobp)) (if (dired-move-to-filename nil) (progn (let ((file (dired-get-filename 'relative 'noerror))) (if file (progn (let (... ...) (if ... ... ...))))))) (forward-line 1))
  (save-excursion (goto-char (point-min)) (while (not (eobp)) (if (dired-move-to-filename nil) (progn (let ((file (dired-get-filename ... ...))) (if file (progn (let ... ...)))))) (forward-line 1)))
  nerd-icons-dired--refresh()
  (progn (nerd-icons-dired--refresh))
  (if nerd-icons-dired-mode (progn (nerd-icons-dired--refresh)))
  (let ((result (apply fn args))) (if nerd-icons-dired-mode (progn (nerd-icons-dired--refresh))) result)
  nerd-icons-dired--refresh-advice(#<subr dired-readin>)

But if nerd-icons-dired-mode is enabled after the dired buffer is opened, the icons can correctly show up.

Currently I cannot find a stable way to reproduce this problem: it happens on some of my remote directories, which do not have some obvious commons. If I find some, I'll report ASAP.