diff --git a/packages/web/src/query/AceEditor.svelte b/packages/web/src/query/AceEditor.svelte index 94153af7d..d1a8b3836 100644 --- a/packages/web/src/query/AceEditor.svelte +++ b/packages/web/src/query/AceEditor.svelte @@ -96,6 +96,11 @@ return ''; } + export function getCodeCompletionCommandText() { + if (currentPart != null) return currentPart.text; + return editor.getValue(); + } + const requireEditorPlugins = () => {}; requireEditorPlugins(); diff --git a/packages/web/src/query/SqlEditor.svelte b/packages/web/src/query/SqlEditor.svelte index 85afd77d3..68fc206f3 100644 --- a/packages/web/src/query/SqlEditor.svelte +++ b/packages/web/src/query/SqlEditor.svelte @@ -39,7 +39,12 @@ $: effect = useEffect(() => { const editor = domEditor?.getEditor(); if ($tabVisible && conid && database && !readOnly && editor) { - return mountCodeCompletion({ conid, database, editor }); + return mountCodeCompletion({ + conid, + database, + editor, + getText: () => domEditor.getCodeCompletionCommandText(), + }); } return () => {}; }); diff --git a/packages/web/src/query/codeCompletion.ts b/packages/web/src/query/codeCompletion.ts index 889beed55..cd9923a14 100644 --- a/packages/web/src/query/codeCompletion.ts +++ b/packages/web/src/query/codeCompletion.ts @@ -23,7 +23,7 @@ const COMMON_KEYWORDS = [ 'go', ]; -export function mountCodeCompletion({ conid, database, editor }) { +export function mountCodeCompletion({ conid, database, editor, getText }) { setCompleters([]); addCompleter({ getCompletions: async function (editor, session, pos, prefix, callback) { @@ -44,7 +44,7 @@ export function mountCodeCompletion({ conid, database, editor }) { const lastKeywordMatch = line.match(/([a-zA-Z0-9_]*)\s*$/); const lastKeyword = lastKeywordMatch ? lastKeywordMatch[1].toUpperCase().trim() : ''; - const sources = analyseQuerySources(editor.getValue(), [ + const sources = analyseQuerySources(getText(), [ ...dbinfo.tables.map(x => x.pureName), ...dbinfo.views.map(x => x.pureName), ...dbinfo.matviews.map(x => x.pureName),