Il existe un autre moyen d'aborder cela si vous utilisez Git pour le contrôle source. Inspiré par une réponse ici, j'ai écrit mon propre filtre à utiliser dans un fichier gitattributes.
Pour installer ce filtre, enregistrez-le sous noeol_filter
quelque part dans votre $PATH
, donnez-lui les droits d'exécution, et exécutez les commandes suivantes :
git config --global filter.noeol.clean noeol_filter
git config --global filter.noeol.smudge cat
Pour commencer à utiliser le filtre uniquement pour vous-même, ajoutez la ligne suivante dans votre $GIT_DIR/info/attributes
:
*.php filter=noeol
Cela garantira que vous ne commettrez pas de saut de ligne en fin de fichier dans un fichier .php
, peu importe ce que Vim fait.
Et maintenant, le script lui-même :
#!/usr/bin/python
# un filtre qui supprime la saut de ligne de la dernière ligne de son stdin
# si la dernière ligne est vide, laissez-la telle quelle, pour rendre l'opération idempotente
# inspiré de : https://stackoverflow.com/questions/1654021/how-can-i-delete-a-newline-if-it-is-the-last-character-in-a-file/1663283#1663283
import sys
if __name__ == '__main__':
try:
pline = sys.stdin.next()
except StopIteration:
# pas d'entrée, rien à faire
sys.exit(0)
# cracher tout sauf la dernière ligne
for line in sys.stdin:
sys.stdout.write(pline)
pline = line
# supprimer le saut de ligne de la dernière ligne avant de le cracher
if len(pline) > 2 and pline.endswith("\r\n"):
sys.stdout.write(pline[:-2])
elif len(pline) > 1 and pline.endswith("\n"):
sys.stdout.write(pline[:-1])
else:
sys.stdout.write(pline)
31 votes
Vous devriez leur dire qu'ils se comportent de manière ridicule -- en réalité, il y a une bonne raison pour laquelle vim fait cela : stackoverflow.com/questions/729692/…. Je suppose que cela n'est pertinent que si vous déployez sur des serveurs de type Unix.
7 votes
La pratique recommandée officielle de PHP est d'omettre la dernière balise de fermeture
?>
, juste pour cette raison.0 votes
Cette question date probablement d'avant superuser... mais elle devrait être là.
26 votes
La vraie question devrait être : Comment informons-nous tous les autres éditeurs que les personnes dans votre magasin utilisent pour garantir que la dernière ligne du fichier termine par un EOL. ;-)