From d776edf06b82b11af08639c1846e6c765ca795e4 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sat, 27 May 2023 19:02:23 -0400 Subject: [PATCH] Fix linter incorrectly reporting `header=` option Related feedback: - https://www.reddit.com/r/uBlockOrigin/comments/13thksi/filter_blocking_rule_based_on_post_methods_value/jlvhuoy/ --- src/js/1p-filters.js | 1 + src/js/asset-viewer.js | 1 + src/js/codemirror/ubo-static-filtering.js | 19 ++++++++++++++++++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/js/1p-filters.js b/src/js/1p-filters.js index ccbd7067c..ce00759d2 100644 --- a/src/js/1p-filters.js +++ b/src/js/1p-filters.js @@ -70,6 +70,7 @@ let cachedUserFilters = ''; if ( response instanceof Object === false ) { return; } if ( response.hintUpdateToken !== undefined ) { const mode = cmEditor.getMode(); + cmEditor.setOption('filterOnHeaders', response.filterOnHeaders === true); if ( mode.setHints instanceof Function ) { mode.setHints(response); } diff --git a/src/js/asset-viewer.js b/src/js/asset-viewer.js index 060ea20a3..c9d3d1cbc 100644 --- a/src/js/asset-viewer.js +++ b/src/js/asset-viewer.js @@ -73,6 +73,7 @@ import './codemirror/ubo-static-filtering.js'; }); if ( hints instanceof Object ) { const mode = cmEditor.getMode(); + cmEditor.setOption('filterOnHeaders', hints.filterOnHeaders === true); if ( mode.setHints instanceof Function ) { mode.setHints(hints); } diff --git a/src/js/codemirror/ubo-static-filtering.js b/src/js/codemirror/ubo-static-filtering.js index fbbec376a..92a81276f 100644 --- a/src/js/codemirror/ubo-static-filtering.js +++ b/src/js/codemirror/ubo-static-filtering.js @@ -37,6 +37,16 @@ const preparseDirectiveHints = []; const originHints = []; let hintHelperRegistered = false; + +/******************************************************************************/ + +let filterOnHeaders = false; + +CodeMirror.defineOption('filterOnHeaders', false, (cm, state) => { + filterOnHeaders = state; + self.dispatchEvent(new Event('filterOnHeaders')); +}); + /******************************************************************************/ CodeMirror.defineMode('ubo-static-filtering', function() { @@ -206,6 +216,10 @@ CodeMirror.defineMode('ubo-static-filtering', function() { return '+'; }; + self.addEventListener('filterOnHeaders', ( ) => { + astParser.options.filterOnHeaders = filterOnHeaders; + }); + return { lineComment: '!', token: function(stream) { @@ -285,7 +299,6 @@ CodeMirror.defineMode('ubo-static-filtering', function() { hintHelperRegistered = true; initHints(); } - astParser.options.filterOnHeaders = details.filterOnHeaders === true; }, parser: astParser, }; @@ -978,6 +991,10 @@ CodeMirror.registerHelper('fold', 'ubo-static-filtering', (( ) => { } }; + self.addEventListener('filterOnHeaders', ( ) => { + astParser.options.filterOnHeaders = filterOnHeaders; + }); + CodeMirror.defineInitHook(cm => { cm.on('changes', onChanges); cm.on('beforeChange', onBeforeChanges);