├── .coffeelintignore ├── .github ├── no-response.yml └── workflows │ └── ci.yml ├── .gitignore ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE.md ├── LICENSE.md ├── PULL_REQUEST_TEMPLATE.md ├── README.md ├── coffeelint.json ├── grammars ├── objective-c++.cson ├── objective-c.cson └── strings file.cson ├── package.json ├── settings └── language-objective-c.cson ├── snippets └── language-objective-c.cson └── spec └── objective-c-spec.coffee /.coffeelintignore: -------------------------------------------------------------------------------- 1 | spec/fixtures 2 | -------------------------------------------------------------------------------- /.github/no-response.yml: -------------------------------------------------------------------------------- 1 | # Configuration for probot-no-response - https://github.com/probot/no-response 2 | 3 | # Number of days of inactivity before an issue is closed for lack of response 4 | daysUntilClose: 28 5 | 6 | # Label requiring a response 7 | responseRequiredLabel: more-information-needed 8 | 9 | # Comment to post when closing an issue for lack of response. Set to `false` to disable. 10 | closeComment: > 11 | This issue has been automatically closed because there has been no response 12 | to our request for more information from the original author. With only the 13 | information that is currently in the issue, we don't have enough information 14 | to take action. Please reach out if you have or find the answers we need so 15 | that we can investigate further. 16 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: [push] 4 | 5 | env: 6 | CI: true 7 | 8 | jobs: 9 | Test: 10 | strategy: 11 | matrix: 12 | os: [ubuntu-latest, macos-latest, windows-latest] 13 | channel: [stable, beta] 14 | runs-on: ${{ matrix.os }} 15 | steps: 16 | - uses: actions/checkout@v1 17 | - uses: UziTech/action-setup-atom@v2 18 | with: 19 | version: ${{ matrix.channel }} 20 | - name: Install dependencies 21 | run: apm install 22 | - name: Run tests 23 | run: atom --test spec 24 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | See the [Atom contributing guide](https://github.com/atom/atom/blob/master/CONTRIBUTING.md) 2 | -------------------------------------------------------------------------------- /ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 8 | 9 | ### Prerequisites 10 | 11 | * [ ] Put an X between the brackets on this line if you have done all of the following: 12 | * Reproduced the problem in Safe Mode: http://flight-manual.atom.io/hacking-atom/sections/debugging/#using-safe-mode 13 | * Followed all applicable steps in the debugging guide: http://flight-manual.atom.io/hacking-atom/sections/debugging/ 14 | * Checked the FAQs on the message board for common solutions: https://discuss.atom.io/c/faq 15 | * Checked that your issue isn't already filed: https://github.com/issues?utf8=✓&q=is%3Aissue+user%3Aatom 16 | * Checked that there is not already an Atom package that provides the described functionality: https://atom.io/packages 17 | 18 | ### Description 19 | 20 | [Description of the issue] 21 | 22 | ### Steps to Reproduce 23 | 24 | 1. [First Step] 25 | 2. [Second Step] 26 | 3. [and so on...] 27 | 28 | **Expected behavior:** [What you expect to happen] 29 | 30 | **Actual behavior:** [What actually happens] 31 | 32 | **Reproduces how often:** [What percentage of the time does it reproduce?] 33 | 34 | ### Versions 35 | 36 | You can get this information from copy and pasting the output of `atom --version` and `apm --version` from the command line. Also, please include the OS and what version of the OS you're running. 37 | 38 | ### Additional Information 39 | 40 | Any additional information, configuration or data that might be necessary to reproduce the issue. 41 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014 GitHub Inc. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | 22 | -------------------------------------------------------------------- 23 | 24 | This package was derived from a TextMate bundle located at 25 | https://github.com/textmate/objective-c.tmbundle and distributed under the following 26 | license, located in `README.mdown`: 27 | 28 | Permission to copy, use, modify, sell and distribute this 29 | software is granted. This software is provided "as is" without 30 | express or implied warranty, and with no claim as to its 31 | suitability for any purpose. 32 | -------------------------------------------------------------------------------- /PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### Requirements 2 | 3 | * Filling out the template is required. Any pull request that does not include enough information to be reviewed in a timely manner may be closed at the maintainers' discretion. 4 | * All new code requires tests to ensure against regressions 5 | 6 | ### Description of the Change 7 | 8 | 13 | 14 | ### Alternate Designs 15 | 16 | 17 | 18 | ### Benefits 19 | 20 | 21 | 22 | ### Possible Drawbacks 23 | 24 | 25 | 26 | ### Applicable Issues 27 | 28 | 29 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ##### Atom and all repositories under Atom will be archived on December 15, 2022. Learn more in our [official announcement](https://github.blog/2022-06-08-sunsetting-atom/) 2 | # Objective-C language support in Atom 3 | [![macOS Build Status](https://travis-ci.org/atom/language-objective-c.svg?branch=master)](https://travis-ci.org/atom/language-objective-c) 4 | [![Windows Build Status](https://ci.appveyor.com/api/projects/status/27j8vfv5u95fjhkw/branch/master?svg=true)](https://ci.appveyor.com/project/Atom/language-objective-c/branch/master) 5 | [![Dependency Status](https://david-dm.org/atom/language-objective-c.svg)](https://david-dm.org/atom/language-objective-c) 6 | 7 | Adds syntax highlighting and snippets to Objective-C files in Atom. 8 | 9 | Originally [converted](http://flight-manual.atom.io/hacking-atom/sections/converting-from-textmate) from the [Objective-C TextMate bundle](https://github.com/textmate/objective-c.tmbundle). 10 | 11 | Contributions are greatly appreciated. Please fork this repository and open a pull request to add snippets, make grammar tweaks, etc. 12 | -------------------------------------------------------------------------------- /coffeelint.json: -------------------------------------------------------------------------------- 1 | { 2 | "max_line_length": { 3 | "level": "ignore" 4 | }, 5 | "no_empty_param_list": { 6 | "level": "error" 7 | }, 8 | "arrow_spacing": { 9 | "level": "error" 10 | }, 11 | "no_interpolation_in_single_quotes": { 12 | "level": "error" 13 | }, 14 | "no_debugger": { 15 | "level": "error" 16 | }, 17 | "prefer_english_operator": { 18 | "level": "error" 19 | }, 20 | "colon_assignment_spacing": { 21 | "spacing": { 22 | "left": 0, 23 | "right": 1 24 | }, 25 | "level": "error" 26 | }, 27 | "braces_spacing": { 28 | "spaces": 0, 29 | "level": "error" 30 | }, 31 | "spacing_after_comma": { 32 | "level": "error" 33 | }, 34 | "no_stand_alone_at": { 35 | "level": "error" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /grammars/objective-c++.cson: -------------------------------------------------------------------------------- 1 | 'scopeName': 'source.objcpp' 2 | 'fileTypes': [ 3 | 'mm' 4 | 'M' 5 | 'h' 6 | ] 7 | 'name': 'Objective-C++' 8 | 'patterns': [ 9 | { 10 | 'include': 'source.cpp' 11 | } 12 | { 13 | 'include': 'source.objc' 14 | } 15 | ] 16 | -------------------------------------------------------------------------------- /grammars/objective-c.cson: -------------------------------------------------------------------------------- 1 | 'scopeName': 'source.objc' 2 | 'fileTypes': [ 3 | 'm' 4 | 'h' 5 | 'pch' 6 | 'x' 7 | 'xm' 8 | 'xmi' 9 | ] 10 | 'name': 'Objective-C' 11 | 'patterns': [ 12 | { 13 | 'begin': '((@)(interface|protocol))(?!.+;)\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*((:)(?:\\s*)([A-Za-z][A-Za-z0-9]*))?(\\s|\\n)?' 14 | 'captures': 15 | '1': 16 | 'name': 'storage.type.objc' 17 | '2': 18 | 'name': 'punctuation.definition.storage.type.objc' 19 | '4': 20 | 'name': 'entity.name.type.objc' 21 | '6': 22 | 'name': 'punctuation.definition.entity.other.inherited-class.objc' 23 | '7': 24 | 'name': 'entity.other.inherited-class.objc' 25 | '8': 26 | 'name': 'meta.divider.objc' 27 | '9': 28 | 'name': 'meta.inherited-class.objc' 29 | 'contentName': 'meta.scope.interface.objc' 30 | 'end': '((@)end)\\b' 31 | 'name': 'meta.interface-or-protocol.objc' 32 | 'patterns': [ 33 | { 34 | 'include': '#interface_innards' 35 | } 36 | ] 37 | } 38 | { 39 | 'begin': '((@)(implementation))\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*(?::\\s*([A-Za-z][A-Za-z0-9]*))?' 40 | 'captures': 41 | '1': 42 | 'name': 'storage.type.objc' 43 | '2': 44 | 'name': 'punctuation.definition.storage.type.objc' 45 | '4': 46 | 'name': 'entity.name.type.objc' 47 | '5': 48 | 'name': 'entity.other.inherited-class.objc' 49 | 'contentName': 'meta.scope.implementation.objc' 50 | 'end': '((@)end)\\b' 51 | 'name': 'meta.implementation.objc' 52 | 'patterns': [ 53 | { 54 | 'include': '#implementation_innards' 55 | } 56 | ] 57 | } 58 | { 59 | 'begin': '@"' 60 | 'beginCaptures': 61 | '0': 62 | 'name': 'punctuation.definition.string.begin.objc' 63 | 'end': '"' 64 | 'endCaptures': 65 | '0': 66 | 'name': 'punctuation.definition.string.end.objc' 67 | 'name': 'string.quoted.double.objc' 68 | 'patterns': [ 69 | { 70 | 'include': 'source.c#string_escaped_char' 71 | } 72 | { 73 | 'match': '(?x)%\n\t\t\t\t\t\t(\\d+\\$)? # field (argument #)\n\t\t\t\t\t\t[#0\\- +\']* # flags\n\t\t\t\t\t\t((-?\\d+)|\\*(-?\\d+\\$)?)? # minimum field width\n\t\t\t\t\t\t(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? # precision\n\t\t\t\t\t\t[@] # conversion type\n\t\t\t\t\t' 74 | 'name': 'constant.other.placeholder.objc' 75 | } 76 | { 77 | 'include': 'source.c#string_placeholder' 78 | } 79 | ] 80 | } 81 | { 82 | 'begin': '\\b(id)\\s*(?=<)' 83 | 'beginCaptures': 84 | '1': 85 | 'name': 'storage.type.objc' 86 | 'end': '(?<=>)' 87 | 'name': 'meta.id-with-protocol.objc' 88 | 'patterns': [ 89 | { 90 | 'include': '#protocol_list' 91 | } 92 | ] 93 | } 94 | { 95 | 'match': '\\b(NS_DURING|NS_HANDLER|NS_ENDHANDLER)\\b' 96 | 'name': 'keyword.control.macro.objc' 97 | } 98 | { 99 | 'captures': 100 | '1': 101 | 'name': 'punctuation.definition.keyword.objc' 102 | 'match': '(@)(try|catch|finally|throw)\\b' 103 | 'name': 'keyword.control.exception.objc' 104 | } 105 | { 106 | 'captures': 107 | '1': 108 | 'name': 'punctuation.definition.keyword.objc' 109 | 'match': '(@)(synchronized)\\b' 110 | 'name': 'keyword.control.synchronize.objc' 111 | } 112 | { 113 | 'captures': 114 | '1': 115 | 'name': 'punctuation.definition.keyword.objc' 116 | 'match': '(@)(required|optional)\\b' 117 | 'name': 'keyword.control.protocol-specification.objc' 118 | } 119 | { 120 | 'captures': 121 | '1': 122 | 'name': 'punctuation.definition.keyword.objc' 123 | 'match': '(@)(defs|encode)\\b' 124 | 'name': 'keyword.other.objc' 125 | } 126 | { 127 | 'match': '\\bid\\b' 128 | 'name': 'storage.type.id.objc' 129 | } 130 | { 131 | 'match': '\\b(IBOutlet|IBAction|BOOL|SEL|id|unichar|IMP|Class|instancetype)\\b' 132 | 'name': 'storage.type.objc' 133 | } 134 | { 135 | 'captures': 136 | '1': 137 | 'name': 'punctuation.definition.storage.type.objc' 138 | 'match': '(@)(class|protocol)\\b' 139 | 'name': 'storage.type.objc' 140 | } 141 | { 142 | 'begin': '((@)selector)\\s*(\\()' 143 | 'beginCaptures': 144 | '1': 145 | 'name': 'storage.type.objc' 146 | '2': 147 | 'name': 'punctuation.definition.storage.type.objc' 148 | '3': 149 | 'name': 'punctuation.definition.storage.type.objc' 150 | 'contentName': 'meta.selector.method-name.objc' 151 | 'end': '(\\))' 152 | 'endCaptures': 153 | '1': 154 | 'name': 'punctuation.definition.storage.type.objc' 155 | 'name': 'meta.selector.objc' 156 | 'patterns': [ 157 | { 158 | 'captures': 159 | '1': 160 | 'name': 'punctuation.separator.arguments.objc' 161 | 'match': '\\b(?:[a-zA-Z_:][\\w]*)+' 162 | 'name': 'support.function.any-method.name-of-parameter.objc' 163 | } 164 | ] 165 | } 166 | { 167 | 'captures': 168 | '1': 169 | 'name': 'punctuation.definition.storage.modifier.objc' 170 | 'match': '(@)(synchronized|public|package|private|protected)\\b' 171 | 'name': 'storage.modifier.objc' 172 | } 173 | { 174 | 'match': '\\b(YES|NO|Nil|nil)\\b' 175 | 'name': 'constant.language.objc' 176 | } 177 | { 178 | 'match': '\\bNSApp\\b' 179 | 'name': 'support.variable.foundation' 180 | } 181 | { 182 | 'captures': 183 | '1': 184 | 'name': 'punctuation.whitespace.support.function.cocoa.leopard' 185 | '2': 186 | 'name': 'support.function.cocoa.leopard' 187 | 'match': '(\\s*)\\b(NS(Rect(ToCGRect|FromCGRect)|MakeCollectable|S(tringFromProtocol|ize(ToCGSize|FromCGSize))|Draw(NinePartImage|ThreePartImage)|P(oint(ToCGPoint|FromCGPoint)|rotocolFromString)|EventMaskFromType|Value))\\b' 188 | } 189 | { 190 | 'captures': 191 | '1': 192 | 'name': 'punctuation.whitespace.support.function.leading.cocoa' 193 | '2': 194 | 'name': 'support.function.cocoa' 195 | 'match': '(\\s*)\\b(NS(R(ound(DownToMultipleOfPageSize|UpToMultipleOfPageSize)|un(CriticalAlertPanel(RelativeToWindow)?|InformationalAlertPanel(RelativeToWindow)?|AlertPanel(RelativeToWindow)?)|e(set(MapTable|HashTable)|c(ycleZone|t(Clip(List)?|F(ill(UsingOperation|List(UsingOperation|With(Grays|Colors(UsingOperation)?))?)?|romString))|ordAllocationEvent)|turnAddress|leaseAlertPanel|a(dPixel|l(MemoryAvailable|locateCollectable))|gisterServicesProvider)|angeFromString)|Get(SizeAndAlignment|CriticalAlertPanel|InformationalAlertPanel|UncaughtExceptionHandler|FileType(s)?|WindowServerMemory|AlertPanel)|M(i(n(X|Y)|d(X|Y))|ouseInRect|a(p(Remove|Get|Member|Insert(IfAbsent|KnownAbsent)?)|ke(R(ect|ange)|Size|Point)|x(Range|X|Y)))|B(itsPer(SampleFromDepth|PixelFromDepth)|e(stDepth|ep|gin(CriticalAlertSheet|InformationalAlertSheet|AlertSheet)))|S(ho(uldRetainWithZone|w(sServicesMenuItem|AnimationEffect))|tringFrom(R(ect|ange)|MapTable|S(ize|elector)|HashTable|Class|Point)|izeFromString|e(t(ShowsServicesMenuItem|ZoneName|UncaughtExceptionHandler|FocusRingStyle)|lectorFromString|archPathForDirectoriesInDomains)|wap(Big(ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(ToHost|LongToHost))|Short|Host(ShortTo(Big|Little)|IntTo(Big|Little)|DoubleTo(Big|Little)|FloatTo(Big|Little)|Long(To(Big|Little)|LongTo(Big|Little)))|Int|Double|Float|L(ittle(ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(ToHost|LongToHost))|ong(Long)?)))|H(ighlightRect|o(stByteOrder|meDirectory(ForUser)?)|eight|ash(Remove|Get|Insert(IfAbsent|KnownAbsent)?)|FSType(CodeFromFileType|OfFile))|N(umberOfColorComponents|ext(MapEnumeratorPair|HashEnumeratorItem))|C(o(n(tainsRect|vert(GlyphsToPackedGlyphs|Swapped(DoubleToHost|FloatToHost)|Host(DoubleToSwapped|FloatToSwapped)))|unt(MapTable|HashTable|Frames|Windows(ForContext)?)|py(M(emoryPages|apTableWithZone)|Bits|HashTableWithZone|Object)|lorSpaceFromDepth|mpare(MapTables|HashTables))|lassFromString|reate(MapTable(WithZone)?|HashTable(WithZone)?|Zone|File(namePboardType|ContentsPboardType)))|TemporaryDirectory|I(s(ControllerMarker|EmptyRect|FreedObject)|n(setRect|crementExtraRefCount|te(r(sect(sRect|ionR(ect|ange))|faceStyleForKey)|gralRect)))|Zone(Realloc|Malloc|Name|Calloc|Fr(omPointer|ee))|O(penStepRootDirectory|ffsetRect)|D(i(sableScreenUpdates|videRect)|ottedFrameRect|e(c(imal(Round|Multiply|S(tring|ubtract)|Normalize|Co(py|mpa(ct|re))|IsNotANumber|Divide|Power|Add)|rementExtraRefCountWasZero)|faultMallocZone|allocate(MemoryPages|Object))|raw(Gr(oove|ayBezel)|B(itmap|utton)|ColorTiledRects|TiledRects|DarkBezel|W(hiteBezel|indowBackground)|LightBezel))|U(serName|n(ionR(ect|ange)|registerServicesProvider)|pdateDynamicServices)|Java(Bundle(Setup|Cleanup)|Setup(VirtualMachine)?|Needs(ToLoadClasses|VirtualMachine)|ClassesF(orBundle|romPath)|ObjectNamedInPath|ProvidesClasses)|P(oint(InRect|FromString)|erformService|lanarFromDepth|ageSize)|E(n(d(MapTableEnumeration|HashTableEnumeration)|umerate(MapTable|HashTable)|ableScreenUpdates)|qual(R(ects|anges)|Sizes|Points)|raseRect|xtraRefCount)|F(ileTypeForHFSTypeCode|ullUserName|r(ee(MapTable|HashTable)|ame(Rect(WithWidth(UsingOperation)?)?|Address)))|Wi(ndowList(ForContext)?|dth)|Lo(cationInRange|g(v|PageSize)?)|A(ccessibility(R(oleDescription(ForUIElement)?|aiseBadArgumentException)|Unignored(Children(ForOnlyChild)?|Descendant|Ancestor)|PostNotification|ActionDescription)|pplication(Main|Load)|vailableWindowDepths|ll(MapTable(Values|Keys)|HashTableObjects|ocate(MemoryPages|Collectable|Object)))))\\b' 196 | } 197 | { 198 | 'match': '\\bNS(RuleEditor|G(arbageCollector|radient)|MapTable|HashTable|Co(ndition|llectionView(Item)?)|T(oolbarItemGroup|extInputClient|r(eeNode|ackingArea))|InvocationOperation|Operation(Queue)?|D(ictionaryController|ockTile)|P(ointer(Functions|Array)|athC(o(ntrol(Delegate)?|mponentCell)|ell(Delegate)?)|r(intPanelAccessorizing|edicateEditor(RowTemplate)?))|ViewController|FastEnumeration|Animat(ionContext|ablePropertyContainer))\\b' 199 | 'name': 'support.class.cocoa.leopard' 200 | } 201 | { 202 | 'match': '\\bNS(R(u(nLoop|ler(Marker|View))|e(sponder|cursiveLock|lativeSpecifier)|an(domSpecifier|geSpecifier))|G(etCommand|lyph(Generator|Storage|Info)|raphicsContext)|XML(Node|D(ocument|TD(Node)?)|Parser|Element)|M(iddleSpecifier|ov(ie(View)?|eCommand)|utable(S(tring|et)|C(haracterSet|opying)|IndexSet|D(ictionary|ata)|URLRequest|ParagraphStyle|A(ttributedString|rray))|e(ssagePort(NameServer)?|nu(Item(Cell)?|View)?|t(hodSignature|adata(Item|Query(ResultGroup|AttributeValueTuple)?)))|a(ch(BootstrapServer|Port)|trix))|B(itmapImageRep|ox|u(ndle|tton(Cell)?)|ezierPath|rowser(Cell)?)|S(hadow|c(anner|r(ipt(SuiteRegistry|C(o(ercionHandler|mmand(Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(er|View)|een))|t(epper(Cell)?|atus(Bar|Item)|r(ing|eam))|imple(HorizontalTypesetter|CString)|o(cketPort(NameServer)?|und|rtDescriptor)|p(e(cifierTest|ech(Recognizer|Synthesizer)|ll(Server|Checker))|litView)|e(cureTextField(Cell)?|t(Command)?|archField(Cell)?|rializer|gmentedC(ontrol|ell))|lider(Cell)?|avePanel)|H(ost|TTP(Cookie(Storage)?|URLResponse)|elpManager)|N(ib(Con(nector|trolConnector)|OutletConnector)?|otification(Center|Queue)?|u(ll|mber(Formatter)?)|etService(Browser)?|ameSpecifier)|C(ha(ngeSpelling|racterSet)|o(n(stantString|nection|trol(ler)?|ditionLock)|d(ing|er)|unt(Command|edSet)|pying|lor(Space|P(ick(ing(Custom|Default)|er)|anel)|Well|List)?|m(p(oundPredicate|arisonPredicate)|boBox(Cell)?))|u(stomImageRep|rsor)|IImageRep|ell|l(ipView|o(seCommand|neCommand)|assDescription)|a(ched(ImageRep|URLResponse)|lendar(Date)?)|reateCommand)|T(hread|ypesetter|ime(Zone|r)|o(olbar(Item(Validations)?)?|kenField(Cell)?)|ext(Block|Storage|Container|Tab(le(Block)?)?|Input|View|Field(Cell)?|List|Attachment(Cell)?)?|a(sk|b(le(Header(Cell|View)|Column|View)|View(Item)?))|reeController)|I(n(dex(S(pecifier|et)|Path)|put(Manager|S(tream|erv(iceProvider|er(MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(Rep|Cell|View)?)|O(ut(putStream|lineView)|pen(GL(Context|Pixel(Buffer|Format)|View)|Panel)|bj(CTypeSerializationCallBack|ect(Controller)?))|D(i(st(antObject(Request)?|ributed(NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(Controller)?|e(serializer|cimalNumber(Behaviors|Handler)?|leteCommand)|at(e(Components|Picker(Cell)?|Formatter)?|a)|ra(wer|ggingInfo))|U(ser(InterfaceValidations|Defaults(Controller)?)|RL(Re(sponse|quest)|Handle(Client)?|C(onnection|ache|redential(Storage)?)|Download(Delegate)?|Prot(ocol(Client)?|ectionSpace)|AuthenticationChallenge(Sender)?)?|n(iqueIDSpecifier|doManager|archiver))|P(ipe|o(sitionalSpecifier|pUpButton(Cell)?|rt(Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(steboard|nel|ragraphStyle|geLayout)|r(int(Info|er|Operation|Panel)|o(cessInfo|tocolChecker|perty(Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(numerator|vent|PSImageRep|rror|x(ception|istsCommand|pression))|V(iew(Animation)?|al(idated(ToobarItem|UserInterfaceItem)|ue(Transformer)?))|Keyed(Unarchiver|Archiver)|Qui(ckDrawView|tCommand)|F(ile(Manager|Handle|Wrapper)|o(nt(Manager|Descriptor|Panel)?|rm(Cell|atter)))|W(hoseSpecifier|indow(Controller)?|orkspace)|L(o(c(k(ing)?|ale)|gicalTest)|evelIndicator(Cell)?|ayoutManager)|A(ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(ication|e(Script|Event(Manager|Descriptor)))|ffineTransform|lert|r(chiver|ray(Controller)?)))\\b' 203 | 'name': 'support.class.cocoa' 204 | } 205 | { 206 | 'match': '\\bNS(R(oundingMode|ule(Editor(RowType|NestingMode)|rOrientation)|e(questUserAttentionType|lativePosition))|G(lyphInscription|radientDrawingOptions)|XML(NodeKind|D(ocumentContentKind|TDNodeKind)|ParserError)|M(ultibyteGlyphPacking|apTableOptions)|B(itmapFormat|oxType|ezierPathElement|ackgroundStyle|rowserDropOperation)|S(tr(ing(CompareOptions|DrawingOptions|EncodingConversionOptions)|eam(Status|Event))|p(eechBoundary|litViewDividerStyle)|e(archPathD(irectory|omainMask)|gmentS(tyle|witchTracking))|liderType|aveOptions)|H(TTPCookieAcceptPolicy|ashTableOptions)|N(otification(SuspensionBehavior|Coalescing)|umberFormatter(RoundingMode|Behavior|Style|PadPosition)|etService(sError|Options))|C(haracterCollection|o(lor(RenderingIntent|SpaceModel|PanelMode)|mp(oundPredicateType|arisonPredicateModifier))|ellStateValue|al(culationError|endarUnit))|T(ypesetterControlCharacterAction|imeZoneNameStyle|e(stComparisonOperation|xt(Block(Dimension|V(erticalAlignment|alueType)|Layer)|TableLayoutAlgorithm|FieldBezelStyle))|ableView(SelectionHighlightStyle|ColumnAutoresizingStyle)|rackingAreaOptions)|I(n(sertionPosition|te(rfaceStyle|ger))|mage(RepLoadStatus|Scaling|CacheMode|FrameStyle|LoadStatus|Alignment))|Ope(nGLPixelFormatAttribute|rationQueuePriority)|Date(Picker(Mode|Style)|Formatter(Behavior|Style))|U(RL(RequestCachePolicy|HandleStatus|C(acheStoragePolicy|redentialPersistence))|Integer)|P(o(stingStyle|int(ingDeviceType|erFunctionsOptions)|pUpArrowPosition)|athStyle|r(int(ing(Orientation|PaginationMode)|erTableStatus|PanelOptions)|opertyList(MutabilityOptions|Format)|edicateOperatorType))|ExpressionType|KeyValue(SetMutationKind|Change)|QTMovieLoopMode|F(indPanel(SubstringMatchType|Action)|o(nt(RenderingMode|FamilyClass)|cusRingPlacement))|W(hoseSubelementIdentifier|ind(ingRule|ow(B(utton|ackingLocation)|SharingType|CollectionBehavior)))|L(ine(MovementDirection|SweepDirection|CapStyle|JoinStyle)|evelIndicatorStyle)|Animation(BlockingMode|Curve))\\b' 207 | 'name': 'support.type.cocoa.leopard' 208 | } 209 | { 210 | 'match': '\\bC(I(Sampler|Co(ntext|lor)|Image(Accumulator)?|PlugIn(Registration)?|Vector|Kernel|Filter(Generator|Shape)?)|A(Renderer|MediaTiming(Function)?|BasicAnimation|ScrollLayer|Constraint(LayoutManager)?|T(iledLayer|extLayer|rans(ition|action))|OpenGLLayer|PropertyAnimation|KeyframeAnimation|Layer|A(nimation(Group)?|ction)))\\b' 211 | 'name': 'support.class.quartz' 212 | } 213 | { 214 | 'match': '\\bC(G(Float|Point|Size|Rect)|IFormat|AConstraintAttribute)\\b' 215 | 'name': 'support.type.quartz' 216 | } 217 | { 218 | 'match': '\\bNS(R(ect(Edge)?|ange)|G(lyph(Relation|LayoutMode)?|radientType)|M(odalSession|a(trixMode|p(Table|Enumerator)))|B(itmapImageFileType|orderType|uttonType|ezelStyle|ackingStoreType|rowserColumnResizingType)|S(cr(oll(er(Part|Arrow)|ArrowPosition)|eenAuxiliaryOpaque)|tringEncoding|ize|ocketNativeHandle|election(Granularity|Direction|Affinity)|wapped(Double|Float)|aveOperationType)|Ha(sh(Table|Enumerator)|ndler(2)?)|C(o(ntrol(Size|Tint)|mp(ositingOperation|arisonResult))|ell(State|Type|ImagePosition|Attribute))|T(hreadPrivate|ypesetterGlyphInfo|i(ckMarkPosition|tlePosition|meInterval)|o(ol(TipTag|bar(SizeMode|DisplayMode))|kenStyle)|IFFCompression|ext(TabType|Alignment)|ab(State|leViewDropOperation|ViewType)|rackingRectTag)|ImageInterpolation|Zone|OpenGL(ContextAuxiliary|PixelFormatAuxiliary)|D(ocumentChangeType|atePickerElementFlags|ra(werState|gOperation))|UsableScrollerParts|P(oint|r(intingPageOrder|ogressIndicator(Style|Th(ickness|readInfo))))|EventType|KeyValueObservingOptions|Fo(nt(SymbolicTraits|TraitMask|Action)|cusRingType)|W(indow(OrderingMode|Depth)|orkspace(IconCreationOptions|LaunchOptions)|ritingDirection)|L(ineBreakMode|ayout(Status|Direction))|A(nimation(Progress|Effect)|ppl(ication(TerminateReply|DelegateReply|PrintReply)|eEventManagerSuspensionID)|ffineTransformStruct|lertStyle))\\b' 219 | 'name': 'support.type.cocoa' 220 | } 221 | { 222 | 'match': '\\bNS(NotFound|Ordered(Ascending|Descending|Same))\\b' 223 | 'name': 'support.constant.cocoa' 224 | } 225 | { 226 | 'match': '\\bNS(MenuDidBeginTracking|ViewDidUpdateTrackingAreas)?Notification\\b' 227 | 'name': 'support.constant.notification.cocoa.leopard' 228 | } 229 | { 230 | 'match': '\\bNS(Menu(Did(RemoveItem|SendAction|ChangeItem|EndTracking|AddItem)|WillSendAction)|S(ystemColorsDidChange|plitView(DidResizeSubviews|WillResizeSubviews))|C(o(nt(extHelpModeDid(Deactivate|Activate)|rolT(intDidChange|extDid(BeginEditing|Change|EndEditing)))|lor(PanelColorDidChange|ListDidChange)|mboBox(Selection(IsChanging|DidChange)|Will(Dismiss|PopUp)))|lassDescriptionNeededForClass)|T(oolbar(DidRemoveItem|WillAddItem)|ext(Storage(DidProcessEditing|WillProcessEditing)|Did(BeginEditing|Change|EndEditing)|View(DidChange(Selection|TypingAttributes)|WillChangeNotifyingTextView))|ableView(Selection(IsChanging|DidChange)|ColumnDid(Resize|Move)))|ImageRepRegistryDidChange|OutlineView(Selection(IsChanging|DidChange)|ColumnDid(Resize|Move)|Item(Did(Collapse|Expand)|Will(Collapse|Expand)))|Drawer(Did(Close|Open)|Will(Close|Open))|PopUpButton(CellWillPopUp|WillPopUp)|View(GlobalFrameDidChange|BoundsDidChange|F(ocusDidChange|rameDidChange))|FontSetChanged|W(indow(Did(Resi(ze|gn(Main|Key))|M(iniaturize|ove)|Become(Main|Key)|ChangeScreen(|Profile)|Deminiaturize|Update|E(ndSheet|xpose))|Will(M(iniaturize|ove)|BeginSheet|Close))|orkspace(SessionDid(ResignActive|BecomeActive)|Did(Mount|TerminateApplication|Unmount|PerformFileOperation|Wake|LaunchApplication)|Will(Sleep|Unmount|PowerOff|LaunchApplication)))|A(ntialiasThresholdChanged|ppl(ication(Did(ResignActive|BecomeActive|Hide|ChangeScreenParameters|U(nhide|pdate)|FinishLaunching)|Will(ResignActive|BecomeActive|Hide|Terminate|U(nhide|pdate)|FinishLaunching))|eEventManagerWillProcessFirstEvent)))Notification\\b' 231 | 'name': 'support.constant.notification.cocoa' 232 | } 233 | { 234 | 'match': '\\bNS(RuleEditor(RowType(Simple|Compound)|NestingMode(Si(ngle|mple)|Compound|List))|GradientDraws(BeforeStartingLocation|AfterEndingLocation)|M(inusSetExpressionType|a(chPortDeallocate(ReceiveRight|SendRight|None)|pTable(StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality)))|B(oxCustom|undleExecutableArchitecture(X86|I386|PPC(64)?)|etweenPredicateOperatorType|ackgroundStyle(Raised|Dark|L(ight|owered)))|S(tring(DrawingTruncatesLastVisibleLine|EncodingConversion(ExternalRepresentation|AllowLossy))|ubqueryExpressionType|p(e(ech(SentenceBoundary|ImmediateBoundary|WordBoundary)|llingState(GrammarFlag|SpellingFlag))|litViewDividerStyleThi(n|ck))|e(rvice(RequestTimedOutError|M(iscellaneousError|alformedServiceDictionaryError)|InvalidPasteboardDataError|ErrorM(inimum|aximum)|Application(NotFoundError|LaunchFailedError))|gmentStyle(Round(Rect|ed)|SmallSquare|Capsule|Textured(Rounded|Square)|Automatic)))|H(UDWindowMask|ashTable(StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality))|N(oModeColorPanel|etServiceNoAutoRename)|C(hangeRedone|o(ntainsPredicateOperatorType|l(orRenderingIntent(RelativeColorimetric|Saturation|Default|Perceptual|AbsoluteColorimetric)|lectorDisabledOption))|ellHit(None|ContentArea|TrackableArea|EditableTextArea))|T(imeZoneNameStyle(S(hort(Standard|DaylightSaving)|tandard)|DaylightSaving)|extFieldDatePickerStyle|ableViewSelectionHighlightStyle(Regular|SourceList)|racking(Mouse(Moved|EnteredAndExited)|CursorUpdate|InVisibleRect|EnabledDuringMouseDrag|A(ssumeInside|ctive(In(KeyWindow|ActiveApp)|WhenFirstResponder|Always))))|I(n(tersectSetExpressionType|dexedColorSpaceModel)|mageScale(None|Proportionally(Down|UpOrDown)|AxesIndependently))|Ope(nGLPFAAllowOfflineRenderers|rationQueue(DefaultMaxConcurrentOperationCount|Priority(High|Normal|Very(High|Low)|Low)))|D(iacriticInsensitiveSearch|ownloadsDirectory)|U(nionSetExpressionType|TF(16(BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)|32(BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)))|P(ointerFunctions(Ma(chVirtualMemory|llocMemory)|Str(ongMemory|uctPersonality)|C(StringPersonality|opyIn)|IntegerPersonality|ZeroingWeakMemory|O(paque(Memory|Personality)|bjectP(ointerPersonality|ersonality)))|at(hStyle(Standard|NavigationBar|PopUp)|ternColorSpaceModel)|rintPanelShows(Scaling|Copies|Orientation|P(a(perSize|ge(Range|SetupAccessory))|review)))|Executable(RuntimeMismatchError|NotLoadableError|ErrorM(inimum|aximum)|L(inkError|oadError)|ArchitectureMismatchError)|KeyValueObservingOption(Initial|Prior)|F(i(ndPanelSubstringMatchType(StartsWith|Contains|EndsWith|FullWord)|leRead(TooLargeError|UnknownStringEncodingError))|orcedOrderingSearch)|Wi(ndow(BackingLocation(MainMemory|Default|VideoMemory)|Sharing(Read(Only|Write)|None)|CollectionBehavior(MoveToActiveSpace|CanJoinAllSpaces|Default))|dthInsensitiveSearch)|AggregateExpressionType)\\b' 235 | 'name': 'support.constant.cocoa.leopard' 236 | } 237 | { 238 | 'match': '\\bNS(R(GB(ModeColorPanel|ColorSpaceModel)|ight(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|T(ext(Movement|Alignment)|ab(sBezelBorder|StopType))|ArrowFunctionKey)|ound(RectBezelStyle|Bankers|ed(BezelStyle|TokenStyle|DisclosureBezelStyle)|Down|Up|Plain|Line(CapStyle|JoinStyle))|un(StoppedResponse|ContinuesResponse|AbortedResponse)|e(s(izableWindowMask|et(CursorRectsRunLoopOrdering|FunctionKey))|ce(ssedBezelStyle|iver(sCantHandleCommandScriptError|EvaluationScriptError))|turnTextMovement|doFunctionKey|quiredArgumentsMissingScriptError|l(evancyLevelIndicatorStyle|ative(Before|After))|gular(SquareBezelStyle|ControlSize)|moveTraitFontAction)|a(n(domSubelement|geDateMode)|tingLevelIndicatorStyle|dio(ModeMatrix|Button)))|G(IFFileType|lyph(Below|Inscribe(B(elow|ase)|Over(strike|Below)|Above)|Layout(WithPrevious|A(tAPoint|gainstAPoint))|A(ttribute(BidiLevel|Soft|Inscribe|Elastic)|bove))|r(ooveBorder|eaterThan(Comparison|OrEqualTo(Comparison|PredicateOperatorType)|PredicateOperatorType)|a(y(ModeColorPanel|ColorSpaceModel)|dient(None|Con(cave(Strong|Weak)|vex(Strong|Weak)))|phiteControlTint)))|XML(N(o(tationDeclarationKind|de(CompactEmptyElement|IsCDATA|OptionsNone|Use(SingleQuotes|DoubleQuotes)|Pre(serve(NamespaceOrder|C(haracterReferences|DATA)|DTD|Prefixes|E(ntities|mptyElements)|Quotes|Whitespace|A(ttributeOrder|ll))|ttyPrint)|ExpandEmptyElement))|amespaceKind)|CommentKind|TextKind|InvalidKind|D(ocument(X(MLKind|HTMLKind|Include)|HTMLKind|T(idy(XML|HTML)|extKind)|IncludeContentTypeDeclaration|Validate|Kind)|TDKind)|P(arser(GTRequiredError|XMLDeclNot(StartedError|FinishedError)|Mi(splaced(XMLDeclarationError|CDATAEndStringError)|xedContentDeclNot(StartedError|FinishedError))|S(t(andaloneValueError|ringNot(StartedError|ClosedError))|paceRequiredError|eparatorRequiredError)|N(MTOKENRequiredError|o(t(ationNot(StartedError|FinishedError)|WellBalancedError)|DTDError)|amespaceDeclarationError|AMERequiredError)|C(haracterRef(In(DTDError|PrologError|EpilogError)|AtEOFError)|o(nditionalSectionNot(StartedError|FinishedError)|mment(NotFinishedError|ContainsDoubleHyphenError))|DATANotFinishedError)|TagNameMismatchError|In(ternalError|valid(HexCharacterRefError|C(haracter(RefError|InEntityError|Error)|onditionalSectionError)|DecimalCharacterRefError|URIError|Encoding(NameError|Error)))|OutOfMemoryError|D(ocumentStartError|elegateAbortedParseError|OCTYPEDeclNotFinishedError)|U(RI(RequiredError|FragmentError)|n(declaredEntityError|parsedEntityError|knownEncodingError|finishedTagError))|P(CDATARequiredError|ublicIdentifierRequiredError|arsedEntityRef(MissingSemiError|NoNameError|In(Internal(SubsetError|Error)|PrologError|EpilogError)|AtEOFError)|r(ocessingInstructionNot(StartedError|FinishedError)|ematureDocumentEndError))|E(n(codingNotSupportedError|tity(Ref(In(DTDError|PrologError|EpilogError)|erence(MissingSemiError|WithoutNameError)|LoopError|AtEOFError)|BoundaryError|Not(StartedError|FinishedError)|Is(ParameterError|ExternalError)|ValueRequiredError))|qualExpectedError|lementContentDeclNot(StartedError|FinishedError)|xt(ernalS(tandaloneEntityError|ubsetNotFinishedError)|raContentError)|mptyDocumentError)|L(iteralNot(StartedError|FinishedError)|T(RequiredError|SlashRequiredError)|essThanSymbolInAttributeError)|Attribute(RedefinedError|HasNoValueError|Not(StartedError|FinishedError)|ListNot(StartedError|FinishedError)))|rocessingInstructionKind)|E(ntity(GeneralKind|DeclarationKind|UnparsedKind|P(ar(sedKind|ameterKind)|redefined))|lement(Declaration(MixedKind|UndefinedKind|E(lementKind|mptyKind)|Kind|AnyKind)|Kind))|Attribute(N(MToken(sKind|Kind)|otationKind)|CDATAKind|ID(Ref(sKind|Kind)|Kind)|DeclarationKind|En(tit(yKind|iesKind)|umerationKind)|Kind))|M(i(n(XEdge|iaturizableWindowMask|YEdge|uteCalendarUnit)|terLineJoinStyle|ddleSubelement|xedState)|o(nthCalendarUnit|deSwitchFunctionKey|use(Moved(Mask)?|E(ntered(Mask)?|ventSubtype|xited(Mask)?))|veToBezierPathElement|mentary(ChangeButton|Push(Button|InButton)|Light(Button)?))|enuFunctionKey|a(c(intoshInterfaceStyle|OSRomanStringEncoding)|tchesPredicateOperatorType|ppedRead|x(XEdge|YEdge))|ACHOperatingSystem)|B(MPFileType|o(ttomTabsBezelBorder|ldFontMask|rderlessWindowMask|x(Se(condary|parator)|OldStyle|Primary))|uttLineCapStyle|e(zelBorder|velLineJoinStyle|low(Bottom|Top)|gin(sWith(Comparison|PredicateOperatorType)|FunctionKey))|lueControlTint|ack(spaceCharacter|tabTextMovement|ingStore(Retained|Buffered|Nonretained)|TabCharacter|wardsSearch|groundTab)|r(owser(NoColumnResizing|UserColumnResizing|AutoColumnResizing)|eakFunctionKey))|S(h(ift(JISStringEncoding|KeyMask)|ow(ControlGlyphs|InvisibleGlyphs)|adowlessSquareBezelStyle)|y(s(ReqFunctionKey|tem(D(omainMask|efined(Mask)?)|FunctionKey))|mbolStringEncoding)|c(a(nnedOption|le(None|ToFit|Proportionally))|r(oll(er(NoPart|Increment(Page|Line|Arrow)|Decrement(Page|Line|Arrow)|Knob(Slot)?|Arrows(M(inEnd|axEnd)|None|DefaultSetting))|Wheel(Mask)?|LockFunctionKey)|eenChangedEventType))|t(opFunctionKey|r(ingDrawing(OneShot|DisableScreenFontSubstitution|Uses(DeviceMetrics|FontLeading|LineFragmentOrigin))|eam(Status(Reading|NotOpen|Closed|Open(ing)?|Error|Writing|AtEnd)|Event(Has(BytesAvailable|SpaceAvailable)|None|OpenCompleted|E(ndEncountered|rrorOccurred)))))|i(ngle(DateMode|UnderlineStyle)|ze(DownFontAction|UpFontAction))|olarisOperatingSystem|unOSOperatingSystem|pecialPageOrder|e(condCalendarUnit|lect(By(Character|Paragraph|Word)|i(ng(Next|Previous)|onAffinity(Downstream|Upstream))|edTab|FunctionKey)|gmentSwitchTracking(Momentary|Select(One|Any)))|quareLineCapStyle|witchButton|ave(ToOperation|Op(tions(Yes|No|Ask)|eration)|AsOperation)|mall(SquareBezelStyle|C(ontrolSize|apsFontMask)|IconButtonBezelStyle))|H(ighlightModeMatrix|SBModeColorPanel|o(ur(Minute(SecondDatePickerElementFlag|DatePickerElementFlag)|CalendarUnit)|rizontalRuler|meFunctionKey)|TTPCookieAcceptPolicy(Never|OnlyFromMainDocumentDomain|Always)|e(lp(ButtonBezelStyle|KeyMask|FunctionKey)|avierFontAction)|PUXOperatingSystem)|Year(MonthDa(yDatePickerElementFlag|tePickerElementFlag)|CalendarUnit)|N(o(n(StandardCharacterSetFontMask|ZeroWindingRule|activatingPanelMask|LossyASCIIStringEncoding)|Border|t(ification(SuspensionBehavior(Hold|Coalesce|D(eliverImmediately|rop))|NoCoalescing|CoalescingOn(Sender|Name)|DeliverImmediately|PostToAllSessions)|PredicateType|EqualToPredicateOperatorType)|S(cr(iptError|ollerParts)|ubelement|pecifierError)|CellMask|T(itle|opLevelContainersSpecifierError|abs(BezelBorder|NoBorder|LineBorder))|I(nterfaceStyle|mage)|UnderlineStyle|FontChangeAction)|u(ll(Glyph|CellType)|m(eric(Search|PadKeyMask)|berFormatter(Round(Half(Down|Up|Even)|Ceiling|Down|Up|Floor)|Behavior(10|Default)|S(cientificStyle|pellOutStyle)|NoStyle|CurrencyStyle|DecimalStyle|P(ercentStyle|ad(Before(Suffix|Prefix)|After(Suffix|Prefix))))))|e(t(Services(BadArgumentError|NotFoundError|C(ollisionError|ancelledError)|TimeoutError|InvalidError|UnknownError|ActivityInProgress)|workDomainMask)|wlineCharacter|xt(StepInterfaceStyle|FunctionKey))|EXTSTEPStringEncoding|a(t(iveShortGlyphPacking|uralTextAlignment)|rrowFontMask))|C(hange(ReadOtherContents|GrayCell(Mask)?|BackgroundCell(Mask)?|Cleared|Done|Undone|Autosaved)|MYK(ModeColorPanel|ColorSpaceModel)|ircular(BezelStyle|Slider)|o(n(stantValueExpressionType|t(inuousCapacityLevelIndicatorStyle|entsCellMask|ain(sComparison|erSpecifierError)|rol(Glyph|KeyMask))|densedFontMask)|lor(Panel(RGBModeMask|GrayModeMask|HSBModeMask|C(MYKModeMask|olorListModeMask|ustomPaletteModeMask|rayonModeMask)|WheelModeMask|AllModesMask)|ListModeColorPanel)|reServiceDirectory|m(p(osite(XOR|Source(In|O(ut|ver)|Atop)|Highlight|C(opy|lear)|Destination(In|O(ut|ver)|Atop)|Plus(Darker|Lighter))|ressedFontMask)|mandKeyMask))|u(stom(SelectorPredicateOperatorType|PaletteModeColorPanel)|r(sor(Update(Mask)?|PointingDevice)|veToBezierPathElement))|e(nterT(extAlignment|abStopType)|ll(State|H(ighlighted|as(Image(Horizontal|OnLeftOrBottom)|OverlappingImage))|ChangesContents|Is(Bordered|InsetButton)|Disabled|Editable|LightsBy(Gray|Background|Contents)|AllowsMixedState))|l(ipPagination|o(s(ePathBezierPathElement|ableWindowMask)|ckAndCalendarDatePickerStyle)|ear(ControlTint|DisplayFunctionKey|LineFunctionKey))|a(seInsensitive(Search|PredicateOption)|n(notCreateScriptCommandError|cel(Button|TextMovement))|chesDirectory|lculation(NoError|Overflow|DivideByZero|Underflow|LossOfPrecision)|rriageReturnCharacter)|r(itical(Request|AlertStyle)|ayonModeColorPanel))|T(hick(SquareBezelStyle|erSquareBezelStyle)|ypesetter(Behavior|HorizontalTabAction|ContainerBreakAction|ZeroAdvancementAction|OriginalBehavior|ParagraphBreakAction|WhitespaceAction|L(ineBreakAction|atestBehavior))|i(ckMark(Right|Below|Left|Above)|tledWindowMask|meZoneDatePickerElementFlag)|o(olbarItemVisibilityPriority(Standard|High|User|Low)|pTabsBezelBorder|ggleButton)|IFF(Compression(N(one|EXT)|CCITTFAX(3|4)|OldJPEG|JPEG|PackBits|LZW)|FileType)|e(rminate(Now|Cancel|Later)|xt(Read(InapplicableDocumentTypeError|WriteErrorM(inimum|aximum))|Block(M(i(nimum(Height|Width)|ddleAlignment)|a(rgin|ximum(Height|Width)))|B(o(ttomAlignment|rder)|aselineAlignment)|Height|TopAlignment|P(ercentageValueType|adding)|Width|AbsoluteValueType)|StorageEdited(Characters|Attributes)|CellType|ured(RoundedBezelStyle|BackgroundWindowMask|SquareBezelStyle)|Table(FixedLayoutAlgorithm|AutomaticLayoutAlgorithm)|Field(RoundedBezel|SquareBezel|AndStepperDatePickerStyle)|WriteInapplicableDocumentTypeError|ListPrependEnclosingMarker))|woByteGlyphPacking|ab(Character|TextMovement|le(tP(oint(Mask|EventSubtype)?|roximity(Mask|EventSubtype)?)|Column(NoResizing|UserResizingMask|AutoresizingMask)|View(ReverseSequentialColumnAutoresizingStyle|GridNone|S(olid(HorizontalGridLineMask|VerticalGridLineMask)|equentialColumnAutoresizingStyle)|NoColumnAutoresizing|UniformColumnAutoresizingStyle|FirstColumnOnlyAutoresizingStyle|LastColumnOnlyAutoresizingStyle)))|rackModeMatrix)|I(n(sert(CharFunctionKey|FunctionKey|LineFunctionKey)|t(Type|ernalS(criptError|pecifierError))|dexSubelement|validIndexSpecifierError|formational(Request|AlertStyle)|PredicateOperatorType)|talicFontMask|SO(2022JPStringEncoding|Latin(1StringEncoding|2StringEncoding))|dentityMappingCharacterCollection|llegalTextMovement|mage(R(ight|ep(MatchesDevice|LoadStatus(ReadingHeader|Completed|InvalidData|Un(expectedEOF|knownType)|WillNeedAllData)))|Below|C(ellType|ache(BySize|Never|Default|Always))|Interpolation(High|None|Default|Low)|O(nly|verlaps)|Frame(Gr(oove|ayBezel)|Button|None|Photo)|L(oadStatus(ReadError|C(ompleted|ancelled)|InvalidData|UnexpectedEOF)|eft)|A(lign(Right|Bottom(Right|Left)?|Center|Top(Right|Left)?|Left)|bove)))|O(n(State|eByteGlyphPacking|OffButton|lyScrollerArrows)|ther(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|TextMovement)|SF1OperatingSystem|pe(n(GL(GO(Re(setLibrary|tainRenderers)|ClearFormatCache|FormatCacheSize)|PFA(R(obust|endererID)|M(inimumPolicy|ulti(sample|Screen)|PSafe|aximumPolicy)|BackingStore|S(creenMask|te(ncilSize|reo)|ingleRenderer|upersample|ample(s|Buffers|Alpha))|NoRecovery|C(o(lor(Size|Float)|mpliant)|losestPolicy)|OffScreen|D(oubleBuffer|epthSize)|PixelBuffer|VirtualScreenCount|FullScreen|Window|A(cc(umSize|elerated)|ux(Buffers|DepthStencil)|l(phaSize|lRenderers))))|StepUnicodeReservedBase)|rationNotSupportedForKeyS(criptError|pecifierError))|ffState|KButton|rPredicateType|bjC(B(itfield|oolType)|S(hortType|tr(ingType|uctType)|electorType)|NoType|CharType|ObjectType|DoubleType|UnionType|PointerType|VoidType|FloatType|Long(Type|longType)|ArrayType))|D(i(s(c(losureBezelStyle|reteCapacityLevelIndicatorStyle)|playWindowRunLoopOrdering)|acriticInsensitivePredicateOption|rect(Selection|PredicateModifier))|o(c(ModalWindowMask|ument(Directory|ationDirectory))|ubleType|wn(TextMovement|ArrowFunctionKey))|e(s(cendingPageOrder|ktopDirectory)|cimalTabStopType|v(ice(NColorSpaceModel|IndependentModifierFlagsMask)|eloper(Directory|ApplicationDirectory))|fault(ControlTint|TokenStyle)|lete(Char(acter|FunctionKey)|FunctionKey|LineFunctionKey)|moApplicationDirectory)|a(yCalendarUnit|teFormatter(MediumStyle|Behavior(10|Default)|ShortStyle|NoStyle|FullStyle|LongStyle))|ra(wer(Clos(ingState|edState)|Open(ingState|State))|gOperation(Generic|Move|None|Copy|Delete|Private|Every|Link|All)))|U(ser(CancelledError|D(irectory|omainMask)|FunctionKey)|RL(Handle(NotLoaded|Load(Succeeded|InProgress|Failed))|CredentialPersistence(None|Permanent|ForSession))|n(scaledWindowMask|cachedRead|i(codeStringEncoding|talicFontMask|fiedTitleAndToolbarWindowMask)|d(o(CloseGroupingRunLoopOrdering|FunctionKey)|e(finedDateComponent|rline(Style(Single|None|Thick|Double)|Pattern(Solid|D(ot|ash(Dot(Dot)?)?)))))|known(ColorSpaceModel|P(ointingDevice|ageOrder)|KeyS(criptError|pecifierError))|boldFontMask)|tilityWindowMask|TF8StringEncoding|p(dateWindowsRunLoopOrdering|TextMovement|ArrowFunctionKey))|J(ustifiedTextAlignment|PEG(2000FileType|FileType)|apaneseEUC(GlyphPacking|StringEncoding))|P(o(s(t(Now|erFontMask|WhenIdle|ASAP)|iti(on(Replace|Be(fore|ginning)|End|After)|ve(IntType|DoubleType|FloatType)))|pUp(NoArrow|ArrowAt(Bottom|Center))|werOffEventType|rtraitOrientation)|NGFileType|ush(InCell(Mask)?|OnPushOffButton)|e(n(TipMask|UpperSideMask|PointingDevice|LowerSideMask)|riodic(Mask)?)|P(S(caleField|tatus(Title|Field)|aveButton)|N(ote(Title|Field)|ame(Title|Field))|CopiesField|TitleField|ImageButton|OptionsButton|P(a(perFeedButton|ge(Range(To|From)|ChoiceMatrix))|reviewButton)|LayoutButton)|lainTextTokenStyle|a(useFunctionKey|ragraphSeparatorCharacter|ge(DownFunctionKey|UpFunctionKey))|r(int(ing(ReplyLater|Success|Cancelled|Failure)|ScreenFunctionKey|erTable(NotFound|OK|Error)|FunctionKey)|o(p(ertyList(XMLFormat|MutableContainers(AndLeaves)?|BinaryFormat|Immutable|OpenStepFormat)|rietaryStringEncoding)|gressIndicator(BarStyle|SpinningStyle|Preferred(SmallThickness|Thickness|LargeThickness|AquaThickness)))|e(ssedTab|vFunctionKey))|L(HeightForm|CancelButton|TitleField|ImageButton|O(KButton|rientationMatrix)|UnitsButton|PaperNameButton|WidthForm))|E(n(terCharacter|d(sWith(Comparison|PredicateOperatorType)|FunctionKey))|v(e(nOddWindingRule|rySubelement)|aluatedObjectExpressionType)|qualTo(Comparison|PredicateOperatorType)|ra(serPointingDevice|CalendarUnit|DatePickerElementFlag)|x(clude(10|QuickDrawElementsIconCreationOption)|pandedFontMask|ecuteFunctionKey))|V(i(ew(M(in(XMargin|YMargin)|ax(XMargin|YMargin))|HeightSizable|NotSizable|WidthSizable)|aPanelFontAction)|erticalRuler|a(lidationErrorM(inimum|aximum)|riableExpressionType))|Key(SpecifierEvaluationScriptError|Down(Mask)?|Up(Mask)?|PathExpressionType|Value(MinusSetMutation|SetSetMutation|Change(Re(placement|moval)|Setting|Insertion)|IntersectSetMutation|ObservingOption(New|Old)|UnionSetMutation|ValidationError))|QTMovie(NormalPlayback|Looping(BackAndForthPlayback|Playback))|F(1(1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|7FunctionKey|i(nd(PanelAction(Replace(A(ndFind|ll(InSelection)?))?|S(howFindPanel|e(tFindString|lectAll(InSelection)?))|Next|Previous)|FunctionKey)|tPagination|le(Read(No(SuchFileError|PermissionError)|CorruptFileError|In(validFileNameError|applicableStringEncodingError)|Un(supportedSchemeError|knownError))|HandlingPanel(CancelButton|OKButton)|NoSuchFileError|ErrorM(inimum|aximum)|Write(NoPermissionError|In(validFileNameError|applicableStringEncodingError)|OutOfSpaceError|Un(supportedSchemeError|knownError))|LockingError)|xedPitchFontMask)|2(1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|o(nt(Mo(noSpaceTrait|dernSerifsClass)|BoldTrait|S(ymbolicClass|criptsClass|labSerifsClass|ansSerifClass)|C(o(ndensedTrait|llectionApplicationOnlyMask)|larendonSerifsClass)|TransitionalSerifsClass|I(ntegerAdvancementsRenderingMode|talicTrait)|O(ldStyleSerifsClass|rnamentalsClass)|DefaultRenderingMode|U(nknownClass|IOptimizedTrait)|Panel(S(hadowEffectModeMask|t(andardModesMask|rikethroughEffectModeMask)|izeModeMask)|CollectionModeMask|TextColorEffectModeMask|DocumentColorEffectModeMask|UnderlineEffectModeMask|FaceModeMask|All(ModesMask|EffectsModeMask))|ExpandedTrait|VerticalTrait|F(amilyClassMask|reeformSerifsClass)|Antialiased(RenderingMode|IntegerAdvancementsRenderingMode))|cusRing(Below|Type(None|Default|Exterior)|Only|Above)|urByteGlyphPacking|rm(attingError(M(inimum|aximum))?|FeedCharacter))|8FunctionKey|unction(ExpressionType|KeyMask)|3(1FunctionKey|2FunctionKey|3FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey)|9FunctionKey|4FunctionKey|P(RevertButton|S(ize(Title|Field)|etButton)|CurrentField|Preview(Button|Field))|l(oat(ingPointSamplesBitmapFormat|Type)|agsChanged(Mask)?)|axButton|5FunctionKey|6FunctionKey)|W(heelModeColorPanel|indow(s(NTOperatingSystem|CP125(1StringEncoding|2StringEncoding|3StringEncoding|4StringEncoding|0StringEncoding)|95(InterfaceStyle|OperatingSystem))|M(iniaturizeButton|ovedEventType)|Below|CloseButton|ToolbarButton|ZoomButton|Out|DocumentIconButton|ExposedEventType|Above)|orkspaceLaunch(NewInstance|InhibitingBackgroundOnly|Default|PreferringClassic|WithoutA(ctivation|ddingToRecents)|A(sync|nd(Hide(Others)?|Print)|llowingClassicStartup))|eek(day(CalendarUnit|OrdinalCalendarUnit)|CalendarUnit)|a(ntsBidiLevels|rningAlertStyle)|r(itingDirection(RightToLeft|Natural|LeftToRight)|apCalendarComponents))|L(i(stModeMatrix|ne(Moves(Right|Down|Up|Left)|B(order|reakBy(C(harWrapping|lipping)|Truncating(Middle|Head|Tail)|WordWrapping))|S(eparatorCharacter|weep(Right|Down|Up|Left))|ToBezierPathElement|DoesntMove|arSlider)|teralSearch|kePredicateOperatorType|ghterFontAction|braryDirectory)|ocalDomainMask|e(ssThan(Comparison|OrEqualTo(Comparison|PredicateOperatorType)|PredicateOperatorType)|ft(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|T(ext(Movement|Alignment)|ab(sBezelBorder|StopType))|ArrowFunctionKey))|a(yout(RightToLeft|NotDone|CantFit|OutOfGlyphs|Done|LeftToRight)|ndscapeOrientation)|ABColorSpaceModel)|A(sc(iiWithDoubleByteEUCGlyphPacking|endingPageOrder)|n(y(Type|PredicateModifier|EventMask)|choredSearch|imation(Blocking|Nonblocking(Threaded)?|E(ffect(DisappearingItemDefault|Poof)|ase(In(Out)?|Out))|Linear)|dPredicateType)|t(Bottom|tachmentCharacter|omicWrite|Top)|SCIIStringEncoding|d(obe(GB1CharacterCollection|CNS1CharacterCollection|Japan(1CharacterCollection|2CharacterCollection)|Korea1CharacterCollection)|dTraitFontAction|minApplicationDirectory)|uto(saveOperation|Pagination)|pp(lication(SupportDirectory|D(irectory|e(fined(Mask)?|legateReply(Success|Cancel|Failure)|activatedEventType))|ActivatedEventType)|KitDefined(Mask)?)|l(ternateKeyMask|pha(ShiftKeyMask|NonpremultipliedBitmapFormat|FirstBitmapFormat)|ert(SecondButtonReturn|ThirdButtonReturn|OtherReturn|DefaultReturn|ErrorReturn|FirstButtonReturn|AlternateReturn)|l(ScrollerParts|DomainsMask|PredicateModifier|LibrariesDirectory|ApplicationsDirectory))|rgument(sWrongScriptError|EvaluationScriptError)|bove(Bottom|Top)|WTEventType))\\b' 239 | 'name': 'support.constant.cocoa' 240 | } 241 | { 242 | 'include': 'source.c' 243 | } 244 | { 245 | 'include': '#bracketed_content' 246 | } 247 | ] 248 | 'repository': 249 | 'bracketed_content': 250 | 'begin': '\\[' 251 | 'beginCaptures': 252 | '0': 253 | 'name': 'punctuation.section.scope.begin.objc' 254 | 'end': '\\]' 255 | 'endCaptures': 256 | '0': 257 | 'name': 'punctuation.section.scope.end.objc' 258 | 'name': 'meta.bracketed.objc' 259 | 'patterns': [ 260 | { 261 | 'begin': '(?=predicateWithFormat:)(?<=NSPredicate )(predicateWithFormat:)' 262 | 'beginCaptures': 263 | '1': 264 | 'name': 'support.function.any-method.objc' 265 | '2': 266 | 'name': 'punctuation.separator.arguments.objc' 267 | 'end': '(?=\\])' 268 | 'name': 'meta.function-call.predicate.objc' 269 | 'patterns': [ 270 | { 271 | 'captures': 272 | '1': 273 | 'name': 'punctuation.separator.arguments.objc' 274 | 'match': '\\bargument(Array|s)(:)' 275 | 'name': 'support.function.any-method.name-of-parameter.objc' 276 | } 277 | { 278 | 'captures': 279 | '1': 280 | 'name': 'punctuation.separator.arguments.objc' 281 | 'match': '\\b\\w+(:)' 282 | 'name': 'invalid.illegal.unknown-method.objc' 283 | } 284 | { 285 | 'begin': '@"' 286 | 'beginCaptures': 287 | '0': 288 | 'name': 'punctuation.definition.string.begin.objc' 289 | 'end': '"' 290 | 'endCaptures': 291 | '0': 292 | 'name': 'punctuation.definition.string.end.objc' 293 | 'name': 'string.quoted.double.objc' 294 | 'patterns': [ 295 | { 296 | 'match': '\\b(AND|OR|NOT|IN)\\b' 297 | 'name': 'keyword.operator.logical.predicate.cocoa' 298 | } 299 | { 300 | 'match': '\\b(ALL|ANY|SOME|NONE)\\b' 301 | 'name': 'constant.language.predicate.cocoa' 302 | } 303 | { 304 | 'match': '\\b(NULL|NIL|SELF|TRUE|YES|FALSE|NO|FIRST|LAST|SIZE)\\b' 305 | 'name': 'constant.language.predicate.cocoa' 306 | } 307 | { 308 | 'match': '\\b(MATCHES|CONTAINS|BEGINSWITH|ENDSWITH|BETWEEN)\\b' 309 | 'name': 'keyword.operator.comparison.predicate.cocoa' 310 | } 311 | { 312 | 'match': '\\bC(ASEINSENSITIVE|I)\\b' 313 | 'name': 'keyword.other.modifier.predicate.cocoa' 314 | } 315 | { 316 | 'match': '\\b(ANYKEY|SUBQUERY|CAST|TRUEPREDICATE|FALSEPREDICATE)\\b' 317 | 'name': 'keyword.other.predicate.cocoa' 318 | } 319 | { 320 | 'match': '\\\\(\\\\|[abefnrtv\'"?]|[0-3]\\d{,2}|[4-7]\\d?|x[a-zA-Z0-9]+)' 321 | 'name': 'constant.character.escape.objc' 322 | } 323 | { 324 | 'match': '\\\\.' 325 | 'name': 'invalid.illegal.unknown-escape.objc' 326 | } 327 | ] 328 | } 329 | { 330 | 'include': '#special_variables' 331 | } 332 | { 333 | 'include': '#c_functions' 334 | } 335 | { 336 | 'include': '$base' 337 | } 338 | ] 339 | } 340 | { 341 | 'begin': '(?=\\w)(?<=[\\w\\])"] )(\\w+(?:(:)|(?=\\])))' 342 | 'beginCaptures': 343 | '1': 344 | 'name': 'support.function.any-method.objc' 345 | '2': 346 | 'name': 'punctuation.separator.arguments.objc' 347 | 'end': '(?=\\])' 348 | 'name': 'meta.function-call.objc' 349 | 'patterns': [ 350 | { 351 | 'captures': 352 | '1': 353 | 'name': 'punctuation.separator.arguments.objc' 354 | 'match': '\\b\\w+(:)' 355 | 'name': 'support.function.any-method.name-of-parameter.objc' 356 | } 357 | { 358 | 'include': '#special_variables' 359 | } 360 | { 361 | 'include': '#c_functions' 362 | } 363 | { 364 | 'include': '$base' 365 | } 366 | ] 367 | } 368 | { 369 | 'include': '#special_variables' 370 | } 371 | { 372 | 'include': '#c_functions' 373 | } 374 | { 375 | 'include': '$self' 376 | } 377 | ] 378 | 'c_functions': 379 | 'patterns': [ 380 | { 381 | 'captures': 382 | '1': 383 | 'name': 'punctuation.whitespace.support.function.leading.c' 384 | '2': 385 | 'name': 'support.function.C99.c' 386 | 'match': '(\\s*)\\b(hypot(f|l)?|s(scanf|ystem|nprintf|ca(nf|lb(n(f|l)?|ln(f|l)?))|i(n(h(f|l)?|f|l)?|gn(al|bit))|tr(s(tr|pn)|nc(py|at|mp)|c(spn|hr|oll|py|at|mp)|to(imax|d|u(l(l)?|max)|k|f|l(d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(jmp|vbuf|locale|buf)|qrt(f|l)?|w(scanf|printf)|rand)|n(e(arbyint(f|l)?|xt(toward(f|l)?|after(f|l)?))|an(f|l)?)|c(s(in(h(f|l)?|f|l)?|qrt(f|l)?)|cos(h(f)?|f|l)?|imag(f|l)?|t(ime|an(h(f|l)?|f|l)?)|o(s(h(f|l)?|f|l)?|nj(f|l)?|pysign(f|l)?)|p(ow(f|l)?|roj(f|l)?)|e(il(f|l)?|xp(f|l)?)|l(o(ck|g(f|l)?)|earerr)|a(sin(h(f|l)?|f|l)?|cos(h(f|l)?|f|l)?|tan(h(f|l)?|f|l)?|lloc|rg(f|l)?|bs(f|l)?)|real(f|l)?|brt(f|l)?)|t(ime|o(upper|lower)|an(h(f|l)?|f|l)?|runc(f|l)?|gamma(f|l)?|mp(nam|file))|i(s(space|n(ormal|an)|cntrl|inf|digit|u(nordered|pper)|p(unct|rint)|finite|w(space|c(ntrl|type)|digit|upper|p(unct|rint)|lower|al(num|pha)|graph|xdigit|blank)|l(ower|ess(equal|greater)?)|al(num|pha)|gr(eater(equal)?|aph)|xdigit|blank)|logb(f|l)?|max(div|abs))|di(v|fftime)|_Exit|unget(c|wc)|p(ow(f|l)?|ut(s|c(har)?|wc(har)?)|error|rintf)|e(rf(c(f|l)?|f|l)?|x(it|p(2(f|l)?|f|l|m1(f|l)?)?))|v(s(scanf|nprintf|canf|printf|w(scanf|printf))|printf|f(scanf|printf|w(scanf|printf))|w(scanf|printf)|a_(start|copy|end|arg))|qsort|f(s(canf|e(tpos|ek))|close|tell|open|dim(f|l)?|p(classify|ut(s|c|w(s|c))|rintf)|e(holdexcept|set(e(nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(aiseexcept|ror)|get(e(nv|xceptflag)|round))|flush|w(scanf|ide|printf|rite)|loor(f|l)?|abs(f|l)?|get(s|c|pos|w(s|c))|re(open|e|ad|xp(f|l)?)|m(in(f|l)?|od(f|l)?|a(f|l|x(f|l)?)?))|l(d(iv|exp(f|l)?)|o(ngjmp|cal(time|econv)|g(1(p(f|l)?|0(f|l)?)|2(f|l)?|f|l|b(f|l)?)?)|abs|l(div|abs|r(int(f|l)?|ound(f|l)?))|r(int(f|l)?|ound(f|l)?)|gamma(f|l)?)|w(scanf|c(s(s(tr|pn)|nc(py|at|mp)|c(spn|hr|oll|py|at|mp)|to(imax|d|u(l(l)?|max)|k|f|l(d|l)?|mbs)|pbrk|ftime|len|r(chr|tombs)|xfrm)|to(b|mb)|rtomb)|printf|mem(set|c(hr|py|mp)|move))|a(s(sert|ctime|in(h(f|l)?|f|l)?)|cos(h(f|l)?|f|l)?|t(o(i|f|l(l)?)|exit|an(h(f|l)?|2(f|l)?|f|l)?)|b(s|ort))|g(et(s|c(har)?|env|wc(har)?)|mtime)|r(int(f|l)?|ound(f|l)?|e(name|alloc|wind|m(ove|quo(f|l)?|ainder(f|l)?))|a(nd|ise))|b(search|towc)|m(odf(f|l)?|em(set|c(hr|py|mp)|move)|ktime|alloc|b(s(init|towcs|rtowcs)|towc|len|r(towc|len))))\\b' 387 | } 388 | { 389 | 'captures': 390 | '1': 391 | 'name': 'punctuation.whitespace.function-call.leading.c' 392 | '2': 393 | 'name': 'support.function.any-method.c' 394 | '3': 395 | 'name': 'punctuation.definition.parameters.c' 396 | 'match': '(?x) (?: (?= \\s ) (?:(?<=else|new|return) | (?\\\\\\s*\\n)' 427 | 'name': 'punctuation.separator.continuation.objc' 428 | } 429 | ] 430 | } 431 | ] 432 | } 433 | ] 434 | 'disabled': 435 | 'begin': '^\\s*#\\s*if(n?def)?\\b.*$' 436 | 'comment': 'eat nested preprocessor if(def)s' 437 | 'end': '^\\s*#\\s*endif\\b.*$' 438 | 'patterns': [ 439 | { 440 | 'include': '#disabled' 441 | } 442 | { 443 | 'include': '#pragma-mark' 444 | } 445 | ] 446 | 'implementation_innards': 447 | 'patterns': [ 448 | { 449 | 'include': '#preprocessor-rule-enabled-implementation' 450 | } 451 | { 452 | 'include': '#preprocessor-rule-disabled-implementation' 453 | } 454 | { 455 | 'include': '#preprocessor-rule-other-implementation' 456 | } 457 | { 458 | 'include': '#property_directive' 459 | } 460 | { 461 | 'include': '#special_variables' 462 | } 463 | { 464 | 'include': '#method_super' 465 | } 466 | { 467 | 'include': '$base' 468 | } 469 | ] 470 | 'interface_innards': 471 | 'patterns': [ 472 | { 473 | 'include': '#preprocessor-rule-enabled-interface' 474 | } 475 | { 476 | 'include': '#preprocessor-rule-disabled-interface' 477 | } 478 | { 479 | 'include': '#preprocessor-rule-other-interface' 480 | } 481 | { 482 | 'include': '#properties' 483 | } 484 | { 485 | 'include': '#protocol_list' 486 | } 487 | { 488 | 'include': '#method' 489 | } 490 | { 491 | 'include': '$base' 492 | } 493 | ] 494 | 'method': 495 | 'begin': '^(-|\\+)\\s*' 496 | 'end': '(?=\\{|#)|;' 497 | 'name': 'meta.function.objc' 498 | 'patterns': [ 499 | { 500 | 'begin': '(\\()' 501 | 'beginCaptures': 502 | '1': 503 | 'name': 'punctuation.definition.type.begin.objc' 504 | 'end': '(\\))\\s*(\\w+\\b)' 505 | 'endCaptures': 506 | '1': 507 | 'name': 'punctuation.definition.type.end.objc' 508 | '2': 509 | 'name': 'entity.name.function.objc' 510 | 'name': 'meta.return-type.objc' 511 | 'patterns': [ 512 | { 513 | 'include': '#protocol_list' 514 | } 515 | { 516 | 'include': '#protocol_type_qualifier' 517 | } 518 | { 519 | 'include': '$base' 520 | } 521 | ] 522 | } 523 | { 524 | 'match': '\\b\\w+(?=:)' 525 | 'name': 'entity.name.function.name-of-parameter.objc' 526 | } 527 | { 528 | 'begin': '((:))\\s*(\\()' 529 | 'beginCaptures': 530 | '1': 531 | 'name': 'entity.name.function.name-of-parameter.objc' 532 | '2': 533 | 'name': 'punctuation.separator.arguments.objc' 534 | '3': 535 | 'name': 'punctuation.definition.type.begin.objc' 536 | 'end': '(\\))\\s*(\\w+\\b)?' 537 | 'endCaptures': 538 | '1': 539 | 'name': 'punctuation.definition.type.end.objc' 540 | '2': 541 | 'name': 'variable.parameter.function.objc' 542 | 'name': 'meta.argument-type.objc' 543 | 'patterns': [ 544 | { 545 | 'include': '#protocol_list' 546 | } 547 | { 548 | 'include': '#protocol_type_qualifier' 549 | } 550 | { 551 | 'include': '$base' 552 | } 553 | ] 554 | } 555 | { 556 | 'include': '#comment' 557 | } 558 | ] 559 | 'method_super': 560 | 'begin': '^(?=-|\\+)' 561 | 'end': '(?<=\\})|(?=#)' 562 | 'name': 'meta.function-with-body.objc' 563 | 'patterns': [ 564 | { 565 | 'include': '#method' 566 | } 567 | { 568 | 'include': '$base' 569 | } 570 | ] 571 | 'pragma-mark': 572 | 'captures': 573 | '1': 574 | 'name': 'meta.preprocessor.c' 575 | '2': 576 | 'name': 'keyword.control.import.pragma.c' 577 | '3': 578 | 'name': 'meta.toc-list.pragma-mark.c' 579 | 'match': '^\\s*(#\\s*(pragma\\s+mark)\\s+(.*))' 580 | 'name': 'meta.section' 581 | 'preprocessor-rule-disabled-implementation': 582 | 'begin': '^\\s*(#(if)\\s+(0)\\b).*' 583 | 'captures': 584 | '1': 585 | 'name': 'meta.preprocessor.c' 586 | '2': 587 | 'name': 'keyword.control.import.if.c' 588 | '3': 589 | 'name': 'constant.numeric.preprocessor.c' 590 | 'end': '^\\s*(#\\s*(endif)\\b.*?(?:(?=(?://|/\\*))|$))' 591 | 'patterns': [ 592 | { 593 | 'begin': '^\\s*(#\\s*(else)\\b)' 594 | 'captures': 595 | '1': 596 | 'name': 'meta.preprocessor.c' 597 | '2': 598 | 'name': 'keyword.control.import.else.c' 599 | 'end': '(?=^\\s*#\\s*endif\\b.*?(?:(?=(?://|/\\*))|$))' 600 | 'patterns': [ 601 | { 602 | 'include': '#interface_innards' 603 | } 604 | ] 605 | } 606 | { 607 | 'begin': '' 608 | 'end': '(?=^\\s*#\\s*(else|endif)\\b.*?(?:(?=(?://|/\\*))|$))' 609 | 'name': 'comment.block.preprocessor.if-branch.c' 610 | 'patterns': [ 611 | { 612 | 'include': '#disabled' 613 | } 614 | { 615 | 'include': '#pragma-mark' 616 | } 617 | ] 618 | } 619 | ] 620 | 'preprocessor-rule-disabled-interface': 621 | 'begin': '^\\s*(#(if)\\s+(0)\\b).*' 622 | 'captures': 623 | '1': 624 | 'name': 'meta.preprocessor.c' 625 | '2': 626 | 'name': 'keyword.control.import.if.c' 627 | '3': 628 | 'name': 'constant.numeric.preprocessor.c' 629 | 'end': '^\\s*(#\\s*(endif)\\b.*?(?:(?=(?://|/\\*))|$))' 630 | 'patterns': [ 631 | { 632 | 'begin': '^\\s*(#\\s*(else)\\b)' 633 | 'captures': 634 | '1': 635 | 'name': 'meta.preprocessor.c' 636 | '2': 637 | 'name': 'keyword.control.import.else.c' 638 | 'end': '(?=^\\s*#\\s*endif\\b.*?(?:(?=(?://|/\\*))|$))' 639 | 'patterns': [ 640 | { 641 | 'include': '#interface_innards' 642 | } 643 | ] 644 | } 645 | { 646 | 'begin': '' 647 | 'end': '(?=^\\s*#\\s*(else|endif)\\b.*?(?:(?=(?://|/\\*))|$))' 648 | 'name': 'comment.block.preprocessor.if-branch.c' 649 | 'patterns': [ 650 | { 651 | 'include': '#disabled' 652 | } 653 | { 654 | 'include': '#pragma-mark' 655 | } 656 | ] 657 | } 658 | ] 659 | 'preprocessor-rule-enabled-implementation': 660 | 'begin': '^\\s*(#(if)\\s+(0*1)\\b)' 661 | 'captures': 662 | '1': 663 | 'name': 'meta.preprocessor.c' 664 | '2': 665 | 'name': 'keyword.control.import.if.c' 666 | '3': 667 | 'name': 'constant.numeric.preprocessor.c' 668 | 'end': '^\\s*(#\\s*(endif)\\b.*?(?:(?=(?://|/\\*))|$))' 669 | 'patterns': [ 670 | { 671 | 'begin': '^\\s*(#\\s*(else)\\b).*' 672 | 'captures': 673 | '1': 674 | 'name': 'meta.preprocessor.c' 675 | '2': 676 | 'name': 'keyword.control.import.else.c' 677 | 'contentName': 'comment.block.preprocessor.else-branch.c' 678 | 'end': '(?=^\\s*#\\s*endif\\b.*?(?:(?=(?://|/\\*))|$))' 679 | 'patterns': [ 680 | { 681 | 'include': '#disabled' 682 | } 683 | { 684 | 'include': '#pragma-mark' 685 | } 686 | ] 687 | } 688 | { 689 | 'begin': '' 690 | 'end': '(?=^\\s*#\\s*(else|endif)\\b.*?(?:(?=(?://|/\\*))|$))' 691 | 'patterns': [ 692 | { 693 | 'include': '#implementation_innards' 694 | } 695 | ] 696 | } 697 | ] 698 | 'preprocessor-rule-enabled-interface': 699 | 'begin': '^\\s*(#(if)\\s+(0*1)\\b)' 700 | 'captures': 701 | '1': 702 | 'name': 'meta.preprocessor.c' 703 | '2': 704 | 'name': 'keyword.control.import.if.c' 705 | '3': 706 | 'name': 'constant.numeric.preprocessor.c' 707 | 'end': '^\\s*(#\\s*(endif)\\b.*?(?:(?=(?://|/\\*))|$))' 708 | 'patterns': [ 709 | { 710 | 'begin': '^\\s*(#\\s*(else)\\b).*' 711 | 'captures': 712 | '1': 713 | 'name': 'meta.preprocessor.c' 714 | '2': 715 | 'name': 'keyword.control.import.else.c' 716 | 'contentName': 'comment.block.preprocessor.else-branch.c' 717 | 'end': '(?=^\\s*#\\s*endif\\b.*?(?:(?=(?://|/\\*))|$))' 718 | 'patterns': [ 719 | { 720 | 'include': '#disabled' 721 | } 722 | { 723 | 'include': '#pragma-mark' 724 | } 725 | ] 726 | } 727 | { 728 | 'begin': '' 729 | 'end': '(?=^\\s*#\\s*(else|endif)\\b.*?(?:(?=(?://|/\\*))|$))' 730 | 'patterns': [ 731 | { 732 | 'include': '#interface_innards' 733 | } 734 | ] 735 | } 736 | ] 737 | 'preprocessor-rule-other-implementation': 738 | 'begin': '^\\s*(#\\s*(if(n?def)?)\\b.*?(?:(?=(?://|/\\*))|$))' 739 | 'captures': 740 | '1': 741 | 'name': 'meta.preprocessor.c' 742 | '2': 743 | 'name': 'keyword.control.import.c' 744 | 'end': '^\\s*(#\\s*(endif)\\b).*?(?:(?=(?://|/\\*))|$)' 745 | 'patterns': [ 746 | { 747 | 'include': '#implementation_innards' 748 | } 749 | ] 750 | 'preprocessor-rule-other-interface': 751 | 'begin': '^\\s*(#\\s*(if(n?def)?)\\b.*?(?:(?=(?://|/\\*))|$))' 752 | 'captures': 753 | '1': 754 | 'name': 'meta.preprocessor.c' 755 | '2': 756 | 'name': 'keyword.control.import.c' 757 | 'end': '^\\s*(#\\s*(endif)\\b).*?(?:(?=(?://|/\\*))|$)' 758 | 'patterns': [ 759 | { 760 | 'include': '#interface_innards' 761 | } 762 | ] 763 | 'properties': 764 | 'patterns': [ 765 | { 766 | 'begin': '((@)property)\\s*(\\()' 767 | 'beginCaptures': 768 | '1': 769 | 'name': 'keyword.other.property.objc' 770 | '2': 771 | 'name': 'punctuation.definition.keyword.objc' 772 | '3': 773 | 'name': 'punctuation.section.scope.begin.objc' 774 | 'end': '(\\))' 775 | 'endCaptures': 776 | '1': 777 | 'name': 'punctuation.section.scope.end.objc' 778 | 'name': 'meta.property-with-attributes.objc' 779 | 'patterns': [ 780 | { 781 | 'match': '\\b(getter|setter|readonly|readwrite|assign|retain|copy|nonatomic|strong|weak)\\b' 782 | 'name': 'keyword.other.property.attribute' 783 | } 784 | ] 785 | } 786 | { 787 | 'captures': 788 | '1': 789 | 'name': 'keyword.other.property.objc' 790 | '2': 791 | 'name': 'punctuation.definition.keyword.objc' 792 | 'match': '((@)property)\\b' 793 | 'name': 'meta.property.objc' 794 | } 795 | ] 796 | 'property_directive': 797 | 'captures': 798 | '1': 799 | 'name': 'punctuation.definition.keyword.objc' 800 | 'match': '(@)(dynamic|synthesize)\\b' 801 | 'name': 'keyword.other.property.directive.objc' 802 | 'protocol_list': 803 | 'begin': '(<)' 804 | 'beginCaptures': 805 | '1': 806 | 'name': 'punctuation.section.scope.begin.objc' 807 | 'end': '(>)' 808 | 'endCaptures': 809 | '1': 810 | 'name': 'punctuation.section.scope.end.objc' 811 | 'name': 'meta.protocol-list.objc' 812 | 'patterns': [ 813 | { 814 | 'match': '\\bNS(GlyphStorage|M(utableCopying|enuItem)|C(hangeSpelling|o(ding|pying|lorPicking(Custom|Default)))|T(oolbarItemValidations|ext(Input|AttachmentCell))|I(nputServ(iceProvider|erMouseTracker)|gnoreMisspelledWords)|Obj(CTypeSerializationCallBack|ect)|D(ecimalNumberBehaviors|raggingInfo)|U(serInterfaceValidations|RL(HandleClient|DownloadDelegate|ProtocolClient|AuthenticationChallengeSender))|Validated(ToobarItem|UserInterfaceItem)|Locking)\\b' 815 | 'name': 'support.other.protocol.objc' 816 | } 817 | ] 818 | 'protocol_type_qualifier': 819 | 'match': '\\b(in|out|inout|oneway|bycopy|byref)\\b' 820 | 'name': 'storage.modifier.protocol.objc' 821 | 'special_variables': 822 | 'patterns': [ 823 | { 824 | 'match': '\\b_cmd\\b' 825 | 'name': 'variable.other.selector.objc' 826 | } 827 | { 828 | 'match': '\\b(self|super)\\b' 829 | 'name': 'variable.language.objc' 830 | } 831 | ] 832 | -------------------------------------------------------------------------------- /grammars/strings file.cson: -------------------------------------------------------------------------------- 1 | 'scopeName': 'source.strings' 2 | 'fileTypes': [ 3 | 'strings' 4 | ] 5 | 'name': 'Strings File (Objective-C)' 6 | 'patterns': [ 7 | { 8 | 'begin': '/\\*' 9 | 'captures': 10 | '0': 11 | 'name': 'punctuation.definition.comment.strings' 12 | 'end': '\\*/' 13 | 'name': 'comment.block.strings' 14 | } 15 | { 16 | 'begin': '"' 17 | 'beginCaptures': 18 | '0': 19 | 'name': 'punctuation.definition.string.begin.strings' 20 | 'end': '"' 21 | 'endCaptures': 22 | '0': 23 | 'name': 'punctuation.definition.string.end.strings' 24 | 'name': 'string.quoted.double.strings' 25 | 'patterns': [ 26 | { 27 | 'match': '\\\\(\\\\|[abefnrtv\'"?]|[0-3]\\d{,2}|[4-7]\\d?|x[a-zA-Z0-9]+)' 28 | 'name': 'constant.character.escape.strings' 29 | } 30 | { 31 | 'match': '\\\\.' 32 | 'name': 'invalid.illegal.unknown-escape.strings' 33 | } 34 | { 35 | 'match': '(?x)%\n\t\t\t\t\t\t(\\d+\\$)? # field (argument #)\n\t\t\t\t\t\t[#0\\- +\']* # flags\n\t\t\t\t\t\t[,;:_]? # separator character (AltiVec)\n\t\t\t\t\t\t((-?\\d+)|\\*(-?\\d+\\$)?)? # minimum field width\n\t\t\t\t\t\t(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? # precision\n\t\t\t\t\t\t(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\n\t\t\t\t\t\t[@diouxXDOUeEfFgGaACcSspn%] # conversion type\n\t\t\t\t\t' 36 | 'name': 'constant.other.placeholder.strings' 37 | } 38 | { 39 | 'match': '%' 40 | 'name': 'invalid.illegal.placeholder.c' 41 | } 42 | ] 43 | } 44 | ] 45 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "language-objective-c", 3 | "version": "0.16.0", 4 | "description": "Objective-C language support in Atom", 5 | "engines": { 6 | "atom": "*", 7 | "node": "*" 8 | }, 9 | "homepage": "http://atom.github.io/language-objective-c", 10 | "repository": { 11 | "type": "git", 12 | "url": "https://github.com/atom/language-objective-c.git" 13 | }, 14 | "license": "MIT", 15 | "bugs": { 16 | "url": "https://github.com/atom/language-objective-c/issues" 17 | }, 18 | "devDependencies": { 19 | "coffeelint": "^1.10.1" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /settings/language-objective-c.cson: -------------------------------------------------------------------------------- 1 | '.source.objc, .source.objcpp': 2 | 'editor': 3 | 'completions': [ 4 | 'retain' 5 | 'release' 6 | 'autorelease' 7 | 'description' 8 | 'stringWithFormat:' 9 | 'componentsSeparatedByString:' 10 | 'componentsJoinedByString:' 11 | 'isEqualToString:' 12 | 'UTF8String' 13 | 'lastPathComponent' 14 | 'pathExtension' 15 | 'stringByAbbreviatingWithTildeInPath' 16 | 'stringByAppendingPathComponent:' 17 | 'stringByAppendingPathExtension:' 18 | 'stringByDeletingLastPathComponent' 19 | 'stringByDeletingPathExtension' 20 | 'stringByExpandingTildeInPath' 21 | 'stringByResolvingSymlinksInPath' 22 | 'stringByStandardizingPath' 23 | 'valueForKey:' 24 | 'valueForKeyPath:' 25 | 'setValue:' 26 | 'forKey:' 27 | 'forKeyPath:' 28 | 'NSArray' 29 | 'NSDictionary' 30 | 'NSMutableArray' 31 | 'NSMutableDictionary' 32 | 'NSMutableString' 33 | 'NSString' 34 | ] 35 | '.source.objcpp, .source.objc': 36 | 'editor': 37 | 'foldEndPattern': '(?': 3 | 'prefix': 'Imp' 4 | 'body': '#import <${1:Cocoa/Cocoa.h}>' 5 | '#import ""': 6 | 'prefix': 'imp' 7 | 'body': '#import "$1"' 8 | 'NSArray': 9 | 'prefix': 'array' 10 | 'body': 'NSMutableArray *${1:array} = [NSMutableArray array];' 11 | 'NSDictionary': 12 | 'prefix': 'dict' 13 | 'body': 'NSMutableDictionary *${1:dict} = [NSMutableDictionary dictionary];' 14 | '@selector(…)': 15 | 'prefix': 'sel' 16 | 'body': '@selector(${1:method}:)' 17 | 'Class Interface': 18 | 'prefix': 'clh' 19 | 'body': '@interface $1 : ${2:NSObject}\n{$3\n}\n$0\n@end' 20 | 'CoreData': 21 | 'prefix': 'cdacc' 22 | 'body': '- (${1:id})${2:attribute}\n{\n\t[self willAccessValueForKey:@"${2: attribute}"];\n\t${1:id} value = [self primitiveValueForKey:@"${2: attribute}"];\n\t[self didAccessValueForKey:@"${2: attribute}"];\n\treturn value;\n}\n\n- (void)set${2/./\\u$0/}:($1)aValue\n{\n\t[self willChangeValueForKey:@"${2: attribute}"];\n\t[self setPrimitiveValue:aValue forKey:@"${2: attribute}"];\n\t[self didChangeValueForKey:@"${2: attribute}"];\n}' 23 | 'Detach New NSThread': 24 | 'prefix': 'thread' 25 | 'body': '[NSThread detachNewThreadSelector:@selector(${1:method}:) toTarget:${2:aTarget} withObject:${3:anArgument}]' 26 | 'Bind Property to Key Path of Object': 27 | 'prefix': 'bind' 28 | 'body': 'bind:@"${2:binding}" toObject:${3:observableController} withKeyPath:@"${4:keyPath}" options:${5:nil}' 29 | 'Lock Focus': 30 | 'prefix': 'focus' 31 | 'body': '[self lockFocus];\n$0\n[self unlockFocus];' 32 | 'Autorelease Pool': 33 | 'prefix': 'pool' 34 | 'body': '@autoreleasepool {\n $0\n}' 35 | 'NSBezierPath': 36 | 'prefix': 'bez' 37 | 'body': 'NSBezierPath *${1:path} = [NSBezierPath bezierPath];\n$0' 38 | 'NSString With Format': 39 | 'prefix': 'format' 40 | 'body': '[NSString stringWithFormat:@"$1", $2]$0' 41 | 'Read Defaults Value': 42 | 'prefix': 'getprefs' 43 | 'body': '[[NSUserDefaults standardUserDefaults] objectForKey:${1:key}];' 44 | 'Save and Restore Graphics Context': 45 | 'prefix': 'gsave' 46 | 'body': '[NSGraphicsContext saveGraphicsState];\n$0\n[NSGraphicsContext restoreGraphicsState];\n' 47 | 'Write Defaults Value': 48 | 'prefix': 'setprefs' 49 | 'body': '[[NSUserDefaults standardUserDefaults] setObject:${1:object} forKey:${2:key}];' 50 | 'for(… in …)': 51 | 'prefix': 'forin' 52 | 'body': 'for(${1:id} ${2:item} in ${3:array})\n{\n\t$0\n}' 53 | -------------------------------------------------------------------------------- /spec/objective-c-spec.coffee: -------------------------------------------------------------------------------- 1 | describe 'Language-Objective-C', -> 2 | grammar = null 3 | 4 | beforeEach -> 5 | waitsForPromise -> 6 | atom.packages.activatePackage('language-objective-c') 7 | 8 | waitsForPromise -> 9 | atom.packages.activatePackage('language-c') 10 | 11 | describe "Objective-C", -> 12 | beforeEach -> 13 | grammar = atom.grammars.grammarForScopeName('source.objc') 14 | 15 | it 'parses the grammar', -> 16 | expect(grammar).toBeTruthy() 17 | expect(grammar.scopeName).toBe 'source.objc' 18 | 19 | it 'tokenizes classes', -> 20 | lines = grammar.tokenizeLines ''' 21 | @interface Thing 22 | @property (nonatomic, strong) NSArray *items; 23 | @end 24 | ''' 25 | 26 | expect(lines[0][1]).toEqual value: 'interface', scopes: ["source.objc", "meta.interface-or-protocol.objc", "storage.type.objc"] 27 | expect(lines[0][3]).toEqual value: 'Thing', scopes: ["source.objc", "meta.interface-or-protocol.objc", "entity.name.type.objc"] 28 | 29 | describe "Objective-C++", -> 30 | beforeEach -> 31 | grammar = atom.grammars.grammarForScopeName('source.objcpp') 32 | 33 | it 'parses the grammar', -> 34 | expect(grammar).toBeTruthy() 35 | expect(grammar.scopeName).toBe 'source.objcpp' 36 | 37 | it 'tokenizes classes', -> 38 | lines = grammar.tokenizeLines ''' 39 | class Thing1 { 40 | vector items; 41 | }; 42 | 43 | @interface Thing2 44 | @property (nonatomic, strong) NSArray *items; 45 | @end 46 | ''' 47 | 48 | expect(lines[0][2].value).toBe 'Thing1' 49 | expect(lines[4][3]).toEqual value: 'Thing2', scopes: ["source.objcpp", "meta.interface-or-protocol.objc", "entity.name.type.objc"] 50 | --------------------------------------------------------------------------------