Skip to content

Commit 50d3a1e

Browse files
authored
enh(objc) add scopes type and variable.language (#3499)
1 parent f2c6652 commit 50d3a1e

File tree

4 files changed

+32
-24
lines changed

4 files changed

+32
-24
lines changed

CHANGES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ New Grammars:
1111

1212
Grammars:
1313

14+
- enh(objectivec) add `type` and `variable.language` scopes [Josh Goebel][]
1415
- enh(xml) support processing instructions (#3492) [Josh Goebel][]
1516
- enh(ruby ) better support multi-line IRB prompts
1617
- enh(bash) improved keyword `$pattern` (numbers allowed in command names) [Martin Mattel][]

src/languages/objectivec.js

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,46 +12,51 @@ export default function(hljs) {
1212
begin: '\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+'
1313
};
1414
const IDENTIFIER_RE = /[a-zA-Z@][a-zA-Z0-9_]*/;
15-
const KWS = [
15+
const TYPES = [
1616
"int",
1717
"float",
18-
"while",
1918
"char",
19+
"unsigned",
20+
"signed",
21+
"short",
22+
"long",
23+
"double",
24+
"wchar_t",
25+
"unichar",
26+
"void",
27+
"bool",
28+
"BOOL",
29+
"id|0",
30+
"_Bool"
31+
];
32+
const KWS = [
33+
"while",
2034
"export",
2135
"sizeof",
2236
"typedef",
2337
"const",
2438
"struct",
2539
"for",
2640
"union",
27-
"unsigned",
28-
"long",
2941
"volatile",
3042
"static",
31-
"bool",
3243
"mutable",
3344
"if",
3445
"do",
3546
"return",
3647
"goto",
37-
"void",
3848
"enum",
3949
"else",
4050
"break",
4151
"extern",
4252
"asm",
4353
"case",
44-
"short",
4554
"default",
46-
"double",
4755
"register",
4856
"explicit",
49-
"signed",
5057
"typename",
51-
"this",
5258
"switch",
5359
"continue",
54-
"wchar_t",
5560
"inline",
5661
"readonly",
5762
"assign",
@@ -61,8 +66,6 @@ export default function(hljs) {
6166
"id",
6267
"typeof",
6368
"nonatomic",
64-
"super",
65-
"unichar",
6669
"IBOutlet",
6770
"IBAction",
6871
"strong",
@@ -153,18 +156,22 @@ export default function(hljs) {
153156
"NULL"
154157
];
155158
const BUILT_INS = [
156-
"BOOL",
157159
"dispatch_once_t",
158160
"dispatch_queue_t",
159161
"dispatch_sync",
160162
"dispatch_async",
161163
"dispatch_once"
162164
];
163165
const KEYWORDS = {
166+
"variable.language": [
167+
"this",
168+
"super"
169+
],
164170
$pattern: IDENTIFIER_RE,
165171
keyword: KWS,
166172
literal: LITERALS,
167-
built_in: BUILT_INS
173+
built_in: BUILT_INS,
174+
type: TYPES
168175
};
169176
const CLASS_KEYWORDS = {
170177
$pattern: IDENTIFIER_RE,

test/markup/objectivec/preprocessor.expect.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
<span class="hljs-meta">#<span class="hljs-keyword">define</span> foo 1&lt;&lt;16</span>
33

44
<span class="hljs-meta">#<span class="hljs-keyword">ifdef</span> DEBUG</span>
5-
TYPE1 foo(<span class="hljs-keyword">void</span>)
5+
TYPE1 foo(<span class="hljs-type">void</span>)
66
<span class="hljs-meta">#<span class="hljs-keyword">else</span></span>
7-
<span class="hljs-keyword">int</span> foo(<span class="hljs-keyword">void</span>)
7+
<span class="hljs-type">int</span> foo(<span class="hljs-type">void</span>)
88
<span class="hljs-meta">#<span class="hljs-keyword">endif</span></span>
99
{ }
1010

@@ -15,5 +15,5 @@ TYPE1 foo(<span class="hljs-keyword">void</span>)
1515
<span class="hljs-meta">#<span class="hljs-keyword">if</span> MACRO_WITH_STRING_ARG(<span class="hljs-string">&quot;hello \&quot;world\&quot;&quot;</span>)</span>
1616
<span class="hljs-meta">#<span class="hljs-keyword">elif</span> MULTI_LINE <span class="hljs-comment">/* comment */</span> &lt; \
1717
EXPRESSION</span>
18-
<span class="hljs-keyword">int</span> bar;
18+
<span class="hljs-type">int</span> bar;
1919
<span class="hljs-meta">#<span class="hljs-keyword">endif</span> <span class="hljs-comment">// comment</span></span>
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
<span class="hljs-keyword">const</span> <span class="hljs-keyword">char</span> *str = <span class="hljs-string">&quot;Regular \&quot;quoted\&quot; string\n&quot;</span>;
1+
<span class="hljs-keyword">const</span> <span class="hljs-type">char</span> *str = <span class="hljs-string">&quot;Regular \&quot;quoted\&quot; string\n&quot;</span>;
22
<span class="hljs-built_in">NSString</span> *nsstr = <span class="hljs-string">@&quot;Obj-C \&quot;quoted\&quot; string\n&quot;</span>;
3-
<span class="hljs-keyword">char</span> c = <span class="hljs-string">&#x27;c&#x27;</span>;
4-
<span class="hljs-keyword">char</span> c2 = <span class="hljs-string">&#x27;&quot;&#x27;</span>;
5-
<span class="hljs-keyword">char</span> c3 = <span class="hljs-string">&#x27;\&#x27;&#x27;</span>;
6-
<span class="hljs-keyword">char</span> c4 = <span class="hljs-string">&#x27;\n&#x27;</span>;
7-
<span class="hljs-keyword">int</span> multibyte_char = <span class="hljs-string">&#x27;abcd&#x27;</span>;
3+
<span class="hljs-type">char</span> c = <span class="hljs-string">&#x27;c&#x27;</span>;
4+
<span class="hljs-type">char</span> c2 = <span class="hljs-string">&#x27;&quot;&#x27;</span>;
5+
<span class="hljs-type">char</span> c3 = <span class="hljs-string">&#x27;\&#x27;&#x27;</span>;
6+
<span class="hljs-type">char</span> c4 = <span class="hljs-string">&#x27;\n&#x27;</span>;
7+
<span class="hljs-type">int</span> multibyte_char = <span class="hljs-string">&#x27;abcd&#x27;</span>;

0 commit comments

Comments
 (0)