From 03531f2ac8199b8b07f480f785fa68c580845020 Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Mon, 29 Sep 2014 01:17:06 +0400 Subject: [PATCH] Add and use fringe faces specific to diff-hl-dired #25 --- diff-hl-dired.el | 24 ++++++++++++++++++++++++ diff-hl.el | 15 ++++++++++----- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/diff-hl-dired.el b/diff-hl-dired.el index a94be0306..928bb9c4f 100644 --- a/diff-hl-dired.el +++ b/diff-hl-dired.el @@ -29,6 +29,26 @@ (defvar diff-hl-dired-process-buffer nil) +(defgroup diff-hl-dired nil + "VC diff highlighting on the side of a Dired window." + :group 'diff-hl) + +(defface diff-hl-dired-insert + '((default :inherit diff-hl-insert)) + "Face used to highlight added files.") + +(defface diff-hl-dired-delete + '((default :inherit diff-hl-delete)) + "Face used to highlight directories with deleted files.") + +(defface diff-hl-dired-change + '((default :inherit diff-hl-change)) + "Face used to highlight changed files.") + +(defface diff-hl-dired-unknown + '((default :inherit diff-header)) + "Face used to highlight unregistered files.") + ;;;###autoload (define-minor-mode diff-hl-dired-mode "Toggle VC diff highlighting on the side of a Dired window." @@ -91,10 +111,14 @@ (when (and type (dired-goto-file-1 file (expand-file-name file) nil)) (let* ((diff-hl-fringe-bmp-function 'diff-hl-fringe-bmp-from-type) + (diff-hl-fringe-face-function 'diff-hl-dired-face-from-type) (o (diff-hl-add-highlighting type 'single))) (overlay-put o 'modification-hooks '(diff-hl-overlay-modified)) )))))) +(defun diff-hl-dired-face-from-type (type _pos) + (intern (format "diff-hl-dired-%s" type))) + (defalias 'diff-hl-dired-clear 'diff-hl-remove-overlays) (provide 'diff-hl-dired) diff --git a/diff-hl.el b/diff-hl.el index d208ccbdd..258e48ace 100644 --- a/diff-hl.el +++ b/diff-hl.el @@ -86,10 +86,6 @@ "Face used to highlight changed lines." :group 'diff-hl) -(defface diff-hl-unknown - '((default :inherit diff-header)) - "Face used to highlight unregistered files.") - (defcustom diff-hl-command-prefix (kbd "C-x v") "The prefix for all `diff-hl' commands." :group 'diff-hl @@ -114,6 +110,12 @@ (const diff-hl-fringe-bmp-from-type) function)) +(defcustom diff-hl-fringe-face-function 'diff-hl-fringe-face-from-type + "Function to choose the fringe face for a given change type + and position within a hunk. Should accept two arguments." + :group 'diff-hl + :type 'function) + (defvar diff-hl-reference-revision nil "Revision to diff against. nil means the most recent one.") @@ -166,12 +168,15 @@ (let* ((key (list type pos diff-hl-fringe-bmp-function)) (val (gethash key diff-hl-spec-cache))) (unless val - (let* ((face-sym (intern (format "diff-hl-%s" type))) + (let* ((face-sym (funcall diff-hl-fringe-face-function type pos)) (bmp-sym (funcall diff-hl-fringe-bmp-function type pos))) (setq val (propertize " " 'display `((left-fringe ,bmp-sym ,face-sym)))) (puthash key val diff-hl-spec-cache))) val)) +(defun diff-hl-fringe-face-from-type (type _pos) + (intern (format "diff-hl-%s" type))) + (defun diff-hl-fringe-bmp-from-pos (_type pos) (intern (format "diff-hl-bmp-%s" pos))) -- 2.39.2