branch: externals/denote
commit d09b748c8dda69c175a8f87c65fd7c8e79a9bca9
Author: Protesilaos Stavrou <[email protected]>
Commit: Protesilaos Stavrou <[email protected]>
Fix fontification; add denote-dired-directories
---
denote-dired.el | 62 ++++++++++++++++++++++++++++++++-------------------------
1 file changed, 35 insertions(+), 27 deletions(-)
diff --git a/denote-dired.el b/denote-dired.el
index efc78008cd..650a6f1bb8 100644
--- a/denote-dired.el
+++ b/denote-dired.el
@@ -40,6 +40,15 @@
"Integration between Denote and Dired."
:group 'denote)
+(defcustom denote-dired-directories
+ ;; We use different ways to specify a path for demo purposes.
+ (list denote-directory
+ (thread-last denote-directory (expand-file-name "attachments"))
+ (expand-file-name "~/Documents/vlog"))
+ "List of directories where `denote-dired-mode' should apply to."
+ :type '(repeat directory)
+ :group 'denote-dired)
+
;;;; Commands
;;;###autoload
@@ -70,11 +79,6 @@ renaming attachments that the user adds to their notes."
;;;; Extra fontification
-(defvar dired-font-lock-keywords)
-
-(defvar denote-dired-original-keywords dired-font-lock-keywords
- "Original Dired fontification keywords.")
-
(defface denote-dired-dired-field-date
'((((class color) (min-colors 88) (background light))
:foreground "#00538b")
@@ -103,26 +107,13 @@ renaming attachments that the user adds to their notes."
"Face for file name delimiters in `dired-mode' buffers."
:group 'denote-dired)
-(defun denote-dired--fontify ()
- "Append fontification rules to `dired-font-lock-keywords'."
- (setq dired-font-lock-keywords
- (append (list `(,denote--file-regexp
- (1 'denote-dired-dired-field-date)
- (2 'denote-dired-dired-field-delimiter)
- (3 'denote-dired-dired-field-keywords)
- (4 'denote-dired-dired-field-delimiter)))
- dired-font-lock-keywords)))
-
-(defvar diredfl-mode)
-(declare-function diredfl-mode "diredfl")
-
-(defun denote-dired--setup (&optional reverse)
- "Setup `denote-dired--fontify' local hook.
-If optional REVERSE is non-nil, remove the hook."
- (if reverse
- (setq dired-font-lock-keywords denote-dired-original-keywords)
- (denote-dired--fontify))
- (font-lock-refresh-defaults))
+(defconst denote-dired-font-lock-keywords
+ `((,denote--file-regexp
+ (1 'denote-dired-dired-field-date)
+ (2 'denote-dired-dired-field-delimiter)
+ (3 'denote-dired-dired-field-keywords)
+ (4 'denote-dired-dired-field-delimiter)))
+ "Keywords for fontification.")
;;;###autoload
(define-minor-mode denote-dired-mode
@@ -130,8 +121,25 @@ If optional REVERSE is non-nil, remove the hook."
:global nil
:group 'denote-dired
(if denote-dired-mode
- (denote-dired--setup)
- (denote-dired--setup :reverse)))
+ (font-lock-add-keywords nil denote-dired-font-lock-keywords t)
+ (font-lock-remove-keywords nil denote-dired-font-lock-keywords))
+ (font-lock-flush (point-min) (point-max)))
+
+(defun denote-dired--modes-dirs-as-dirs ()
+ "Return `denote-dired-directories' as directories.
+The intent is to basically make sure that however a path is
+written, it is always returned as a directory."
+ (mapcar
+ (lambda (dir)
+ (file-name-as-directory (file-truename dir)))
+ denote-dired-directories))
+
+;;;###autoload
+(defun denote-dired-mode-in-directories ()
+ "Enable `denote-dired-mode' in `denote-dired-directories'.
+Add this function to `dired-mode-hook'."
+ (when (member (file-truename default-directory)
(denote-dired--modes-dirs-as-dirs))
+ (denote-dired-mode 1)))
(provide 'denote-dired)
;;; denote-dired.el ends here