Création d’un nouveau billet depuis emacs
Rédigé par Fred - - 6 commentairesJ’é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’articleEncoder 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:
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