Configuracion emacs compatible con PEAR Coding Standards

El php-mode es un modo mayor de emacs que sirve para programar en lenguage PHP.
Ofrece colorizacion de sintaxis, y autoindentado segun el contexto.
Un comando que uso a menudo es indent line or region, que nos permite marcar una region, o inclusive todo el buffer y realizar la operacion de autoindentado.

php-mode usa el indentado del modo c, el cual por defecto esta configurado en 2.
Siguiendo las recomendaciones de PEAR Coding Standards


modifique el archivo de configuracion de emacs para cambiar el indentado a 4.
Tambien agregue la opcion indent-tabs-mode para que al pulsar la tecla TAB, complete el indentado con espacios en blanco. Esto ultimo evita problemas con los sistemas de versionado.

Archivo de configuracion .emacs

Este es el codigo que he agregado al final del archivo ~/.emacs

;; PEAR Coding Standards
(defun pear/php-mode-init()
  "Set some buffer-local variables."
  (setq case-fold-search t)
  (setq indent-tabs-mode nil)
  (setq fill-column 85)
  (setq c-basic-offset 4)
  (c-set-offset 'arglist-cont 0)
  (c-set-offset 'arglist-intro '+)
  (c-set-offset 'case-label 4)
  (c-set-offset 'arglist-close 0)
)
(add-hook 'php-mode-hook 'pear/php-mode-init)

PHP_CodeSniffer

Tambien te puede interesar esta herramienta que sirve para verificar la indentacion y los estandares de codificacion en PHP.

Se instala con el siguiente comando:

sudo pear install PHP_CodeSniffer

La ruta del programa es la siguiente: /usr/bin/phpcs.
Se puede ejecutar desde linea de comandos, y por parametro simplemente recibe el directorio o archivo a procesar.
La salida de ejecucion devuelve todos los incumplimientos del estandard de codificacion.

Ejemplo de ejecucion:

phpcs data/index.php

Produce la siguiente salida (recortada)

FILE: /media/data/public_html/data/index.php
--------------------------------------------------------------------------------
FOUND 111 ERROR(S) AND 11 WARNING(S) AFFECTING 114 LINE(S)
--------------------------------------------------------------------------------
   2 | ERROR   | Missing file doc comment
   3 | ERROR   | "require_once" is a statement, not a function; no parentheses
     |         | are required
   5 | ERROR   | Perl-style comments are not allowed. Use "// Comment." or "/*
     |         | comment */" instead.
   7 | WARNING | Line exceeds 85 characters; contains 96 characters
  10 | ERROR   | You must use "/**" style comments for a class comment
  11 | ERROR   | Expected 0 spaces before opening brace; 1 found
  12 | ERROR   | Line indented incorrectly; expected at least 4 spaces,
found 2
  13 | ERROR   | Line indented incorrectly; expected at least 4 spaces,