Restore invisibility of symlink target on exiting wdired-mode

* lisp/wdired.el (wdired-change-to-dired-mode): Invoke
dired-hide-details-update-invisibility-spec (bug#61510).

* test/lisp/wdired-tests.el (wdired-test-bug61510): New test.
This commit is contained in:
Stephen Berman 2023-02-24 16:43:35 +01:00
parent 55d29c9bac
commit 925724a4b5
2 changed files with 24 additions and 0 deletions

View file

@ -455,6 +455,7 @@ non-nil means return old filename."
(setq major-mode 'dired-mode)
(setq mode-name "Dired")
(dired-advertise)
(dired-hide-details-update-invisibility-spec)
(remove-hook 'kill-buffer-hook #'wdired-check-kill-buffer t)
(remove-hook 'before-change-functions #'wdired--before-change-fn t)
(remove-hook 'after-change-functions #'wdired--restore-properties t)

View file

@ -189,5 +189,28 @@ wdired-get-filename before and after editing."
(wdired-finish-edit))
(if buf (kill-buffer buf)))))))
(ert-deftest wdired-test-bug61510 ()
"Test visibility of symlink target on leaving wdired-mode.
When dired-hide-details-mode is enabled and
dired-hide-details-hide-symlink-targets is non-nil (the default),
the link target becomes invisible. When wdired-mode is enabled
the target becomes visible, but on returning to dired-mode, it
should be invisible again."
(ert-with-temp-directory test-dir
(let ((buf (find-file-noselect test-dir))
;; Default value is t, but set it anyway, to be sure.
(dired-hide-details-hide-symlink-targets t))
(unwind-protect
(with-current-buffer buf
(make-symbolic-link "bar" "foo")
(dired-hide-details-mode)
(should (memq 'dired-hide-details-link buffer-invisibility-spec))
(dired-toggle-read-only)
(should-not (memq 'dired-hide-details-link
buffer-invisibility-spec))
(wdired-finish-edit)
(should (memq 'dired-hide-details-link buffer-invisibility-spec)))
(if buf (kill-buffer buf))))))
(provide 'wdired-tests)
;;; wdired-tests.el ends here