Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions src/cm/lsp/connectionState.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import serverRegistry from "./serverRegistry";

function getCurrentFileLanguage() {
try {
const file = window.editorManager?.activeFile;
if (!file || file.type !== "editor") return null;
return file.currentMode?.toLowerCase() || null;
} catch {
return null;
}
}

function getServersForCurrentFile() {
const language = getCurrentFileLanguage();
if (!language) return [];

try {
return serverRegistry.getServersForLanguage(language);
} catch {
return [];
}
}

function hasConnectedServers() {
return getServersForCurrentFile().length > 0;
}

export { getServersForCurrentFile, hasConnectedServers };
31 changes: 4 additions & 27 deletions src/components/lspInfoDialog/index.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import "./styles.scss";
import lspClientManager from "cm/lsp/clientManager";
import {
getServersForCurrentFile,
hasConnectedServers,
} from "cm/lsp/connectionState";
import { getServerStats } from "cm/lsp/serverLauncher";
import serverRegistry from "cm/lsp/serverRegistry";
import toast from "components/toast";
import actionStack from "lib/actionStack";
import restoreTheme from "lib/restoreTheme";
Expand Down Expand Up @@ -146,27 +149,6 @@ function getActiveClients() {
}
}

function getCurrentFileLanguage() {
try {
const file = window.editorManager?.activeFile;
if (!file || file.type !== "editor") return null;
return file.currentMode?.toLowerCase() || null;
} catch {
return null;
}
}

function getServersForCurrentFile() {
const language = getCurrentFileLanguage();
if (!language) return [];

try {
return serverRegistry.getServersForLanguage(language);
} catch {
return [];
}
}

function getServerStatus(serverId) {
const activeClients = getActiveClients();
const client = activeClients.find((c) => c.server?.id === serverId);
Expand Down Expand Up @@ -693,10 +675,5 @@ function showLspInfoDialog() {
}
}

function hasConnectedServers() {
const relevantServers = getServersForCurrentFile();
return relevantServers.length > 0;
}

export { addLspLog, getLspLogs, hasConnectedServers, showLspInfoDialog };
export default showLspInfoDialog;
38 changes: 22 additions & 16 deletions src/lib/acode.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ import prompt from "dialogs/prompt";
import select from "dialogs/select";
import { addIntentHandler, removeIntentHandler } from "handlers/intent";
import keyboardHandler from "handlers/keyboard";
import purchaseListener from "handlers/purchase";
import windowResize from "handlers/windowResize";
import actionStack from "lib/actionStack";
import commands from "lib/commands";
Expand All @@ -67,7 +66,6 @@ import projects from "lib/projects";
import selectionMenu from "lib/selectionMenu";
import appSettings from "lib/settings";
import FileBrowser from "pages/fileBrowser";
import formatterSettings from "settings/formatterSettings";
import ThemeBuilder from "theme/builder";
import themes from "theme/list";
import Color from "utils/color";
Expand Down Expand Up @@ -582,20 +580,25 @@ class Acode {

if (isPaid && !purchaseToken) {
if (!product) throw new Error("Product not found");
return helpers.checkAPIStatus().then((apiStatus) => {
if (!apiStatus) {
alert(strings.error, strings.api_error);
return;
}

iap.setPurchaseUpdatedListener(
...purchaseListener(onpurchase, onerror),
);
return helpers.promisify(
iap.purchase,
product.productId,
);
});
return helpers
.checkAPIStatus()
.then(async (apiStatus) => {
if (!apiStatus) {
alert(strings.error, strings.api_error);
return;
}

const { default: purchaseListener } = await import(
/* webpackChunkName: "purchaseHandler" */ "handlers/purchase"
);
iap.setPurchaseUpdatedListener(
...purchaseListener(onpurchase, onerror),
);
return helpers.promisify(
iap.purchase,
product.productId,
);
});
}
})
.then(() => {
Expand Down Expand Up @@ -792,6 +795,9 @@ class Acode {
}

if (selectIfNull) {
const { default: formatterSettings } = await import(
/* webpackChunkName: "formatterSettings" */ "settings/formatterSettings"
);
formatterSettings(modeName);
this.#afterSelectFormatter(modeName);
} else {
Expand Down
106 changes: 72 additions & 34 deletions src/lib/commands.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,11 @@
import fsOperation from "fileSystem";
import { selectAll } from "@codemirror/commands";
import Sidebar from "components/sidebar";
import { TerminalManager } from "components/terminal";
import color from "dialogs/color";
import confirm from "dialogs/confirm";
import prompt from "dialogs/prompt";
import select from "dialogs/select";
import actions from "handlers/quickTools";
import recents from "lib/recents";
import About from "pages/about";
import FileBrowser from "pages/fileBrowser";
import plugins from "pages/plugins";
import Problems from "pages/problems/problems";
import openWelcomeTab from "pages/welcome/welcome";
import changeEncoding from "palettes/changeEncoding";
import changeMode from "palettes/changeMode";
import changeTheme from "palettes/changeTheme";
import commandPalette from "palettes/commandPalette";
import findFile from "palettes/findFile";
import browser from "plugins/browser";
import help from "settings/helpSettings";
import mainSettings from "settings/mainSettings";
import { runAllTests } from "test/tester";
import { getColorRange } from "utils/color/regex";
import helpers from "utils/helpers";
import Url from "utils/Url";
Expand All @@ -35,6 +19,10 @@ import saveState from "./saveState";
import appSettings from "./settings";
import showFileInfo from "./showFileInfo";

Comment thread
greptile-apps[bot] marked this conversation as resolved.
const loadFileBrowser = async () =>
(await import(/* webpackChunkName: "fileBrowser" */ "pages/fileBrowser"))
.default;

function getTabCloseSelectionOptions() {
return {
unsavedWarning:
Expand Down Expand Up @@ -140,6 +128,9 @@ async function closeTabs(files, options = {}) {

export default {
async "run-tests"() {
const { runAllTests } = await import(
/* webpackChunkName: "tester" */ "test/tester"
);
await runAllTests();
},
async "close-all-tabs"() {
Expand Down Expand Up @@ -187,7 +178,10 @@ export default {
if (!appSettings.value.checkFiles) return;
checkFiles();
},
"command-palette"() {
async "command-palette"() {
const { default: commandPalette } = await import(
/* webpackChunkName: "commandPalette" */ "palettes/commandPalette"
);
commandPalette();
},
"disable-fullscreen"() {
Expand All @@ -198,7 +192,10 @@ export default {
app.classList.add("fullscreen-mode");
this["resize-editor"]();
},
encoding() {
async encoding() {
const { default: changeEncoding } = await import(
/* webpackChunkName: "changeEncoding" */ "palettes/changeEncoding"
);
changeEncoding();
},
exit() {
Expand All @@ -207,10 +204,14 @@ export default {
"edit-with"() {
editorManager.activeFile.editWith();
},
"find-file"() {
async "find-file"() {
const { default: findFile } = await import(
/* webpackChunkName: "findFile" */ "palettes/findFile"
);
findFile();
},
files() {
async files() {
const FileBrowser = await loadFileBrowser();
FileBrowser("both", strings["file browser"])
.then(FileBrowser.open)
.catch(FileBrowser.openError);
Expand Down Expand Up @@ -256,30 +257,44 @@ export default {

editorManager.files[fileIndex].makeActive();
},
open(page) {
async open(page) {
switch (page) {
case "settings":
mainSettings();
(
await import(
/* webpackChunkName: "mainSettings" */ "settings/mainSettings"
)
).default();
break;

case "help":
help();
(
await import(
/* webpackChunkName: "helpSettings" */ "settings/helpSettings"
)
).default();
break;

case "problems":
Problems();
(
await import(
/* webpackChunkName: "problems" */ "pages/problems/problems"
)
).default();
break;

case "plugins":
plugins();
(
await import(/* webpackChunkName: "plugins" */ "pages/plugins")
).default();
break;

case "file_browser":
FileBrowser();
(await loadFileBrowser())();
break;

case "about":
About();
(await import(/* webpackChunkName: "about" */ "pages/about")).default();
break;

default:
Expand All @@ -290,14 +305,16 @@ export default {
"open-with"() {
editorManager.activeFile.openWith();
},
"open-file"() {
async "open-file"() {
editorManager.editor.contentDOM.blur();
const FileBrowser = await loadFileBrowser();
FileBrowser("file")
.then(FileBrowser.openFile)
.catch(FileBrowser.openFileError);
},
"open-folder"() {
async "open-folder"() {
editorManager.editor.contentDOM.blur();
const FileBrowser = await loadFileBrowser();
FileBrowser("folder")
.then(FileBrowser.openFolder)
.catch(FileBrowser.openFolderError);
Expand Down Expand Up @@ -338,7 +355,10 @@ export default {
// TODO : Codemirror
//editorManager.editor.resize(true);
},
"open-inapp-browser"(url) {
async "open-inapp-browser"(url) {
const { default: browser } = await import(
/* webpackChunkName: "browserPlugin" */ "plugins/browser"
);
browser.open(url);
},
run() {
Expand Down Expand Up @@ -433,13 +453,22 @@ export default {
helpers.error(error);
}
},
syntax() {
async syntax() {
const { default: changeMode } = await import(
/* webpackChunkName: "changeMode" */ "palettes/changeMode"
);
changeMode();
},
"change-app-theme"() {
async "change-app-theme"() {
const { default: changeTheme } = await import(
/* webpackChunkName: "changeTheme" */ "palettes/changeTheme"
);
changeTheme("app");
},
"change-editor-theme"() {
async "change-editor-theme"() {
const { default: changeTheme } = await import(
/* webpackChunkName: "changeTheme" */ "palettes/changeTheme"
);
changeTheme("editor");
},
"toggle-fullscreen"() {
Expand Down Expand Up @@ -472,6 +501,9 @@ export default {
const wasFocused = editorManager.activeFile.focused;
let res;
try {
const { default: color } = await import(
/* webpackChunkName: "colorDialog" */ "dialogs/color"
);
res = await color(defaultColor, () => {
if (wasFocused) {
editor.focus();
Expand Down Expand Up @@ -637,6 +669,9 @@ Additional Info:
},
async "new-terminal"() {
try {
const { TerminalManager } = await import(
/* webpackChunkName: "terminal" */ "components/terminal"
);
await TerminalManager.createServerTerminal();
} catch (error) {
console.error("Failed to create terminal:", error);
Expand All @@ -649,7 +684,10 @@ Additional Info:
);
RunningProcesses();
},
welcome() {
async welcome() {
const { default: openWelcomeTab } = await import(
/* webpackChunkName: "welcome" */ "pages/welcome/welcome"
);
openWelcomeTab();
},
async "toggle-inspector"() {
Expand Down
Loading