Quicklook a cessé de travailler avec les fichiers .m et .h de xcode soudainement

6

Il y a une semaine, quicklook a cessé de travailler avec .met les .hfichiers. Au lieu de cela, il me montre une .mou une .hvignette. Je pense que ce jour-là, une boîte de message est apparue et je ne l'ai pas lue - j'ai répondu à la question à la hâte - mais je ne faisais rien avec le système. Quoi qu'il en soit, maintenant j'ai perdu le quicklook pour ces types de fichiers.

Cela fonctionne toujours pour tous les autres fichiers par défaut. J'ai essayé de copier les fichiers ".qlgenerator" d'un autre Mac, qui a la même version du système d'exploitation ... et cela ne fonctionnait toujours pas.

J'ai essayé de vérifier / réparer les autorisations sur le disque, cela indiquait quelque chose concernant les fichiers .qlgenerator, mais je me suis dit: "C'est probablement à cause de mes fichiers copier-coller-remplacer par des fichiers intrus qui ont probablement modifié certaines autorisations". En tout cas, ça n'a pas résolu le problème.

J'ai aussi essayé de courir qlmanage -ret de redémarrer mon mac. Le problème persiste.

L'autre Mac affiche toujours la méthode par défaut (avec des aperçus rapides) pour ces types de fichiers.

Une idée sur ce qui s'est mal passé? Pensez-vous que cette boîte de message à laquelle j'ai répondu à la hâte est responsable de cela? Je pense que c'est le cas, mais je ne suis pas sûr, car je ne configurais pas le système ni quoi que ce soit, ni même aucun élément lié ni à quicklook (je ne savais pas que cette fonctionnalité avait un nom à l'époque) ni xcode. ... Je suis perdu.

EDIT Comme l'a suggéré @Bootle, j'ai couru

qlmanager -p FILE

Et étonnamment, Quicklook a ouvert le fichier correctement, c’est-à-dire que vous pouvez voir le contenu du fichier et sa coloration XCode par défaut. De plus, la sortie suivante a été imprimée dans le terminal. entrez la description de l'image ici

Donc, plus d'indices?

EDITER De nouvelles astuces sont apparues après la vérification du journal à partir de la console après la modification de @StvnW.

Je joins l'image des journaux après avoir commandé quicklook sur un fichier

MISE À JOUR La solution a été parce que je conservais les anciennes versions de XCodes depuis la 3.6.2 ^ _ ^ et d’autres versions, je les ai mises ensemble dans un dossier où je ne me suis pas autorisé à y accéder. Ainsi, ils sont également devenus inaccessibles au système. Et le problème a été résolu, le système (ou QL) s'est fixé à la dernière application officielle XCode.

Mais c’est grâce à la réponse ci-dessous qui m’a donné cet indice du débogage. Je suppose que les autres personnes qui ont le même problème devraient suivre sa réponse. Je marque cette réponse comme la bonne réponse

LolaRun
la source
2
Pouvez-vous ouvrir Terminal et exécuter cette commande: qlmanage -p FILEOù FILE est le chemin d'accès à un fichier .h ou .m sur votre ordinateur. Et puis copier et coller la sortie du terminal ici, ou dans un pastebin ou quelque chose. Merci.
Bootle

Réponses:

6

Vous pourriez envisager simplement d'utiliser QLStephen, qui ajoutera la prise en charge appropriée de QuickLook pour tous les fichiers texte, quelle que soit leur extension. Il gérera également correctement les fichiers sans extensions (par exemple README, Makefile). Ce qui me plait, c’est que vous n’avez pas à tenir une liste de postes; QLStephen détecte automatiquement les fichiers texte. QLStephen est indépendant de XCode et est un plugin QL dans lequel vous déposez /Library/QuickLook/ou ~/Library/QuickLook/.

Le fait que je sois également nommé Steven est une pure coïncidence.

Edit: Débogage de QuickLook basé sur plus d’informations de l’OP:

Activer la journalisation QuickLook:

defaults write -g QLEnableLogging YES

Voici quelques sorties de journalisation de référence (écrites sur la console):

Stock Xcode installé:

2014-04-29 2:46:08.172 PM quicklookd[19315]: 
    [QL] Thumbnailing file://localhost/Users/user/src/hello/main.m. 
    Content type UTI: public.objective-c-source
    Generator used: <QLGenerator Text.qlgenerator>

2014-04-29 2:46:08.173 PM com.apple.quicklook.satellite[19330]:
    [QL] <QLThumbnailRequest main.m
            token: d45af7955eb9401bc7a49fd6652d1c3aa5cc4a8b;00000000;000000000000001a;
            com.apple.app-sandbox.read;00000001;01000003;0000000003e32849;
            /users/user/src/hello/main.m>.
    Content type UTI: public.objective-c-source.
    Generator used: <QLGenerator /System/Library/QuickLook/Text.qlgenerator>

Générateur tiers (QLColorCode) installé:

2014-04-29 2:51:40.458 PM quicklookd[19359]:
    [QL] Thumbnailing file://localhost/Users/user/src/hello/main.m.
    Content type UTI: public.objective-c-source.
    Generator used: <QLGenerator /Users/user/Library/QuickLook/QLColorCode.qlgenerator>

2014-04-29 2:51:40.459 PM com.apple.quicklook.satellite[19367]:
    [QL] <QLThumbnailRequest main.m
            token: d45af7955eb9401bc7a49fd6652d1c3aa5cc4a8b;00000000;000000000000001a;
            com.apple.app-sandbox.read;00000001;01000003;0000000003e32849;
            /users/user/src/hello/main.m>.
    Content type UTI: public.objective-c-source.
    Generator used: <QLGenerator /Users/user/Library/QuickLook/QLColorCode.qlgenerator>

Comme cela fonctionne pour vous lorsque vous appelez à qlmanagepartir de la ligne de commande, vous pourrez peut-être comparer les journaux écrits sur la console avec le résultat de l'appel manuel sur la ligne de commande et la localisation du problème. Avec seulement Xcode installé:

[user@macbook]/Users/user/src/hello$ qlmanage -p -d 1 main.m 
Testing Quick Look preview with files:
    main.m
[DEBUG] Registering <QLGenerator Built-in 0x7fa08241eaa0> for public.image
[DEBUG] Preview test for main.m -- file://localhost/Users/user/src/hello/.
        Content type UTI: public.objective-c-source
[DEBUG] Previewing file://localhost/Users/user/src/hello/main.m.
        Content type UTI: public.objective-c-source.
        Generator used: <QLGenerator Text.qlgenerator>
[DEBUG] Loading <QLGenerator Text.qlgenerator>
[DEBUG] Previewing file://localhost/Users/user/src/hello/main.m finished
StvnW
la source
mais cela n'a pas fonctionné non plus, probablement parce que l'extension de fichiers est en train de surcharger ses fonctionnalités?
LolaRun
Peut-être. Je peux également confirmer que le fichier Info.plist de mon Xcode est identique à celui suggéré par Bootle, et je suis également en stock avec Xcode 5.0.2.
StvnW
Je n’ai pas bien compris votre deuxième réponse :) Vous auriez dû me dire d’aller sur console et de regarder les journaux. Quoi qu'il en soit, j'ai découvert de nouvelles preuves et je pense que le problème sera bientôt résolu
Lola Run
Désolé si ce n'était pas clair. J'ai ajouté la mention de l'endroit où trouver les journaux.
StvnW
4

QuickLook pour ces types de fichiers fonctionne parce que le type de fichier est spécifié dans Info.plist de Xcode.

Pour que QuickLook puisse utiliser Xcode afin de visualiser rapidement ces fichiers à nouveau dans le Finder, vous devez modifier le fichier Info.plist de Xcode. Cela se trouve en faisant un clic droit sur le fichier Xcode.app dans vos applications et en cliquant sur "Afficher le contenu du paquet". Vous trouverez Info.plist dans le dossier Contenu qui s'ouvre.

Dans le fichier Info.plist, tous les types de fichiers associés à Xcode sont répertoriés en tant que dictionnaires "CFBundleTypeExtensions".

Une fois le plist ouvert, faites une recherche <string>h</string>(ou la même chose avec 'm'). S'il ne peut pas être trouvé, vous devrez l'ajouter.

Remarque: à ce stade, vous pouvez créer une sauvegarde de l'intégralité du fichier Xcode.app en cas de problème.

Faites une copie d’Info.plist en maintenant la touche Alt enfoncée sur votre bureau. Ouvrez la copie et recherchez <key>CFBundleExecutable</key>. Vous verrez </array>sur la ligne ci-dessus. Avant le </array>, collez le bloc de texte permettant d’associer un type de fichier à Xcode (voir ci-dessous). Ce bloc devrait commencer et se terminer par <dict>et </dict>, respectivement.

Pour le fichier .h:

<dict>
        <key>CFBundleTypeExtensions</key>
        <array>
            <string>h</string>
        </array>
        <key>CFBundleTypeIconFile</key>
        <string>c-header_Icon</string>
        <key>CFBundleTypeName</key>
        <string>C Header Source</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSIsAppleDefaultForType</key>
        <true/>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.c-header</string>
        </array>
</dict>

Pour le fichier .m:

<dict>
    <key>CFBundleTypeExtensions</key>
    <array>
        <string>m</string>
    </array>
    <key>CFBundleTypeIconFile</key>
    <string>objective-c-source_Icon</string>
    <key>CFBundleTypeName</key>
    <string>Objective-C Source</string>
    <key>CFBundleTypeRole</key>
    <string>Editor</string>
    <key>LSIsAppleDefaultForType</key>
    <true/>
    <key>LSItemContentTypes</key>
    <array>
        <string>public.objective-c-source</string>
    </array>
</dict>

Une fois que cela est fait, vous devriez pouvoir copier l'Info.plist modifié dans le dossier Contenu Xcode.app. Parfois, les applications n'aiment pas que vous modifiez leurs plists et décident de ne pas travailler par la suite. Si tel est le cas, il suffit de restaurer à partir de la copie que vous (auriez dû) faite précédemment.

Cela peut être répliqué avec n'importe quelle application et n'importe quel type de fichier. S'il existe un meilleur moyen de le faire, peut-être en modifiant / définissant certaines préférences dans Xcode, il serait bon de le savoir.

Bootle
la source
wow, des informations très importantes. Merci beaucoup. Mais quand j'ai ouvert le plist, en tant que texte, il contenait beaucoup de garabage avec des caractères reconnus, ce qui signifie qu'il n'est pas formaté au format XML. Et si vous l'ouvrez en tant que plist, vous ne trouvez pas les "CFBundleTypeExtensions", mais vous pouvez plutôt trouver les "CFBundleDocumentTypes". Dans la liste, j'ai pu trouver "item16 (source d'en-tête C)", y compris le CFBundleTypeExtensions "h", et un autre "élément 22 (source Objective-c)" comprenant la valeur "m". C'est XCode 5.0.2. Donc, je pense que ce n'est toujours pas corrompu. Merci beaucoup, j'espère que cela aide.
LolaRun
1
J'ai oublié que TextEdit n'ouvrirait pas les fichiers Plist. Par défaut, ils sont ouverts par Xcode, mais pas dans un format XML. J'utilise TextWrangler pour tous les fichiers texte, les plists et autres formats. Vous pourrez ouvrir le répertoire dans le format mentionné dans ma réponse en utilisant TextWrangler ou un autre éditeur de texte similaire, tel qu'un éditeur conçu pour éditer du code. TextWrangler, cependant, est gratuit et je le recommande. Vous pouvez le trouver ici: barebones.com/products/textwrangler
Bootle
Oui, je peux le voir au format XML maintenant, merci beaucoup. J'ai déjà eu textwrangler btw :). En tout cas, comme je l’ai dit plus tôt, et comme je pouvais maintenant voir littéralement ce qui est écrit au format XML, je peux confirmer que j’ai déjà ce que vous proposez d’insérer. Donc, le problème doit être ailleurs. Merci beaucoup pour votre gros effort, je vous en suis reconnaissant.
LolaRun