Discussion:
françisation de org-agenda-list
(trop ancien pour répondre)
yves
2017-11-13 21:54:42 UTC
Permalink
Bonjour,

la fonction org-agenda-list permet d'afficher une vue "agenda" d'un
fichier au format org-mode.

Exemple:

------------
Day-agenda (W46):
Monday 13 November 2017 W46
retour: Scheduled: TODO debuguer bus.sh
retour: Scheduled: TODO françisation de org-agenda-list
------------

je voudrais savoir s'il existe un paramétrage simple pour franciser
cet agenda ? Pour l'instant, mes recherches ont fait chou blanc.


@+
--
Yves
Jean-Jacques Rétorré
2017-11-14 04:21:49 UTC
Permalink
Post by yves
Bonjour,
la fonction org-agenda-list permet d'afficher une vue "agenda" d'un
fichier au format org-mode.
------------
Monday 13 November 2017 W46
retour: Scheduled: TODO debuguer bus.sh
retour: Scheduled: TODO françisation de org-agenda-list
------------
je voudrais savoir s'il existe un paramétrage simple pour franciser
cet agenda ? Pour l'instant, mes recherches ont fait chou blanc.
Déjà on peut facilement franciser le calendrier.

(setq french-holiday
'((holiday-fixed 1 1 "Jour de l'an")
(holiday-fixed 5 1 "Fête du travail")
(holiday-fixed 5 8 "Victoire 45")
(holiday-fixed 7 14 "Fête nationale")
(holiday-fixed 8 15 "Assomption")
(holiday-fixed 11 1 "Toussaint")
(holiday-fixed 11 11 "Armistice 18")
(holiday-fixed 12 25 "Noël")
(holiday-easter-etc 1 "Lundi de Pâques")
(holiday-easter-etc 39 "Ascension")
(holiday-easter-etc 50 "Lundi de Pentecôte"))
calendar-date-style 'european
calendar-holidays (append french-holiday)
calendar-mark-holidays-flag t
calendar-day-name-array ["dimanche" "lundi" "mardi" "mercredi" "jeudi" "vendredi" "samedi"]
calendar-day-abbrev-array ["dim" "lun" "mar" "mer" "jeu" "ven" "sam"]
calendar-day-header-array ["di" "lu" "ma" "me" "je" "ve" "sa"]
calendar-month-abbrev-array ["Jan" "Fev" "Mar" "Avr" "Mai" "Jun" "Jui" "Aou" "Sep" "Oct" "Nov" "Dec"]
calendar-month-name-array ["janvier" "février" "mars" "avril" "mai" "juin" "juillet" "août" "septembre" "octobre" "novembre" "décembre"]
lunar-phase-names '("Nouvelle lune" "Premier quartier" "Pleine lune" "Dernier Quartier"))


On peut franciser org-agenda-scheduled-leaders
,----
| org-agenda-scheduled-leaders is a variable defined in ‘org-agenda.el’.
| Its value is ("Scheduled: " "Sched.%2dx: ")
|
| Documentation:
| Text preceding scheduled items in the agenda view.
| This is a list with two strings. The first applies when the item is
| scheduled on the current day. The second applies when it has been scheduled
| previously, it may contain a %d indicating that this is the nth time that
| this item is scheduled, due to automatic rescheduling of unfinished items
| for the following day. So this number is one larger than the number of days
| that passed since this item was scheduled first.
|
| You can customize this variable.
`----

Voir
(customize-group 'org-agenda-line-format)


--
JJR
yves
2017-11-14 09:06:02 UTC
Permalink
Post by Jean-Jacques Rétorré
Déjà on peut facilement franciser le calendrier.
(setq french-holiday
Merci, ça marche:

Day-agenda (W46):
lundi 13 novembre 2017 W46
retour: Programmé: TODO debuguer bus.sh
retour: Programmé: TODO françisation de org-agenda-list


Sauf pour "Day-agenda" et "W46", mais bon, ceci peut attendre.

@+
--
Yves
Jean-Jacques Rétorré
2017-11-14 10:55:38 UTC
Permalink
Post by yves
Post by Jean-Jacques Rétorré
Déjà on peut facilement franciser le calendrier.
(setq french-holiday
lundi 13 novembre 2017 W46
retour: Programmé: TODO debuguer bus.sh
retour: Programmé: TODO françisation de org-agenda-list
Sauf pour "Day-agenda" et "W46", mais bon, ceci peut attendre.
@+
Je doute un peu que ce soit facile à faire simplement, ça semble codé «
en dur »

Je pense avoir trouvé le code responsable de cette sortie.
Ce sont les lignes 4161 à 4168 de org-agenda.el
,----
| (insert (org-agenda-span-name span)
| "-agenda"
| (if (< (- d2 d1) 350)
| (if (= w1 w2)
| (format " (W%02d)" w1)
| (format " (W%02d-W%02d)" w1 w2))
| "")
| ":\n")))
|
`----

Pas très difficile à modifier, la fonction org-agenda-span-name se
contente de renvoyer la valeur de span (week, fortnight, month, year..)
avec la première lettre en capitale. Le W de W45 sort de format "w%02d"
Il suffit de remplacer W par ce qui plaît. Après, ça pose problème avec
les mises à jour, il faut gérer ça, personnellement je ne le ferais pas.

--
JJR
Jean-Jacques Rétorré
2017-11-14 13:34:03 UTC
Permalink
Post by Jean-Jacques Rétorré
Post by yves
Post by Jean-Jacques Rétorré
Déjà on peut facilement franciser le calendrier.
(setq french-holiday
lundi 13 novembre 2017 W46
retour: Programmé: TODO debuguer bus.sh
retour: Programmé: TODO françisation de org-agenda-list
Sauf pour "Day-agenda" et "W46", mais bon, ceci peut attendre.
@+
Je doute un peu que ce soit facile à faire simplement, ça semble codé «
en dur »
Je pense avoir trouvé le code responsable de cette sortie.
Ce sont les lignes 4161 à 4168 de org-agenda.el
,----
| (insert (org-agenda-span-name span)
| "-agenda"
| (if (< (- d2 d1) 350)
| (if (= w1 w2)
| (format " (W%02d)" w1)
| (format " (W%02d-W%02d)" w1 w2))
| "")
| ":\n")))
|
`----
Pas très difficile à modifier, la fonction org-agenda-span-name se
contente de renvoyer la valeur de span (week, fortnight, month, year..)
avec la première lettre en capitale. Le W de W45 sort de format "w%02d"
Il suffit de remplacer W par ce qui plaît. Après, ça pose problème avec
les mises à jour, il faut gérer ça, personnellement je ne le ferais pas.
J'ai quand même essayé d'effectuer les modifications « pour voir » Je ne
suis pas un pro de elisp, mais ça m'amuse. Chacun s'amuse comme il
peut...

Voici les lignes que je modifie
,----
| 4161 (insert (org-agenda-span-name span)
| 4162 "-agenda"
| 4163 (if (< (- d2 d1) 350)
| 4164 (if (= w1 w2)
| 4165 (format " (W%02d)" w1)
| 4166 (format " (W%02d-W%02d)" w1 w2))
| 4167 "")
| 4168 ":\n")))
`----

Modifiées comme suit
,----
| 4161 (insert "Agenda " (case span
| 4162 ('week "hebdomadaire")
| 4163 ('fortnight "bi-hebdomadaire")
| 4164 ('month "mensuel")
| 4165 ('year "annuel"))
| 4166 (if (< (- d2 d1) 350)
| 4167 (if (= w1 w2)
| 4168 (format " (S%02d)" w1)
| 4169 (format " (S%02d-S%02d)" w1 w2))
| 4170 "")
| 4171 ":\n")))
`----

J'ai testé, ça marche mais je ne garantis rien quand aux effets de bord
éventuels.
Post by Jean-Jacques Rétorré
--
JJR
yves
2017-11-15 12:33:02 UTC
Permalink
Post by Jean-Jacques Rétorré
J'ai quand même essayé d'effectuer les modifications « pour voir » Je ne
suis pas un pro de elisp, mais ça m'amuse. Chacun s'amuse comme il
peut...
Merci.

Effectivement, je ne vais probablement pas le faire à cause de la
maintenance et des possibles effets de bord.

Mais j'ai noté tout ça soigneusement.


@+
--
Yves
Nicolas Goaziou
2017-11-15 13:50:22 UTC
Permalink
Bonjour,
Post by yves
Effectivement, je ne vais probablement pas le faire à cause de la
maintenance et des possibles effets de bord.
Il y a plus « propre ».

`org-agenda-finalize-hook' permet de modifier le texte de l'agenda juste
avant qu'il ne soit affiché. Cela permet donc, par exemple, de traduire
des éléments de l'agenda.

J'utilise par exemple le procédé suivant pour ajouter "/A" ou "/B" au
numéro de semaines selon qu'il s'agit d'une semaine paire ou impaire.

(defun my-agenda-set-week-letter ()
(save-excursion
(goto-char (point-min))
(while (re-search-forward "W\\([0-9]+\\)" (line-end-position) t)
(unless (looking-at-p "/[AB]")
(let ((week-number (string-to-number (match-string 1))))
(insert
(propertize (if (= 0 (% week-number 2)) "/A" "/B")
'face 'org-agenda-structure 'org-date-line t)))))))

(add-hook 'org-agenda-finalize-hook #'my-agenda-set-week-letter)

Cordialement,
--
Nicolas Goaziou 0x80A93738
Jean-Jacques Rétorré
2017-11-15 20:08:05 UTC
Permalink
Post by yves
Bonjour,
Post by yves
Effectivement, je ne vais probablement pas le faire à cause de la
maintenance et des possibles effets de bord.
Il y a plus « propre ».
`org-agenda-finalize-hook' permet de modifier le texte de l'agenda juste
avant qu'il ne soit affiché. Cela permet donc, par exemple, de traduire
des éléments de l'agenda.
J'utilise par exemple le procédé suivant pour ajouter "/A" ou "/B" au
numéro de semaines selon qu'il s'agit d'une semaine paire ou impaire.
(defun my-agenda-set-week-letter ()
(save-excursion
(goto-char (point-min))
(while (re-search-forward "W\\([0-9]+\\)" (line-end-position) t)
(unless (looking-at-p "/[AB]")
(let ((week-number (string-to-number (match-string 1))))
(insert
(propertize (if (= 0 (% week-number 2)) "/A" "/B")
'face 'org-agenda-structure 'org-date-line t)))))))
(add-hook 'org-agenda-finalize-hook #'my-agenda-set-week-letter)
Cordialement,
Super, mais je ne sais pas comment j'aurais pu trouver ça tout
seul.
En tout cas, merci à tous ceux qui contribuent au développement de
org-mode.

--
JJR

Loading...