Création d’un nouveau billet depuis emacs

Rédigé par Fred - - 6 commentaires

J’écris toujours mes billets sous emacs. Mais depuis que je suis passé à PluXml et jusqu’à il n’y a pas si longtemps, je devais exporter l’article (le fichier ou la sous-arborescence) en html (où plutôt dans ma version), puis copier et coller le contenu dans la partie administration du blog, en renseignant date, catégorie et mots clés (je ne me sers pas vraiment des autres options pour le moment), qui étaient ensuite transformés en fichier xml.

Quand on a eu l’habitude d’utiliser org-publish, c’est fastidieux… J’ai donc écrit quelques lignes d’elisp pour pouvoir créer directement ce fichier xml. Comme d’habitude, c’est disponible sur bitbucket.

Avec le passage à PluXml, j’en ai profité pour revoir un peu ma façon d’écrire des articles :

  • Soit je trouve quelque chose sur le net, et dans ce cas là je récupère le lien via org-protocol ;
  • Soit je veux faire un article plus conséquent, ou qui ne vient pas d’un lien, et je crée un nouveau fichier .org dans un dossier /chemin/qui/va/bien/année/mois/jour/ (avant, tous mes articles étaient sous cette forme).

J’ai maintenant un fichier dans lequel je me note plusieurs choses concernant ce site, et en particulier, j’ai l’arborescence suivante en ce qui concerne les articles que je pense faire pour ce blog :

#+TODO: TODO(t) WAITING(w) | DONE(d) CANCELED(c)
#+TODO: À_ÉCRIRE(à) COMMENCÉ(o) EN_ATTENTE(e@) FINI(f) | ANNULÉ(a) PUBLIÉ(p)

* Ce fichier…
* TODO [#A] Blog
** Catégories
*** diatribes
*** paremboles…
*** guides…
*** snippet…
*** lab…
*** blog…
*** projets…
*** raccourcis…
*** trouvailles…
*** memos
**** PUBLIÉ Encoder avec mencoder                             :mettre_à_jour:
**** PUBLIÉ Quelques notes SoapUI                             :mettre_à_jour:
**** PUBLIÉ Python Module of the Week                           :python:info:
Note pour moi-même.

Les modules des « module python de la semaine » : https://pymotw.com/2/contents.html

Par ordre alphabétique : https://pymotw.com/2/py-modindex.html

Pour info, pymotw est/était la présentation par Doug Hellmann d’un
module python avec des exemples de codes. Les sources sont disponibles
sur bitbucket.

Pour python 3 : https://pymotw.com/3/
**** PUBLIÉ Besoin de se dégourdir les doigts ?               :mettre_à_jour:
**** COMMENCÉ org-protocol                                    :emacs:orgmode:
*** non classé…
*** Snippets…
** Statiques…
*** Cheatsheet…
*** lab…

* TODO Site…

Sous le header Blog puis Catégories, j’ai toutes les catégories de mon blog. Et dans chaque catégorie, j’ai ensuite mes articles :

  • Soit en clair dans le fichier (ce qui est par exemple le cas pour l’article pymotw)
  • Soit un lien dans le dossier année/mois/jour (comme pour l’article Encoder avec mencoder).

Création d’un nouvel article

Pour créer un nouvel article, j’utilise un raccourci qui me demande un titre, puis crée le nom de fichier à partir de ce titre et de la date 1, le met dans le bon dossier (/chemin/qui/va/bien/aaaa/mm/jj/), et renseigne l’entête (avec quelques valeurs par défaut, configurables).

Pour cet article, voilà l’entête qui a été créé :

#+TITLE: Création d’un nouveau billet depuis emacs
#+DATE: <2016-04-10 11:09:42>
#+AUTHOR: Fred 
#+PLX_CAT: 
#+PLX_DRAFT: t
#+PLX_WAITING_VALIDATION: 
#+PLX_ALLOW_COM: 1
#+PLX_TEMPLATE: article.php
#+PLX_TAGS: 
#+PLX_META_DESCR: 
#+PLX_META_KEYWORDS: 
#+PLX_ARTICLE_ID: 0053

Je peux ainsi renseigner la catégorie, des mots clés, le passer en brouillon ou non, etc.

Les catégories sont à renseigner telles qu’elles ont été définies dans le fichier categories.xml au niveau de l’=url= et pas du CDATA (ici par exemple, j’ai renseigné directement blog et non Blog ou 001).

Lorsque j’exporte, ça crée le fichier avec le bon nom (merci à Stéphane), puis ça remplit le fichier xml (avec encore un merci à Stéphane) en renseignant les balises correctement à partir de l’entête de mon fichier, et ça le met dans le bon dossier. Si un fichier avec le même id existe déjà, il demande si on veut l’écraser.

Création d’un billet light

Si j’ai utilisé org-protocol, j’ai une nouvelle section dans une des catégories du blog dans le fichier principal. Dans ce cas, le titre correspondra au header de la section et la catégorie, à la section parente et j’utilise C-c C-c pour ajouter des tags. Un raccourci plus tard, le fichier est correctement nommé, rempli (avec les mêmes valeurs par défaut) et déposé dans le bon dossier.

Enfin, dans les deux cas, le fichier tags.xml est mis à jour correctement (l’ancienne ligne est supprimée si l’article est mis à jour).

Par défaut je dépose/modifie les fichiers sur une copie locale du blog, mais il est possible d’utiliser tramp pour passer via ssh sur le serveur directement.

Reste à faire

Même si mon processus est maintenant plus fluide, il reste dans l’idéal des améliorations à apporter :

  • créer la catégorie dans le fichier si elle n’existe pas
  • créer un lien dans l’arborescence Blog/catégorie du fichier principal lors de la création d’un nouveau billet
  • utiliser un drawer dans les articles créés dans le fichier pour pouvoir réutiliser le même id
  • utiliser le processus d’=org-export-dispatch= pour pouvoir exporter et publier

Rien de bien méchant, mais l’utilisation n’en serait que plus agréable.

Liens vers les autres articles

Petit aparté pour finir. Si je souhaite faire un lien vers un autre article, j’utilise les abréviations d’org-mode. Sous l’entête je rajoute

#+LINK: article http://fredtantini.free.fr/blog/index.php?article%s

(Ne pas oublier de C-c C-c si on veut pouvoir cliquer dessus de suite.)

Ensuite, dans le texte, un lien de la forme

[[article:42][blabla]]

remplacera le %s par 42, et la réécriture d’url de pluxml prend ensuite le relais !

Footnotes:

1

Le titre est un peu mieux transformé qu’avant. Les signes diacritiques et les caractères non-ascii/alphanum sont supprimés (en adaptant et simplifiant http://ergoemacs.org/emacs/emacs_zap_gremlins.html), le nom de fichier est préfixé avec la date, puis mis dans le bon dossier YEAR/MONTH/YearMonthDay_title_with_underscore.org

Fil RSS des articles de ce mot clé