code completion

This commit is contained in:
Jan Prochazka
2021-03-21 20:03:46 +01:00
parent b7b9dde5ae
commit d4989c75ca
4 changed files with 191 additions and 1 deletions

View File

@@ -9,11 +9,20 @@
<script lang="ts">
import AceEditor from './AceEditor.svelte';
import * as ace from 'ace-builds/src-noconflict/ace';
import useEffect from '../utility/useEffect';
import { getContext } from 'svelte';
import { mountCodeCompletion } from './codeCompletion';
export let engine;
export let conid;
export let database;
export let readOnly;
let domEditor;
let mode;
const tabVisible: any = getContext('tabVisible');
$: {
const match = (engine || '').match(/^([^@]*)@/);
mode = engineToMode[match ? match[1] : engine] || 'sql';
@@ -22,6 +31,25 @@
export function getEditor(): ace.Editor {
return domEditor.getEditor();
}
$: effect = useEffect(() => {
const editor = domEditor?.getEditor();
if ($tabVisible && conid && database && !readOnly && editor) {
return mountCodeCompletion({ conid, database, editor });
}
return () => {};
});
$: $effect;
</script>
<AceEditor {mode} {...$$props} on:input on:focus on:blur bind:this={domEditor} />
<AceEditor
{mode}
{...$$props}
on:input
on:focus
on:blur
bind:this={domEditor}
options={{
enableBasicAutocompletion: true,
}}
/>