2010-04-03 2 views
1

Le problèmeComment obtenir la sortie d'un script utilisateur Xcode en retrait automatique?

Je veux appuyer sur une touche quand j'ai une ligne en surbrillance et convertir une seule ligne:

JGLogEntry *logEntry = [JGLogEntry applicationNoWindowsFrom:date1 to:date2 intoMOC:mockRawMOC]; 

une déclaration multiligne:

JGLogEntry *logEntry = [JGLogEntry applicationNoWindowsFrom:date1 
                 to:date2 
                intoMOC:mockRawMOC]; 

Qu'est-ce que J'ai essayé

J'ai un script ruby ​​simple qui me fait presque là.

#!/usr/bin/env ruby 
s = STDIN.read 
s.gsub!(/(:.+?\w) (\w.+?)/,'\1' + "\n\t" +'\2') 
print s 

Quand je mets la sortie « Remplacer la sélection », je reçois ceci:

JGLogEntry *logEntry = [JGLogEntry applicationNoWindowsFrom:date1 
    to:date2 
    intoMOC:mockRawMOC]; 

Quand je mets la sortie « Placer le Presse-papiers », puis collez-le dans, je reçois le priai résultat:

JGLogEntry *logEntry = [JGLogEntry applicationNoWindowsFrom:date1 
                 to:date2 
                intoMOC:mockRawMOC]; 

Cependant, il s'agit de deux touches qui sont maladroites.

Avez-vous des idées sur la façon dont je peux obtenir le texte remplacé pour obéir aux règles de retrait automatique de Xcode?

Répondre

2

Vérifiez le script pré-installé pour "Convertir les onglets en espaces" et comment il exécute un applescript en ligne. Utiliser pour dire XCode pour exécuter l'élément de menu

Edition> Format> réindenter

Je ne sais pas comment vous le faites avec rubis, ni les détails sur le contenu de AppleScript, mais Je parierais que c'est assez simple ..

+0

Merci pour la suggestion. Je peux obtenir que Xcode se réindigne via Applescript, mais parce qu'il est exécuté * avant * la sélection est remplacée, cela n'a aucun effet. Je suppose que je vais devoir vivre avec des déchets en attendant pour l'instant. –

Questions connexes