]> git.eshelyaron.com Git - emacs.git/commitdiff
Restore invisibility of symlink target on exiting wdired-mode
authorStephen Berman <stephen.berman@gmx.net>
Fri, 24 Feb 2023 15:43:35 +0000 (16:43 +0100)
committerStephen Berman <stephen.berman@gmx.net>
Fri, 24 Feb 2023 15:43:35 +0000 (16:43 +0100)
* 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
test/lisp/wdired-tests.el

index 771458508e6765b124dc06e4ed57cbac07046eaf..5572dcb32f3adcc0e7a2702ddb11e5dab7e0e567 100644 (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)
index 74c2449076faa69626f7bb87b8bcfb5c2a8492e5..897c6cd69a8698f55dd5e59ef72eab6489d948cb 100644 (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