2012-01-29 10 views
32

Me gustaría que XCode 4 reconozca una extensión de archivo personalizada (por ejemplo, * .lx) como Objective-C para fines de resaltado de sintaxis y sangría. ¿Cómo obtengo la herramienta para hacer esto automáticamente?¿Cómo hacer que XCode reconozca una extensión de archivo personalizada como Objective-C para resaltar la sintaxis?

+0

No sé cómo hacer esto automáticamente todavía, pero puede decirle a Xcode que reconozca un archivo de esta manera en el panel Inspector de archivos. –

Respuesta

8

En Xcode cuando el archivo está activo en el editor, vaya al menú Editor -> Sintaxis para colorear -> Objective-C

Esto se aplicará sintaxis de Objective-C para colorear en un archivo. Funcionó para mí con un archivo de texto sin tener en cuenta su extensión.

Esto parecía funcionar para el sangrado automático también

+10

Lo que estoy buscando es una manera de resaltar sintaxis automáticamente. No de forma manual. – user1175914

+0

Esto hace resaltar la sintaxis automática dentro del archivo para el que lo cambié. ¿O quiere decir cambiar el resaltado de sintaxis 'Predeterminado para tipo de archivo' para que cualquier archivo de ese tipo tenga ese resaltado? Si es así, encontré esta solución alternativa ... aunque no he probado: http://lists.apple.com/archives/xcode-users/2007/Dec/msg00679.html – pontidm

25

Xcode determina cómo representar un archivo en su interfaz de usuario basado en el archivo de Uniform Type Identifier. Por lo que sé, no es posible agregar etiquetas de extensión de archivo adicionales a una UTI existente, pero puede declarar una nueva UTI que se ajuste al tipo al que desea asignar. El sistema asociará la (s) extensión (es) de archivo especificada (s) con su nueva UTI y a través del Xcode de conformidad y todas las demás aplicaciones con reconocimiento de UTI reconocerán los archivos como código fuente del tipo mapeado.

Es posible que desee reflexionar sobre dónde declarar a la nueva UTI. Por ejemplo, si una herramienta crea archivos de este tipo, el paquete para esa herramienta sería la ubicación más adecuada. En ausencia de una mejor alternativa, puede crear un paquete de aplicación de código auxiliar y declarar la nueva UTI allí:

  1. Cree un nuevo proyecto de aplicación Cocoa en Xcode.
  2. En la configuración del proyecto, seleccione el objetivo de la aplicación, luego la pestaña Información.
  3. Crear una nueva UTI exportada. UTI definition example
  4. Establezca el campo Identificador en un nombre único utilizando la notación DNS inversa para un dominio que controle. Por ejemplo, com.yourdomain.objective-c-source.
  5. Establezca el campo Conforms To en la UTI a la que desea asignar, como public.objective-c-source. Puede encontrar esto navegando por la lista de system-declared UTIs o los exportados en Info.plist de Xcode.
  6. Establezca el campo Extensiones en la lista de extensiones separadas por comas que desea asociar con la nueva UTI.
  7. Confirme el cambio al último campo presionando regresar o moviendo el foco a un campo diferente.
  8. Cree y ejecute la aplicación para registrarla con Servicios de inicio.
  9. Reiniciar Xcode.

Xcode ahora debería utilizar el resaltado de sintaxis adecuado para los archivos con la (s) extensión (es) especificada (s).

Si esto no funciona, compruebe el Info.plist de la aplicación creada para asegurarse de que toda la información esperada está allí sin ningún espacio en blanco al final. También puede comprobar que la UTI se ha registrado utilizando lsregister:

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump 

Buscar la salida de su identificador de IU y verifique que está presente y activo.

+0

¡Esto funcionó! Para los archivos .ipp de C++, utilicé 'public.c-plus-plus-source' como el nombre del identificador. –

+0

Esto funciona! Usé el archivo .ejs para asociarlo con un archivo HTML – kamyFC

+0

+1000 También funciona para mí para .leaf Extensión de archivo Vapor. (se ajusta a -> public.html) –

10

Xcode tiene un campo "Tipo" en el "Atributos Inspector" (más a la izquierda pestaña de "Utilidades" de la barra lateral derecha) para los archivos de su proyecto:

identity and type settings

Como se puede ver arriba, me puse nuestro proyecto Fastfile para ser reconocido como un Ruby Script, que es, a pesar de carecer de la extensión .rb esperada. Produciendo el resaltado de sintaxis esperada (con mi esquema de color personalizado):

enter image description here

Nota: esto sólo funciona si el archivo se añade al proyecto dentro de un grupo (no dentro de una referencia carpeta):

fastlane group

esto podría no ser ideal, pero Xcode no puede persistir atributos de los archivos que no se realiza un seguimiento de forma explícita en el archivo del proyecto. Las carpetas, por diseño, no tienen entradas para sus contenidos en el proyecto Xcode, ya que se supone que sean dinámicas.

+0

Gracias, eso es exactamente lo que necesitaba – Flar

+0

Gracias Brian, esto es exactamente lo que necesitaba y debería ser la respuesta aceptada. –

Cuestiones relacionadas