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).
This commit is contained in:
Stephen Berman 2018-09-13 22:19:22 +02:00
parent f066999b65
commit 755fa346eb

View file

@ -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.