View this page in english

29 May 2011

Fork de php-mode pour Emacs permettant de supporter les namespaces et # pour commenter

Category: Emacs,PHP

Voici enfin un patch fork qui ajoute la gestion des namespaces, de la notation heredoc ainsi que le support de # comme caractère de commentaire à cette version de php-mode.

Pour l'appliquer, télécharger le patch et lancer cette simple commande

patch php-mode.el < php-mode.el.diff
  

Voilà la résultat après redémarrage d'Emacs :

# is finally rendered correctly
namespace Pi\Truc\Bidule;
use Pi\XmlTag, Pi\Lib\String;
use Pi\Glob, Pi\Lib\String as PiStr;
Pi\XmlTag::test();
$xml = new Pi\XmlTag();
function foo(Pi\XmlTag $bla, PiStr $blo) {}
echo 'L\'ananas';

  

En prime, vous trouverez ci-dessous un extrait de ma configuration de php-mode. Elle permet :

  • de taper facilement les pénibles ->, => et / directement avec les touches ², ³ (accessible via Shift-²) et § respectivement ;
  • d'exécuter le code PHP du buffer courant à l'aide du raccourci C-c C-c ou de simplement vérifier la syntaxe du code, sans l'exécuter, en préfixant le raccourci précédent par C-u ;
  • enfin elle surbrille les caractères limites des lignes trop longues si vous avez installé col-highlight.el.
    Merci de lire cet article !
    Avec la prolifération des écrans 16/9, de plus en plus de gens se contre foutent de ce genre de considérations pratiques et esthétiques ; j'en rajoute donc une couche :).
    Comme l'expliquent l'article précédent en anglais et les articles suivants en français, la longueur des lignes influe sur le confort de la lecture, la fatigue oculaire et donc la concentration et le risque d'erreur.
    • Conseils de rédaction pour les rapports techniques
      « la ligne sera trop longue et sa lecture nécessitera plusieurs saccades de l'oeil ; de plus, celui-ci aura du mal à revenir pointer sur le début de la ligne suivante »
    • Longueur de ligne pour du texte
      « une justification trop longue ajoute un effort de lecture à celui de la bonne compréhension du texte »
    • La composition des textes
      « Plus les lignes de texte sont longues, plus l’œil à tendance à déraper d’une ligne à l’autre. Pour le confort de lecture »

Voici donc une partie de ma configuration pour le mode, moisi il faut bien l'avouer, php-mode :

(eval-after-load 'php-mode
  '(progn

     (when (featurep 'col-highlight)
       (add-hook 'php-mode-hook
                 (lambda nil
                   (column-highlight 95)
                   (set-fill-column 95)
                   (turn-on-auto-fill))))

     (define-key php-mode-map (kbd "²")
       '(lambda nil
          (interactive)
          (insert "->")))

     (defun pi-phpArrowArray nil
       (interactive)
       (let ((sp (if (= 32 (char-before)) "" " ")))
         (insert (concat sp "=> "))))
     (define-key php-mode-map (kbd "³") 'pi-phpArrowArray)

     (define-key php-mode-map (kbd "¹")
       '(lambda nil
          (interactive)
          (insert "\\")))

     (defun pi-phplint-thisfile (&optional debug)
       (interactive "P*")
       (let ((option (if debug "-l" "")))
         (compile (format "php5 %s %s" option (buffer-file-name)))))

     )
  )