From 699e178fa1b3e7c77d69999c9b458993462d9cdf Mon Sep 17 00:00:00 2001 From: Tom Butcher Date: Fri, 21 Aug 2026 22:49:08 +0100 Subject: [PATCH] Refactor JavaScript Completion Support for Enhanced Autocomplete Functionality - Renamed the javascriptCompletionSources function to javascriptCompletionSupport for clarity. - Updated the implementation to utilize CodeMirror's built-in support for JavaScript, improving the handling of autocomplete sources. - Streamlined the integration of completion sources for mixed languages, ensuring better performance and user experience. --- src/codemirror/fcTemplateLang/index.js | 6 ++---- src/codemirror/javascriptLang/index.js | 23 +++++++++++++---------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/codemirror/fcTemplateLang/index.js b/src/codemirror/fcTemplateLang/index.js index f79b6741..f9af37ed 100644 --- a/src/codemirror/fcTemplateLang/index.js +++ b/src/codemirror/fcTemplateLang/index.js @@ -9,7 +9,7 @@ import { import { styleTags, tags as t } from '@lezer/highlight' import { parseMixed } from '@lezer/common' import { javascriptLanguage } from '@codemirror/lang-javascript' -import { javascriptCompletionSources } from '../javascriptLang' +import { javascriptCompletionSupport } from '../javascriptLang' import { xmlLanguage, completeFromSchema, @@ -105,8 +105,6 @@ export function fcTemplateLang(options = {}) { ) }), autoCloseTags, - javascriptLanguage.data.of({ - autocomplete: javascriptCompletionSources(jsScope) - }) + ...javascriptCompletionSupport(jsScope) ]) } diff --git a/src/codemirror/javascriptLang/index.js b/src/codemirror/javascriptLang/index.js index 89980e57..c7722a19 100644 --- a/src/codemirror/javascriptLang/index.js +++ b/src/codemirror/javascriptLang/index.js @@ -1,10 +1,7 @@ -import { completeFromList } from '@codemirror/autocomplete' import { javascript, javascriptLanguage, - localCompletionSource, - scopeCompletionSource, - snippets + scopeCompletionSource } from '@codemirror/lang-javascript' import { nodeJsScope } from './nodeScope.js' @@ -31,14 +28,20 @@ export function nodeScopeCompletionSource(autoCompleteObject) { } /** - * Completions for mixed languages that mount `javascriptLanguage` - * without `javascript()` (snippets + locals + Node globals). + * Support extensions for mixed languages that mount + * `javascriptLanguage` without `javascript()` itself (snippets, + * keywords, locals, and Node globals). + * + * Each source must be a separate `languageData` entry. CodeMirror + * treats an `autocomplete` *array* as `completeFromList` options, not + * as multiple completion sources. */ -export function javascriptCompletionSources(autoCompleteObject) { +export function javascriptCompletionSupport(autoCompleteObject) { return [ - completeFromList(snippets), - localCompletionSource, - nodeScopeCompletionSource(autoCompleteObject) + javascript().support, + javascriptLanguage.data.of({ + autocomplete: nodeScopeCompletionSource(autoCompleteObject) + }) ] }