feat(language-selector): update to support multiple language server configurations

This commit is contained in:
cfngc4594 2025-03-16 15:59:59 +08:00
parent acfeee5a26
commit 004bdb510b

View File

@ -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 (