diff options
| author | Lars Ingebrigtsen | 2019-10-31 00:31:32 +0100 |
|---|---|---|
| committer | Lars Ingebrigtsen | 2019-10-31 00:31:32 +0100 |
| commit | 48fdfd8b939654e5bde0ef5448e17e4336cdb229 (patch) | |
| tree | 1e1fbf8cfece58a22a3d7f01e0b97957448b54da | |
| parent | 390dd2cff9d69b3527229fa5752e42a410d06508 (diff) | |
| download | emacs-48fdfd8b939654e5bde0ef5448e17e4336cdb229.tar.gz emacs-48fdfd8b939654e5bde0ef5448e17e4336cdb229.zip | |
Font-lock symlinks in dired buffers better
* lisp/dired.el (dired-font-lock-keywords): Font-lock symlinks
differently based on whether they point at a directory or not
(bug#17064). Based on code from Michael Heerdegen.
| -rw-r--r-- | lisp/dired.el | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/lisp/dired.el b/lisp/dired.el index d1ec3f36b18..05789a35166 100644 --- a/lisp/dired.el +++ b/lisp/dired.el | |||
| @@ -517,9 +517,31 @@ Subexpression 2 must end right before the \\n.") | |||
| 517 | (list dired-re-dir | 517 | (list dired-re-dir |
| 518 | '(".+" (dired-move-to-filename) nil (0 dired-directory-face))) | 518 | '(".+" (dired-move-to-filename) nil (0 dired-directory-face))) |
| 519 | ;; | 519 | ;; |
| 520 | ;; Symbolic links. | 520 | ;; Symbolic link to a directory. |
| 521 | (list dired-re-sym | 521 | (list dired-re-sym |
| 522 | '(".+" (dired-move-to-filename) nil (0 dired-symlink-face))) | 522 | (list (lambda (end) |
| 523 | (when-let* ((file (dired-file-name-at-point)) | ||
| 524 | (truename (ignore-errors (file-truename file)))) | ||
| 525 | (and (file-directory-p truename) | ||
| 526 | (search-forward-regexp "\\(.+-> ?\\)\\(.+\\)" end t)))) | ||
| 527 | '(dired-move-to-filename) | ||
| 528 | nil | ||
| 529 | '(1 dired-symlink-face) | ||
| 530 | '(2 dired-directory-face))) | ||
| 531 | ;; | ||
| 532 | ;; Symbolic link to a non-directory. | ||
| 533 | (list dired-re-sym | ||
| 534 | (list (lambda (end) | ||
| 535 | (when-let ((file (dired-file-name-at-point))) | ||
| 536 | (let ((truename (ignore-errors (file-truename file)))) | ||
| 537 | (and (or (not truename) | ||
| 538 | (not (file-directory-p truename))) | ||
| 539 | (search-forward-regexp "\\(.+-> ?\\)\\(.+\\)" | ||
| 540 | end t))))) | ||
| 541 | '(dired-move-to-filename) | ||
| 542 | nil | ||
| 543 | '(1 dired-symlink-face) | ||
| 544 | '(2 'default))) | ||
| 523 | ;; | 545 | ;; |
| 524 | ;; Sockets, pipes, block devices, char devices. | 546 | ;; Sockets, pipes, block devices, char devices. |
| 525 | (list dired-re-special | 547 | (list dired-re-special |