var Phenix = function () {
Troll du Web depuis 1996

Adieu Sublime Text !

Bonjour Emacs

Adieu Sublime Text, tu étais un éditeur de code sympa. Mais maintenant, c’est fini !

C’est fini, parce que ton développement est au point mort depuis 1 an et demi. Il y a bien quelques releases, mais pas assez pour me faire croire que quelqu’un travaille encore vraiment dessus.

Entre l’avant-dernière « Dev build » et la dernière il s’est écoulé plus de 5 mois. Pour faire une release avec seulement 4 points : un bug fix et une nouvelle fonctionnalité largement buggée...

La présence inexistante du développeur sur le forum officiel ne me donne pas plus confiance dans la pérennité du logiciel.
Ce forum est d’ailleurs assez magique, puisque l’excuse au manque de release que l’on trouve parfois est que le dev est... en vacance. Putain, 5 mois de vacances, il a dû en vendre des licences de Sublime !

Décevant, c’est le mot qui me vient à l’esprit quand j’évoque ce logiciel. D’autant qu’il n’est pas Open Source, impossible pour l’énorme communauté qui est autour de prendre le relai.

Le changement cela fait toujours peur, surtout quand on choisi de passer à Emacs.

Quand on voit la tête de la courbe d’apprentissage, on se dit qu’il y a du travail :

J’ai fait une transition en douceur, car je ne peux pas vraiment arrêter de coder pour apprendre Emacs. Car bon, c’est mon travail après tout.
J’ai commencé par apprendre chez moi. Emacs est un logiciel déroutant conçu il y a ... 38 ans (1976). Il y a beaucoup de documentation sur le net, apprendre Emacs c’est un peu réapprendre à utiliser un ordinateur, le logiciel possède sa propre ergonomie et sa propre logique.

Pourquoi Emacs ?

Parce qu’il est tout l’inverser de Sublime Text :

  • Open source.
  • Supporté par … tout (mais vraiment TOUT).
  • Extensible à souhait, c’est un langage de programmation en lui-même : Lisp.
  • Personnalisable à mort, pour peu qu’on prenne le temps d’apprendre le Lisp.

Il y a cependant des fonctions que j’aimais bien dans Sublime Text que je veux retrouver dans un logiciel de code.

Auto-complet (AC)

Le premier package à installer est certainement l’auto complétion. Probablement une des mieux fichues que j’ai vue.

Web-mode

Quand on travaille sur des fichiers web, on se rend compte rapidement que c’est un peu la foire. En réalité, un fichier web, C’EST la foire !

Du JavaScript, du PHP, du HTML avec des attributs qui contiennent n’importe quoi, du css, inline ou pas… Bref c’est n’importe quoi !

Du coup, la coloration syntaxique ne sait plus trop ce qu’elle doit faire.

Heureusement il suffit d’installer web-mode pour retrouver la raison !

L’intégration avec Git

Cela se fait avec magit et comme les plugins Sublime Text s’inspirent largement de Magit l’interface est la même.

Projectile

Projectile fait de la gestion de projet dans Emacs. Cela facilite la recherche dans les fichiers. Penser à installer ack car grep c’est vraiment trop de prise de tête.
Une fois Ack installer, il y a deux packages Emacs qui l’intègre directement :

  • ack
  • ack-and-a-half

Magie !

IDO mode

Ido mode rend vraiment la vie plus facile. Du coup, on installe le package ido-ubiquitous et personnellement j’ai aussi ajouté ido-vertical-mode pour rendre tout cela plus lisible.

Après c’est selon les goûts.

Il FAUT activer le flex-matching pour profiter pleinement d’IDO :

  1. (setq ido-enable-flex-matching t)

Les touches directionnelles OSX

Un détaille qui m’a rapidement rendu fou, c’est que l’utilisation des raccourcis clavier des flèches directionnelles n’était pas le standard d’OSX.
CMD+Flèche gauche ne revoyait pas à la fin de la ligne. et CMD+flèche du haut ne ramenait pas au début du document…

J’avais l’habitude de cela dans tous les autres logiciels. Pour le coup, s’était à Emacs de s’adapter.

J’ai ajouté quelques lignes dans le .emacs :

  1. ;; ajouter les mouvements OSX via les CMD+flèche
  2. (global-set-key (kbd "s-<right>") 'move-end-of-line)
  3. (global-set-key (kbd "s-<left>") 'move-beginning-of-line)
  4. (global-set-key (kbd "s-<down>") 'end-of-buffer)
  5. (global-set-key (kbd "s-<up>") 'beginning-of-buffer)

Autre astuce, j’avais dans Sublime Text l’habitude de dupliquer facilement une ligne sans avoir à faire de copier-coller.
La même chose dans Emacs :

  1. ;; pouvoir dupliquer une ligne
  2. (autoload 'copy-from-above-command "misc"
  3.     "Copy characters from previous nonblank line, starting just above point.
  4.  
  5.  \(fn &optional arg)"
  6.     'interactive)
  7.  
  8. (global-set-key (kbd "s-d") 'copy-from-above-command)

Un peu de Sublime Text dans Emacs

Mettre en surbrillance la ligne courante :

  1. (global-hl-line-mode 1) ; turn on highlighting current line

Affiche les numéros de ligne :

  1. (global-linum-mode 1) ; display line numbers in margin. Emacs 23 only.

Écrire sur du texte sélectionner le supprime (c’est assez déroutant comme comportement…) :

  1. (delete-selection-mode 1) ; quand on sélectionner du texte, écrire supprime le texte sélectionné.

J’avais un plugin sous Sublime Text qui supprimait les espaces inutiles à la sauvegarde du fichier (TrailingSpaces). Dans Emacs, il suffit d’activer l’option ;

  1. (add-hook 'before-save-hook 'delete-trailing-whitespace) ; supprimer les espaces en trop à la sauvegarde

Par défaut, Emacs gère les sauts de ligne de manière étrange. Pour avoir des sauts de ligne de 2014, il suffit de demander :

  1. (global-visual-line-mode 1) ; Wordwrap correct et pas des blocs de texte

Et je n’ai fait qu’effleurer la surface de ce monstre, il y a tellement de choses qui sont possibles. L’excellent Org-mode a lui tout seul est un véritable défi qui vaut le détour tellement c’est puissant !

Il faut du courage pour passer à Emacs, mais ça en vaut la peine, car c’est réellement un logiciel qu’on peu adapter à nous. Rien ne nous est imposé.

Un message, un commentaire ?
modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message
  • Pour créer des paragraphes, laissez simplement des lignes vides.