diff --git a/packages/web/src/query/SqlEditor.svelte b/packages/web/src/query/SqlEditor.svelte
index e86623835..c8c1621ef 100644
--- a/packages/web/src/query/SqlEditor.svelte
+++ b/packages/web/src/query/SqlEditor.svelte
@@ -12,6 +12,7 @@
import useEffect from '../utility/useEffect';
import { getContext } from 'svelte';
import { mountCodeCompletion } from './codeCompletion';
+ import { getCurrentSettings } from '../stores';
export let engine = null;
export let conid = null;
export let database = null;
@@ -44,6 +45,7 @@
database,
editor,
getText: () => domEditor.getCodeCompletionCommandText(),
+ getSettings: () => getCurrentSettings(),
});
}
return () => {};
diff --git a/packages/web/src/query/codeCompletion.ts b/packages/web/src/query/codeCompletion.ts
index 319a3ec81..3d499a9de 100644
--- a/packages/web/src/query/codeCompletion.ts
+++ b/packages/web/src/query/codeCompletion.ts
@@ -26,7 +26,13 @@ const COMMON_KEYWORDS = [
'go',
];
-function createTableLikeList(schemaList, dbinfo, schemaCondition) {
+function createTableShortcut(name) {
+ return (_.upperFirst(_.camelCase(name)).match(/[A-Z]/g) || []).join('').toLowerCase();
+}
+
+function createTableLikeList(schemaList, dbinfo, schemaCondition, getSettings) {
+ const settings = getSettings();
+ const useAliases = settings?.['sqlEditor.showTableAliasesInCodeCompletion'];
return [
...(schemaList?.map(x => ({
name: x.schemaName,
@@ -37,22 +43,22 @@ function createTableLikeList(schemaList, dbinfo, schemaCondition) {
})) || []),
...dbinfo.tables.filter(schemaCondition).map(x => ({
name: x.pureName,
- value: x.pureName,
- caption: x.pureName,
+ value: useAliases ? `${x.pureName} ${createTableShortcut(x.pureName)}` : x.pureName,
+ caption: useAliases ? `${x.pureName} ${createTableShortcut(x.pureName)}` : x.pureName,
meta: 'table',
score: 1000,
})),
...dbinfo.views.filter(schemaCondition).map(x => ({
name: x.pureName,
- value: x.pureName,
- caption: x.pureName,
+ value: useAliases ? `${x.pureName} ${createTableShortcut(x.pureName)}` : x.pureName,
+ caption: useAliases ? `${x.pureName} ${createTableShortcut(x.pureName)}` : x.pureName,
meta: 'view',
score: 1000,
})),
...dbinfo.matviews.filter(schemaCondition).map(x => ({
name: x.pureName,
- value: x.pureName,
- caption: x.pureName,
+ value: useAliases ? `${x.pureName} ${createTableShortcut(x.pureName)}` : x.pureName,
+ caption: useAliases ? `${x.pureName} ${createTableShortcut(x.pureName)}` : x.pureName,
meta: 'matview',
score: 1000,
})),
@@ -73,7 +79,7 @@ function createTableLikeList(schemaList, dbinfo, schemaCondition) {
];
}
-export function mountCodeCompletion({ conid, database, editor, getText }) {
+export function mountCodeCompletion({ conid, database, editor, getText, getSettings }) {
setCompleters([]);
addCompleter({
getCompletions: async function (editor, session, pos, prefix, callback) {
@@ -155,7 +161,7 @@ export function mountCodeCompletion({ conid, database, editor, getText }) {
} else {
const schema = (schemaList || []).find(x => x.schemaName == colMatch[1]);
if (schema) {
- list = createTableLikeList(schemaList, dbinfo, x => x.schemaName == schema.schemaName);
+ list = createTableLikeList(schemaList, dbinfo, x => x.schemaName == schema.schemaName, getSettings);
}
}
} else {
@@ -173,7 +179,12 @@ export function mountCodeCompletion({ conid, database, editor, getText }) {
} else {
list = [
...(onlyTables ? [] : list),
- ...createTableLikeList(schemaList, dbinfo, x => !defaultSchema || defaultSchema == x.schemaName),
+ ...createTableLikeList(
+ schemaList,
+ dbinfo,
+ x => !defaultSchema || defaultSchema == x.schemaName,
+ getSettings
+ ),
...(onlyTables
? []
diff --git a/packages/web/src/settings/SettingsModal.svelte b/packages/web/src/settings/SettingsModal.svelte
index ee00249aa..73ce8aa66 100644
--- a/packages/web/src/settings/SettingsModal.svelte
+++ b/packages/web/src/settings/SettingsModal.svelte
@@ -192,7 +192,11 @@ ORDER BY
]}
/>
-