Skip to content

Commit c267c5f

Browse files
committed
- sql support added
- refactorings
1 parent d9c043a commit c267c5f

7 files changed

Lines changed: 132 additions & 6 deletions

File tree

package-lock.json

Lines changed: 88 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
"react": "^18.3.1",
7070
"react-ace": "^13.0.0",
7171
"react-dom": "^18.3.1",
72+
"sql-formatter": "^15.6.10",
7273
"xml-formatter": "^3.6.3"
7374
}
7475
}

src/domain/SupportedLanguage.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ export enum LanguageName {
1414
CSS = "css",
1515
MARKDOWN = "markdown",
1616
JAVA = "java",
17-
SH = "sh"
17+
SH = "sh",
18+
SQL = "sql",
19+
PLSQL = "plsql",
1820
}
1921

2022
export const SupportedLanguages: Record<LanguageName, SupportedLanguage> = {
@@ -31,7 +33,7 @@ export const SupportedLanguages: Record<LanguageName, SupportedLanguage> = {
3133
[LanguageName.XML]: {
3234
name: LanguageName.XML,
3335
label: "XML",
34-
extensions: [".xml", ".xslt", ".xsl"]
36+
extensions: [".xml", ".xslt", ".xsl", ".wsdl", ".xsd", ".jrxml"]
3537
},
3638
[LanguageName.JSON]: {
3739
name: LanguageName.JSON,
@@ -67,6 +69,16 @@ export const SupportedLanguages: Record<LanguageName, SupportedLanguage> = {
6769
name: LanguageName.SH,
6870
label: "SH",
6971
extensions: [".sh"]
72+
},
73+
[LanguageName.SQL]: {
74+
name: LanguageName.SQL,
75+
label: "SQL",
76+
extensions: [".sql"]
77+
},
78+
[LanguageName.PLSQL]: {
79+
name: LanguageName.PLSQL,
80+
label: "PL/SQL",
81+
extensions: [".sql", ".pck", ".pkg"]
7082
}
7183
};
7284

src/main.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ async function getEditorState() {
104104

105105
initialState.tabs.push(tab);
106106
initialState.activeTabId = tab.id;
107+
} else if (fileArg && initialState.tabs.map(t => t.file).includes(fileArg)) {
108+
initialState.activeTabId = initialState.tabs.find(t => t.file === fileArg)?.id;
107109
}
108110

109111
return initialState;

src/react/components/TabList.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {shortenTabName} from "../../utils/TextUtils";
1212
import {useEditorContext} from "./editor/EditorContext";
1313
import {findLanguageByFileName} from "../../domain/SupportedLanguage";
1414
import {EditorState} from "../../domain/EditorState";
15+
import IpcRendererEvent = Electron.IpcRendererEvent;
1516

1617
const DEFAULT_TAB_NAME = "New Document.txt";
1718

@@ -96,15 +97,15 @@ export function TabList({onTabSelect, onTabAdd, onTabRemove}: {
9697
}
9798

9899
useEffect(() => { // listen for menu accelerators
99-
const onNewTab = () => {
100+
const onNewTab = (event: IpcRendererEvent, data: any) => {
100101
addTab(
101102
generateTempTab(
102103
generateUniqueName(tabs, DEFAULT_TAB_NAME)
103104
)
104105
);
105106
};
106107

107-
const handleTabOpen = (event: any, data: any) => {
108+
const handleTabOpen = (event: IpcRendererEvent, data: any) => {
108109
addTab(data);
109110
};
110111

src/react/components/editor/plugins/BeautifyPlugin.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import {EditorAction, EditorMenuItem, EditorPlugin} from "./index";
22
import {LanguageName} from "../../../../domain/SupportedLanguage";
33
import xmlFormat from "xml-formatter";
4+
import { format as sqlFormat } from 'sql-formatter';
45
import os from "os";
56
import {EditorWrapper} from "../../../../domain/EditorWrapper";
67

@@ -85,6 +86,19 @@ function format(lang: string, content: string) {
8586
return handleXML(content);
8687
} else if(lang === LanguageName.JSON) {
8788
return JSON.stringify(JSON.parse(content), null, 4);
89+
} else if(lang === LanguageName.SQL || lang === LanguageName.PLSQL) {
90+
return sqlFormat(
91+
content,
92+
{
93+
dataTypeCase: "preserve",
94+
keywordCase: "preserve",
95+
functionCase: "preserve",
96+
identifierCase: "preserve",
97+
language: lang === LanguageName.PLSQL ? "plsql" : "sql",
98+
useTabs: false,
99+
tabWidth: 4
100+
}
101+
);
88102
}
89103
} catch (ignored) {
90104
console.warn("cannot format content: " + ignored);

src/utils/EditorUtils.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,20 +65,28 @@ export function getFocusedWindow() {
6565
}
6666

6767
export function sendToFocusedWindow(channel: string, data?: any) {
68-
getFocusedWindow()?.webContents.send(channel, data);
68+
const win = getFocusedWindow();
69+
70+
if(win) sendToWindow(win, channel, data);
71+
}
72+
73+
export function sendToWindow(window: electron.BrowserWindow, channel: string, data?: any) {
74+
window.webContents.send(channel, data);
6975
}
7076

7177
export function openInFocusedWindow(file: string) {
7278
console.log("opening file: " + file);
79+
7380
const win = getFocusedWindow();
7481

7582
if(win) openInWindow(win, file);
7683
}
7784

7885
export function openInWindow(window: electron.BrowserWindow, file: string) {
7986
console.log("opening file: " + file + " in " + window.id);
87+
8088
fileToTab(file).then(tab => {
81-
window.webContents.send(EventType.OPEN_TAB, tab);
89+
sendToWindow(window, EventType.OPEN_TAB, tab);
8290
});
8391
}
8492

0 commit comments

Comments
 (0)