Hi, I would like to see more distinctively the separation between days in the agenda view. --8<---------------cut here---------------start------------->8--- Week-agenda (W19-W20): Saturday 15 May 2010 Personal: 18:00-19:00 Mar :home::errands: Sunday 16 May 2010 Personal: Mer avec Lolo :home::errands: Monday 17 May 2010 W20 Personal: 17:15-17:20 Sarah! :home::errands: Tuesday 18 May 2010 Personal: 17:15-17:20 Sarah! :home::errands: Wednesday 19 May 2010 Personal: 17:15-17:20 Sarah! :home::errands: Diary: Shavuot Thursday 20 May 2010 Personal: 17:15-17:20 Sarah! :home::errands: Friday 21 May 2010 --8<---------------cut here---------------end--------------->8--- I have used some sort of "inverse video" for the days, to make them stand up: --8<---------------cut here---------------start------------->8--- (org-agenda-date ((t (:background "LightSkyBlue")))) (org-agenda-date-today ((t (:background "yellow" :slant normal :weight bold)))) (org-agenda-date-weekend ((t (:foreground "white" :background "blue4" :weight bold)))) --8<---------------cut here---------------end--------------->8--- But it's not yet as right as it should be (let me rephrase: as I would like it) because the face is only applied on the visible characters: the "separator" does not expand up to the right of the screen. An improved version (re readability) of the agenda view would be: --8<---------------cut here---------------start------------->8--- Week-agenda (W19-W20): Saturday 15 May 2010 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Personal: 18:00-19:00 Mar :home::errands: Sunday 16 May 2010 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Personal: Mer avec Lolo :home::errands: Monday 17 May 2010 W20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Personal: 17:15-17:20 Sarah! :home::errands: Tuesday 18 May 2010 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Personal: 17:15-17:20 Sarah! :home::errands: Wednesday 19 May 2010 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Personal: 17:15-17:20 Sarah! :home::errands: Diary: Shavuot Thursday 20 May 2010 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Personal: 17:15-17:20 Sarah! :home::errands: Friday 21 May 2010 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --8<---------------cut here---------------end--------------->8--- where `xxx' is just some textual way to represent background color. Is there some way to do so? 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
[-- Attachment #1: Type: text/plain, Size: 922 bytes --] On Thu, 13 May 2010 10:41:47 +0200, Sébastien Vauban <wxhgmqzgwmuf@spammotel.com> wrote: > > Hi, > > I would like to see more distinctively the separation between days in the > agenda view. [...] > Friday 21 May 2010 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx > --8<---------------cut here---------------end--------------->8--- > > where `xxx' is just some textual way to represent background color. > > Is there some way to do so? Not that I am aware of (although I would also like something similar). However, what does work quite effectively for me in the meantime is to customise the faces you mentioned by adding the underline attribute. Although the underline also does not extend the full length of the line, it does help make the dates stand out a little more without being too heavy (and I say this as somebody that usually dislikes underlines...). HTH, eric [-- Attachment #2: Type: text/plain, Size: 75 bytes --] -- Eric S Fraga GnuPG: 8F5C 279D 3907 E14A 5C29 570D C891 93D8 FFFC F67D [-- Attachment #3: Type: text/plain, Size: 201 bytes --] _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Hi Sebastian, hi Eric
take a look at the variable org-agenda-format-date. You can use a
simple format string like
(setq org-agenda-format-date "%Y-%m-%d
===========================================")
Or use spaced instead of ============== so that they can be
fontified like you suggest.
Or you can write your own function to do something fancier, maybe
based on
`org-agenda-format-date-aligned'.
HTH
- Carsten
On May 13, 2010, at 10:41 AM, Sébastien Vauban wrote:
> Hi,
>
> I would like to see more distinctively the separation between days
> in the
> agenda view.
>
> --8<---------------cut here---------------start------------->8---
> Week-agenda (W19-W20):
> Saturday 15 May 2010
> Personal: 18:00-19:00
> Mar :home::errands:
> Sunday 16 May 2010
> Personal: Mer avec
> Lolo :home::errands:
> Monday 17 May 2010 W20
> Personal: 17:15-17:20
> Sarah! :home::errands:
> Tuesday 18 May 2010
> Personal: 17:15-17:20
> Sarah! :home::errands:
> Wednesday 19 May 2010
> Personal: 17:15-17:20
> Sarah! :home::errands:
> Diary: Shavuot
> Thursday 20 May 2010
> Personal: 17:15-17:20
> Sarah! :home::errands:
> Friday 21 May 2010
> --8<---------------cut here---------------end--------------->8---
>
> I have used some sort of "inverse video" for the days, to make them
> stand up:
>
> --8<---------------cut here---------------start------------->8---
> (org-agenda-date ((t (:background "LightSkyBlue"))))
> (org-agenda-date-today ((t (:background "yellow" :slant
> normal :weight bold))))
> (org-agenda-date-weekend ((t (:foreground "white" :background
> "blue4" :weight bold))))
> --8<---------------cut here---------------end--------------->8---
>
> But it's not yet as right as it should be (let me rephrase: as I
> would like
> it) because the face is only applied on the visible characters: the
> "separator" does not expand up to the right of the screen.
>
> An improved version (re readability) of the agenda view would be:
>
> --8<---------------cut here---------------start------------->8---
> Week-agenda (W19-W20):
> Saturday 15 May 2010
> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> Personal: 18:00-19:00
> Mar :home::errands:
> Sunday 16 May 2010
> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> Personal: Mer avec
> Lolo :home::errands:
> Monday 17 May 2010 W20
> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> Personal: 17:15-17:20
> Sarah! :home::errands:
> Tuesday 18 May 2010
> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> Personal: 17:15-17:20
> Sarah! :home::errands:
> Wednesday 19 May 2010
> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> Personal: 17:15-17:20
> Sarah! :home::errands:
> Diary: Shavuot
> Thursday 20 May 2010
> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> Personal: 17:15-17:20
> Sarah! :home::errands:
> Friday 21 May 2010
> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> --8<---------------cut here---------------end--------------->8---
>
> where `xxx' is just some textual way to represent background color.
>
> Is there some way to do so?
>
> Best regards,
> Seb
>
> --
> Sébastien Vauban
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Please use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
- Carsten
[-- Attachment #1: Type: text/plain, Size: 651 bytes --] On Thu, 13 May 2010 20:27:27 +0200, Carsten Dominik <carsten.dominik@gmail.com> wrote: > > Hi Sebastian, hi Eric > > take a look at the variable org-agenda-format-date. You can use a [...] > Or you can write your own function to do something fancier, maybe > based on > `org-agenda-format-date-aligned'. [...] Thanks Carsten. This did the job. I modified your function to add a 120 long blank string at the end of the date and set my face as follows (from custom-set-faces): (org-agenda-date ((t (:inherit nil :foreground "black" :background "pale turquoise")))) and I have a clear date separator! Underline would work as well, of course. [-- Attachment #2: Type: text/plain, Size: 295 bytes --] -- MC . -.. --- - ..-. .-. .- --. .- .- - ..- -.-. .-.. .- -.-. ..- -.- NL Professor Eric S Fraga, UCL, http://www.homepages.ucl.ac.uk/~ucecesf/ PG Fingerprint: 8F5C 279D 3907 E14A 5C29 570D C891 93D8 FFFC F67D BF >++++++++++[>++++++++++>+++++++++++[<]>-]>++.>++++.<-----.++++++.------. [-- Attachment #3: Type: text/plain, Size: 201 bytes --] _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Hi Eric and Carsten, Eric S Fraga wrote: > On Thu, 13 May 2010 20:27:27 +0200, Carsten Dominik <carsten.dominik@gmail.com> wrote: >> >> Take a look at the variable org-agenda-format-date. >> Or you can write your own function to do something fancier, maybe based on >> `org-agenda-format-date-aligned'. > > Thanks Carsten. This did the job. I modified your function to add a 120 long > blank string at the end of the date [...] and I have a clear date separator! > Underline would work as well, of course. Another version, I guess, from what you wrote. No length hard-coded, except for the 10 characters of the ISO date and 1 space after. --8<---------------cut here---------------start------------->8--- (setq org-agenda-format-date (concat "%Y-%m-%d " (make-string (- (window-width) 11) (string-to-char "_")))) --8<---------------cut here---------------end--------------->8--- The agenda view is much, much clearer now... Thanks both for your help, 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
On 5/17/2010 4:23 AM, Sébastien Vauban wrote:
> Hi Eric and Carsten,
>
> Eric S Fraga wrote:
>> On Thu, 13 May 2010 20:27:27 +0200, Carsten Dominik<carsten.dominik@gmail.com> wrote:
>>>
>>> Take a look at the variable org-agenda-format-date.
>>> Or you can write your own function to do something fancier, maybe based on
>>> `org-agenda-format-date-aligned'.
>>
>> Thanks Carsten. This did the job. I modified your function to add a 120 long
>> blank string at the end of the date [...] and I have a clear date separator!
>> Underline would work as well, of course.
>
> Another version, I guess, from what you wrote. No length hard-coded, except
> for the 10 characters of the ISO date and 1 space after.
>
> --8<---------------cut here---------------start------------->8---
> (setq org-agenda-format-date
> (concat "%Y-%m-%d "
> (make-string (- (window-width) 11) (string-to-char "_"))))
> --8<---------------cut here---------------end--------------->8---
>
> The agenda view is much, much clearer now...
>
That's a nice piece of lisp, thanks for sharing.
Just curious, how can I get the day of the week in there as a string?
Thanks
Markus
Markus Heller <hellerm2@gmail.com> wrote:
> ...
> Just curious, how can I get the day of the week in there as a string?
>
%a - abbreviated
%A - full name
If you do
C-h f format-time-string <RET>
you'll get the complete list of formatting chars.
Nick
On 5/17/2010 2:02 PM, Nick Dokos wrote:
> Markus Heller<hellerm2@gmail.com> wrote:
>
>> ...
>> Just curious, how can I get the day of the week in there as a string?
>>
>
> %a - abbreviated
> %A - full name
>
> If you do
>
> C-h f format-time-string<RET>
>
> you'll get the complete list of formatting chars.
>
Ah, I was not aware of this. Emacs just takes a long time to learn.
Thanks for the answer, Nick!
Markus
Hi Markus, Nick and Carsten, Markus Heller wrote: > On 5/17/2010 2:02 PM, Nick Dokos wrote: >> Markus Heller<hellerm2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: >> >>> Just curious, how can I get the day of the week in there as a string? >> >> %a - abbreviated >> %A - full name Just for the sake of clarity and completeness, here's my current definition of the "format string for displaying dates": --8<---------------cut here---------------start------------->8--- (setq org-agenda-format-date (concat "%Y-%m-%d %a " (make-string (- (window-width) 15) (string-to-char "_")))) --8<---------------cut here---------------end--------------->8--- Carsten, maybe this could be made the default value? I guess it would help people out there, when using the default config. Just a suggestion, I don't mind setting it myself in my .emacs. 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
Hi all, > But it's not yet as right as it should be (let me rephrase: as I would like > it) because the face is only applied on the visible characters: the > "separator" does not expand up to the right of the screen. > > An improved version (re readability) of the agenda view would be: > > Week-agenda (W19-W20): > Saturday 15 May 2010 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx > Personal: 18:00-19:00 Mar :home::errands: > > [...] > > where `xxx' is just some textual way to represent background color. 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. --8<---------------cut here---------------start------------->8--- (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")))) --8<---------------cut here---------------end--------------->8--- with the following code in my .emacs file: --8<---------------cut here---------------start------------->8--- ;; 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))) --8<---------------cut here---------------end--------------->8--- The result is the following: --8<---------------cut here---------------start------------->8--- 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: --8<---------------cut here---------------end--------------->8--- 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. Is there a way to do so? FYI, my ultimate question of the agenda view is: is it easy to make [#A], [#B] and [#C] priorities have their own faces, so that we can highlight them the way we want? 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
Sébastien Vauban <wxhgmqzgwmuf-geNee64TY+gS+FvcfC7Uqw@public.gmane.org>
writes:
> (setq org-agenda-format-date
> (concat "%Y-%m-%d %a "
> (make-string (- (window-width) 15) (string-to-char "_"))))
>
> Carsten, maybe this could be made the default value? I guess it would help
> people out there, when using the default config. Just a suggestion, I don't
> mind setting it myself in my .emacs.
[If that happens, please change (string-to-char "_") to ?_
Elisp has read syntax for characters, so you're making an unnecessary
function call.]
Štěpán
Hi Štěpán, Štěpán Němec wrote: > Sébastien Vauban writes: > >> (setq org-agenda-format-date >> (concat "%Y-%m-%d %a " >> (make-string (- (window-width) 15) (string-to-char "_")))) >> >> Carsten, maybe this could be made the default value? I guess it would help >> people out there, when using the default config. Just a suggestion, I don't >> mind setting it myself in my .emacs. > > [If that happens, please change (string-to-char "_") to ?_ > Elisp has read syntax for characters, so you're making an unnecessary > function call.] Thanks for the tip. FMI, is that valid in XEmacs as well -- even if I'm not especially using it, I always try to be as most portable as possible. 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
I think this is using the same formatting as strftime. So, 'man
strftime' will show you all the options.
The short day name is '%a', and the full day name is '%A'.
Dave
Markus Heller <hellerm2@gmail.com> writes:
> On 5/17/2010 4:23 AM, Sébastien Vauban wrote:
>> Hi Eric and Carsten,
>>
>> Eric S Fraga wrote:
>>> On Thu, 13 May 2010 20:27:27 +0200, Carsten Dominik<carsten.dominik@gmail.com> wrote:
>>>>
>>>> Take a look at the variable org-agenda-format-date.
>>>> Or you can write your own function to do something fancier, maybe based on
>>>> `org-agenda-format-date-aligned'.
>>>
>>> Thanks Carsten. This did the job. I modified your function to add a 120 long
>>> blank string at the end of the date [...] and I have a clear date separator!
>>> Underline would work as well, of course.
>>
>> Another version, I guess, from what you wrote. No length hard-coded, except
>> for the 10 characters of the ISO date and 1 space after.
>>
>> --8<---------------cut here---------------start------------->8---
>> (setq org-agenda-format-date
>> (concat "%Y-%m-%d "
>> (make-string (- (window-width) 11) (string-to-char "_"))))
>> --8<---------------cut here---------------end--------------->8---
>>
>> The agenda view is much, much clearer now...
>>
>
> That's a nice piece of lisp, thanks for sharing.
>
> Just curious, how can I get the day of the week in there as a string?
>
> Thanks
> Markus
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Please use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Sébastien Vauban <wxhgmqzgwmuf-geNee64TY+gS+FvcfC7Uqw@public.gmane.org> writes: >> [If that happens, please change (string-to-char "_") to ?_ >> Elisp has read syntax for characters, so you're making an unnecessary >> function call.] > > Thanks for the tip. FMI, is that valid in XEmacs as well -- even if I'm not > especially using it, I always try to be as most portable as possible. Yes, that is the proper way to write it in XEmacs as well. Štěpán > > Best regards, > Seb
Hi all, 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. > > Is there a way to do so? 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'): --8<---------------cut here---------------start------------->8--- (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) --8<---------------cut here---------------end--------------->8--- and changing one line of `org-agenda.el' (L4619, function `org-agenda-get-deadlines'): --8<---------------cut here---------------start------------->8--- (org-add-props txt props --8<---------------cut here---------------end--------------->8--- to --8<---------------cut here---------------start------------->8--- (org-add-props-from-2 txt props --8<---------------cut here---------------end--------------->8--- Maybe that can be factored (much, much) more smartly? Can this be patched against the source code? 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
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? 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
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
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
Hi all, Sébastien Vauban wrote: > Carsten Dominik wrote: >> 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")))) >>>>> >>>>> [...] >>>>> >>>>> 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 the `x' are 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. Still trying to solve this, now that I have learned a bit more (but, still only a bit...) on debugging Lisp code. I've (on purpose) "forgotten" all I did and found in the past (june-july), to start again from scratch, and be sure I identify the right defuns to work on. So, to resume, my *goal* is to try applying a face with white background (in my case) on the first 2 characters of every TODO line appearing in the agenda. But, question: *which defun* does do that? How to find that information? I instrumented the org packages with ELP, and got many function calls. I searched for functions that were called at least as many times as the number of lines I have in my weekly agenda. (is there a better way to _trace_ function calls, and see a call tree? `M-x trace', mabye, but it did not help me a lot so far -- maybe lacking experience) By stepping through some functions, I've understood that the functions that interest me are the following: org-agenda-list -> org-finalize-agenda-entries -> *org-agenda-highlight-todo* Though, what I really don't understand is that I `C-u C-M-x' the function =org-agenda-highlight-todo=, and then call =org-agenda-list=, expecting to trace the function that *highlights every TODO line* of my agenda. And... no, *edebug is not launched*!? I really don't understand that... On the contrary, executing `C-c a s' does stop me in that function. So, the function has *well been instrumented*. Any idea about which wrong direction I'm taking? 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
Hi Sébastien,
Sébastien Vauban <wxhgmqzgwmuf@spammotel.com> writes:
> Though, what I really don't understand is that I `C-u C-M-x' the function
> =org-agenda-highlight-todo=, and then call =org-agenda-list=, expecting to
> trace the function that *highlights every TODO line* of my agenda.
>
> And... no, *edebug is not launched*!? I really don't understand
> that...
I'm not using elp so I cannot help on that.
What if you just go to go `org-agenda-highlight-todo' and
M-x edebug-defun RET
after it?
--
Bastien
Hi Bastien, First, thanks for answering... Bastien wrote: > Hi Sébastien, > > Sébastien Vauban <wxhgmqzgwmuf-geNee64TY+gS+FvcfC7Uqw@public.gmane.org> writes: > >> Though, what I really don't understand is that I `C-u C-M-x' the function >> =org-agenda-highlight-todo=, and then call =org-agenda-list=, expecting to >> trace the function that *highlights every TODO line* of my agenda. >> >> And... no, *edebug is not launched*!? I really don't understand >> that... > > I'm not using elp so I cannot help on that. > > What if you just go to go `org-agenda-highlight-todo' and > > M-x edebug-defun RET > > after it? I did: M-x load-library RET edebug and M-x edebug-defun RET after the function =org-agenda-highlight-todo=, what's "proved" (if you don't believe me ;-)) by this extract of the *Messages*: --8<---------------cut here---------------start------------->8--- Loading /usr/share/emacs/23.1/lisp/emacs-lisp/edebug.elc... Loading edebug... ad-handle-definition: `eval-defun' got redefined Loading edebug...done Edebug: org-agenda-highlight-todo org-agenda-highlight-todo --8<---------------cut here---------------end--------------->8--- Then, calling =C-c a a= (=org-agenda-list=) is *not interrupted* by =edebug=, while I was well expecting to step through that function, and see what's done with every todo line. Though, as previously said, calling =C-c a s= (=org-search-view=) does first display the following 2 lines... --8<---------------cut here---------------start------------->8--- Search words: test Press `[', `]' to add/sub word, `{', `}' to add/sub regexp, `C-u r' to edit --8<---------------cut here---------------end--------------->8--- ... and is then *well interrupted* by =edebug=. Subsequent extract of *Messages*: --8<---------------cut here---------------start------------->8--- Press key for agenda command: No event to add Preparing diary...done Preparing diary...done Preparing diary...done Preparing diary...done Preparing diary...done Preparing diary...done Preparing diary...done No event to add Press key for agenda command: No event to add Result: (#1="DONE" #2="CANX" #3="APP" #4="EXP" #5="REJ" #6="CLSDPO" #7="PRDONE" #8="PRCANCELED" #1# #2# #3# #4# #5# #6# "DONE" "CANX" "APP" "EXP" "REJ" "CLSDPO" "DONE" "CANX" "APP" "EXP" "REJ" "CLSDPO" "DONE" "CANX" "APP" "EXP" "REJ" "CLSDPO" "DONE" "CANX" "APP" "EXP" "REJ" "CLSDPO" "DONE" "CANX" "APP" "EXP" "REJ" "CLSDPO" "DONE" "CANX" "APP" "EXP" "REJ" "CLSDPO" ...) --8<---------------cut here---------------end--------------->8--- I must miss something, but what? Thanks for your help. 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
Hi Sébastien,
Sébastien Vauban <wxhgmqzgwmuf@spammotel.com> writes:
> after the function =org-agenda-highlight-todo=, what's "proved" (if you don't
> believe me ;-)) by this extract of the *Messages*:
>
> Loading /usr/share/emacs/23.1/lisp/emacs-lisp/edebug.elc...
> Loading edebug...
> ad-handle-definition: `eval-defun' got redefined
> Loading edebug...done
> Edebug: org-agenda-highlight-todo
> org-agenda-highlight-todo
>
> Then, calling =C-c a a= (=org-agenda-list=) is *not interrupted* by =edebug=,
> while I was well expecting to step through that function, and see what's done
> with every todo line.
Try this: run `edebug-defun' after `org-finalize-agenda-entries' and
after `org-agenda-highlight-todo' -- here it let me go thru the latter
one step by step...
--
Bastien