emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: "Sébastien Vauban" <wxhgmqzgwmuf-geNee64TY+gS+FvcfC7Uqw@public.gmane.org>
To: emacs-orgmode-mXXj517/zsQ@public.gmane.org
Subject: Re: Agenda view > Face for deadlines > PATCH
Date: Mon, 12 Jul 2010 23:02:25 +0200	[thread overview]
Message-ID: <87sk3o76se.fsf@mundaneum.com> (raw)
In-Reply-To: 8E1C97F0-8A90-4C39-A0A5-A2146E875795@gmail.com

Hi Carsten,

Carsten Dominik wrote:
> On May 21, 2010, at 9:43 AM, Sébastien Vauban wrote:
>> 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 [...] 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.

I'm really not knowledgeable about faces, text properties, overlays, and so
on.

Though, I tried two things, on line 4636 of `org-agenda.el':

--8<---------------cut here---------------start------------->8---
(let ((ov (make-overlay 0 2)))
  (overlay-put ov 'face  (list :background "white"))
  (overlay-put ov 'evaporate t))
--8<---------------cut here---------------end--------------->8---

Nothing changed. The first 2 characters of every line still display the
background face of the deadlines (red, orange or green, depending on urgency).

Next try (replacing the above):

--8<---------------cut here---------------start------------->8---
(set-text-properties 0 2 nil txt)
--8<---------------cut here---------------end--------------->8---

Here, the background color of the first 2 characters is... white, as I want.
Though, "org-agenda-error: Command not allowed in this line" when clicking on
such a line...

Solution still to be found... Anybody having an hint. I am willing to try to
solve this.

Best regards,
  Seb

-- 
Sébastien Vauban


_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode-mXXj517/zsQ@public.gmane.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

  reply	other threads:[~2010-07-12 21:02 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-13  8:41 Agenda view > Day separator Sébastien Vauban
2010-05-13 15:06 ` Eric S Fraga
2010-05-13 18:27 ` Carsten Dominik
2010-05-13 19:34   ` Eric S Fraga
2010-05-17 11:23     ` Sébastien Vauban
2010-05-17 20:51       ` Markus Heller
2010-05-17 21:02         ` Nick Dokos
2010-05-17 21:14           ` Markus Heller
2010-05-18  7:39             ` Sébastien Vauban
2010-05-18  8:33               ` Štěpán Němec
2010-05-18 11:17                 ` Sébastien Vauban
2010-05-18 12:30                   ` Štěpán Němec
2010-05-18 12:06         ` J. David Boyd
2010-05-18  8:02 ` Agenda view > Face for deadlines Sébastien Vauban
2010-05-19 21:53   ` Agenda view > Face for deadlines > PATCH Sébastien Vauban
2010-05-21  7:43     ` Sébastien Vauban
2010-05-21 14:37       ` Carsten Dominik
2010-07-12 21:02         ` Sébastien Vauban [this message]
2010-08-12  8:34           ` Sébastien Vauban
2010-08-12 14:26             ` Bastien
2010-08-13 10:13               ` Sébastien Vauban
2010-08-16 19:51                 ` Bastien

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87sk3o76se.fsf@mundaneum.com \
    --to=wxhgmqzgwmuf-genee64ty+gs+fvcfc7uqw@public.gmane.org \
    --cc=emacs-orgmode-mXXj517/zsQ@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).