[BUG] "Invalid face reference" with org-agenda-deadline-faces

2024-01-10 Thread Mark Kerr
I have the below set in my init file:
---
(setq org-agenda-deadline-faces
  '((1.01 . org-agenda-deadline-past)
 (1.0 . org-agenda-deadline-today)
 (0.9 . org-agenda-deadline-tomorrow)
 (0.7 . org-agenda-deadline-soon)
 (0.0 . org-agenda-deadline-upcoming)))
---

But the faces are not created and the below lines keep appearing in
*Messages*:
---
Invalid face reference: org-agenda-deadline-today [6 times]
Invalid face reference: org-agenda-deadline-past [19 times]
---

`describe-face` says `[No match]` when run on any of these agenda deadline
faces. `describe-face` does work with the default faces though, i.e.
`org-imminent-deadline`.

However, running `describe-variable` on `org-agenda-deadline-faces`
indicates that the value is correct:
```
Value:
((1.01 . org-agenda-deadline-past)
  (1.0 . org-agenda-deadline-today)
  (0.9 . org-agenda-deadline-tomorrow)
  (0.7 . org-agenda-deadline-soon)
  (0.0 . org-agenda-deadline-upcoming))
Original value was
((1.0 . org-imminent-deadline)
  (0.5 . org-upcoming-deadline)
  (0.0 . org-upcoming-distant-deadline))
```
Turning on `debug-on-error` does nothing when the messages are generated.

This `org-agenda-deadline-faces` settings has been working without any
problems for years. I think the problem began with org v6.6.16, but am not
completely certain.

Is this a bug?

Thanks, Mark


Re: org-agenda-dim-blocked-tasks don't use org-todo face

2022-12-14 Thread Mark Kerr
On Tue, Dec 13, 2022 at 2:51 AM Ihor Radchenko  wrote:
>
> Mark Kerr  writes:
>
> > 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.
>
> What you observe is what I intended to do.
>
> What you want is an opposite of "dimming" (IMHO).
>
> To achieve what you want, you may consider customizing
> `org-agenda-dimmed-todo-face' face. This face is applied on top of all
> other faces. If you, say, set only a background, the todo keywords will
> retain their foreground colour.
>
> --
> 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>

I understand your viewpoint,  Ihor. Actually, it was mainly the font
size of the TODO keyword that I wanted to retain, not the colour.

The org-agenda-dimmed-todo-face overlay overrides the size set in
org-todo face, which breaks my layout.

I would like to retain the org-todo face colour as well, but it is
mainly the face size that causes me issues.

I have been fiddling with the face and overlay rules, but my knowledge
is not up to the task. From what I can tell, overlays always overwrite
faces.

I was thinking that a version of org-font-lock-add-priority-faces
could perhaps be adapted to work with todo keywords.



Re: org-agenda-dim-blocked-tasks don't use org-todo face

2022-12-12 Thread Mark Kerr
From: Ihor Radchenko 

> [-- Attachment #1: Type: text/plain, Size: 534 bytes --]
>
> Mark Kerr  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 
> 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 
> 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 ( 
> _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 ( _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



org-agenda-dim-blocked-tasks don't use org-todo face

2022-12-11 Thread Mark Kerr
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?


[O] Bug: Bulk adding tags in agenda does not respect radio groups

2019-06-09 Thread Mark Kerr
I have a radio group of 3 tags defined in org-tag-alist: now. next, later.
This tag group works correctly when editing the tags directly in the
original org files or when the tags are edited individually in the agenda
using ':'.

When editing tags via the agenda's bulk editing command, however, adding a
tag from that radio group does not remove any pre-existing tags from that
group.

For example, say an item is already tagged "now", and the tag "next" is
added to it via bulk editing. The expected result is that the tag "next" is
added and the tag "now" is removed. Instead, the result is ":now:next:", as
the pre-existing tag is not removed.

I have version 9.2.3

- Mark Kerr