diff --git a/src/file_type.zig b/src/file_type.zig index 212c6ff..9faa6fa 100644 --- a/src/file_type.zig +++ b/src/file_type.zig @@ -17,6 +17,8 @@ lang_fn: LangFn, extensions: []const []const u8, first_line_matches: ?FirstLineMatch = null, comment: []const u8, +formatter: ?[]const []const u8, +language_server: ?[]const []const u8, pub fn get_by_name_static(name: []const u8) ?FileType { return FileType.static_file_types.get(name); @@ -127,6 +129,8 @@ fn load_file_types(comptime Namespace: type) []const ListEntry { .extensions = vec(args.extensions), .comment = args.comment, .first_line_matches = if (@hasField(@TypeOf(args), "first_line_matches")) args.first_line_matches else null, + .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; } diff --git a/src/file_types.zig b/src/file_types.zig index 1495758..e75ad4a 100644 --- a/src/file_types.zig +++ b/src/file_types.zig @@ -12,6 +12,7 @@ pub const astro = .{ .icon = "", .extensions = .{"astro"}, .comment = "//", + .language_server = .{ "astro-ls", "--stdio" }, }; pub const bash = .{ @@ -21,6 +22,8 @@ pub const bash = .{ .extensions = .{ "sh", "bash", ".profile" }, .comment = "#", .first_line_matches = FirstLineMatch{ .prefix = "#!", .content = "sh" }, + .formatter = .{ "shfmt", "--indent", "4" }, + .language_server = .{ "bash-language-server", "start" }, }; pub const c = .{ @@ -28,6 +31,8 @@ pub const c = .{ .icon = "", .extensions = .{"c"}, .comment = "//", + .formatter = .{"clang-format"}, + .language_server = .{"clangd"}, }; pub const @"c-sharp" = .{ @@ -36,6 +41,8 @@ pub const @"c-sharp" = .{ .icon = "󰌛", .extensions = .{"cs"}, .comment = "//", + .language_server = .{ "OmniSharp", "-lsp" }, + .formatter = .{ "csharpier", "format" }, }; pub const conf = .{ @@ -56,6 +63,8 @@ pub const cmake = .{ .comment = "#", .highlights = "queries/cmake/highlights.scm", .injections = "queries/cmake/injections.scm", + .formatter = .{"cmake-format"}, + .language_server = .{"cmake-language-server"}, }; pub const cpp = .{ @@ -69,6 +78,8 @@ pub const cpp = .{ "tree-sitter-cpp/queries/highlights.scm", }, .injections = "tree-sitter-cpp/queries/injections.scm", + .formatter = .{"clang-format"}, + .language_server = .{"clangd"}, }; pub const css = .{ @@ -77,6 +88,7 @@ pub const css = .{ .icon = "󰌜", .extensions = .{"css"}, .comment = "//", + .language_server = .{ "vscode-css-language-server", "--stdio" }, }; pub const diff = .{ @@ -108,6 +120,8 @@ pub const elixir = .{ .extensions = .{ "ex", "exs" }, .comment = "#", .injections = "tree-sitter-elixir/queries/injections.scm", + .formatter = .{ "mix", "format", "-" }, + .language_server = .{"elixir-ls"}, }; pub const fish = .{ @@ -141,6 +155,8 @@ pub const gleam = .{ .icon = "󰦥", .extensions = .{"gleam"}, .comment = "//", + .language_server = .{ "gleam", "lsp" }, + .formatter = .{ "gleam", "format", "--stdin" }, }; pub const go = .{ @@ -149,6 +165,8 @@ pub const go = .{ .icon = "󰟓", .extensions = .{"go"}, .comment = "//", + .language_server = .{"gopls"}, + .formatter = .{"gofmt"}, }; pub const hare = .{ @@ -163,6 +181,7 @@ pub const haskell = .{ .icon = "󰲒", .extensions = .{"hs"}, .comment = "--", + .language_server = .{ "haskell-language-server-wrapper", "lsp" }, }; pub const html = .{ @@ -172,6 +191,8 @@ pub const html = .{ .extensions = .{"html"}, .comment = "