Michael Albinus <[email protected]> writes:
> ;; Symbolic link to a non-directory.
> (list dired-re-sym
> (list (lambda (end)
> - (when-let ((file (dired-file-name-at-point)))
> - (let ((truename (ignore-errors (file-truename file))))
> - (and (or (not truename)
> - (not (file-directory-p truename)))
> - (search-forward-regexp "\\(.+-> ?\\)\\(.+\\)"
> - end t)))))
> + (if (not (connection-local-value dired-check-symlinks))
> + (search-forward-regexp
> + "\\(.+-> ?\\)\\(.+\\)" end t)
> + (when-let ((file (dired-file-name-at-point)))
> + (let ((truename (ignore-errors (file-truename file))))
> + (and (or (not truename)
> + (not (file-directory-p truename)))
> + (search-forward-regexp
> + "\\(.+-> ?\\)\\(.+\\)" end t))))))
Minor nitpick: given the comment for this section (which seems to
suggest this only applies to symlinks to non-directories), wouldn't it
be "better" to simply have something like below instead for the if-then
case? I.e., a separate entry in dired-font-lock-keywords for the
failsafe.
#+begin_src emacs-lisp
;; Generic face for symbolic links
(list dired-re-sym
(when (not (connection-local-value dired-check-symlinks))
'(".+" (dired-move-to-filename) nil (0 dired-symlink-face))))
#+end_src
This is essentially what I have in my config today, and seems to behave
as expected.
--
Suhail