web-dev-qa-db-fra.com

Couper les espaces de fin dans Xcode

Existe-t-il un moyen de forcer Xcode à supprimer les espaces blancs de fin lorsque j'enregistre un fichier?

J'utilise la version 3.1.3 si cela importe.

93
Alexander Gladysh

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

  • Sélectionnez Menu Scripts> Modifier les scripts utilisateur ...
  • Appuyez sur le bouton + et sélectionnez New Shell Script
  • Donnez-lui un nom comme "Strip Trailing Spaces" et donnez-lui un raccourci comme ⌃⇧R.
  • Réglez Input sur "Selection" et Output sur "Replace Selection"

Saisissez ensuite le script suivant:

#!/usr/bin/Perl

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

À partir de Xcode 4.4, les espaces blancs seront automatiquement coupés par défaut, à moins que la ligne ne soit entièrement vide. Vous pouvez également activer Including whitespace-only lines pour résoudre ce problème, qui n'est pas actif par défaut.

Aller à Xcode > Preferences > Text Editing > While editing

Xcode preferences screenshot

207
Martin Stolz

J'utilise le Google Toolbox pour le plugin Xcode pour Mac , il ajoute un paramètre "Espace blanc correct lors de l'enregistrement" qui coupe l'espace blanc de fin lors de l'enregistrement. Cela m'a beaucoup manqué chez emacs.

24
Maxime

Pour Xcode 8, j'ai installé le plug-in swimat Xcode, pour la mise en forme Swift code, qui a supprimé tous les espaces de fin et les lignes blanches uniquement).

Méthodes d'installation

  1. Installer via homebrew-cask:

    brew cask install swimat
    
  2. Téléchargez l'application directement:
    https://github.com/Jintin/Swimat/releases/download/v1.3.5/Swimat.Zip

  3. Clone extension branche et archive sur Mac App.

Usage

Une fois installé, vous pouvez exécuter Swimat dans Xcode via Editor -> Swimat -> Format.

3
moollaza

Ce n'est pas possible dans Xcode 3.2

Modifier:

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

Bien sûr, comme il s'agit d'un logiciel, vous pouvez tout faire: à partir des hacks Input Manager ou d'autres moyens d'injection de code pour 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 configurer une action de dossier Applescript (arrgh) ou utiliser un démon de lancement et la fonction FSEvents pour regarder vos fichiers de code source.

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

Je ne connais pas de solution qui fonctionne simplement après avoir extrait un projet de SCM. Je crois qu'il y a besoin de cela et de scripts de personnalisation similaires, j'ai donc déposé un bug (radar 7203835, "Fonctionnalité: plus de déclencheurs de script utilisateur dans le flux de travail Xcode"). Je n'ai pas encore reçu de commentaires.

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

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

Exemples:

  1. Scripts de pré-construction
    Des scripts de pré-construction peuvent être utilisés pour créer des conditions préalables telles que des fichiers * .xcconfig ou des en-têtes config.h. Cela n'est pas possible avec une "exécution de phases de génération de script", car le suivi des dépendances a lieu avant le déclenchement de toute phase de génération.

  2. Scripts de post-construction
    Similaire à ci-dessus, mais en cours d'exécution après la fin de la construction (y compris la signature de code, etc.). Utile pour les emballages supplémentaires, la vérification de validité, etc.

  3. Scripts de validation SCM avant/après.
    Pour vérifier l'intégrité du projet.

  4. Script de sauvegarde de fichier avant/après.
    Pour vérifier/modifier un fichier avant de l'enregistrer. Par exemple. exécuter des embellisseurs cody

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

1
Nikolai Ruhe

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

Cool, la boîte à outils Google pour Mac ajoute désormais une option "découper les espaces blancs" pour Xcode4.

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

Merci à toi, Google!

1
gregschlom