Added dockerfile、lua prettier plugin

This commit is contained in:
2025-09-20 01:30:16 +08:00
parent 2ea3456ff7
commit c3670bb8cd
79 changed files with 3790 additions and 289 deletions

View File

@@ -16,7 +16,6 @@ export {
LANGUAGES,
languageMapping,
getLanguage,
getLanguageTokens
} from './languages';
// 嵌套解析器

View File

@@ -28,6 +28,8 @@ import {groovy} from "@codemirror/legacy-modes/mode/groovy";
import {powerShell} from "@codemirror/legacy-modes/mode/powershell";
import {toml} from "@codemirror/legacy-modes/mode/toml";
import {elixir} from "codemirror-lang-elixir";
import {dockerFile} from "@codemirror/legacy-modes/mode/dockerfile";
import {lua} from "@codemirror/legacy-modes/mode/lua";
import {SupportedLanguage} from '../types';
import typescriptPlugin from "prettier/plugins/typescript"
@@ -43,6 +45,7 @@ import javaPrettierPlugin from "@/common/prettier/plugins/java"
import xmlPrettierPlugin from "@prettier/plugin-xml"
import * as rustPrettierPlugin from "@/common/prettier/plugins/rust";
import * as shellPrettierPlugin from "@/common/prettier/plugins/shell";
import * as dockerfilePrettierPlugin from "@/common/prettier/plugins/shell";
import tomlPrettierPlugin from "@/common/prettier/plugins/toml";
import clojurePrettierPlugin from "@cospaia/prettier-plugin-clojure";
import groovyPrettierPlugin from "@/common/prettier/plugins/groovy";
@@ -50,6 +53,7 @@ import scalaPrettierPlugin from "@/common/prettier/plugins/scala";
import clangPrettierPlugin from "@/common/prettier/plugins/clang";
import pythonPrettierPlugin from "@/common/prettier/plugins/python";
import dartPrettierPlugin from "@/common/prettier/plugins/dart";
import luaPrettierPlugin from "@/common/prettier/plugins/lua";
import * as prettierPluginEstree from "prettier/plugins/estree";
/**
@@ -60,9 +64,11 @@ export class LanguageInfo {
public token: SupportedLanguage,
public name: string,
public parser: any,
public detectIds?: string[],
public prettier?: {
parser: string;
plugins: any[];
options?: Record<string, any>; // 添加自定义配置选项
}) {
}
}
@@ -72,97 +78,105 @@ export class LanguageInfo {
*/
export const LANGUAGES: LanguageInfo[] = [
new LanguageInfo("text", "Plain Text", null),
new LanguageInfo("json", "JSON", jsonLanguage.parser, {
new LanguageInfo("json", "JSON", jsonLanguage.parser, ["json"], {
parser: "json",
plugins: [babelPrettierPlugin, prettierPluginEstree]
}),
new LanguageInfo("py", "Python", pythonLanguage.parser,{
new LanguageInfo("py", "Python", pythonLanguage.parser, ["py"], {
parser: "python",
plugins: [pythonPrettierPlugin]
}),
new LanguageInfo("html", "HTML", htmlLanguage.parser, {
new LanguageInfo("html", "HTML", htmlLanguage.parser, ["html"], {
parser: "html",
plugins: [htmlPrettierPlugin]
}),
new LanguageInfo("sql", "SQL", StandardSQL.language.parser, {
new LanguageInfo("sql", "SQL", StandardSQL.language.parser, ["sql"], {
parser: "sql",
plugins: [sqlPrettierPlugin]
}),
new LanguageInfo("md", "Markdown", markdownLanguage.parser, {
new LanguageInfo("md", "Markdown", markdownLanguage.parser, ["md"], {
parser: "markdown",
plugins: [markdownPrettierPlugin]
}),
new LanguageInfo("java", "Java", javaLanguage.parser,{
new LanguageInfo("java", "Java", javaLanguage.parser, ["java"], {
parser: "java",
plugins: [javaPrettierPlugin]
}),
new LanguageInfo("php", "PHP", phpLanguage.configure({top: "Program"}).parser, {
new LanguageInfo("php", "PHP", phpLanguage.configure({top: "Program"}).parser, ["php"], {
parser: "php",
plugins: [phpPrettierPlugin]
}),
new LanguageInfo("css", "CSS", cssLanguage.parser, {
new LanguageInfo("css", "CSS", cssLanguage.parser, ["css"], {
parser: "css",
plugins: [cssPrettierPlugin]
}),
new LanguageInfo("xml", "XML", xmlLanguage.parser,{
new LanguageInfo("xml", "XML", xmlLanguage.parser, ["xml"], {
parser: "xml",
plugins: [xmlPrettierPlugin]
}),
new LanguageInfo("cpp", "C++", cppLanguage.parser,{
new LanguageInfo("cpp", "C++", cppLanguage.parser, ["cpp", "c"], {
parser: "clang",
plugins: [clangPrettierPlugin]
}),
new LanguageInfo("rs", "Rust", rustLanguage.parser,{
new LanguageInfo("rs", "Rust", rustLanguage.parser, ["rs"], {
parser: "jinx-rust",
plugins: [rustPrettierPlugin]
}),
new LanguageInfo("cs", "C#", StreamLanguage.define(csharp).parser),
new LanguageInfo("rb", "Ruby", StreamLanguage.define(ruby).parser),
new LanguageInfo("sh", "Shell", StreamLanguage.define(shell).parser,{
new LanguageInfo("cs", "C#", StreamLanguage.define(csharp).parser, ["cs"]),
new LanguageInfo("rb", "Ruby", StreamLanguage.define(ruby).parser, ["rb"]),
new LanguageInfo("sh", "Shell", StreamLanguage.define(shell).parser, ["sh", "bat"], {
parser: "sh",
plugins: [shellPrettierPlugin]
}),
new LanguageInfo("yaml", "YAML", yamlLanguage.parser, {
new LanguageInfo("yaml", "YAML", yamlLanguage.parser, ["yaml"], {
parser: "yaml",
plugins: [yamlPrettierPlugin]
}),
new LanguageInfo("toml", "TOML", StreamLanguage.define(toml).parser,{
new LanguageInfo("toml", "TOML", StreamLanguage.define(toml).parser, ["toml"], {
parser: "toml",
plugins: [tomlPrettierPlugin]
}),
new LanguageInfo("go", "Go", StreamLanguage.define(go).parser, {
new LanguageInfo("go", "Go", StreamLanguage.define(go).parser, ["go"], {
parser: "go-format",
plugins: [goPrettierPlugin]
}),
new LanguageInfo("clj", "Clojure", StreamLanguage.define(clojure).parser,{
new LanguageInfo("clj", "Clojure", StreamLanguage.define(clojure).parser, ["clj"], {
parser: "clojure",
plugins: [clojurePrettierPlugin]
}),
new LanguageInfo("ex", "Elixir", elixir().language.parser),
new LanguageInfo("erl", "Erlang", StreamLanguage.define(erlang).parser),
new LanguageInfo("js", "JavaScript", javascriptLanguage.parser, {
new LanguageInfo("ex", "Elixir", elixir().language.parser, ["ex"]),
new LanguageInfo("erl", "Erlang", StreamLanguage.define(erlang).parser, ["erl"]),
new LanguageInfo("js", "JavaScript", javascriptLanguage.parser, ["js"], {
parser: "babel",
plugins: [babelPrettierPlugin, prettierPluginEstree]
}),
new LanguageInfo("ts", "TypeScript", typescriptLanguage.parser, {
new LanguageInfo("ts", "TypeScript", typescriptLanguage.parser, ["ts", "js"], {
parser: "typescript",
plugins: [typescriptPlugin, prettierPluginEstree]
}),
new LanguageInfo("swift", "Swift", StreamLanguage.define(swift).parser),
new LanguageInfo("kt", "Kotlin", StreamLanguage.define(kotlin).parser),
new LanguageInfo("groovy", "Groovy", StreamLanguage.define(groovy).parser,{
new LanguageInfo("swift", "Swift", StreamLanguage.define(swift).parser, ["swift"]),
new LanguageInfo("kt", "Kotlin", StreamLanguage.define(kotlin).parser, ["kt"]),
new LanguageInfo("groovy", "Groovy", StreamLanguage.define(groovy).parser, ["groovy"], {
parser: "groovy",
plugins: [groovyPrettierPlugin]
}),
new LanguageInfo("ps1", "PowerShell", StreamLanguage.define(powerShell).parser),
new LanguageInfo("dart", "Dart", null,{
new LanguageInfo("ps1", "PowerShell", StreamLanguage.define(powerShell).parser, ["ps1"]),
new LanguageInfo("dart", "Dart", null, ["dart"], {
parser: "dart",
plugins: [dartPrettierPlugin]
}),
new LanguageInfo("scala", "Scala", StreamLanguage.define(scala).parser,{
new LanguageInfo("scala", "Scala", StreamLanguage.define(scala).parser, ["scala"], {
parser: "scala",
plugins: [scalaPrettierPlugin]
}),
new LanguageInfo("dockerfile", "Dockerfile", StreamLanguage.define(dockerFile).parser, ["dockerfile"], {
parser: "dockerfile",
plugins: [dockerfilePrettierPlugin]
}),
new LanguageInfo("lua", "Lua", StreamLanguage.define(lua).parser, ["lua"], {
parser: "lua",
plugins: [luaPrettierPlugin]
}),
];
/**
@@ -180,8 +194,8 @@ export function getLanguage(token: SupportedLanguage): LanguageInfo | undefined
}
/**
* 获取所有语言的 token 列表
* 获取完整的支持语言列表(包括 'auto'
*/
export function getLanguageTokens(): SupportedLanguage[] {
return LANGUAGES.map(lang => lang.token);
export function getAllSupportedLanguages(): SupportedLanguage[] {
return ['auto', ...LANGUAGES.map(lang => lang.token)];
}