Cela faisait un moment que j'en avais marre de passer par mon navigateur pour écrire mes billets sur ce blog. Les raisons sont simples, tout d'abord j'utilise communément vim comme éditeur de texte, et il m'est assez insupportable d'écrire du texte dans les textarea Qt où je ne bénéficie pas des raccourcis et de ma configuration de vim. En outre, j'ai horreur du web, et je ne supporte pas de passer par l'interface d'administration de Wordpress que je trouve lourde de javascript.
C'est pourquoi lorsque pankkake m'a appris l'existence d'un script vim pour publier des billets Wordpress par XML-RPC, je fus enchanté.
Cependant, certaines choses de ce script ne me satisfaisaient pas. D'une part, je n'aimais pas la syntaxe des meta-data, je préférais afficher celles-ci dans le style mail, afin que cela me rapproche plus de l'écriture d'un e-mail avec mutt.
En outre, après édition du code source (qui, agréable surprise, est en Python), j'ai vu des horreurs du code, du style :
("".zfill(size-len(p["postid"])).replace("0", " ")+p["postid"])
Qui a en fait pour but de faire, en se compliquant la vie, ceci :
'%5d' % int(p["postid"]) # Ou pour être exact : ('%%%dd' % size) % int(p["postid"])
Il a également eu la bonne manie d'entourer chacune de ses fonctions par :
try: # ... except: sys.stderr.write("An error occured")
Ce qui est très laid.
En bref, vu l'horreur que cela représente, j'ai décidé d'écrire un plugin de zéro afin de rendre ça un peu plus agréable à utiliser et le code un peu plus propre.
Ceci a abouti à ce super script blogit.vim, qui possède l'API suivante :
- :Blogit ls — affiche la liste des articles (entrée sur un article l'édite)
- :Blogit new — créer un nouvel article
- :Blogit edit <id> — édite un article
- :Blogit commit — enregistre l'article courant
- :Blogit push — publie l'article courant
- :Blogit unpush — retire la publication de l'article
- :Blogit categories — liste les catégories
- :Blogit rm <id> — supprime un article
blogit.vim est releasée en version 1.0.
Ce présent billet est d'ailleurs le premier écrit avec ce script, et j'espère que sa commodité d'utilisation m'incitera à écrire plus fréquemment :

Billet écrit avec vim : coloration syntaxique, correction orthographique, fonction undo/redo, etc.
bah voui ca a du bon de temps en temps le text
Je tenais d’abord à vous remerciez pour ce fabuleux plugin, n’étant moi-même pas fans des textarea cela m’a donné de nouveau la plaisir d’écrire des postes sur mon blog. De plus cela nécessite beaucoup moins de tâches répétitives, plus besoin de ce logguer, et de cliquer par-ci et là, simplement ouvrir Vim et en plus cela permet de bénéficier de ces raccourcis et de toutes la puissance de Vim. Je comptais écrire un plugin, c’est d’ailleurs comment ça que j’ai découvert le votre, en me disant que ça devait déjà existait. A ajouter dans mes plugins Vim préféré encore un grand merci :) .
Néanmoins je rencontre un petit soucis cela vient peut-être de mon utilisation problème de droit, mais je tenais à vous demandez si vous aviez connaissance de ce problème. Lorsque j’écris un article, et que je l’ai terminé je fais un Blogit commit pour l’enregistrer dans les brouillons, puis un Blogit push pour le publier. Lorsque je me rends sur l’interface de wordpress il est programmé dans n minutes, puis après j’ai ce message Missed schedule, de ce faite il ne sera pas publié. Je suis donc obligé de le rend basculer en attente de relecture, et de le publier à la main.
J’ai corrigé ceci et j’ai fais une nouvelle release (où la date est indiquée en UTC).
Cependant, je n’ai pas constaté de problème dans le cas d’une planification volontaire : Wordpress publie correctement le billet à la date souhaitée.
Il serait intéressant que tu testes si la planification marche en passant par l’interface, peut-être que tu me donnes la version de ton Wordpress, et ce genre de choses.
Je cherchais comment envoyer des posts sur mon blog wordpress sans devoir utiliser l’interface de wordpress ou un outil adéquat.
L’idée du RST est géniale, parce qu’étant développeur, j’ai envie de faire une série d’articles sur Open ERP, et donc, il est intéressant que la coloration syntaxique se fasse automatiquement dans les exemples que je donne (non, pas envie de jouer avec pygments).
En tout cas, ton plugin est vraiment cool.
PS: Je viens de charger aussi TwitVim (http://www.vim.org/scripts/script.php?script_id=2204) et il y a un bug dans l’utilisation de Blogit.
Je peux te faire une petite video si nécessaire.
Stéphane
J’ai une petite question, peux-tu m’indiquer comment utiliser la coloration syntaxique. Je pourrais vite regarder dans le code, mais je suis un peu pris pour le moment avec un gros projet et je n’ai pas trop le temps.
Merci
Et pour la coloration syntaxique, j’ai du mal à saisir ta question, mais je dirais :set syn :)
E121: Variable non d?finie : u
E15: Expression invalide : [”, ‘”disque dur”‘, ‘2007′, ‘21 decembre’, ‘absence’, ‘Acer’, ‘achat’, ‘action’, ‘addict’, ‘aide’, ‘alien’, u’all\xe9luia’, ‘alliance’, ‘amou
reux’, ‘animation’, ‘anniversaire’, u’aper\xe7u’, ‘apple’, ‘archlinux’, ‘archos’, ‘arnaque’, ‘artwo’, ‘ascii’, u’ast\xe9rix’, ‘Asus’, ‘attente’, ‘autoportrait’, ‘avatar’
, ‘bac’, ‘baladeur’, ‘bande-annonce’, ‘bataille’, ‘batman’, u’bele-m\xe8re’, ‘bidouille’, ‘bien’, u’bi\xe8re’, ‘bios’, ‘blague’, ‘blog’, u’blogosph\xe8re’, ‘blogroll’, ‘
blogueur’, ‘blogueur du sud’, ‘bof’, ‘bonheur’, ‘boot’, ’bouteille’, ‘buzz’, ‘C’, ‘cadeau’, ‘cadeaux’, ‘cahier’, u’canap\xe9′, ‘cantine’, u’cass\xe9′, ‘CD’, ‘chaine’, ‘c
haine/concours’, ‘chambre’, ‘chat’, ‘chaussure’, ‘choix’, ‘chuck norris’, u’cin\xe9ma’, ‘citron’, ‘clan’, ‘clash’, ‘classement’, u’cl\xe9opatre’, ‘clone’, u’col\xe8re’,
‘commentaire’, ‘commentaires’, ‘comparaison’, ‘concours’, ‘concurs’, ‘console’, ‘converse’, ‘couple’, ‘courrier’, ‘course’, ‘crime’, ‘D.Crokayte’, ‘daft punk’, ‘dame’, ‘
danse’, u’
Traceback (most recent call last):
File “”, line 1, in
File “”, line 1356, in command
File “”, line 1590, in command_push
File “”, line 773, in send
File “”, line 806, in getPost
vim.error
Python : 2.6.3
Cette erreur survient lorsque que je veux envoyer ou éditer un billet. Lorsque que je veux afficher la liste des billets, j’ai en plus “/must>not&exist/foo:1366: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6
junk after document element: line 2, column 0″.