emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] Re: Agenda view > Face for deadlines > PATCH


From: Carsten Dominik
Subject: Re: [Orgmode] Re: Agenda view > Face for deadlines > PATCH
Date: Fri, 21 May 2010 16:37:40 +0200


On May 21, 2010, at 9:43 AM, Sébastien Vauban wrote:

Hi all,

Sébastien Vauban wrote:
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?

After applying my patch, and playing a bit more with the results, I observed
that entering RET on such lines (where the 2 first characters are not
highlighted anymore) does not work anymore: "command not allowed on this
line".

Is there someone more knowledgeable than I am that could help?

`props' contains a text property with the marker that points to the origin of this entry. Org tries to find this property at the beginning of the line and does not find it.

You would have to apply all properties to the full line, then remove the face property from the first two characters.

However, I am not sure if this will work, because when one of these lines changes, Org might spread the text properties again over the full line. But maybe it will be OK, try it out.

- Carsten




reply via email to

[Prev in Thread] Current Thread [Next in Thread]