From: Ihor Radchenko <yanta...@posteo.net> > [-- Attachment #1: Type: text/plain, Size: 534 bytes --] > > Mark Kerr <mker...@gmail.com> writes: > > > The org-todo face is used for todo keywords in non-blocked items. > > > > When org-agenda-dim-blocked-tasks is set to true, however, the todo keyword > > is instead displayed using org-agenda-dimmed-todo-face. > > > > The org-priority face, however, is still used for blocked tasks. > > > > Is this by design or due to an error on my part? Is there a possible > > workaround? > > This appears to be an omission on Org part, related some overlay > implementation details in Emacs. > > Can you try the attached patch? > > > [-- Warning: decoded text below may be mangled, UTF-8 assumed --] > [-- Attachment #2: > 0001-org-agenda-dim-blocked-tasks-Prioritize-face-over-ot.patch --] > [-- Type: text/x-patch, Size: 1422 bytes --] > > From 1bd6d8bd13deb9e7f57826ea492bbc88fddf5ee3 Mon Sep 17 00:00:00 2001 > Message-Id: > <1bd6d8bd13deb9e7f57826ea492bbc88fddf5ee3.1670839095.git.yanta...@posteo.net> > From: Ihor Radchenko <yanta...@posteo.net> > Date: Mon, 12 Dec 2022 12:56:11 +0300 > Subject: [PATCH] org-agenda-dim-blocked-tasks: Prioritize face over other > overlays > > * lisp/org-agenda.el (org-agenda-dim-blocked-tasks): Use high overlays > priority when adding dimmed face. Otherwise, contained overlays, like > created by `org-agenda-fontify-priorities', will take > priority (default Emacs behavior). > > Reported-by: Mark Kerr <mker...@gmail.com> > Link: > https://orgmode.org/list/CAM9qJ5+C3nvbNaJyq6ofRgPsuAMcaBD=2un-n96kb68nbbx...@mail.gmail.com > --- > lisp/org-agenda.el | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el > index eda248938..05f2e3669 100644 > --- a/lisp/org-agenda.el > +++ b/lisp/org-agenda.el > @@ -4166,7 +4166,9 @@ (defun org-agenda-dim-blocked-tasks (&optional > _invisible) > (line-beginning-position)) > (line-end-position)))) > (when todo-blocked > - (overlay-put ov 'face 'org-agenda-dimmed-todo-face)) > + (overlay-put ov 'face 'org-agenda-dimmed-todo-face) > + ;; Override other overlays. > + (overlay-put ov 'priority 50)) > (when invisible > (org-agenda-filter-hide-line 'todo-blocked))) > (if (= (point-max) (line-end-position)) > -- > 2.38.1 > > > [-- Attachment #3: Type: text/plain, Size: 224 bytes --] > > > -- > Ihor Radchenko // yantar92, > Org mode contributor, > Learn more about Org mode at <https://orgmode.org/>. > Support Org development at <https://liberapay.com/org-mode>, > or support my work at <https://liberapay.com/yantar92>
This is my first time applying a patch, so I hope I did it properly. Thank you. I may have been unclear but the result seems to be the opposite of what I was hoping for. I was hoping to be able to gain the ability to use the org-todo face with blocked tasks, while retaining the org-priority face which was previously working.. Now blocked tasks are entirely rendered with org-agenda-dimmed-todo-face, including the priority. In case I messed up the patch, here is the patched function: -- (defun org-agenda-dim-blocked-tasks (&optional _invisible) "Dim currently blocked TODOs in the agenda display. When INVISIBLE is non-nil, hide currently blocked TODO instead of dimming them." ;FIXME: The arg isn't used, actually! (interactive "P") (when (called-interactively-p 'interactive) (message "Dim or hide blocked tasks...")) (dolist (o (overlays-in (point-min) (point-max))) (when (eq (overlay-get o 'face) 'org-agenda-dimmed-todo-face) (delete-overlay o))) (save-excursion (let ((inhibit-read-only t)) (goto-char (point-min)) (while (let ((pos (text-property-not-all (point) (point-max) 'org-todo-blocked nil))) (when pos (goto-char pos))) (let* ((invisible (eq (org-get-at-bol 'org-todo-blocked) 'invisible)) (todo-blocked (eq (org-get-at-bol 'org-filter-type) 'todo-blocked)) (ov (make-overlay (if invisible (line-end-position 0) (line-beginning-position)) (line-end-position)))) (when todo-blocked (overlay-put ov 'face 'org-agenda-dimmed-todo-face) ;; Override other overlays. (overlay-put ov 'priority 50)) (when invisible (org-agenda-filter-hide-line 'todo-blocked))) (if (= (point-max) (line-end-position)) (goto-char (point-max)) (move-beginning-of-line 2))))) (when (called-interactively-p 'interactive) (message "Dim or hide blocked tasks...done"))) -- Thank you, Mark