mirror of
https://github.com/gorhill/uBlock.git
synced 2024-11-07 11:22:38 +01:00
Hightlight to warn about unknown redirect tokens
Related issue: - https://github.com/uBlockOrigin/uBlock-issues/issues/1134
This commit is contained in:
parent
6ff72af4aa
commit
1727585faa
@ -177,6 +177,56 @@ CodeMirror.defineMode('ubo-static-filtering', function() {
|
|||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const colorNetOptionValueSpan = function(stream, bits) {
|
||||||
|
const { pos, string } = stream;
|
||||||
|
let style;
|
||||||
|
// Warn about unknown redirect tokens.
|
||||||
|
if (
|
||||||
|
string.charCodeAt(pos - 1) === 0x3D /* '=' */ &&
|
||||||
|
/[$,]redirect(-rule)?=$/.test(string.slice(0, pos))
|
||||||
|
) {
|
||||||
|
style = 'value';
|
||||||
|
let end = parser.skipUntil(
|
||||||
|
parserSlot,
|
||||||
|
parser.commentSpan.i,
|
||||||
|
parser.BITComma
|
||||||
|
);
|
||||||
|
const token = parser.strFromSlices(parserSlot, end - 3);
|
||||||
|
if ( redirectNames.has(token) === false ) {
|
||||||
|
style += ' warning';
|
||||||
|
}
|
||||||
|
stream.pos += token.length;
|
||||||
|
parserSlot = end;
|
||||||
|
return style;
|
||||||
|
}
|
||||||
|
if ( (bits & parser.BITTilde) !== 0 ) {
|
||||||
|
style = 'keyword strong';
|
||||||
|
} else if ( (bits & parser.BITPipe) !== 0 ) {
|
||||||
|
style = 'def';
|
||||||
|
}
|
||||||
|
stream.pos += parser.slices[parserSlot+2];
|
||||||
|
parserSlot += 3;
|
||||||
|
return style || 'value';
|
||||||
|
};
|
||||||
|
|
||||||
|
const colorNetOptionSpan = function(stream) {
|
||||||
|
const bits = parser.slices[parserSlot];
|
||||||
|
let style;
|
||||||
|
if ( (bits & parser.BITComma) !== 0 ) {
|
||||||
|
style = 'def strong';
|
||||||
|
netOptionValueMode = false;
|
||||||
|
} else if ( netOptionValueMode ) {
|
||||||
|
return colorNetOptionValueSpan(stream, bits);
|
||||||
|
} else if ( (bits & parser.BITTilde) !== 0 ) {
|
||||||
|
style = 'keyword strong';
|
||||||
|
} else if ( (bits & parser.BITEqual) !== 0 ) {
|
||||||
|
netOptionValueMode = true;
|
||||||
|
}
|
||||||
|
stream.pos += parser.slices[parserSlot+2];
|
||||||
|
parserSlot += 3;
|
||||||
|
return style || 'def';
|
||||||
|
};
|
||||||
|
|
||||||
const colorNetSpan = function(stream) {
|
const colorNetSpan = function(stream) {
|
||||||
if ( parserSlot < parser.exceptionSpan.i ) {
|
if ( parserSlot < parser.exceptionSpan.i ) {
|
||||||
stream.pos += parser.slices[parserSlot+2];
|
stream.pos += parser.slices[parserSlot+2];
|
||||||
@ -236,23 +286,7 @@ CodeMirror.defineMode('ubo-static-filtering', function() {
|
|||||||
parserSlot >= parser.optionsSpan.i &&
|
parserSlot >= parser.optionsSpan.i &&
|
||||||
parserSlot < parser.commentSpan.i
|
parserSlot < parser.commentSpan.i
|
||||||
) {
|
) {
|
||||||
const bits = parser.slices[parserSlot];
|
return colorNetOptionSpan(stream);
|
||||||
let style;
|
|
||||||
if ( (bits & parser.BITComma) !== 0 ) {
|
|
||||||
style = 'def strong';
|
|
||||||
netOptionValueMode = false;
|
|
||||||
} else if ( (bits & parser.BITTilde) !== 0 ) {
|
|
||||||
style = 'keyword strong';
|
|
||||||
} else if ( (bits & parser.BITPipe) !== 0 ) {
|
|
||||||
style = 'def';
|
|
||||||
} else if ( netOptionValueMode ) {
|
|
||||||
style = 'value';
|
|
||||||
} else if ( (bits & parser.BITEqual) !== 0 ) {
|
|
||||||
netOptionValueMode = true;
|
|
||||||
}
|
|
||||||
stream.pos += parser.slices[parserSlot+2];
|
|
||||||
parserSlot += 3;
|
|
||||||
return style || 'def';
|
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
parserSlot >= parser.commentSpan.i &&
|
parserSlot >= parser.commentSpan.i &&
|
||||||
|
Loading…
Reference in New Issue
Block a user