nixos-config/config/programs/helix/languages.nix
2023-01-28 10:25:53 +01:00

1911 lines
44 KiB
Nix

{pkgs, ...}: {
programs.helix.languages = [
{
auto-format = true;
auto-pairs = {
"\"" = "\"";
"(" = ")";
"[" = "]";
"`" = "`";
"{" = "}";
};
comment-token = "//";
debugger = {
command = "${pkgs.vscode-extensions.vadimcn.vscode-lldb}/share/vscode/extensions/vadimcn.vscode-lldb/adapter/codelldb";
name = "lldb-vscode";
templates = [
{
args = {program = "{0}";};
completion = [
{
completion = "filename";
name = "binary";
}
];
name = "binary";
request = "launch";
}
{
args = {
program = "{0}";
runInTerminal = true;
};
completion = [
{
completion = "filename";
name = "binary";
}
];
name = "binary (terminal)";
request = "launch";
}
{
args = {pid = "{0}";};
completion = ["pid"];
name = "attach";
request = "attach";
}
{
args = {attachCommands = ["platform select remote-gdb-server" "platform connect {0}" "file {1}" "attach {2}"];};
completion = [
{
default = "connect://localhost:3333";
name = "lldb connect url";
}
{
completion = "filename";
name = "file";
}
"pid"
];
name = "gdbserver attach";
request = "attach";
}
];
transport = "stdio";
};
file-types = ["rs"];
indent = {
tab-width = 4;
unit = " ";
};
injection-regex = "rust";
language-server = {command = "${pkgs.rust-analyzer}/bin/rust-analyzer";};
name = "rust";
roots = ["Cargo.toml" "Cargo.lock"];
scope = "source.rust";
}
{
comment-token = "#";
file-types = ["toml"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "toml";
language-server = {
args = ["lsp" "stdio"];
command = "${pkgs.rust-analyzer}/bin/taplo";
};
name = "toml";
roots = [];
scope = "source.toml";
}
{
comment-token = "#";
file-types = ["awk" "gawk" "nawk" "mawk"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "awk";
language-server = {command = "awk-language-server";};
name = "awk";
roots = [];
scope = "source.awk";
}
{
comment-token = "//";
file-types = ["proto"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "protobuf";
name = "protobuf";
roots = [];
scope = "source.proto";
}
{
comment-token = "#";
config = {elixirLS = {dialyzerEnabled = false;};};
file-types = ["ex" "exs" "mix.lock"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "(elixir|ex)";
language-server.command = "${pkgs.elixir_ls}/bin/elixir-ls";
name = "elixir";
roots = [];
scope = "source.elixir";
shebangs = ["elixir"];
}
{
comment-token = "#";
file-types = ["fish"];
indent = {
tab-width = 4;
unit = " ";
};
injection-regex = "fish";
name = "fish";
roots = [];
scope = "source.fish";
shebangs = ["fish"];
}
{
comment-token = "//";
file-types = ["mint"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "mint";
language-server = {
args = ["ls"];
command = "mint";
};
name = "mint";
roots = [];
scope = "source.mint";
shebangs = [];
}
{
auto-format = true;
config = {provideFormatter = true;};
file-types = ["json"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "json";
language-server = {
args = ["--stdio"];
command = "${pkgs.nodePackages.vscode-json-languageserver}/bin/vscode-json-languageserver";
};
name = "json";
roots = [];
scope = "source.json";
}
{
comment-token = "//";
debugger = {
command = "${pkgs.vscode-extensions.vadimcn.vscode-lldb}/share/vscode/extensions/vadimcn.vscode-lldb/adapter/codelldb";
name = "lldb-vscode";
templates = [
{
args = {
console = "internalConsole";
program = "{0}";
};
completion = [
{
completion = "filename";
name = "binary";
}
];
name = "binary";
request = "launch";
}
{
args = {
console = "internalConsole";
pid = "{0}";
};
completion = ["pid"];
name = "attach";
request = "attach";
}
{
args = {
attachCommands = ["platform select remote-gdb-server" "platform connect {0}" "file {1}" "attach {2}"];
console = "internalConsole";
};
completion = [
{
default = "connect://localhost:3333";
name = "lldb connect url";
}
{
completion = "filename";
name = "file";
}
"pid"
];
name = "gdbserver attach";
request = "attach";
}
];
transport = "stdio";
};
file-types = ["c"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "c";
language-server.command = "${pkgs.llvmPackages_latest.clang-unwrapped}/bin/clangd";
name = "c";
roots = [];
scope = "source.c";
}
{
comment-token = "//";
debugger = {
command = "${pkgs.vscode-extensions.vadimcn.vscode-lldb}/share/vscode/extensions/vadimcn.vscode-lldb/adapter/codelldb";
name = "lldb-vscode";
templates = [
{
args = {
console = "internalConsole";
program = "{0}";
};
completion = [
{
completion = "filename";
name = "binary";
}
];
name = "binary";
request = "launch";
}
{
args = {
console = "internalConsole";
pid = "{0}";
};
completion = ["pid"];
name = "attach";
request = "attach";
}
{
args = {
attachCommands = ["platform select remote-gdb-server" "platform connect {0}" "file {1}" "attach {2}"];
console = "internalConsole";
};
completion = [
{
default = "connect://localhost:3333";
name = "lldb connect url";
}
{
completion = "filename";
name = "file";
}
"pid"
];
name = "gdbserver attach";
request = "attach";
}
];
transport = "stdio";
};
file-types = ["cc" "hh" "cpp" "hpp" "h" "ipp" "tpp" "cxx" "hxx" "ixx" "txx" "ino"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "cpp";
language-server.command = "${pkgs.llvmPackages_latest.clang-unwrapped}/bin/clangd";
name = "cpp";
roots = [];
scope = "source.cpp";
}
{
comment-token = "//";
file-types = ["cs"];
indent = {
tab-width = 4;
unit = "\t";
};
injection-regex = "c-?sharp";
language-server = {
args = ["--languageserver"];
command = "OmniSharp";
};
name = "c-sharp";
roots = ["sln" "csproj"];
scope = "source.csharp";
}
{
auto-format = true;
comment-token = "//";
debugger = {
args = ["dap"];
command = "dlv";
name = "go";
port-arg = "-l 127.0.0.1:{}";
templates = [
{
args = {
mode = "debug";
program = "{0}";
};
completion = [
{
completion = "filename";
default = ".";
name = "entrypoint";
}
];
name = "source";
request = "launch";
}
{
args = {
mode = "exec";
program = "{0}";
};
completion = [
{
completion = "filename";
name = "binary";
}
];
name = "binary";
request = "launch";
}
{
args = {
mode = "test";
program = "{0}";
};
completion = [
{
completion = "directory";
default = ".";
name = "tests";
}
];
name = "test";
request = "launch";
}
{
args = {
mode = "local";
processId = "{0}";
};
completion = ["pid"];
name = "attach";
request = "attach";
}
];
transport = "tcp";
};
file-types = ["go"];
indent = {
tab-width = 4;
unit = "\t";
};
injection-regex = "go";
language-server = {command = "gopls";};
name = "go";
roots = ["Gopkg.toml" "go.mod"];
scope = "source.go";
}
{
auto-format = true;
comment-token = "//";
file-types = ["go.mod"];
indent = {
tab-width = 4;
unit = "\t";
};
injection-regex = "gomod";
language-server = {command = "gopls";};
name = "gomod";
roots = [];
scope = "source.gomod";
}
{
comment-token = "//";
file-types = ["gotmpl"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "gotmpl";
language-server = {command = "gopls";};
name = "gotmpl";
roots = [];
scope = "source.gotmpl";
}
{
auto-format = true;
comment-token = "//";
file-types = ["go.work"];
indent = {
tab-width = 4;
unit = "\t";
};
injection-regex = "gowork";
language-server = {command = "gopls";};
name = "gowork";
roots = [];
scope = "source.gowork";
}
{
comment-token = "//";
debugger = {
name = "node-debug2";
quirks = {absolute-paths = true;};
templates = [
{
args = {program = "{0}";};
completion = [
{
completion = "filename";
default = "index.js";
name = "main";
}
];
name = "source";
request = "launch";
}
];
transport = "stdio";
};
file-types = ["js" "mjs" "cjs"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "(js|javascript)";
language-server = {
args = ["--stdio"];
command = "${pkgs.nodePackages.typescript-language-server}/bin/typescript-language-server";
language-id = "javascript";
};
name = "javascript";
roots = [];
scope = "source.js";
shebangs = ["node"];
}
{
comment-token = "//";
file-types = ["jsx"];
grammar = "javascript";
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "jsx";
language-server = {
args = ["--stdio"];
command = "${pkgs.nodePackages.typescript-language-server}/bin/typescript-language-server";
language-id = "javascriptreact";
};
name = "jsx";
roots = [];
scope = "source.jsx";
}
{
file-types = ["ts"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "(ts|typescript)";
language-server = {
args = ["--stdio"];
command = "${pkgs.nodePackages.typescript-language-server}/bin/typescript-language-server";
language-id = "typescript";
};
name = "typescript";
roots = [];
scope = "source.ts";
shebangs = [];
}
{
file-types = ["tsx"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "(tsx)";
language-server = {
args = ["--stdio"];
command = "${pkgs.nodePackages.typescript-language-server}/bin/typescript-language-server";
language-id = "typescriptreact";
};
name = "tsx";
roots = [];
scope = "source.tsx";
}
{
file-types = ["css" "scss"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "css";
language-server = {
args = ["--stdio"];
command = "${pkgs.nodePackages.vscode-css-languageserver-bin}/bin/css-languageserver";
};
name = "css";
roots = [];
scope = "source.css";
}
{
file-types = ["scss"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "scss";
language-server = {
args = ["--stdio"];
command = "${pkgs.nodePackages.vscode-css-languageserver-bin}/bin/css-languageserver";
};
name = "scss";
roots = [];
scope = "source.scss";
}
{
auto-format = true;
config = {provideFormatter = true;};
file-types = ["html"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "html";
language-server = {
args = ["--stdio"];
command = "${pkgs.nodePackages.vscode-html-languageserver-bin}/bin/html-languageserver";
};
name = "html";
roots = [];
scope = "text.html.basic";
}
# {
# comment-token = "#";
# file-types = ["py"];
# indent = {
# tab-width = 4;
# unit = " ";
# };
# injection-regex = "python";
# language-server.command = "${pkgs.python3Packages.python-lsp-server}/bin/pylsp";
# name = "python";
# roots = [];
# scope = "source.python";
# shebangs = ["python"];
# }
{
comment-token = "#";
file-types = ["ncl"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "nickel";
language-server = {command = "nls";};
name = "nickel";
roots = [];
scope = "source.nickel";
shebangs = [];
}
{
comment-token = "#";
file-types = ["nix"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "nix";
language-server.command = "${pkgs.rnix-lsp}/bin/rnix-lsp";
name = "nix";
roots = [];
scope = "source.nix";
shebangs = [];
}
{
comment-token = "#";
file-types = ["rb" "rake" "rakefile" "irb" "gemfile" "gemspec" "Rakefile" "Gemfile" "rabl" "jbuilder" "jb"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "ruby";
language-server = {
args = ["stdio"];
command = "solargraph";
};
name = "ruby";
roots = [];
scope = "source.ruby";
shebangs = ["ruby"];
}
{
comment-token = "#";
file-types = ["sh" "bash" "zsh" ".bash_login" ".bash_logout" ".bash_profile" ".bashrc" ".profile" ".zshenv" ".zlogin" ".zlogout" ".zprofile" ".zshrc" "APKBUILD" "PKGBUILD" "eclass" "ebuild" "bazelrc"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "(shell|bash|zsh|sh)";
language-server = {
args = ["start"];
command = "${pkgs.nodePackages.bash-language-server}/bin/bash-language-server";
};
name = "bash";
roots = [];
scope = "source.bash";
shebangs = ["sh" "bash" "dash"];
}
{
file-types = ["php" "inc"];
indent = {
tab-width = 4;
unit = " ";
};
injection-regex = "php";
language-server = {
args = ["--stdio"];
command = "intelephense";
};
name = "php";
roots = ["composer.json" "index.php"];
scope = "source.php";
shebangs = ["php"];
}
{
file-types = ["twig"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "twig";
name = "twig";
roots = [];
scope = "source.twig";
}
{
comment-token = "%";
file-types = ["tex"];
indent = {
tab-width = 4;
unit = "\t";
};
injection-regex = "tex";
language-server.command = "${pkgs.texlab}/bin/texlab";
name = "latex";
roots = [];
scope = "source.tex";
}
{
comment-token = "--";
file-types = ["lean"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "lean";
language-server = {
args = ["--server"];
command = "lean";
};
name = "lean";
roots = ["lakefile.lean"];
scope = "source.lean";
}
{
comment-token = "#";
file-types = ["jl"];
indent = {
tab-width = 4;
unit = " ";
};
injection-regex = "julia";
language-server = {
args = ["--startup-file=no" "--history-file=no" "--quiet" "-e" "using LanguageServer; runserver()"];
command = "julia";
};
name = "julia";
roots = [];
scope = "source.julia";
}
{
file-types = ["java"];
indent = {
tab-width = 4;
unit = " ";
};
injection-regex = "java";
language-server = {command = "jdtls";};
name = "java";
roots = ["pom.xml"];
scope = "source.java";
}
{
comment-token = ";";
file-types = ["ldg" "ledger" "journal"];
indent = {
tab-width = 4;
unit = " ";
};
injection-regex = "ledger";
name = "ledger";
roots = [];
scope = "source.ledger";
}
{
comment-token = ";";
file-types = ["beancount" "bean"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "beancount";
name = "beancount";
roots = [];
scope = "source.beancount";
}
{
comment-token = "(**)";
file-types = ["ml"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "ocaml";
language-server = {command = "ocamllsp";};
name = "ocaml";
roots = [];
scope = "source.ocaml";
shebangs = [];
}
{
comment-token = "(**)";
file-types = ["mli"];
indent = {
tab-width = 2;
unit = " ";
};
language-server = {command = "ocamllsp";};
name = "ocaml-interface";
roots = [];
scope = "source.ocaml.interface";
shebangs = [];
}
{
comment-token = "--";
file-types = ["lua"];
indent = {
tab-width = 2;
unit = " ";
};
language-server = {
args = [];
command = "lua-language-server";
};
name = "lua";
roots = [".luarc.json" ".luacheckrc" ".stylua.toml" "selene.toml" ".git"];
scope = "source.lua";
shebangs = ["lua"];
}
{
file-types = ["svelte"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "svelte";
language-server = {
args = ["--stdio"];
command = "svelteserver";
};
name = "svelte";
roots = [];
scope = "source.svelte";
}
{
file-types = ["vue"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "vue";
language-server.command = "${pkgs.nodePackages.vls}/bin/vls";
name = "vue";
roots = ["package.json" "vue.config.js"];
scope = "source.vue";
}
{
comment-token = "#";
file-types = ["yml" "yaml"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "yml|yaml";
language-server = {
args = ["--stdio"];
command = "${pkgs.nodePackages.yaml-language-server}/bin/yaml-language-server";
};
name = "yaml";
roots = [];
scope = "source.yaml";
}
{
comment-token = "--";
file-types = ["hs"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "haskell";
language-server = {
args = ["--lsp"];
command = "haskell-language-server-wrapper";
};
name = "haskell";
roots = ["Setup.hs" "stack.yaml" "*.cabal"];
scope = "source.haskell";
}
{
auto-format = true;
comment-token = "//";
file-types = ["zig"];
formatter = {
args = ["fmt" "--stdin"];
command = "zig";
};
indent = {
tab-width = 4;
unit = " ";
};
injection-regex = "zig";
language-server = {command = "zls";};
name = "zig";
roots = ["build.zig"];
scope = "source.zig";
}
{
comment-token = "%";
file-types = ["pl" "prolog"];
language-server = {
args = ["-g" "use_module(library(lsp_server))" "-g" "lsp_server:main" "-t" "halt" "--" "stdio"];
command = "swipl";
};
name = "prolog";
roots = [];
scope = "source.prolog";
shebangs = ["swipl"];
}
{
comment-token = ";";
file-types = ["scm"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "tsq";
name = "tsq";
roots = [];
scope = "source.tsq";
}
{
comment-token = "#";
file-types = ["cmake" "CMakeLists.txt"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "cmake";
language-server = {command = "cmake-language-server";};
name = "cmake";
roots = [];
scope = "source.cmake";
}
{
comment-token = "#";
file-types = ["Makefile" "makefile" "mk" "justfile" ".justfile"];
indent = {
tab-width = 4;
unit = "\t";
};
injection-regex = "(make|makefile|Makefile|mk|just)";
name = "make";
roots = [];
scope = "source.make";
}
{
comment-token = "//";
file-types = ["glsl" "vert" "tesc" "tese" "geom" "frag" "comp"];
indent = {
tab-width = 4;
unit = " ";
};
injection-regex = "glsl";
name = "glsl";
roots = [];
scope = "source.glsl";
}
{
comment-token = "#";
file-types = ["pl" "pm" "t"];
indent = {
tab-width = 2;
unit = " ";
};
name = "perl";
roots = [];
scope = "source.perl";
shebangs = ["perl"];
}
{
comment-token = ";";
file-types = ["rkt"];
language-server = {
args = ["-l" "racket-langserver"];
command = "racket";
};
name = "racket";
roots = [];
scope = "source.rkt";
shebangs = ["racket"];
}
{
file-types = [];
injection-regex = "comment";
name = "comment";
roots = [];
scope = "scope.comment";
}
{
comment-token = "//";
file-types = ["wgsl"];
indent = {
tab-width = 4;
unit = " ";
};
language-server = {command = "wgsl_analyzer";};
name = "wgsl";
roots = [];
scope = "source.wgsl";
}
{
comment-token = ";";
file-types = ["ll"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "llvm";
name = "llvm";
roots = [];
scope = "source.llvm";
}
{
comment-token = ";";
file-types = [];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "mir";
name = "llvm-mir";
roots = [];
scope = "source.llvm_mir";
}
{
comment-token = "#";
file-types = ["mir"];
indent = {
tab-width = 2;
unit = " ";
};
name = "llvm-mir-yaml";
roots = [];
scope = "source.yaml";
}
{
comment-token = "//";
file-types = ["td"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "tablegen";
name = "tablegen";
roots = [];
scope = "source.tablegen";
}
{
file-types = ["md" "markdown"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "md|markdown";
language-server = {
args = ["server"];
command = "marksman";
};
name = "markdown";
roots = [".marksman.toml"];
scope = "source.md";
}
{
file-types = [];
grammar = "markdown_inline";
injection-regex = "markdown\\.inline";
name = "markdown.inline";
roots = [];
scope = "source.markdown.inline";
}
{
auto-format = true;
comment-token = "//";
file-types = ["dart"];
indent = {
tab-width = 2;
unit = " ";
};
language-server = {
args = ["language-server" "--client-id=helix"];
command = "dart";
};
name = "dart";
roots = ["pubspec.yaml"];
scope = "source.dart";
}
{
comment-token = "//";
file-types = ["scala" "sbt"];
indent = {
tab-width = 2;
unit = " ";
};
language-server = {command = "metals";};
name = "scala";
roots = ["build.sbt" "pom.xml"];
scope = "source.scala";
}
{
comment-token = "#";
file-types = ["Dockerfile" "dockerfile"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "docker|dockerfile";
language-server = {
args = ["--stdio"];
command = "docker-langserver";
};
name = "dockerfile";
roots = ["Dockerfile"];
scope = "source.dockerfile";
}
{
comment-token = "#";
file-types = ["COMMIT_EDITMSG"];
indent = {
tab-width = 2;
unit = " ";
};
max-line-length = 72;
name = "git-commit";
roots = [];
rulers = [50 72];
scope = "git.commitmsg";
}
{
comment-token = "#";
file-types = ["diff"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "diff";
name = "diff";
roots = [];
scope = "source.diff";
}
{
comment-token = "#";
file-types = ["git-rebase-todo"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "git-rebase";
name = "git-rebase";
roots = [];
scope = "source.gitrebase";
}
{
file-types = ["regex"];
injection-regex = "regex";
name = "regex";
roots = [];
scope = "source.regex";
}
{
comment-token = "#";
file-types = [".gitmodules" ".gitconfig"];
indent = {
tab-width = 4;
unit = "\t";
};
injection-regex = "git-config";
name = "git-config";
roots = [];
scope = "source.gitconfig";
}
{
comment-token = "#";
file-types = [".gitattributes"];
grammar = "gitattributes";
injection-regex = "git-attributes";
name = "git-attributes";
roots = [];
scope = "source.gitattributes";
}
{
comment-token = "#";
file-types = [".gitignore" ".gitignore_global"];
grammar = "gitignore";
injection-regex = "git-ignore";
name = "git-ignore";
roots = [];
scope = "source.gitignore";
}
{
file-types = ["gql" "graphql"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "graphql";
name = "graphql";
roots = [];
scope = "source.graphql";
}
{
auto-format = true;
comment-token = "--";
file-types = ["elm"];
indent = {
tab-width = 4;
unit = " ";
};
injection-regex = "elm";
language-server = {command = "elm-language-server";};
name = "elm";
roots = ["elm.json"];
scope = "source.elm";
}
{
file-types = ["iex"];
injection-regex = "iex";
name = "iex";
roots = [];
scope = "source.iex";
}
{
auto-format = true;
comment-token = "//";
file-types = ["res"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "rescript";
language-server = {
args = ["--stdio"];
command = "rescript-language-server";
};
name = "rescript";
roots = ["bsconfig.json"];
scope = "source.rescript";
}
{
auto-pairs = {
"\"" = "\"";
"'" = "'";
"(" = ")";
"[" = "]";
"`" = "'";
"{" = "}";
};
comment-token = "%%";
file-types = ["erl" "hrl" "app" "rebar.config" "rebar.lock"];
indent = {
tab-width = 4;
unit = " ";
};
injection-regex = "erl(ang)?";
language-server = {command = "erlang_ls";};
name = "erlang";
roots = ["rebar.config"];
scope = "source.erlang";
}
{
comment-token = "//";
file-types = ["kt" "kts"];
indent = {
tab-width = 4;
unit = " ";
};
language-server = {command = "kotlin-language-server";};
name = "kotlin";
roots = ["settings.gradle" "settings.gradle.kts"];
scope = "source.kotlin";
}
{
auto-format = true;
comment-token = "#";
file-types = ["hcl" "tf" "nomad"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "(hcl|tf|nomad)";
language-server = {
args = ["serve"];
command = "terraform-ls";
language-id = "terraform";
};
name = "hcl";
roots = [];
scope = "source.hcl";
}
{
auto-format = true;
comment-token = "#";
file-types = ["tfvars"];
grammar = "hcl";
indent = {
tab-width = 2;
unit = " ";
};
language-server = {
args = ["serve"];
command = "terraform-ls";
language-id = "terraform-vars";
};
name = "tfvars";
roots = [];
scope = "source.tfvars";
}
{
file-types = ["org"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "org";
name = "org";
roots = [];
scope = "source.org";
}
{
comment-token = "//";
file-types = ["sol"];
indent = {
tab-width = 4;
unit = " ";
};
injection-regex = "(sol|solidity)";
language-server = {
args = ["--lsp"];
command = "solc";
};
name = "solidity";
roots = [];
scope = "source.sol";
}
{
comment-token = "//";
file-types = ["gleam"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "gleam";
language-server = {
args = ["lsp"];
command = "gleam";
};
name = "gleam";
roots = ["gleam.toml"];
scope = "source.gleam";
}
{
comment-token = "//";
file-types = ["ron"];
grammar = "rust";
indent = {
tab-width = 4;
unit = " ";
};
injection-regex = "ron";
name = "ron";
roots = [];
scope = "source.ron";
}
{
comment-token = "#";
file-types = ["r" "R"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "(r|R)";
language-server = {
args = ["--slave" "-e" "languageserver::run()"];
command = "R";
};
name = "r";
roots = [];
scope = "source.r";
shebangs = ["r" "R"];
}
{
file-types = ["rmd" "Rmd"];
grammar = "markdown";
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "(r|R)md";
language-server = {
args = ["--slave" "-e" "languageserver::run()"];
command = "R";
};
name = "rmarkdown";
roots = [];
scope = "source.rmd";
}
{
auto-format = true;
comment-token = "//";
file-types = ["swift"];
injection-regex = "swift";
language-server = {command = "sourcekit-lsp";};
name = "swift";
roots = ["Package.swift"];
scope = "source.swift";
}
{
file-types = ["erb"];
grammar = "embedded-template";
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "erb";
name = "erb";
roots = [];
scope = "text.html.erb";
}
{
file-types = ["ejs"];
grammar = "embedded-template";
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "ejs";
name = "ejs";
roots = [];
scope = "text.html.ejs";
}
{
file-types = ["eex"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "eex";
name = "eex";
roots = [];
scope = "source.eex";
}
{
file-types = ["heex"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "heex";
name = "heex";
roots = [];
scope = "source.heex";
}
{
comment-token = "--";
file-types = ["sql"];
indent = {
tab-width = 4;
unit = " ";
};
injection-regex = "sql";
name = "sql";
roots = [];
scope = "source.sql";
}
{
auto-format = true;
comment-token = "#";
file-types = ["gd"];
indent = {
tab-width = 4;
unit = "\t";
};
injection-regex = "gdscript";
name = "gdscript";
roots = ["project.godot"];
scope = "source.gdscript";
shebangs = [];
}
{
auto-format = false;
comment-token = "#";
file-types = ["tscn" "tres"];
indent = {
tab-width = 4;
unit = "\t";
};
injection-regex = "godot";
name = "godot-resource";
roots = ["project.godot"];
scope = "source.tscn";
shebangs = [];
}
{
comment-token = "#";
file-types = ["nu"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "nu";
name = "nu";
roots = [];
scope = "source.nu";
}
{
comment-token = "//";
file-types = ["vala" "vapi"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "vala";
language-server = {command = "vala-language-server";};
name = "vala";
roots = [];
scope = "source.vala";
}
{
comment-token = "//";
file-types = ["ha"];
indent = {
tab-width = 8;
unit = "\t";
};
injection-regex = "hare";
name = "hare";
roots = [];
scope = "source.hare";
}
{
comment-token = "//";
file-types = ["dts" "dtsi"];
indent = {
tab-width = 4;
unit = "\t";
};
injection-regex = "(dtsi?|devicetree|fdt)";
name = "devicetree";
roots = [];
scope = "source.devicetree";
}
{
comment-token = "#";
file-types = ["cairo"];
indent = {
tab-width = 4;
unit = " ";
};
injection-regex = "cairo";
name = "cairo";
roots = [];
scope = "source.cairo";
}
{
auto-format = true;
comment-token = "//";
file-types = ["cpon" "cp"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "cpon";
name = "cpon";
roots = [];
scope = "scope.cpon";
}
{
auto-format = false;
comment-token = "//";
file-types = ["odin"];
indent = {
tab-width = 4;
unit = "\t";
};
language-server = {
args = [];
command = "ols";
};
name = "odin";
roots = ["ols.json"];
scope = "source.odin";
}
{
comment-token = "#";
file-types = ["meson.build"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "meson";
name = "meson";
roots = [];
scope = "source.meson";
}
{
file-types = [".ssh/config" "/etc/ssh/ssh_config"];
name = "sshclientconfig";
roots = [];
scope = "source.sshclientconfig";
}
{
comment-token = ";";
file-types = ["ss" "rkt"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "scheme";
name = "scheme";
roots = [];
scope = "source.scheme";
}
{
auto-format = true;
comment-token = "//";
file-types = ["v" "vv"];
indent = {
tab-width = 4;
unit = "\t";
};
language-server = {
args = [];
command = "vls";
};
name = "v";
roots = ["v.mod"];
scope = "source.v";
shebangs = ["v run"];
}
{
comment-token = "//";
file-types = ["v" "vh" "sv" "svh"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "verilog";
language-server = {
args = [];
command = "svlangserver";
};
name = "verilog";
roots = [];
scope = "source.verilog";
}
{
file-types = ["edoc" "edoc.in"];
indent = {
tab-width = 4;
unit = " ";
};
injection-regex = "edoc";
name = "edoc";
roots = [];
scope = "source.edoc";
}
{
file-types = ["jsdoc"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "jsdoc";
name = "jsdoc";
roots = [];
scope = "source.jsdoc";
}
{
comment-token = "//";
file-types = ["scad"];
indent = {
tab-width = 2;
unit = "\t";
};
injection-regex = "openscad";
language-server = {
args = ["--stdio"];
command = "openscad-lsp";
};
name = "openscad";
roots = [];
scope = "source.openscad";
}
{
comment-token = "//";
file-types = ["prisma"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "prisma";
language-server = {
args = ["--stdio"];
command = "prisma-language-server";
};
name = "prisma";
roots = ["package.json"];
scope = "source.prisma";
}
{
comment-token = ";";
file-types = ["clj" "cljs" "cljc" "clje" "cljr" "cljx" "edn" "boot"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "(clojure|clj|edn|boot)";
language-server = {command = "clojure-lsp";};
name = "clojure";
roots = ["project.clj" "build.boot" "deps.edn" "shadow-cljs.edn"];
scope = "source.clojure";
}
{
comment-token = "#";
file-types = ["bzl" "bazel" "BUILD"];
grammar = "python";
indent = {
tab-width = 4;
unit = " ";
};
injection-regex = "(starlark|bzl|bazel)";
name = "starlark";
roots = [];
scope = "source.starlark";
}
{
comment-token = "#";
file-types = ["elv"];
grammar = "elvish";
indent = {
tab-width = 2;
unit = " ";
};
language-server = {
args = ["-lsp"];
command = "elvish";
};
name = "elvish";
roots = [];
scope = "source.elvish";
}
{
comment-token = "--";
file-types = ["idr"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "idr";
language-server = {command = "idris2-lsp";};
name = "idris";
roots = [];
scope = "source.idr";
shebangs = [];
}
{
comment-token = "!";
file-types = ["f" "for" "f90" "f95" "f03"];
indent = {
tab-width = 4;
unit = " ";
};
injection-regex = "fortran";
language-server = {
args = ["--lowercase_intrinsics"];
command = "fortls";
};
name = "fortran";
roots = ["fpm.toml"];
scope = "source.fortran";
}
{
comment-token = "//";
file-types = ["ungram" "ungrammar"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "ungrammar";
name = "ungrammar";
roots = [];
scope = "source.ungrammar";
}
{
comment-token = "//";
file-types = ["dot"];
indent = {
tab-width = 4;
unit = " ";
};
injection-regex = "dot";
language-server = {
args = ["--stdio"];
command = "dot-language-server";
};
name = "dot";
roots = [];
scope = "source.dot";
}
{
auto-format = true;
comment-token = "//";
file-types = ["cue"];
indent = {
tab-width = 4;
unit = "\t";
};
injection-regex = "cue";
language-server = {command = "cuelsp";};
name = "cue";
roots = ["cue.mod"];
scope = "source.cue";
}
{
comment-token = "//";
file-types = ["slint"];
indent = {
tab-width = 4;
unit = " ";
};
injection-regex = "slint";
language-server = {
args = [];
command = "slint-lsp";
};
name = "slint";
roots = [];
scope = "source.slint";
}
{
comment-token = "#";
file-types = ["task"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "task";
name = "task";
roots = [];
scope = "source.task";
}
{
file-types = ["xit"];
indent = {
tab-width = 4;
unit = " ";
};
injection-regex = "xit";
name = "xit";
roots = [];
scope = "source.xit";
}
{
comment-token = "#";
file-types = ["esdl"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "esdl";
name = "esdl";
roots = ["edgedb.toml"];
scope = "source.esdl";
}
{
comment-token = "//";
file-types = ["pas" "pp" "inc" "lpr" "lfm"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "pascal";
language-server = {
args = [];
command = "pasls";
};
name = "pascal";
roots = [];
scope = "source.pascal";
}
{
comment-token = "(*";
file-types = ["sml"];
injection-regex = "sml";
name = "sml";
roots = [];
scope = "source.sml";
}
{
comment-token = "//";
file-types = ["libsonnet" "jsonnet"];
indent = {
tab-width = 2;
unit = " ";
};
language-server = {
args = ["-t" "--lint"];
command = "jsonnet-language-server";
};
name = "jsonnet";
roots = ["jsonnetfile.json"];
scope = "source.jsonnet";
}
{
file-types = ["astro"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "astro";
name = "astro";
roots = [];
scope = "source.astro";
}
{
comment-token = ";";
file-types = ["bass"];
indent = {
tab-width = 2;
unit = " ";
};
injection-regex = "bass";
language-server = {
args = ["--lsp"];
command = "bass";
};
name = "bass";
roots = [];
scope = "source.bass";
}
];
}