Sébastien Vauban wrote:
In the same kind of thought, trying to enhance the way we (or I)
visualize
tasks in the agenda, I have chosen some sort of "inverse video"
face for
deadlines.
(my-org-deadline-yesterday ((t (:foreground "white" :background
"#D80000" :weight bold))))
(my-org-deadline-today ((t (:foreground "white" :background
"#E9A36A" :weight bold))))
(my-org-deadline-tomorrow ((t (:foreground "black" :background
"#B4F1B3" :weight bold))))
(my-org-deadline-later ((t (:foreground "black" :background
"#AACAFC"))))
with the following code in my .emacs file:
;; faces for showing deadlines in the agenda
(setq org-agenda-deadline-faces
'((1.01 . my-org-deadline-yesterday)
(0.99 . my-org-deadline-today)
(0.49 . my-org-deadline-tomorrow)
(0.00 . my-org-deadline-later)))
The result is the following:
Week-agenda (W20-W21):
2010-05-18 Tue
_________________________________________________________________
Personal: 17:15-17:20
Sarah! :home::errands:
refile: Sched. 2x: TODO [#A] Update reservations
Scorpios :refile::
x Family: xxx In -1 d.: TODO [#A] Photos-reportage Andre
xxxx :home::computer:
where `xxx' is just some textual way to represent background color.
For the sake of clarity, I'd like the first 2 characters (in front
of
`Family', in my example) not to be "impacted" by that face.
Otherwise, when
in inverse video, they obfuscate the view of the day separators
and of the
deadline lines.
I was so disturbed by this, and have always wanted to become (and
still
wants) enlightened in Emacs Lisp and in Org's code that I finally
took the
time to try and understand how all this works.
Not easy for me, I must admit. Cannot say I can follow the code,
either,
because of lack of knowledge, on ELisp and on how to trace through
the code.
Though, I've been able to answer my own demand, by adding a
function (code
stolen from `org-compat.el'):
(defun org-add-props-from-2 (string plist &rest props)
"Add text properties to string, from position 2 to end.
PLIST may be a list of properties, PROPS are individual properties
and values
that will be added to PLIST. Returns the string that was modified."
(add-text-properties
2 (length string) (if props (append plist props) plist) string)
string)
and changing one line of `org-agenda.el' (L4619, function
`org-agenda-get-deadlines'):
(org-add-props txt props
to
(org-add-props-from-2 txt props
Maybe that can be factored (much, much) more smartly?
Can this be patched against the source code?