Quicklook dejó de funcionar repentinamente con el archivo .m y .h de xcode

6

Hace una semana, quicklook dejó de funcionar con los archivos .m y .h . En cambio, me está mostrando una miniatura de .m o .h . Creo que ese día apareció un cuadro de mensaje y no lo leí, respondí la pregunta apresuradamente, pero no estaba haciendo nada con el sistema. De todos modos, ahora he perdido la vista rápida de estos tipos de archivos.

Todavía funciona para todos los demás archivos predeterminados. Intenté copiar los archivos ".qlgenerator" de otro mac, que tiene la misma versión de sistema operativo ... y aún no funcionó.

Intenté verificar / reparar los permisos del disco, indicaba algo relacionado con los archivos .qlgenerator, pero pensé que "es probable que debido a mi copia-pegar-reemplazar por archivos de intrusos que probablemente cambiaron algunos permisos". De todos modos, no resolvió el problema.

También intenté ejecutar qlmanage -r y reiniciar mi mac. El problema persiste.

El otro mac sigue mostrando la forma predeterminada (también conocida como con vistas previas de Quicklook) para estos tipos de archivos.

¿Alguna idea de lo que salió mal? ¿Crees que el cuadro de mensaje que respondí apresuradamente es el responsable de eso? Siento que lo es, pero no estoy seguro, porque no estaba configurando el sistema ni nada, ni tampoco nada relacionado con Quicklook (no sabía que esta característica tenía un nombre en ese entonces) ni Xcode ... Estoy perdido.

EDIT Como sugirió @Bootle, corrí

  

qlmanage -p FILE

y sorprendentemente, Quicklook abrió el archivo correctamente, es decir, puede ver el contenido del archivo y el color XCode predeterminado para él. Adicionalmente, la siguiente salida fue impresa en el terminal.

Entonces,¿haymássugerencias?

EDITSurgieronnuevosconsejosdespuésderevisarelregistrodesdelaconsoladespuésdelaediciónde@StvnW.

EstoyadjuntandolaimagendelosregistrosdespuésdeordenarQuicklookenunarchivo

ACTUALIZACIÓN La solución fue porque mantenía versiones anteriores de XCodes desde 3.6.2 ^ _ ^ y otras versiones, las puse todas juntas en una carpeta donde no estaba permitido el permiso para acceder. Así se volvieron inaccesibles para el sistema también. Y el problema se resolvió, el sistema (o QL) se corrigió a sí mismo a la última aplicación oficial de XCode.

Pero esto es gracias a la siguiente respuesta que me dio esa pista de la depuración. Supongo que otras personas que tienen este mismo problema deberían seguir su respuesta. Estoy marcando esta respuesta como la respuesta correcta

    
pregunta LolaRun 15.04.2014 - 16:25

2 respuestas

6

Puede considerar simplemente usar QLStephen que agregará la compatibilidad adecuada con QuickLook para todos los archivos de texto, independientemente de sus extensiones. También manejará adecuadamente los archivos sin extensiones (por ejemplo, README , Makefile ). Lo que me gusta de esto es que no tienes que mantener una lista de extensiones; QLStephen detecta archivos de texto automáticamente. QLStephen es independiente de XCode y es un complemento de QL que se coloca en /Library/QuickLook/ o ~/Library/QuickLook/ .

El hecho de que también me llamen Steven es pura coincidencia.

Editar: depuración QuickLook basado en más información de OP:

Activar el registro de QuickLook:

defaults write -g QLEnableLogging YES

Aquí hay una salida de registro de referencia (escrita en la Consola):

Stock Xcode instalado:

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>

Se instaló un generador de terceros (QLColorCode):

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>

Dado que las cosas funcionan para usted cuando llama a qlmanage desde la línea de comandos, es posible que pueda comparar los registros escritos en la Consola con el resultado de la invocación manual en la línea de comandos y detectar el problema. Con solo Xcode instalado:

[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
    
respondido por el StvnW 24.04.2014 - 02:16
4

QuickLook para estos tipos de archivos funciona porque el tipo de archivo se especifica en la lista de información de Xcode.

Para que QuickLook use Xcode para volver a ver rápidamente estos archivos en el Finder, deberá editar el archivo Info.plist de Xcode. Esto se encuentra haciendo clic derecho en el archivo Xcode.app en sus aplicaciones y haciendo clic en "Mostrar contenido del paquete". Encontrará Info.plist en la carpeta Contenido que se abre.

En el archivo Info.plist, todos los tipos de archivos asociados con Xcode se enumeran como diccionarios "CFBundleTypeExtensions".

Una vez que abra el plist, haga una búsqueda de <string>h</string> (o lo mismo con 'm'). Si no lo puede encontrar, deberá agregarlo.

Nota: en este punto, es posible que desee crear una copia de seguridad de todo el archivo Xcode.app en caso de que algo salga mal.

Haga una copia de Info.plist arrastrándola a su escritorio. Abra la copia y busque <key>CFBundleExecutable</key> . Verá </array> en la línea que se encuentra arriba. Antes de </array> , pegue el bloque de texto para permitir que un tipo de archivo se asocie con Xcode (se muestra a continuación). Este bloque debe comenzar y terminar con <dict> y </dict> , respectivamente.

Para el archivo .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>

Para el archivo .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 vez hecho esto, deberías poder copiar la lista de información editada en la carpeta de contenido de Xcode.app. A veces, a las aplicaciones no les gusta que edites sus errores y decides no trabajar después. Si este es el caso, simplemente restaure desde la copia que (debería) hacer antes.

Esto se puede replicar con cualquier aplicación y cualquier tipo de archivo. Si hay una mejor manera de hacerlo, tal vez cambiando / configurando algunas preferencias en Xcode, sería bueno saberlo.

    
respondido por el Bootle 15.04.2014 - 17:26

Lea otras preguntas en las etiquetas