diff --git a/index.html b/index.html index eef009c..0ee8628 100644 --- a/index.html +++ b/index.html @@ -66,6 +66,8 @@ type: 'assistant', name: 'Node-RED Assistant Plugin', icon: 'font-awesome/fa-magic', + // Lets Dashboard 2 know it can give ui-template the vue-sfc language without losing Expert support + supportsVueSfc: true, onadd: async function () { if (!window.FFAssistantUtils) { console.warn('FFAssistantUtils lib is not loaded. Completions might not work as expected.') @@ -374,7 +376,8 @@ } }) - monaco.languages.registerCodeLensProvider('html', { + // ui-template uses 'html', or 'vue-sfc' when the dashboard provides its Vue SFC editor language + const db2uiTemplateCodeLensProvider = { provideCodeLenses: function (model, token) { if (!assistantOptions.enabled) { return @@ -417,7 +420,9 @@ } return codeLens } - }) + } + monaco.languages.registerCodeLensProvider('html', db2uiTemplateCodeLensProvider) + monaco.languages.registerCodeLensProvider('vue-sfc', db2uiTemplateCodeLensProvider) assistantOptions.tablesEnabled && monaco.languages.registerCodeLensProvider('sql', { provideCodeLenses: function (model, token) { @@ -820,6 +825,11 @@ nodeType: 'ui-template', nodeModule: '@flowfuse/node-red-dashboard' }, + { + languageId: 'vue-sfc', + nodeType: 'ui-template', + nodeModule: '@flowfuse/node-red-dashboard' + }, { languageId: 'sql', nodeType: 'tables-query', @@ -903,6 +913,7 @@ } } } + languageStrategies['vue-sfc'] = languageStrategies.html // #region "Inline Completion Helper Functions" const computeInlineCompletionRange = (model, position, suggestionText) => { @@ -1829,7 +1840,7 @@ : model.getLanguageId?.() || 'javascript' const line = model.getLineContent(lineNumber) - const supportedLanguages = ['javascript', 'css', 'sql', 'html'] + const supportedLanguages = ['javascript', 'css', 'sql', 'html', 'vue-sfc'] if (!supportedLanguages.includes(languageId)) { return null // Not supported } @@ -1856,7 +1867,7 @@ if (lineBeforeCursor.lastIndexOf('--') !== -1) return true // SQL block comment `/* */` if (isWithinBlockComment()) return true - } else if (languageId === 'html') { + } else if (languageId === 'html' || languageId === 'vue-sfc') { // HTML comment markers: if (isWithinBlockComment('')) return true }