diff --git a/build.zig.zon b/build.zig.zon index 64a5fe7..75d94c0 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -6,8 +6,8 @@ .dependencies = .{ .syntax = .{ - .url = "git+https://github.com/neurocyte/flow-syntax?ref=zig-0.14#bfeb77d62a5e58ec5d2451bdd543619ae26923a2", - .hash = "flow_syntax-0.1.0-X8jOoSkCAQClgFS-j4X7jL-PMJ6LVKdAoNMaHgqJweFL", + .url = "git+https://github.com/neurocyte/flow-syntax?ref=zig-0.14#410d19e633f237cd1602175450bd7d3bb03a1898", + .hash = "flow_syntax-0.1.0-X8jOoT4OAQDibKKzYlJls3u5KczVh__cWYN7vTqCE1o3", }, .flags = .{ .url = "https://github.com/n0s4/flags/archive/372501d1576b5723829bcba98e41361132c7b618.tar.gz", diff --git a/src/file_type_config.zig b/src/file_type_config.zig index a8b8a74..944ea16 100644 --- a/src/file_type_config.zig +++ b/src/file_type_config.zig @@ -23,7 +23,6 @@ pub const default = struct { pub const folder_icon = ""; fn from_file_type(file_type: syntax.FileType) @This() { - const lsp_defaults: LspDefaults = static_file_type_lsp_defaults.get(file_type.name) orelse .{}; return .{ .name = file_type.name, .color = file_type.color, @@ -34,8 +33,8 @@ fn from_file_type(file_type: syntax.FileType) @This() { .first_line_matches_content = if (file_type.first_line_matches) |flm| flm.content else null, .parser = file_type.name, .comment = file_type.comment, - .formatter = lsp_defaults.formatter, - .language_server = lsp_defaults.language_server, + .formatter = file_type.formatter, + .language_server = file_type.language_server, }; } @@ -200,46 +199,6 @@ pub fn create_syntax_guess_file_type( return create_syntax(file_type, allocator, query_cache); } -const static_file_type_lsp_defaults_list = load_file_type_lsp_defaults(@import("file_type_lsp.zig")); -const static_file_type_lsp_defaults = std.StaticStringMap(LspDefaults).initComptime(static_file_type_lsp_defaults_list); - -const LspDefaults = struct { - formatter: ?[]const []const u8 = null, - language_server: ?[]const []const u8 = null, -}; -const ListEntry = struct { []const u8, LspDefaults }; - -fn load_file_type_lsp_defaults(comptime Namespace: type) []const ListEntry { - comptime switch (@typeInfo(Namespace)) { - .@"struct" => |info| { - var count = 0; - for (info.decls) |_| count += 1; - var construct_types: [count]ListEntry = undefined; - var i = 0; - for (info.decls) |decl| { - const lang = decl.name; - const args = @field(Namespace, lang); - construct_types[i] = .{ lang, .{ - .formatter = if (@hasField(@TypeOf(args), "formatter")) vec(args.formatter) else null, - .language_server = if (@hasField(@TypeOf(args), "language_server")) vec(args.language_server) else null, - } }; - i += 1; - } - const types = construct_types; - return &types; - }, - else => @compileError("expected tuple or struct type"), - }; -} - -fn vec(comptime args: anytype) []const []const u8 { - var cmd: []const []const u8 = &[_][]const u8{}; - inline for (args) |arg| { - cmd = cmd ++ [_][]const u8{arg}; - } - return cmd; -} - const syntax = @import("syntax"); const std = @import("std"); const root = @import("root"); diff --git a/src/file_type_lsp.zig b/src/file_type_lsp.zig deleted file mode 100644 index a558cc7..0000000 --- a/src/file_type_lsp.zig +++ /dev/null @@ -1,224 +0,0 @@ -pub const agda = .{}; - -pub const astro = .{ - .language_server = .{ "astro-ls", "--stdio" }, -}; - -pub const bash = .{ - .language_server = .{ "bash-language-server", "start" }, - .formatter = .{ "shfmt", "--indent", "4" }, -}; - -pub const c = .{ - .language_server = .{"clangd"}, - .formatter = .{"clang-format"}, -}; - -pub const @"c-sharp" = .{ - .language_server = .{ "OmniSharp", "-lsp" }, - .formatter = .{ "csharpier", "format" }, -}; - -pub const conf = .{}; - -pub const cmake = .{ - .language_server = .{"cmake-language-server"}, - .formatter = .{"cmake-format"}, -}; - -pub const cpp = .{ - .language_server = .{"clangd"}, - .formatter = .{"clang-format"}, -}; - -pub const css = .{ - .language_server = .{ "vscode-css-language-server", "--stdio" }, -}; - -pub const diff = .{}; - -pub const dockerfile = .{}; - -pub const dtd = .{}; - -pub const elixir = .{ - .language_server = .{"elixir-ls"}, - .formatter = .{ "mix", "format", "-" }, -}; - -pub const fish = .{}; - -pub const @"git-rebase" = .{}; - -pub const gitcommit = .{}; - -pub const gleam = .{ - .language_server = .{ "gleam", "lsp" }, - .formatter = .{ "gleam", "format", "--stdin" }, -}; - -pub const go = .{ - .language_server = .{"gopls"}, - .formatter = .{"gofmt"}, -}; - -pub const hare = .{}; - -pub const haskell = .{ - .language_server = .{ "haskell-language-server-wrapper", "lsp" }, -}; - -pub const html = .{ - .language_server = .{ "superhtml", "lsp" }, // https://github.com/kristoff-it/super-html.git - .formatter = .{ "superhtml", "fmt", "--stdin" }, -}; - -pub const superhtml = .{ - .language_server = .{ "superhtml", "lsp" }, - .formatter = .{ "superhtml", "fmt", "--stdin-super" }, -}; - -pub const hurl = .{}; - -pub const java = .{}; - -pub const javascript = .{ - .language_server = .{ "typescript-language-server", "--stdio" }, - .formatter = .{ "prettier", "--parser", "typescript" }, -}; - -pub const json = .{ - .language_server = .{ "vscode-json-language-server", "--stdio" }, - .formatter = .{ "prettier", "--parser", "json" }, -}; - -pub const julia = .{ - .language_server = .{ "julia", "-e", "using LanguageServer; runserver()" }, - .formatter = .{ "julia", "-e", "using JuliaFormatter; print(format_text(read(stdin, String)))" }, -}; - -pub const kdl = .{}; - -pub const lua = .{ - .language_server = .{"lua-lsp"}, -}; - -pub const mail = .{}; - -pub const make = .{}; - -pub const markdown = .{ - .language_server = .{ "marksman", "server" }, - .formatter = .{ "prettier", "--parser", "markdown" }, -}; - -pub const @"markdown-inline" = .{}; - -pub const nasm = .{}; - -pub const nim = .{ - .language_server = .{"nimlangserver"}, -}; - -pub const nimble = .{}; - -pub const ninja = .{}; - -pub const nix = .{ - .language_server = .{"nixd"}, - .formatter = .{"alejandra"}, -}; - -pub const nu = .{ - .language_server = .{ "nu", "--lsp" }, -}; - -pub const ocaml = .{ - .language_server = .{ "ocamllsp", "--fallback-read-dot-merlin" }, - .formatter = .{ "ocamlformat", "--profile=ocamlformat", "-" }, -}; - -pub const odin = .{ - .language_server = .{"ols"}, - .formatter = .{ "odinfmt", "-stdin" }, -}; - -pub const openscad = .{ - .language_server = .{"openscad-lsp"}, -}; - -pub const org = .{}; - -pub const php = .{ - .language_server = .{ "intelephense", "--stdio" }, -}; - -pub const powershell = .{}; - -pub const proto = .{}; - -pub const purescript = .{}; - -pub const python = .{ - .language_server = .{ "ruff", "server" }, - .formatter = .{ "ruff", "format", "-" }, -}; - -pub const regex = .{}; - -pub const rpmspec = .{}; - -pub const ruby = .{ - .language_server = .{"ruby-lsp"}, -}; - -pub const rust = .{ - .language_server = .{"rust-analyzer"}, - .formatter = .{"rustfmt"}, -}; - -pub const scheme = .{}; - -pub const sql = .{}; - -pub const @"ssh-config" = .{}; - -pub const swift = .{ - .language_server = .{"sourcekit-lsp"}, - .formatter = .{"swift-format"}, -}; - -pub const verilog = .{ - .language_server = .{"verible-verilog-ls"}, - .formatter = .{ "verible-verilog-format", "-" }, -}; - -pub const toml = .{}; - -pub const typescript = .{ - .language_server = .{ "typescript-language-server", "--stdio" }, - .formatter = .{ "prettier", "--parser", "typescript" }, -}; - -pub const typst = .{ - .language_server = .{"tinymist"}, -}; - -pub const uxntal = .{}; - -pub const vim = .{}; - -pub const xml = .{ - .formatter = .{ "xmllint", "--format", "-" }, -}; - -pub const yaml = .{}; - -pub const zig = .{ - .language_server = .{"zls"}, - .formatter = .{ "zig", "fmt", "--stdin" }, -}; - -pub const ziggy = .{}; - -pub const @"ziggy-schema" = .{};