emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 755fa34: Fix wdired handling of symlinks when resto


From: Stephen Berman
Subject: [Emacs-diffs] master 755fa34: Fix wdired handling of symlinks when restoring filename property
Date: Thu, 13 Sep 2018 16:19:29 -0400 (EDT)

branch: master
commit 755fa346eba212b4650c8541023bb78e1658d77b
Author: Stephen Berman <address@hidden>
Commit: Stephen Berman <address@hidden>

    Fix wdired handling of symlinks when restoring filename property
    
    * lisp/wdired.el (wdired--restore-dired-filename-prop): Use
    dired-permission-flags-regexp instead of dired-filename to test
    whether the file is a symlink, since calling file-symlink-p on the
    latter may fail in wdired-mode (bug#32673).
---
 lisp/wdired.el | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/lisp/wdired.el b/lisp/wdired.el
index be0bde2..3157e88 100644
--- a/lisp/wdired.el
+++ b/lisp/wdired.el
@@ -607,15 +607,22 @@ Optional arguments are ignored."
 (defun wdired--restore-dired-filename-prop (beg end _len)
   (save-match-data
     (save-excursion
-      (beginning-of-line)
-      (when (re-search-forward directory-listing-before-filename-regexp
-                               (line-end-position) t)
-        (setq beg (point)
-              end (if (and (file-symlink-p (dired-get-filename))
-                           (search-forward " -> " (line-end-position) t))
-                      (goto-char (match-beginning 0))
-                    (line-end-position)))
-        (put-text-property beg end 'dired-filename t)))))
+      (let ((lep (line-end-position)))
+        (beginning-of-line)
+        (when (re-search-forward
+               directory-listing-before-filename-regexp lep t)
+          (setq beg (point)
+                ;; If the file is a symlink, put the dired-filename
+                ;; property only on the link name.  (Using
+                ;; (file-symlink-p (dired-get-filename)) fails in
+                ;; wdired-mode, bug#32673.)
+                end (if (and (re-search-backward
+                              dired-permission-flags-regexp nil t)
+                             (looking-at "l")
+                             (search-forward " -> " lep t))
+                        (goto-char (match-beginning 0))
+                      lep))
+          (put-text-property beg end 'dired-filename t))))))
 
 (defun wdired-next-line (arg)
   "Move down lines then position at filename or the current column.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]