mirror of
https://github.com/massbug/judge4c.git
synced 2025-05-18 07:16:34 +00:00
feat(language-selector): update to support multiple language server configurations
This commit is contained in:
parent
acfeee5a26
commit
004bdb510b
@ -9,20 +9,20 @@ import {
|
|||||||
} from "@/components/ui/select";
|
} from "@/components/ui/select";
|
||||||
import { getPath } from "@/lib/utils";
|
import { getPath } from "@/lib/utils";
|
||||||
import { Skeleton } from "@/components/ui/skeleton";
|
import { Skeleton } from "@/components/ui/skeleton";
|
||||||
import LanguageServerConfig from "@/config/language-server";
|
|
||||||
import { useCodeEditorStore } from "@/store/useCodeEditorStore";
|
import { useCodeEditorStore } from "@/store/useCodeEditorStore";
|
||||||
import { EditorLanguageIcons } from "@/config/editor-language-icons";
|
import { EditorLanguageIcons } from "@/config/editor-language-icons";
|
||||||
import { EditorLanguage, EditorLanguageConfig } from "@prisma/client";
|
import { EditorLanguage, EditorLanguageConfig, LanguageServerConfig } from "@prisma/client";
|
||||||
|
|
||||||
interface LanguageSelectorProps {
|
interface LanguageSelectorProps {
|
||||||
editorLanguageConfigs: EditorLanguageConfig[];
|
editorLanguageConfigs: EditorLanguageConfig[];
|
||||||
|
languageServerConfigs: LanguageServerConfig[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function LanguageSelector({
|
export default function LanguageSelector({
|
||||||
editorLanguageConfigs,
|
editorLanguageConfigs,
|
||||||
|
languageServerConfigs,
|
||||||
}: LanguageSelectorProps) {
|
}: LanguageSelectorProps) {
|
||||||
const { hydrated, language, setLanguage, setPath, setLspConfig } =
|
const { hydrated, language, setLanguage, setPath, setLspConfig } = useCodeEditorStore();
|
||||||
useCodeEditorStore();
|
|
||||||
|
|
||||||
if (!hydrated) {
|
if (!hydrated) {
|
||||||
return <Skeleton className="h-6 w-16 rounded-2xl" />;
|
return <Skeleton className="h-6 w-16 rounded-2xl" />;
|
||||||
@ -30,8 +30,14 @@ export default function LanguageSelector({
|
|||||||
|
|
||||||
const handleValueChange = (lang: EditorLanguage) => {
|
const handleValueChange = (lang: EditorLanguage) => {
|
||||||
setLanguage(lang);
|
setLanguage(lang);
|
||||||
setPath(getPath(lang));
|
const selectedEditorLanguageConfig = editorLanguageConfigs.find(
|
||||||
setLspConfig(LanguageServerConfig[lang]);
|
(config) => config.language === lang
|
||||||
|
);
|
||||||
|
const selectedLanguageServerConfig = languageServerConfigs.find(
|
||||||
|
(config) => config.language === lang
|
||||||
|
);
|
||||||
|
setPath(selectedEditorLanguageConfig ? getPath(selectedEditorLanguageConfig) : "");
|
||||||
|
setLspConfig(selectedLanguageServerConfig || null);
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
Loading…
Reference in New Issue
Block a user