Emacs et HTML

Emacs est sans aucun doute l'un des éditeurs les plus puissants qui soit. Il dispose d'un nombre de fonctionnalités effarant, et brille dans la grande majorité de ses usages.

Mais il y a un point sur lequel il a longtemps peiné; les langages de programmation mixés, en particulier le HTML/JS/CSS/PHP mélangés dans le même fichier.

Pendant longtemps, la seule solution était d'employer un multi-mode; un hack en fait qui isolait les portions du fichier dans des différents langages, les copiait dans des buffers masqués et réassemblait l'affichage dans un buffer commun. Ça marche assez bien mais il peut y avoir pas mal de bugs et problèmes, et bien entendu l'indentation n'est pas géniale.

Finalement, un certain fxbois a pris le taureau par les cornes et écrit un mode unique qui gère tous ces langages web à un niveau au moins basique et qui fait la coloration syntaxique de manière satisfaisante. Merci fxbois!

Restait un problème, l'indentation du dit mode était toujours en berne.

Une petite explication de l'indentation sous Emacs s'impose.

Emacs n'est définivement pas un éditeur comme les autres, et ses utilisateurs sont particulièrement fénéants et férus de leur logiciel. De fait, quoi de plus ennuyeux que de gérer soi-même le style d'indentation de son code? Du coup la touche tabulation ne fonctionne pas du tout comme on pourrait s'y attendre dans Emacs. Plutôt qu'insérer n caractères, la touche tabulation appelle une fonction qui analyse le code aux alentours du curseur et détermine l'indentation correcte par rapport au style choisi. Le curseur est ensuite déplacé à la position correcte.

Seulement le HTML mixé n'est pas la panacée en matière d'indentation. Les différent langages peuvent avoir des styles différents et HTML lui-même peut être assez tordu. Du coup il y a peu de chance pour que le défaut de web-mode convienne.

Problème qui peut vite devenir très irritant. Après avoir souffert sur emacs pendant de longues années, j'en ai eu marre et ai fait un petit tour de quelques semaines sur Vim (j'ai honte...).

J'ai alors réalisé que finalement l'indentation automatique n'était pas si utile que ça dans HTML et que quitte à tout prendre, il valait mieux indenter à la main que de s'énerver sur l'éditeur.

J'ai donc soustrait les fonctions d'indentation intelligentes de web-mode, et les ai remplacé par de l'indentation bête. Si vous êtes au début de la ligne, un appui sur la touche tabulation vous amènera au niveau de la précédente ligne, d'autres appuis consécutifs indenteront la ligne davantage.

Allez donc vite attraper votre copie de mon web-mode!

Voici donc un bug de résolu pour Emacs, et un dévelopeur soulagé!

Vus : 2147
Publié par Etenil : 58