2011-06-11 29 views
46

He estado buscando por todo el lugar, pero no puedo encontrar nada. ¿Alguien sabe dónde encontrar documentación sobre cómo crear un complemento de Xcode 4?Xcode 4 plugin development

+2

Una buena fuente de ejemplos es el gestor de paquetes de Alcatraz: http://mneorr.github.io/Alcatraz/ –

Respuesta

53

Por lo que sé no hay manera oficial de crear los complementos de Xcode 4 (al igual que no había ninguno para v3.x).

Aquí es un openradar en la falta de Xcode de soporte para plugins:

Por favor apoye la capacidad de 3er partes para extender Xcode a través de una API pública plugin. Aperture, Visual Studio, Eclipse, TextMate y otras aplicaciones se benefician de esta capacidad de . Me gustaría ver más refactorizaciones avanzadas, análisis de código (piense Resharper por Jetbrains) y modelado.

Provide plugin API for Xcode 4 (rdar://8622025)

favor engañar a esto si desea plugins!


Editar: tropecé con esto:

Cédric Luthi: "Xcode 4 hace de soporte definida por el usuario plugins, ver CLITool-InfoPlist para un ejemplo de un Xcode de trabajo 4 complemento. Solo tiene que agregar XC4Compatible (verdadero) en el Info.plist. "

https://github.com/0xced/CLITool-InfoPlist


eso se dice estos repositorios de GitHub podría ser útil, también:


Más más mogenerator 's Plugin Xmod podría ser un buen punto de partida.
(¿No era Xcode 4-compatible, sin embargo, la última vez que lo comprobé, sin embargo)

+3

Así que, oficialmente, Xcode 4 no es compatible con complementos? – rid

+1

No, mira mi respuesta actualizada (el rdar vinculado en particular). – Regexident

+0

@Radu: Acabo de agregar un enlace a mi respuesta en la que ** Cédric Luthi ** (alias ** 0xced **) afirma que ** de hecho es posible crear complementos ** para Xcode 4. – Regexident

2

Xcode no tiene un plug-in API pública.

Este fue el caso con versiones anteriores, y es el caso con Xcode 4 también.

+0

¿Alguna idea de cuál podría ser el motivo? – rid

+0

Apple no hace comentarios sobre tales cosas. –

-3

No, Xcode no es compatible con complementos, alternativamente puede probar AppCode, otro IDE para iOS/MacOS, no admite el desarrollo de complementos.

+0

Eso obviamente no es cierto ya que hay complementos para Xcode disponibles y puede escribir fácilmente los suyos si lo necesita. – Darrarski

3

Ayer ColorSense for Xcode 4 fue lanzado en Github. Como el código es realmente compacto y se divide en solo 3 clases, creo que deberías echarle un vistazo.

7

mejor manera de aprender es mirar código del plugin github (véase larga lista más abajo):

  • Básicamente es un paquete de plug-in.
  • Sin main.m Sin MainMenu.xib
  • primera clase cargado mediante el establecimiento de NSPrincipalClass en info.plist
  • en su init: se registra para las notificaciones AppKit
  • Ver los ejemplos de código
  • algún tipo de control de la mainBundle ID de aplicación para asegurarse de que esto es XCode
  • La clase de ventana XCode Editor es DVTSourceTextView
  • es una subclase de DVTSourceTextView: NSTextView: NSText
  • s O puede registrarse para escuchar sus notificaciones de NSTextView o NSText
  • como NSTextViewWillChangeNotifyingTextViewNotification

porque no es una norma oficial que se dio cuenta de cada una de las cargas de muestra de diferentes maneras.

MUESTRAS XCODE PLUGIN

compilados por mediante búsqueda github/web para

'DVTSourceTextView' 

Este es el nombre de clase de ventana Xcode Editor

o

Info-lista de claves

'XC4Compatible' 


https://github.com/omz/ColorSense-for-Xcode 

https://github.com/ciaran/xcode-bracket-matcher 
- uses a ruby parser run as pipe! 

https://github.com/joshaber/WTFXcode 
https://github.com/0xced/NoLastUpgradeCheck 
http://code.google.com/p/google-toolbox-for-mac/downloads/list 
    see GTMXcode4Plugin 
https://github.com/DeepIT/XcodeColors 
https://github.com/0xced/CLITool-InfoPlist 
https://github.com/sap-production/xcode-ide-maven-integration 
https://github.com/ciaran/xcode-bracket-matcher 

llegar al NSTextView que es la consola

https://github.com/sap-production/xcode-ide-maven-integration

- (NSTextView *)findConsoleAndActivate { 
    Class consoleTextViewClass = objc_getClass("IDEConsoleTextView"); 
    NSTextView *console = (NSTextView *)[self findView:consoleTextViewClass inView:NSApplication.sharedApplication.mainWindow.contentView]; 

    if (console) { 
     NSWindow *window = NSApplication.sharedApplication.keyWindow; 
     if ([window isKindOfClass:objc_getClass("IDEWorkspaceWindow")]) { 
      if ([window.windowController isKindOfClass:NSClassFromString(@"IDEWorkspaceWindowController")]) { 
       id editorArea = [window.windowController valueForKey:@"editorArea"]; 
       [editorArea performSelector:@selector(activateConsole:) withObject:self]; 
      } 
     } 
    } 

    return console; 
}