feat(language-selector): update language selector logic and integrate LSP config

This commit is contained in:
cfngc4594 2025-03-05 08:46:44 +08:00
parent d33f214450
commit 808dd96a50

View File

@ -7,19 +7,28 @@ import {
SelectTrigger, SelectTrigger,
SelectValue, SelectValue,
} from "@/components/ui/select"; } from "@/components/ui/select";
import { getPath } from "@/lib/utils";
import { Skeleton } from "@/components/ui/skeleton"; import { Skeleton } from "@/components/ui/skeleton";
import { EditorLanguage } from "@/types/editor-language";
import LanguageServerConfig from "@/config/language-server";
import { EditorLanguageConfig } from "@/config/editor-language"; import { EditorLanguageConfig } from "@/config/editor-language";
import { useCodeEditorStore } from "@/store/useCodeEditorStore"; import { useCodeEditorStore } from "@/store/useCodeEditorStore";
export default function LanguageSelector() { export default function LanguageSelector() {
const { hydrated, language, setLanguage } = useCodeEditorStore(); const { hydrated, language, setLanguage, setPath, setLspConfig } = useCodeEditorStore();
if (!hydrated) { if (!hydrated) {
return <Skeleton className="h-6 w-16 rounded-2xl" />; return <Skeleton className="h-6 w-16 rounded-2xl" />;
} }
const handleValueChange = (lang: EditorLanguage) => {
setLanguage(lang);
setPath(getPath(lang));
setLspConfig(LanguageServerConfig[lang]);
};
return ( return (
<Select value={language} onValueChange={setLanguage}> <Select value={language} onValueChange={handleValueChange}>
<SelectTrigger className="h-6 px-1.5 py-0.5 border-none focus:ring-0 hover:bg-muted [&>span]:flex [&>span]:items-center [&>span]:gap-2 [&>span_svg]:shrink-0 [&>span_svg]:text-muted-foreground/80"> <SelectTrigger className="h-6 px-1.5 py-0.5 border-none focus:ring-0 hover:bg-muted [&>span]:flex [&>span]:items-center [&>span]:gap-2 [&>span_svg]:shrink-0 [&>span_svg]:text-muted-foreground/80">
<SelectValue placeholder="Select language" /> <SelectValue placeholder="Select language" />
</SelectTrigger> </SelectTrigger>