Skip to content

Commit 33016b3

Browse files
committed
(chore) more multi-match/beforeMatch/title clean ups
1 parent d3a2f5d commit 33016b3

File tree

8 files changed

+193
-163
lines changed

8 files changed

+193
-163
lines changed

docs/css-classes-reference.rst

+138-135
Large diffs are not rendered by default.

src/highlight.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ const HLJS = function(hljs) {
252252
*/
253253
function emitMultiClass(mode, match) {
254254
let i = 1;
255-
while (match[i]) {
255+
while (match[i] !== undefined) {
256256
const klass = language.classNameAliases[mode.className[i]] || mode.className[i];
257257
const text = match[i];
258258
if (klass) { emitter.addKeyword(text, klass); } else {

src/languages/actionscript.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -114,13 +114,12 @@ export default function(hljs) {
114114
keywords: { 'meta-keyword': 'import include' }
115115
},
116116
{
117-
className: 'function',
118117
beginKeywords: 'function',
119118
end: /[{;]/,
120119
excludeEnd: true,
121120
illegal: /\S/,
122121
contains: [
123-
hljs.TITLE_MODE,
122+
hljs.inherit(hljs.TITLE_MODE, { className: "title.function" }),
124123
{
125124
className: 'params',
126125
begin: /\(/,

src/languages/arcade.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -135,12 +135,12 @@ export default function(hljs) {
135135
relevance: 0
136136
},
137137
{
138-
className: 'function',
139138
beginKeywords: 'function',
140139
end: /\{/,
141140
excludeEnd: true,
142141
contains: [
143142
hljs.inherit(hljs.TITLE_MODE, {
143+
className: "title.function",
144144
begin: IDENT_RE
145145
}),
146146
{

src/languages/autoit.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export default function(hljs) {
2929
"Tidy_On",
3030
"Tidy_Parameters"
3131
]
32-
32+
3333
const LITERAL = 'True False And Null Not Or Default';
3434

3535
const BUILT_IN
@@ -140,12 +140,11 @@ export default function(hljs) {
140140
};
141141

142142
const FUNCTION = {
143-
className: 'function',
144143
beginKeywords: 'Func',
145144
end: '$',
146145
illegal: '\\$|\\[|%',
147146
contains: [
148-
hljs.UNDERSCORE_TITLE_MODE,
147+
hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, { className: "title.function" }),
149148
{
150149
className: 'params',
151150
begin: '\\(',

src/languages/c.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,6 @@ export default function(hljs) {
235235
};
236236

237237
const FUNCTION_DECLARATION = {
238-
className: 'function',
239238
begin: '(' + FUNCTION_TYPE_RE + '[\\*&\\s]+)+' + FUNCTION_TITLE,
240239
returnBegin: true,
241240
end: /[{;=]/,
@@ -251,7 +250,9 @@ export default function(hljs) {
251250
{
252251
begin: FUNCTION_TITLE,
253252
returnBegin: true,
254-
contains: [ TITLE_MODE ],
253+
contains: [
254+
hljs.inherit(TITLE_MODE, { className: "title.function" })
255+
],
255256
relevance: 0
256257
},
257258
{

src/languages/java.js

+30-15
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ function recurRegex(re, substitution, depth) {
3333
export default function(hljs) {
3434
const JAVA_IDENT_RE = '[\u00C0-\u02B8a-zA-Z_$][\u00C0-\u02B8a-zA-Z_$0-9]*';
3535
const GENERIC_IDENT_RE = JAVA_IDENT_RE +
36-
recurRegex('(<' + JAVA_IDENT_RE + '~~~(\\s*,\\s*' + JAVA_IDENT_RE + '~~~)*>)?', /~~~/g, 2);
36+
recurRegex('(?:<' + JAVA_IDENT_RE + '~~~(?:\\s*,\\s*' + JAVA_IDENT_RE + '~~~)*>)?', /~~~/g, 2);
3737
const MAIN_KEYWORDS = [
3838
'synchronized',
3939
'abstract',
@@ -57,15 +57,13 @@ export default function(hljs) {
5757
'transient',
5858
'catch',
5959
'instanceof',
60-
'super',
6160
'volatile',
6261
'case',
6362
'assert',
6463
'package',
6564
'default',
6665
'public',
6766
'try',
68-
'this',
6967
'switch',
7068
'continue',
7169
'throws',
@@ -78,6 +76,11 @@ export default function(hljs) {
7876
'do'
7977
];
8078

79+
const BUILT_INS = [
80+
'super',
81+
'this'
82+
];
83+
8184
const LITERALS = [
8285
'false',
8386
'true',
@@ -98,7 +101,8 @@ export default function(hljs) {
98101
const KEYWORDS = {
99102
keyword: MAIN_KEYWORDS,
100103
literal: LITERALS,
101-
type: TYPES
104+
type: TYPES,
105+
built_in: BUILT_INS
102106
};
103107

104108
const ANNOTATION = {
@@ -164,6 +168,20 @@ export default function(hljs) {
164168
match: JAVA_IDENT_RE,
165169
className: "title.class"
166170
},
171+
{
172+
begin: [
173+
JAVA_IDENT_RE,
174+
/\s+/,
175+
JAVA_IDENT_RE,
176+
/\s+/,
177+
/=/
178+
],
179+
className: {
180+
1: "type",
181+
3: "variable",
182+
5: "operator"
183+
}
184+
},
167185
{
168186
begin: [
169187
/record/,
@@ -187,19 +205,16 @@ export default function(hljs) {
187205
relevance: 0
188206
},
189207
{
190-
className: 'function',
191-
begin: '(' + GENERIC_IDENT_RE + '\\s+)' + hljs.UNDERSCORE_IDENT_RE + '\\s*\\(',
192-
returnBegin: true,
193-
end: /[{;=]/,
194-
excludeEnd: true,
208+
begin: [
209+
'(?:' + GENERIC_IDENT_RE + '\\s+)',
210+
hljs.UNDERSCORE_IDENT_RE,
211+
/\s*(?=\()/
212+
],
213+
className: {
214+
2: "title.function"
215+
},
195216
keywords: KEYWORDS,
196217
contains: [
197-
{
198-
begin: hljs.UNDERSCORE_IDENT_RE + '\\s*\\(',
199-
returnBegin: true,
200-
relevance: 0,
201-
contains: [ hljs.UNDERSCORE_TITLE_MODE ]
202-
},
203218
{
204219
className: 'params',
205220
begin: /\(/,

src/languages/rust.js

+17-4
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,19 @@ Website: https://www.rust-lang.org
66
Category: common, system
77
*/
88

9+
import * as regex from '../lib/regex.js';
10+
911
/** @type LanguageFn */
1012
export default function(hljs) {
13+
const FUNCTION_INVOKE = {
14+
className: "title.function.invoke",
15+
relevance: 0,
16+
begin: regex.concat(
17+
/\b/,
18+
/(?!let\b)/,
19+
hljs.IDENT_RE,
20+
regex.lookahead(/\s*\(/))
21+
};
1122
const NUMBER_SUFFIX = '([ui](8|16|32|64|128|size)|f(32|64))\?';
1223
const KEYWORDS = [
1324
"abstract",
@@ -240,13 +251,14 @@ export default function(hljs) {
240251
},
241252
{
242253
begin: [
243-
/let/,
244-
/\s+/,
254+
/let/, /\s+/,
255+
/(?:mut\s+)?/,
245256
hljs.UNDERSCORE_IDENT_RE
246257
],
247258
className: {
248259
1: "keyword",
249-
3: "variable"
260+
3: "keyword",
261+
4: "variable"
250262
}
251263
},
252264
// must come before impl/for rule later
@@ -296,7 +308,8 @@ export default function(hljs) {
296308
{
297309
className: "punctuation",
298310
begin: '->'
299-
}
311+
},
312+
FUNCTION_INVOKE
300313
]
301314
};
302315
}

0 commit comments

Comments
 (0)