117 votes

Couper les espaces de fin de ligne dans Xcode

Existe-t-il un moyen de forcer Xcode à couper les blancs de fin de ligne lorsque je sauvegarde le fichier ?

J'utilise la version 3.1.3 si cela compte.

269voto

Martin Stolz Points 1425

À partir de Xcode 4.4, les espaces blancs seront automatiquement coupés par défaut, sauf si la ligne est entièrement composée d'espaces blancs. Vous pouvez également activer Including whitespace-only lines pour corriger ce problème, qui n'est pas actif par défaut.

Aller à Xcode > Preferences > Text Editing > While editing

Xcode preferences screenshot

18 votes

Ce paramètre ne supprime les espaces blancs de fin de ligne qu'une fois que le curseur a quitté la ligne. Ainsi, il vous permet toujours d'enregistrer un fichier avec une ligne d'espacement de fin de ligne, si le curseur se trouve sur cette ligne au moment de l'enregistrement.

8 votes

Pourquoi diable n'est-ce pas le cas par défaut ? Si vous avez un fichier existant avec des espaces blancs de fin, il suffit de tout marquer, couper, enregistrer, coller, enregistrer.

0 votes

Cela doit remplacer la solution bidon de script sur cette réponse.

25voto

Maxime Points 800

J'utilise le Google Toolbox pour Mac Xcode Plugin il ajoute un paramètre "Corriger les espaces blancs à la sauvegarde" qui coupe les espaces blancs de fin de ligne à la sauvegarde. Cela m'a beaucoup manqué dans emacs.

1 votes

J'utilise également ce plugin. Il fait ce qu'il dit.

0 votes

Ce serait parfait, malheureusement il ne fonctionne pas sur Xcode 4 pour le moment :(

6 votes

Nous avons maintenant un support de base pour Xcode 4. Voir notre nouveau plugin

24voto

Darren Points 13973

Vous pouvez créer un script et le lier à un raccourci clavier :

  • Sélectionnez scripts Menu > Editer l'utilisateur scripts...
  • Appuyez sur le bouton + et sélectionnez Nouveau Shell script
  • Donnez-lui un nom tel que "Strip Trailing Spaces", et donnez-lui un raccourci tel que ⌃⇧R.
  • Réglez l'entrée sur "Sélection" et la sortie sur "Remplacer la sélection".

Ensuite, entrez le script suivant :

#!/usr/bin/perl

while (<>) {
    s/\s+$//;
    print "$_\n";
}

9 votes

Ah, oui, si simple... Merci. Y a-t-il un moyen d'associer cela à l'enregistrement du fichier ?

0 votes

Pour travailler sur un fichier entier (ce qui est probablement ce que vous voulez faire), réglez l'entrée sur "Document entier" et la sortie sur "Remplacer le contenu du document". Cependant, cela laisse le curseur au bas du fichier.

9 votes

Cette réponse est obsolète à partir de Xcode 4.4. Voir la réponse de Martin Stolz.

1voto

Nikolai Ruhe Points 45433

Ceci n'est pas possible dans Xcode 3.2

Edit :

J'ai répondu à cette question si brièvement parce qu'il n'y a aucun moyen de faire ça. correctement .

Bien sûr, puisqu'il s'agit d'un logiciel, vous pouvez faire n'importe quoi : en commençant par des piratages d'Input Manager ou d'autres moyens d'injection de code jusqu'à l'interception du clavier à l'échelle du système, vous pouvez modifier votre système local pour faire n'importe quoi à tout moment. Vous pouvez mettre en place une action de dossier Applescript (arrgh) ou utiliser un démon de lancement et la fonction FSEvents pour surveiller vos fichiers de code source.

Vous pouvez également ajouter quelques scripts à Xcode (scripts de l'utilisateur dans le menu, phases scripts dans les cibles, actions personnalisées dans l'organisateur, il y a même la possibilité très inconnue d'un scripts de démarrage), mais toutes ces solutions sont imparfaites, car cela implique l'utilisateur ou une configuration personnalisée sur la machine de l'utilisateur.

Je n'ai pas connaissance d'une solution qui fonctionne simplement après avoir extrait un projet de SCM. Je pense qu'il y a un besoin pour cela et pour des personnalisations similaires scripts, donc j'ai déposé un bug (radar 7203835, "Feature : more user scripts triggers in Xcode workflow"). Je n'ai pas encore reçu de commentaires.

Voici le texte intégral de l'entrée du radar :

Il serait utile d'avoir plus d'endroits pour exécuter des scripts dans Xcode.

Exemples :

  1. Pré construire scripts
    Les scripts pré-construits pourraient être utilisés pour construire des pré-requis comme les fichiers *.xcconfig ou les en-têtes config.h. Ceci n'est pas possible avec un "Run scripts Build phases", puisque le suivi des dépendances a lieu avant le déclenchement de toute phase de construction.

  2. Post build scripts
    Similaire au précédent, mais exécuté après la construction (y compris la signature du code, etc.). Utile pour un emballage supplémentaire, la vérification de la validité, etc.

  3. Pré/post SCM Commit scripts.
    Pour vérifier l'intégrité du projet.

  4. Sauvegarde pré/post fichier script.
    Pour vérifier/modifier un fichier avant de l'enregistrer. Par exemple, exécuter cody beautifiers

  5. Actions de projet personnalisées.
    Je suis conscient de la capacité de l'organisateur à définir des actions arbitraires. Mais il s'agit d'une fonctionnalité par utilisateur (qui ne fait pas partie du projet). J'aimerais définir des actions comme construire ou nettoyer qui apparaissent dans le menu de construction et qui font partie d'un projet.

0 votes

Modifié pour expliquer pourquoi les solutions de contournement ne sont pas satisfaisantes dans ce cas.

2 votes

Merci. Bien que je sois favorable à ce que ce soit fait dans les règles de l'art, je me contenterais de n'importe quel hack pas trop intrusif. Ces espaces supplémentaires sont vraiment ennuyeux.

1voto

gregschlom Points 1824

Voir ici pour Xcode4 : http://www.wezm.net/technical/2011/08/strip-trailing-whitespace-xcode-4/

Cool, Google toolbox pour Mac ajoute maintenant une option "trim whitespace" pour Xcode4.

http://code.google.com/p/google-toolbox-for-mac/downloads/list

Merci, Google !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X