From 0983e624372fc193b6b894b81deeeaf1b25b4fe8 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sun, 1 Jun 2025 14:34:57 -0400 Subject: [PATCH] [mv3] Fine tuning editor code --- platform/mv3/extension/js/develop.js | 69 +++++++++---------- .../extension/lib/codemirror/codemirror-ubol | 2 +- 2 files changed, 34 insertions(+), 37 deletions(-) diff --git a/platform/mv3/extension/js/develop.js b/platform/mv3/extension/js/develop.js index 7c143bec0..5fdee6e29 100644 --- a/platform/mv3/extension/js/develop.js +++ b/platform/mv3/extension/js/develop.js @@ -479,18 +479,6 @@ function updateSummaryPanel(info) { }); } -browser.storage.onChanged.addListener((changes, area) => { - if ( area !== 'local' ) { return; } - const { userDnrRuleCount } = changes; - if ( userDnrRuleCount instanceof Object === false ) { return; } - const { newValue } = changes.userDnrRuleCount; - updateSummaryPanel({ userDnrRuleCount: newValue }); -}); - -localRead('userDnrRuleCount').then(userDnrRuleCount => { - updateSummaryPanel({ userDnrRuleCount }) -}); - function updateFeedbackPanel(info) { const errors = []; if ( Array.isArray(info.errors) ) { @@ -542,8 +530,6 @@ function importRulesFromFile() { input.click(); } -dom.on('#dnrRulesImport', 'click', importRulesFromFile); - /******************************************************************************/ function exportRulesToFile() { @@ -562,8 +548,6 @@ function exportRulesToFile() { a.click(); } -dom.on('#dnrRulesExport', 'click', exportRulesToFile); - /******************************************************************************/ function importRulesFromPaste(transaction) { @@ -601,14 +585,15 @@ function foldService(state, from) { const line = doc.line(i); if ( reFoldable.test(line.text) === false ) { return null; } } - for ( let i = lineFrom.number; i < doc.lines; i++ ) { - const lineNext = doc.line(i+1); - if ( reFoldable.test(lineNext.text) ) { continue; } - if ( i === lineFrom.number ) { return null; } - const lineFoldEnd = doc.line(i); - return { from: lineFrom.from+6, to: lineFoldEnd.to }; + let i = lineFrom.number + 1; + for ( ; i <= doc.lines; i++ ) { + const lineNext = doc.line(i); + if ( reFoldable.test(lineNext.text) === false ) { break; } } - return null; + i -= 1; + if ( i === lineFrom.number ) { return null; } + const lineFoldEnd = doc.line(i); + return { from: lineFrom.from+6, to: lineFoldEnd.to }; } const reFoldable = /^ {4}- \S/; @@ -846,8 +831,13 @@ function hoverTooltip(view, pos, side) { /******************************************************************************/ -const cmRules = (( ) => { - return self.cm6.createEditorView({ +let lastSavedText = ''; + +const cmRules = await localRead('userDnrRules').then(text => { + text ||= ''; + + const view = self.cm6.createEditorView({ + text, dnrRules: true, oneDark: dom.cl.has(':root', 'dark'), updateListener: cmUpdateListener, @@ -866,27 +856,34 @@ const cmRules = (( ) => { streamParser: dnryamlStreamParser, foldService, }, qs$('#cm-dnrRules')); -})(); -/******************************************************************************/ - -let lastSavedText = ''; - -localRead('userDnrRules').then(text => { - text ||= ''; - setEditorText(text); lastSavedText = text; - self.cm6.foldAll(cmRules); - self.cm6.resetUndoRedo(cmRules); + self.cm6.foldAll(view); + self.cm6.resetUndoRedo(view); + + browser.storage.onChanged.addListener((changes, area) => { + if ( area !== 'local' ) { return; } + const { userDnrRuleCount } = changes; + if ( userDnrRuleCount instanceof Object === false ) { return; } + const { newValue } = changes.userDnrRuleCount; + updateSummaryPanel({ userDnrRuleCount: newValue }); + }); + + localRead('userDnrRuleCount').then(userDnrRuleCount => { + updateSummaryPanel({ userDnrRuleCount }) + }); dom.on('#dnrRulesApply', 'click', ( ) => { saveEditorText(); }); - dom.on('#dnrRulesRevert', 'click', ( ) => { setEditorText(lastSavedText); sendMessage({ what: 'updateUserDnrRules' }); }); + dom.on('#dnrRulesImport', 'click', importRulesFromFile); + dom.on('#dnrRulesExport', 'click', exportRulesToFile); + + return view; }); /******************************************************************************/ diff --git a/platform/mv3/extension/lib/codemirror/codemirror-ubol b/platform/mv3/extension/lib/codemirror/codemirror-ubol index 58a4bae6a..94860205a 160000 --- a/platform/mv3/extension/lib/codemirror/codemirror-ubol +++ b/platform/mv3/extension/lib/codemirror/codemirror-ubol @@ -1 +1 @@ -Subproject commit 58a4bae6af82358754da665d3056d7af295bbb7b +Subproject commit 94860205aae82ef3d8e66f3a2cc5a5c96262d028