Pregunta ¿Cómo hacer que XCode reconozca una extensión de archivo personalizada como Objective-C para resaltar la sintaxis?


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


32
2018-01-29 00:57


origen


Respuestas:


Xcode determina cómo representar un archivo en su interfaz de usuario en función del archivo Identificador de tipo uniforme. 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. A falta de una alternativa mejor, puede crear un paquete de aplicaciones de código auxiliar y declarar allí la nueva UTI:

  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. Crea 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 UTI declaradas por el sistema o aquellos 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 Launch Services.
  9. Reinicie Xcode.

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

Si esto no funciona, verifique 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 verificar que la UTI se haya registrado usando lsregister:

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

Busque el resultado de su identificador de UTI y verifique que esté presente y activo.


25
2017-07-13 21:40



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

identity and type settings

Como puede ver arriba, configuré nuestro proyecto Fastfile ser reconocido como Ruby Script, que es, a pesar de carecer de lo esperado .rb extensión. Rendimiento del resaltado de sintaxis esperado (con mi esquema de color personalizado):

enter image description here

Nota: esto solo funciona si el archivo se agrega a su proyecto dentro de un grupo (no dentro de una referencia de carpeta):

fastlane group

Puede que esto no sea lo ideal, pero Xcode no puede conservar los atributos de los archivos que no se rastrean explícitamente 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.


11
2018-03-20 01:51



En Xcode, cuando su archivo está activo en el editor, vaya al Menú Editor -> Coloreado de sintaxis -> Objetivo-C

Esto aplicará la coloración de sintaxis objetivo-c a un archivo. Funcionó para mí con un archivo de texto sin tener en cuenta su extensión.

Esto pareció funcionar para la sangría automática también


8
2018-02-21 14:50