¿Hay alguna manera de que pueda plegar todos los methods en el proyecto Xcode?

Xcode proporciona la opción de plegado de methods para el file actual. Pero, ¿hay alguna manera de aplicar esto a todos los files .m del proyecto?

introduzca la descripción de la imagen aquí

ps: probé Xcode ejecutar scripts y desarrollo de complementos Xcode, pero no pude encontrar una solución adecuada

Aquí hay un AppleScript para este propósito. Advertencia:

  • Se requieren events del sistema.
  • Es probable que el script necesite cambios si tiene varias áreas de trabajo abiertas o su área de trabajo contiene varios proyectos.
  • Es posible que deba tener algo más que un file .m seleccionado en el browser del proyecto.
  -- Collect all Objective-C file references from the given group. on handleGroup(theGroup, codeRefs) tell application "Xcode" set fileRefs to theGroup's file references repeat with x in fileRefs if x's file kind is equal to "sourcecode.c.objc" then copy x to end of codeRefs end if end repeat set subgroups to theGroup's groups repeat with x in subgroups my handleGroup(x, codeRefs) end repeat end tell end handleGroup on moveFocusToProjectNavigator() tell application "System Events" tell process "Xcode" set frontmost to true tell menu bar item "Navigate" of menu bar 1 tell menu 1 click menu item "Reveal in Project navigator" end tell end tell end tell end tell end moveFocusToProjectNavigator on moveFocusToNextArea() tell application "System Events" tell process "Xcode" set frontmost to true tell menu bar item "Navigate" of menu bar 1 tell menu 1 click menu item "Move Focus to Next Area" end tell end tell end tell end tell end moveFocusToNextArea -- Simulate pressing the up arrow. on selectNextItem() tell application "System Events" tell process "Xcode" key code 126 end tell end tell end selectNextItem on fold(shouldFold) set theCommand to "Fold Methods & Functions" if shouldFold is equal to 0 then set theCommand to "Unfold All" end if -- Fold the code by using the menu item. tell application "System Events" tell process "Xcode" set frontmost to true tell menu bar item "Editor" of menu bar 1 tell menu 1 tell menu item "Code Folding" tell menu 1 click menu item theCommand end tell end tell end tell end tell end tell end tell end fold on run -- Set to one to fold, zero to unfold. set shouldFold to 1 tell application "Xcode" set ws to every workspace document set theWorkspace to item 1 of ws tell theWorkspace set pr to item 1 of projects set codeRefs to {} my handleGroup(pr, codeRefs) -- Open each document and fold the code. set thePaths to {} repeat with x in codeRefs copy x's full path to the end of thePaths end repeat end tell -- If we only have one path, a new workspace won't be opened. if 1 is equal to (count of thePaths) then open item 1 of thePaths my moveFocusToNextArea() my fold(shouldFold) else open thePaths set ws to every workspace document set theWorkspace to item 1 of ws my fold(shouldFold) repeat (count of theWorkspace's file references) - 1 times my moveFocusToProjectNavigator() my selectNextItem() my moveFocusToNextArea() my fold(shouldFold) end repeat -- If we don't wait before closing the window, the last document -- won't be folded. tell application "System Events" to delay 3 tell theWorkspace to close end if end tell end run 

Para completar, aquí hay un bash anterior. Es bastante lento ya que necesita abrir un documento por URL a la vez.

  -- Collect all Objective-C file references from the given group. on handleGroup(theGroup, codeRefs) tell application "Xcode" set fileRefs to theGroup's file references repeat with x in fileRefs if x's file kind is equal to "sourcecode.c.objc" then copy x to end of codeRefs end if end repeat set subgroups to theGroup's groups repeat with x in subgroups my handleGroup(x, codeRefs) end repeat end tell end handleGroup on run tell application "Xcode" set ws to every workspace document tell item 1 of ws set pr to item 1 of projects set codeRefs to {} my handleGroup(pr, codeRefs) -- Open each document and fold the code. repeat with x in codeRefs set thePath to x's full path set doc to open thePath tell doc activate end tell -- Fold the code by using the menu item. tell application "System Events" tell process "Xcode" set frontmost to true tell menu bar item "Editor" of menu bar 1 tell menu 1 tell menu item "Code Folding" tell menu 1 click menu item "Fold Methods & Functions" end tell end tell end tell end tell end tell end tell end repeat end tell end tell end run 

Tal vez una solución mucho más fácil y mejor será usar la tecla de acceso directo: cuando abra un file .m, simplemente presione Cmd + Alt + Camisa + <- para plegar o Cmd + Alt + Camisa + -> para plegar

Hecho y espolvoreado.

Escribí un complemento xCode que hace fácilmente el trabajo.
complemento: https://github.com/ThilinaHewagama/HCTAutoFolding