Швидкий перегляд раптово перестав працювати з .m і .h файлами xcode


6

Тиждень тому Quicklook перестав працювати з файлами .mта .hфайлами. Натомість він показує мені .mабо .hескіз. Я думаю, в той день з’явилося вікно повідомлень, і я його не прочитав - я відповів на запитання поспішно, - але я нічого не робив із системою. У будь-якому випадку, тепер я втратив швидкий перегляд для цих типів файлів.

Він все ще працює для всіх інших файлів за замовчуванням. Я спробував скопіювати файли ".qlgenerator" з іншого mac, який має ту саму версію ОС ... і він все ще не працював.

Я спробував диск перевірити / відновити дозволи, він вказував щось, що стосується файлів .qlgenerator, але я подумав, що "це, можливо, через мою копію-вставлення-заміну файлами зловмисника, які, ймовірно, змінили деякі дозволи". У всякому разі, це не вирішило проблеми.

Я також спробував запустити qlmanage -rі перезапустити Mac. Проблема зберігається.

Інший mac все ще показує спосіб за замовчуванням (він же має швидкий перегляд) для цих типів файлів.

Будь-яка ідея про те, що пішло не так? Ви вважаєте, що за це відповідає вікно повідомлень, на яке я поспішно відповів? Я відчуваю, що це так, але я не впевнений, тому що я не конфігурував систему чи що-небудь, і навіть щось, що не пов’язано ні з швидким переглядом (я тоді не знав, що ця функція мала ім'я), ні xcode ... Я загубився.

EDIT Як запропонував @Bootle, я побіг

qlmanage -p ФАЙЛ

і дивно, що Quicklook вірно відкрив файл, тобто ви можете побачити вміст файлу та забарвлення XCode для нього за замовчуванням. Крім того, наступний вихід був надрукований в терміналі. введіть тут опис зображення

То більше ніяких підказок?

EDIT Нові підказки з’явилися після перевірки журналу з консолі після редагування @StvnW.

Я додаю зображення журналів після замовлення швидкого перегляду файлу

ОНОВЛЕННЯ Рішення було тому, що я зберігав старіші версії XCodes з 3.6.2 ^ _ ^ та іншими версіями, я помістив їх у папку, де я заборонив собі дозвіл на доступ до нього. Таким чином вони стали недоступними і для системи. І проблема була вирішена, система (або QL) закріпилася за останньою офіційною програмою XCode.

Але це завдяки нижченаведеній відповіді, яка дала мені цю підказку від налагодження. Я думаю, інші люди, які мають цю ж проблему, повинні слідувати його відповіді. Я відзначаю цю відповідь правильною відповіддю


2
Чи можете ви відкрити термінал і запустити цю команду: qlmanage -p FILEДе FILE - шлях до файлу .h або .m на вашому комп’ютері. А потім скопіюйте тут і вставте термінальний вихід, або в пастину чи щось таке. Дякую.
Bootle

Відповіді:


6

Ви можете подумати про просто використання QLStephen, що додасть належну підтримку QuickLook для всіх текстових файлів незалежно від їх розширень. Він також буде правильно обробляти файли без розширень (наприклад README, Makefile). Мені подобається, що вам не доведеться вести список розширень; QLStephen автоматично визначає текстові файли. QLStephen не залежить від XCode і є плагіном QL, який ви потрапляєте у /Library/QuickLook/або ~/Library/QuickLook/.

Те, що мене теж називають Стівен, - суто випадковий.

Редагувати: Налагодження QuickLook на основі додаткової інформації з ОП:

Увімкніть журнал QuickLook:

defaults write -g QLEnableLogging YES

Ось деякий вихідний вихідний журнал (записаний на консоль):

Встановлено запас Xcode:

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>

Встановлений сторонній генератор (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>

Оскільки речі працюють для вас під час виклику qlmanageз командного рядка, ви, можливо, зможете порівняти журнали, написані на Console, з результатами вибору вручну в командному рядку та виявити проблему. Встановлено лише Xcode:

[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

але це не спрацювало, можливо, тому що розширення файлів переважає його функціональність?
LolaRun

Можливо, Я також можу підтвердити, що Info.plist мого Xcode ідентичний тому, що було запропоновано Bootle, і я також є на складі Xcode 5.0.2.
StvnW

Я не зовсім зрозумів всю вашу другу відповідь :) Ви повинні були сказати мені, щоб я пішов на консоль і подивився на журнали. У будь-якому випадку я знайшов нові докази, я думаю, що проблема буде вирішена найближчим часом
LolaRun

Вибачте, якщо це було не ясно. Я додав згадки про те, де знайти журнали.
StvnW

4

Функція QuickLook для цих типів файлів працює, оскільки тип файлу вказаний у Info.plist Xcode.

Для того, щоб QuickLook використовував Xcode для швидкого перегляду цих файлів знову в Finder, вам потрібно буде відредагувати файл Info.plist Xcode. Це з'ясується, клацнувши правою кнопкою миші файл Xcode.app у програмах та натисніть "Показати зміст пакета". Ви знайдете Info.plist у папці «Зміст», яка відкриється.

У файлі Info.plist всі типи файлів, пов'язані з Xcode, перераховані як словники "CFBundleTypeExtensions".

Після відкриття списку виконайте пошук <string>h</string>(або те саме з 'm'). Якщо його неможливо знайти, вам потрібно буде додати його.

Примітка. Наразі ви можете створити резервну копію всього файлу Xcode.app у випадку, якщо щось піде не так.

Створіть копію Info.plist, перетягнувши його на робочий стіл. Відкрийте копію та знайдіть <key>CFBundleExecutable</key>. Ви побачите </array>на рядку над ним. Перед тим </array>, як вставити в текст текст, який дозволяє асоціювати тип файлу з Xcode (показано нижче). Цей блок повинен починатися і закінчуватися відповідно <dict>і </dict>, відповідно.

Для файлу .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>

Для файлу .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>

Після цього ви зможете скопіювати відредагований Info.plist назад у папку Зміст Xcode.app. Іноді додатки не люблять, коли ви редагуєте свої списки і вирішили не працювати після цього. Якщо це так, просто відновіть з копії, яку ви (повинні були) зробити раніше.

Це можна повторити з будь-якою програмою та будь-яким файлом. Якщо є кращий спосіб зробити це, можливо, змінивши / встановивши деякі налаштування в Xcode, було б добре знати.


вау, дуже важлива інформація. Дуже дякую. Але коли я відкрив пліст, як текст, він містив багато гаражів разом із розпізнаними символами, це означає, що він не відформатований XML. І якщо ви відкриєте його як список, ви не знайдете "CFBundleTypeExtensions", натомість ви можете знайти "CFBundleDocumentTypes", серед списку я зміг знайти "item16 (джерело заголовка C)", включаючи CFBundleTypeExtensions "h", та інший "елемент 22 (джерело Objective-c)", включаючи значення "m". Це XCode 5.0.2. Тому я думаю, що це все ще не корумповано. Дуже дякую, хоча я сподіваюся, що це допомагає.
LolaRun

1
Я забув, що TextEdit не відкриє файли плістів. За замовчуванням вони відкриваються самим Xcode, але не у форматі XML. Я використовую TextWrangler для всіх текстових файлів, плейстистів та інших форматів. Ви зможете відкрити пліст у форматі, про який я згадував у своїй відповіді, використовуючи TextWrangler або інший подібний текстовий редактор, наприклад редактор, призначений для редагування коду. TextWrangler, однак, є безкоштовним у використанні, і я б рекомендував його. Ви можете знайти його тут: barebones.com/products/textwrangler
Bootle

так, я зараз бачу це у форматі XML, велике спасибі У мене вже був textwrangler btw :). У будь-якому випадку, як я вже говорив раніше, і оскільки я тепер змогла побачити буквально те, що написано у форматі XML, я можу підтвердити, що у мене вже є те, що ви пропонуєте вставити. Тож проблема повинна бути в іншому місці. Дуже дякую, хоча за ваші великі зусилля, я вдячний.
LolaRun
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.