Quicklook ha smesso di funzionare all'improvviso con il file .m e .h di xcode

6

Una settimana fa, quicklook ha smesso di funzionare con .m e .h file. Invece, mi mostra una .m o .h miniatura. Penso che quel giorno sia spuntata una finestra di messaggio e non l'ho letta - ho risposto frettolosamente alla domanda - ma non stavo facendo nulla con il sistema. Ad ogni modo, ora ho perso il quicklook per questi tipi di file.

Funziona ancora con tutti gli altri file predefiniti. Ho provato a copiare i file ".qlgenerator" da un altro mac, che ha la stessa versione del sistema operativo ... e ancora non ha funzionato.

Ho provato a verificare il disco / permessi di riparazione, ha indicato qualcosa riguardante i file .qlgenerator, ma ho pensato "Probabilmente è a causa del mio copia-incolla-sostituzione di file di intrusione che probabilmente ha cambiato alcune autorizzazioni". Ad ogni modo, non ha risolto il problema.

Ho anche provato a eseguire qlmanage -r e riavviare il mio mac. Il problema persiste.

L'altro mac mostra ancora il modo predefinito (ovvero con le anteprime di quicklook) per questi tipi di file.

Qualche idea su cosa è andato storto? Pensi che quella casella di messaggio a cui ho risposto frettolosamente sia responsabile? Sento che lo è, ma non ne sono sicuro, perché non stavo configurando il sistema o altro, e nemmeno tutto ciò che è collegato né a quicklook (non sapevo che questa funzione avesse un nome allora) né xcode ... Mi sono perso.

Modifica Come suggerito da @Bootle, ho eseguito

qlmanage -p FILE

e sorprendentemente, Quicklook ha aperto correttamente il file, cioè puoi vedere il contenuto del file e il colore XCode predefinito per esso. Inoltre, il seguente output è stato stampato nel terminale.

Quindialtrisuggerimenti?

ModificaNuovisuggerimentisonoemersidopoavercontrollatoillogdallaconsoledopolamodificadi@StvnW.

Allegol'immaginedeiregistridopoaverordinatoquicklooksuunfile

Aggiorna La soluzione era che stavo mantenendo versioni precedenti di XCodes dal 3.6.2 ^ _ ^ e da altre versioni, le ho raggruppate tutte in una cartella in cui non concedevo il permesso di accedervi. Così sono diventati inaccessibili anche al sistema. E il problema è stato risolto, il sistema (o QL) si è fissato all'ultima applicazione XCode ufficiale.

Ma questo è grazie alla risposta di sotto che mi ha dato quel suggerimento dal debugging. Immagino che altre persone che hanno questo stesso problema dovrebbero seguire la sua risposta. Sto contrassegnando questa risposta come la risposta corretta

    
posta LolaRun 15.04.2014 - 16:25
fonte

2 risposte

6

Potresti considerare semplicemente di utilizzare QLStephen che aggiungerà il corretto supporto QuickLook per tutti i file di testo, indipendentemente dalle loro estensioni. Gestirà correttamente anche i file senza estensioni (ad esempio README , Makefile ). Quello che mi piace è che non devi mantenere un elenco di estensioni; QLStephen rileva automaticamente i file di testo. QLStephen è indipendente da XCode ed è un plugin QL che puoi rilasciare in /Library/QuickLook/ o ~/Library/QuickLook/ .

Il fatto che io sia chiamato anche Steven è puramente casuale.

Modifica: esegui il debug di QuickLook in base a maggiori informazioni dall'OP:

Attiva la registrazione di QuickLook:

defaults write -g QLEnableLogging YES

Ecco alcuni output di registrazione di riferimento (scritti su Console):

File Xcode installato:

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>

Generatore di terze parti (QLColorCode) installato:

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>

Poiché le cose funzionano per te quando chiamate qlmanage dalla riga di comando, potresti essere in grado di confrontare i log scritti su Console con l'output dal richiamo manuale sulla riga di comando e individuare il problema. Con solo Xcode installato:

[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
    
risposta data 24.04.2014 - 02:16
fonte
4

QuickLook per questi tipi di file funziona perché il tipo di file è specificato in Info.plist di Xcode.

Affinché QuickLook possa utilizzare Xcode per visualizzare rapidamente questi file nuovamente in Finder, è necessario modificare il file Info.plist di Xcode. Questo si trova facendo clic con il pulsante destro del mouse sul file Xcode.app nelle applicazioni e facendo clic su "Mostra contenuto pacchetto". Troverai Info.plist nella cartella Contents che si apre.

Nel file Info.plist, tutti i tipi di file associati a Xcode sono elencati come dizionari "CFBundleTypeExtensions".

Una volta aperto il plist, fai una ricerca per <string>h</string> (o lo stesso con 'm'). Se non può essere trovato, dovrai aggiungerlo.

Nota: a questo punto, potresti voler creare un backup dell'intero file Xcode.app nel caso qualcosa vada storto.

Crea una copia di Info.plist da parte di alt-trascinandola sul desktop. Apri la copia e cerca <key>CFBundleExecutable</key> . Vedrai </array> sulla riga sopra di esso. Prima del </array> , incolla il blocco di testo che consente di associare un tipo di file a Xcode (mostrato sotto). Questo blocco dovrebbe iniziare e terminare con <dict> e </dict> , rispettivamente.

Per il file .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>

Per il file .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>

Una volta fatto questo, dovresti essere in grado di copiare nuovamente Info.plist modificato nella cartella Contenuti Xcode.app. A volte, alle app non piace che tu modifichi i loro plists e decida di non lavorare in seguito. Se questo è il caso, basta ripristinare dalla copia che avresti dovuto fare in precedenza.

Questo può essere replicato con qualsiasi applicazione e qualsiasi tipo di file. Se c'è un modo migliore per farlo, cambiando / impostando alcune preferenze in Xcode, sarebbe bello saperlo.

    
risposta data 15.04.2014 - 17:26
fonte

Leggi altre domande sui tag