From 925724a4b54a6780bfa342bc3a6440a6ad0a6ecc Mon Sep 17 00:00:00 2001 From: Stephen Berman Date: Fri, 24 Feb 2023 16:43:35 +0100 Subject: [PATCH] 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. --- lisp/wdired.el | 1 + test/lisp/wdired-tests.el | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/lisp/wdired.el b/lisp/wdired.el index 771458508e6..5572dcb32f3 100644 --- a/lisp/wdired.el +++ b/lisp/wdired.el @@ -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) diff --git a/test/lisp/wdired-tests.el b/test/lisp/wdired-tests.el index 74c2449076f..897c6cd69a8 100644 --- a/test/lisp/wdired-tests.el +++ b/test/lisp/wdired-tests.el @@ -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 -- 2.39.5