Domanda:
Quicklook ha smesso improvvisamente di funzionare con i file .m e .h di xcode
LolaRun
2014-04-15 19:25:43 UTC
view on stackexchange narkive permalink

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

Funziona ancora per 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 / riparare i permessi del disco, indicava qualcosa per quanto riguarda i file .qlgenerator, ma ho pensato "Probabilmente è a causa del mio copia-incolla-sostituzione con file intrusi che probabilmente ha cambiato alcuni permessi". Comunque, non ha risolto il problema.

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

L'altro Mac mostra ancora la modalità predefinita (ovvero, con le anteprime Quicklook) per questi tipi di file.

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

EDIT Come suggerito da @Bootle, ho eseguito

qlmanage -p FILE

e sorprendentemente, il Quicklook ha aperto il file correttamente, cioè puoi vedere il contenuto del file e la colorazione XCode predefinita per esso. Inoltre, il seguente output è stato stampato nel terminale. enter image description here

Quindi altri suggerimenti?

MODIFICA Sono emersi nuovi suggerimenti dopo aver controllato il registro dalla console dopo la modifica di @StvnW.

Io sono allegare l'immagine dei log dopo aver ordinato la rapida occhiata a un file

UPDATE La soluzione era perché stavo mantenendo le versioni precedenti di XCodes dalla 3.6.2 ^ _ ^ e altre versioni, le ho messe tutte insieme in una cartella in cui non mi concedevo il permesso di accedervi. Così sono diventati inaccessibili anche al sistema. E il problema è stato risolto, il sistema (o QL) si è corretto con l'ultima applicazione ufficiale XCode.

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

Puoi aprire Terminale ed eseguire questo comando: `qlmanage -p FILE` Dove FILE è il percorso di un file .h o .m sul tuo computer. E poi copia e incolla l'output del terminale qui, o in un pastebin o qualcosa del genere. Grazie.
Due risposte:
StvnW
2014-04-24 05:16:18 UTC
view on stackexchange narkive permalink

Potresti considerare di utilizzare semplicemente QLStephen che aggiungerà il supporto QuickLook appropriato per tutti i file di testo indipendentemente dalle loro estensioni. Gestirà anche correttamente 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 plug-in QL che puoi trascinare in / Library / QuickLook / o ~/Library/QuickLook/.

Il fatto che mi chiami anche Steven è puramente casuale.

Modifica: debug di QuickLook in base a maggiori informazioni da OP:

Attiva la registrazione di QuickLook:

  defaults write -g QLEnableLogging YES  

Ecco alcuni output di log di riferimento (scritti sulla console):

Stock Xcode installato:

  2014-04-29 2: 46: 08.172 PM quicklookd [19315]: [QL] File di anteprima: //localhost/Users/user/src/hello/main.m. Tipo di contenuto UTI: public.objective-c-source elettrogeno usati: <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>. Tipo di contenuto UTI: public.objective-c-source. Generatore utilizzato: <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. Tipo di contenuto UTI: public.objective-c-source. Generatore utilizzato: <QLGenerator /Users/user/Library/QuickLook/QLColorCode.qlgenerator>2014-04-29 2: 51: 40.459 PM com.apple.quicklook.satellite [19367]:
[QL] <QLThumbnailRequest token main.m: d45af7955eb9401bc7a49fd6652d1c3aa5cc4a8b; 00000000; 000000000000001a; com.apple.app-sandbox.read; 00000001; 01000003; 0000000003e32849; /users/user/src/hello/main.m>. Tipo di contenuto UTI: public.objective-c-source. Generatore utilizzato: <QLGenerator /Users/user/Library/QuickLook/QLColorCode.qlgenerator>

Poiché le cose funzionano per te quando chiami qlmanage dalla riga di comando, potresti essere in grado di confrontare i log scritti sulla console con l'output richiamato manualmente dalla riga di comando e individuare il problema. Con solo Xcode installato:

  [user @ macbook] / Users / user / src / hello $ qlmanage -p -d 1 main.m Prova l'anteprima di Quick Look con i file: main.m [DEBUG ] Registrazione di <QLGenerator 0x7fa08241eaa0> integrato per public.image [DEBUG] Anteprima del test per main.m - file: // localhost / Users / user / src / hello /. Tipo di contenuto UTI: public.objective-c-source [DEBUG] Anteprima del file: //localhost/Users/user/src/hello/main.m. Tipo di contenuto UTI: public.objective-c-source. Generatore utilizzato: <QLGenerator Text.qlgenerator> [DEBUG] Caricamento di <QLGenerator Text.qlgenerator> [DEBUG] Anteprima del file: //localhost/Users/user/src/hello/mainp.mre  terminato 
ma neanche questo ha funzionato, probabilmente perché l'estensione dei file sta sovrascrivendo la sua funzionalità?
Forse. Posso anche confermare che il mio Xcode's Info.plist è identico a quanto suggerito da Bootle, e sono anche sullo stock Xcode 5.0.2.
Non ho capito bene tutta la tua seconda risposta :) Avresti dovuto dirmi di andare su console e guardare i log. Comunque ho scoperto nuove prove credo che il problema verrà risolto presto
Scusa se non è stato chiaro. Ho aggiunto la menzione di dove trovare i log.
Bootle
2014-04-15 20:26:08 UTC
view on stackexchange narkive permalink

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 nuovamente questi file nel 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, cerca <string>h< / string> (o lo stesso con 'm'). Se non è possibile trovarlo, 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 trascinandolo in alt sul desktop. Apri la copia e cerca <key>CFBundleExecutable< / key> . Vedrai < / array> sulla riga sopra di esso. Prima di < / array> , incolla il blocco di testo che consente di associare un tipo di file a Xcode (mostrato sotto). Questo blocco dovrebbe iniziare e finire 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, dovresti essere in grado di copiare nuovamente il file Info.plist modificato nella cartella Xcode.app Contents. A volte, alle app non piace che modifichi i loro file plist e decidono di non lavorare in seguito. Se questo è il caso, ripristina semplicemente 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, magari cambiando / impostando alcune preferenze in Xcode, sarebbe bene saperlo.

wow, informazioni molto importanti. Molte grazie. Ma quando ho aperto il plist, come testo, conteneva molti garabage insieme a caratteri riconosciuti, il che significa che non è formattato xml. E se lo apri come plist non trovi "CFBundleTypeExtensions", invece puoi trovare "CFBundleDocumentTypes", tra la lista sono riuscito a trovare "item16 (C header source)" incluso il CFBundleTypeExtensions "h", e un altro "elemento 22 (fonte Objective-c)" che include il valore "m". Questo è XCode 5.0.2. Quindi penso che non sia ancora corrotto. Grazie mille però, spero che questo aiuti.
Ho dimenticato che TextEdit non aprirà i file plist. Per impostazione predefinita, vengono aperti da Xcode stesso ma non in un formato dall'aspetto XML. Uso TextWrangler per tutti i file di testo, plist e altri formati allo stesso modo. Sarai in grado di aprire il plist nel formato che ho menzionato nella mia risposta utilizzando TextWrangler o un altro editor di testo simile, come un editor progettato per modificare il codice. TextWrangler, tuttavia, è gratuito e lo consiglio. Puoi trovarlo qui: http://www.barebones.com/products/textwrangler/
sì, ora posso vederlo in formato xml, grazie mille. Avevo già textwrangler btw :) Comunque, come ho affermato prima, e poiché ora sono in grado di vedere letteralmente cosa è scritto in formato xml, posso confermare che ho già quello che stai suggerendo di inserire, quindi il problema deve essere altrove Grazie mille per il tuo grande impegno, te ne sono grato.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...