2011-03-14 5 views
5

오늘 Xcode 4로 업데이트되었고 사용자 정의 텍스트 매크로가 더 이상 작동하지 않습니다. Xcode 4에서 맞춤 매크로를 사용하는 방법에 대한 정보를 찾을 수 없습니다. 그래도 가능합니까? 누군가 해결책을 생각해 내면 알려주세요.Xcode 4에서 사용자 지정 텍스트 매크로를 어떻게 만듭니 까?

현재 내 'ObjectiveC.xctxtmacro'파일이있는 디렉토리입니다. ~/라이브러리/응용 프로그램 지원/개발자/공유/Xcode/사양

답변

11

텍스트 매크로가 정의되는 방식 및 게시 위치가 변경됨 - 텍스트 매크로가 코드 조각으로 변형되었습니다.

당신이 할 수있는 일은 새로운 코드 스 니펫을 만들고 (무엇이든 코드 스 니펫 창에 텍스트를 끌어다 놓은 다음) 코드 조각의 현재 형식을 찾고 (매크로) 현재 매크로를 거기로 마이그레이션하는 것입니다. 그들이가는

디렉토리는 다음과 같습니다

가 좋은 점은
E4B300B5-E0EA-4E46-9963-6E9B2111E578.codesnippet 

, 당신이 UUID 이름을 사용할 필요가 없습니다 :

~/Library/Developer/XCode/UserData/CodeSnippets 

거기에서 당신은 같은 이름의 파일을 볼 수 있습니다 - 그 중 하나를 "MyTest.codesnippet"이라는 파일에 복사 할 수 있었고 XCode는 여전히 그것을 읽습니다.

기존 매크로 당 하나의 파일이 있으므로 (이전 .xctxtmacro 파일에 일반적으로 매크로가 있으므로) 매개 변수 구문이 변경되지 않았으므로 실제 매크로 텍스트를 그대로 사용할 수 있습니다 매크로 주변의 모든 메타 데이터가 실질적으로 변경되었습니다). XML 안전 구문 &lt;/&gt;으로 정의 된 매개 변수의 "<"/ ">"부분을 XML plists로 변환해야합니다. 예를 들어, NSLog(@"Hello Nurse: %@",것을 생산하는 간단한 매크로의 내용); "간호사"입력 할 때 : 텍스트 매크로에서 누락 된 코드 조각의 한 측면은 당신이 사용하는 것입니다

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>IDECodeSnippetCompletionPrefix</key> 
    <string>nurse</string> 
    <key>IDECodeSnippetCompletionScopes</key> 
    <array> 
     <string>All</string> 
    </array> 
    <key>IDECodeSnippetContents</key> 
    <string>NSLog(@"Hello Nurse %@", &lt;#Thing#&gt;); 
</string> 
    <key>IDECodeSnippetIdentifier</key> 
    <string>E4B300B5-E0EA-4E46-9963-6E9B2111E579</string> 
    <key>IDECodeSnippetLanguage</key> 
    <string>Xcode.SourceCodeLanguage.Objective-C</string> 
    <key>IDECodeSnippetTitle</key> 
    <string>TestNurse</string> 
    <key>IDECodeSnippetUserSnippet</key> 
    <true/> 
    <key>IDECodeSnippetVersion</key> 
    <integer>2</integer> 
</dict> 
</plist> 

하는 것으로 코드 매크로를 활성화 할 때 !<#!ReplaceParam!#> 다음에 추가하여 선택한 텍스트가있는 매개 변수를 정의 할 수 있어야합니다. 코드 조각에서 선택한 텍스트에 코드 조각을 적용 할 수있는 방법이없는 것 같습니다. , 당신은 그것을 새로운 것으로서 끌어낼 수 있습니다. 그러나 매개 변수는 여전히 정상적인 매개 변수로 작동합니다.

+0

심층 답변을 부탁드립니다. 나는 커스텀 텍스트 매크로를 많이 의지했고 이것은 나를 죽였다. 그리고 그것은 매우 이상합니다. 나는 당신이 내 log 문에 'Hello Nurse'를 항상 포함한다는 것을 알았습니다. ;) – Christine

+0

새로운 시스템이 조금 나아졌습니다. 더 많은 사람들이 코드 스 니펫을 만들 수 있습니다. 이제는 디렉토리와 파일을 만들 필요가 없기 때문입니다. 또한 완성도가 더 좋아졌고, 완성도를 입력하고 수동으로 Ctrl-로 인식해야했습니다. ,하지만 이제는 완성과 히트 리턴을 입력하기 만하면됩니다. –

+0

이것이 의미하는 바가 확실하지 않지만 <#paramName#>을 사용하여 매개 변수를 정의 할 수 있습니다. –

관련 문제