Формат определения текстовых макросов и места их изменения изменился - текстовые макросы превратились в фрагменты кода.
Что вы можете сделать, это создать новый фрагмент кода (с чем угодно, просто перетащите текств окно «Фрагмент кода»), затем найдите текущий формат фрагмента (макроса) и перенесите туда текущие макросы.
Каталог, куда они идут:
~/Library/Developer/XCode/UserData/CodeSnippets
Там вы увидите файлы с такими именами, как:
E4B300B5-E0EA-4E46-9963-6E9B2111E578.codesnippet
Самое замечательное, что вам не нужно использовать имена UUID - я смог скопировать одно из них в файл с именем "MyTest".codesnippet "и XCode все еще читает его.
Таким образом, у вас будет один файл для каждого существующего макроса (так как в старых файлах .xctxtmacro обычно есть несколько макросов), вы можете использовать сам текст макроса как- поскольку синтаксис параметров не изменился (хотя все метаданные вокруг макроса существенно изменились).Вам придется преобразовать части "<" / "> любых параметров, определенных в XML-безопасный синтаксис <
/ >
, поскольку файлы теперь являются списками XML.Например, содержимое простого макроса, который выдает NSLog(@"Hello Nurse: %@",
Thing );
, когда набирается «няня»:
<?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 %@", <#Thing#>);
</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!#>
) - в системе Code Snippet,не существует способа применить фрагмент кода к выделенному тексту, вы можете только перетащить его как новый.Параметры все еще работают как нормальные параметры.