diff options
author | Tino Calancha <tino.calancha@gmail.com> | 2020-08-27 11:51:30 +0200 |
---|---|---|
committer | Tino Calancha <tino.calancha@gmail.com> | 2020-08-27 11:52:38 +0200 |
commit | bdc1f193470633adcd860db4b05a9fe951bd375b (patch) | |
tree | eae80782569cd3d5da7e8045133c6f861003512d /lisp/dired.el | |
parent | f40260f121d41d50fda428e789d22b125e24f407 (diff) | |
download | emacs-bdc1f193470633adcd860db4b05a9fe951bd375b.tar.gz |
dired: Show broken/circular links w/ different face
* lisp/dired.el (dired-broken-symlink): New face.
(dired-font-lock-keywords):
Use it for broken/circular links (Bug#39145).
* etc/NEWS (Changes in Specialized Modes and Packages in Emacs 28.1):
Announce this change.
Diffstat (limited to 'lisp/dired.el')
-rw-r--r-- | lisp/dired.el | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lisp/dired.el b/lisp/dired.el index 08d04688519..d122869a5e3 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -534,6 +534,14 @@ Subexpression 2 must end right before the \\n.") (defvar dired-symlink-face 'dired-symlink "Face name used for symbolic links.") +(defface dired-broken-symlink + '((((class color)) + :foreground "yellow1" :background "red1" :weight bold) + (t :weight bold :slant italic :underline t)) + "Face used for broken symbolic links." + :group 'dired-faces + :version "28.1") + (defface dired-special '((t (:inherit font-lock-variable-name-face))) "Face used for sockets, pipes, block devices and char devices." @@ -597,6 +605,20 @@ Subexpression 2 must end right before the \\n.") (list dired-re-dir '(".+" (dired-move-to-filename) nil (0 dired-directory-face))) ;; + ;; Broken Symbolic link. + (list dired-re-sym + (list (lambda (end) + (let* ((file (dired-file-name-at-point)) + (truename (ignore-errors (file-truename file)))) + ;; either not existent target or circular link + (and (not (and truename (file-exists-p truename))) + (search-forward-regexp "\\(.+\\) \\(->\\) ?\\(.+\\)" end t)))) + '(dired-move-to-filename) + nil + '(1 'dired-broken-symlink) + '(2 dired-symlink-face) + '(3 'dired-broken-symlink))) + ;; ;; Symbolic link to a directory. (list dired-re-sym (list (lambda (end) |