branch: externals/denote commit e1aeb459eaab740f439e69d3811f6306a03adc62 Author: Protesilaos Stavrou <i...@protesilaos.com> Commit: Protesilaos Stavrou <i...@protesilaos.com>
Refine how faces are applied (extends 123fb2b) --- denote-dired.el | 17 ++--------------- denote-faces.el | 21 +++++++++++++++++++++ denote-link.el | 9 +++------ 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/denote-dired.el b/denote-dired.el index b607e3d02a..23bd006ff9 100644 --- a/denote-dired.el +++ b/denote-dired.el @@ -356,27 +356,14 @@ appropriate." (require 'denote-faces) -(defconst denote-dired-font-lock-keywords - `((,denote--file-regexp - (1 'denote-faces-date) - (2 'denote-faces-time) - (3 'denote-faces-delimiter) - (4 'denote-faces-title) - (5 'denote-faces-delimiter) - (6 'denote-faces-keywords) - (7 'denote-faces-extension)) - ("_" - (0 'denote-faces-delimiter t))) - "Keywords for fontification.") - ;;;###autoload (define-minor-mode denote-dired-mode "Fontify all Denote-style file names in Dired." :global nil :group 'denote-dired (if denote-dired-mode - (font-lock-add-keywords nil denote-dired-font-lock-keywords t) - (font-lock-remove-keywords nil denote-dired-font-lock-keywords)) + (font-lock-add-keywords nil denote-faces-file-name-keywords t) + (font-lock-remove-keywords nil denote-faces-file-name-keywords)) (font-lock-flush (point-min) (point-max))) (defun denote-dired--modes-dirs-as-dirs () diff --git a/denote-faces.el b/denote-faces.el index 2a5e32f1d4..6b7a9b4583 100644 --- a/denote-faces.el +++ b/denote-faces.el @@ -30,6 +30,8 @@ ;;; Code: +(require 'denote) + (defgroup denote-faces () "Faces for Denote." :group 'denote) @@ -88,5 +90,24 @@ and seconds." "Face for file name delimiters in Dired buffers." :group 'denote-faces) +(defconst denote-faces-file-name-keywords + `((,denote--file-regexp + (1 'denote-faces-date) + (2 'denote-faces-time) + (3 'denote-faces-delimiter) + (4 'denote-faces-title) + (5 'denote-faces-delimiter) + (6 'denote-faces-keywords) + (7 'denote-faces-extension)) + ("_" + (0 'denote-faces-delimiter t))) + "Keywords for fontification of file names.") + +(defconst denote-faces-file-name-with-subdir-keywords + (append denote-faces-file-name-keywords + '(("\\(^.*/\\)?" + (0 'denote-faces-subdirectory)))) + "Keywords for fontification of file names with a directory.") + (provide 'denote-faces) ;;; denote-faces.el ends here diff --git a/denote-link.el b/denote-link.el index d75823b15b..7cf4ded930 100644 --- a/denote-link.el +++ b/denote-link.el @@ -424,8 +424,6 @@ positions, limit the process to the region in-between." "Action for BUTTON to `find-file'." (funcall denote-link-buton-action (buffer-substring (button-start button) (button-end button)))) -(declare-function denote-dired-mode "denote-dired") - (defun denote-link--display-buffer (buf) "Run `display-buffer' on BUF. Expand `denote-link-backlinks-display-buffer-action'." @@ -433,6 +431,8 @@ Expand `denote-link-backlinks-display-buffer-action'." buf `(,@denote-link-backlinks-display-buffer-action))) +(require 'denote-faces) + (defun denote-link--prepare-backlinks (id files &optional title) "Create backlinks' buffer for ID including FILES. Use optional TITLE for a prettier heading." @@ -452,11 +452,8 @@ Use optional TITLE for a prettier heading." (newline)) files) (goto-char (point-min)) - ;; NOTE 2022-06-15: Technically this is not Dired. Maybe we - ;; should abstract the fontification into a general purpose - ;; minor-mode. (when denote-link-fontify-backlinks - (denote-dired-mode 1))) + (font-lock-add-keywords nil denote-faces-file-name-with-subdir-keywords t))) (denote-link--display-buffer buf))) ;;;###autoload