filetype configs with named files. has telescope
first commit
2 files changed, +423 -0
+61-0lua/ftconfig/init.lua
| @@ -0,0 +1,61 @@ | ||
| 1 | +local M = {} | |
| 2 | + | |
| 3 | +M.ftdir = vim.fn.stdpath("config") .. "/lua/ftconfig" | |
| 4 | + | |
| 5 | +if vim.fn.isdirectory(M.ftdir) == 0 then | |
| 6 | + vim.fn.mkdir(M.ftdir, "p") | |
| 7 | +end | |
| 8 | + | |
| 9 | +local augroup = vim.api.nvim_create_augroup("ftconfig", { clear = true }) | |
| 10 | + | |
| 11 | +function M.files() | |
| 12 | + return vim.fn.readdir(M.ftdir, function(file) | |
| 13 | + return file:match("%.lua$") and 1 or 0 | |
| 14 | + end) | |
| 15 | +end | |
| 16 | + | |
| 17 | +---@class FTConformSpec | |
| 18 | +---@field use string[] | |
| 19 | +---@field formatters? conform.FileFormatterConfig[] | |
| 20 | + | |
| 21 | +---@class FTSpec | |
| 22 | +---@field indent? integer | |
| 23 | +---@field conform? FTConformSpec | |
| 24 | +---@field lsp? table<LSPName, any> | |
| 25 | + | |
| 26 | +---builds config for filetype | |
| 27 | +---@param ft string | |
| 28 | +function M.setup_ft(ft) | |
| 29 | + local mod = "ftconfig." .. ft | |
| 30 | + local ok, spec = pcall(require, mod) | |
| 31 | + if not ok then | |
| 32 | + return | |
| 33 | + end | |
| 34 | + ---@cast spec FTSpec? | |
| 35 | + if not spec then | |
| 36 | + return | |
| 37 | + end | |
| 38 | + local indent = spec.indent or 4 | |
| 39 | + vim.api.nvim_create_autocmd("FileType", { | |
| 40 | + group = augroup, | |
| 41 | + pattern = ft, | |
| 42 | + callback = function() | |
| 43 | + vim.opt_local.shiftwidth = indent | |
| 44 | + vim.opt_local.tabstop = indent | |
| 45 | + vim.opt_local.softtabstop = indent | |
| 46 | + end, | |
| 47 | + }) | |
| 48 | + | |
| 49 | + if spec.conform then | |
| 50 | + local conform_opts = { formatters_by_ft = { [ft] = spec.conform.use }, formatters = spec.conform.formatters } | |
| 51 | + require("conform").setup(conform_opts) | |
| 52 | + end | |
| 53 | +end | |
| 54 | + | |
| 55 | +function M.setup() | |
| 56 | + for _, file in ipairs(M.files()) do | |
| 57 | + M.setup_ft(vim.fn.fnamemodify(file, ":r")) | |
| 58 | + end | |
| 59 | +end | |
| 60 | + | |
| 61 | +return M |
+362-0lua/ftconfig/lsp-list.lua
| @@ -0,0 +1,362 @@ | ||
| 1 | +---@alias LSPName | |
| 2 | +---| "ada_ls" | |
| 3 | +---| "agda_ls" | |
| 4 | +---| "aiken" | |
| 5 | +---| "air" | |
| 6 | +---| "alloy_ls" | |
| 7 | +---| "anakin_language_server" | |
| 8 | +---| "angularls" | |
| 9 | +---| "ansiblels" | |
| 10 | +---| "antlersls" | |
| 11 | +---| "apex_ls" | |
| 12 | +---| "arduino_language_server" | |
| 13 | +---| "asm_lsp" | |
| 14 | +---| "ast_grep" | |
| 15 | +---| "astro" | |
| 16 | +---| "atlas" | |
| 17 | +---| "autohotkey_lsp" | |
| 18 | +---| "autotools_ls" | |
| 19 | +---| "awk_ls" | |
| 20 | +---| "azure_pipelines_ls" | |
| 21 | +---| "bacon_ls" | |
| 22 | +---| "ballerina" | |
| 23 | +---| "basedpyright" | |
| 24 | +---| "bashls" | |
| 25 | +---| "basics_ls" | |
| 26 | +---| "bazelrc_lsp" | |
| 27 | +---| "beancount" | |
| 28 | +---| "bicep" | |
| 29 | +---| "biome" | |
| 30 | +---| "bitbake_language_server" | |
| 31 | +---| "bitbake_ls" | |
| 32 | +---| "blueprint_ls" | |
| 33 | +---| "bqls" | |
| 34 | +---| "bqnlsp" | |
| 35 | +---| "bright_script" | |
| 36 | +---| "bsl_ls" | |
| 37 | +---| "buck2" | |
| 38 | +---| "buddy_ls" | |
| 39 | +---| "buf_ls" | |
| 40 | +---| "bufls" | |
| 41 | +---| "bzl" | |
| 42 | +---| "c3_lsp" | |
| 43 | +---| "cadence" | |
| 44 | +---| "cairo_ls" | |
| 45 | +---| "ccls" | |
| 46 | +---| "cds_lsp" | |
| 47 | +---| "circom" | |
| 48 | +---| "clangd" | |
| 49 | +---| "clarity_lsp" | |
| 50 | +---| "clojure_lsp" | |
| 51 | +---| "cmake" | |
| 52 | +---| "cobol_ls" | |
| 53 | +---| "codeqlls" | |
| 54 | +---| "coffeesense" | |
| 55 | +---| "contextive" | |
| 56 | +---| "coq_lsp" | |
| 57 | +---| "crystalline" | |
| 58 | +---| "csharp_ls" | |
| 59 | +---| "css_variables" | |
| 60 | +---| "cssls" | |
| 61 | +---| "cssmodules_ls" | |
| 62 | +---| "cucumber_language_server" | |
| 63 | +---| "cue" | |
| 64 | +---| "custom_elements_ls" | |
| 65 | +---| "cypher_ls" | |
| 66 | +---| "daedalus_ls" | |
| 67 | +---| "dafny" | |
| 68 | +---| "dagger" | |
| 69 | +---| "dartls" | |
| 70 | +---| "dcmls" | |
| 71 | +---| "debputy" | |
| 72 | +---| "delphi_ls" | |
| 73 | +---| "denols" | |
| 74 | +---| "dhall_lsp_server" | |
| 75 | +---| "diagnosticls" | |
| 76 | +---| "digestif" | |
| 77 | +---| "djlsp" | |
| 78 | +---| "docker_compose_language_service" | |
| 79 | +---| "dockerls" | |
| 80 | +---| "dolmenls" | |
| 81 | +---| "dotls" | |
| 82 | +---| "dprint" | |
| 83 | +---| "drools_lsp" | |
| 84 | +---| "ds_pinyin_lsp" | |
| 85 | +---| "dts_lsp" | |
| 86 | +---| "earthlyls" | |
| 87 | +---| "ecsact" | |
| 88 | +---| "efm" | |
| 89 | +---| "elixirls" | |
| 90 | +---| "elmls" | |
| 91 | +---| "elp" | |
| 92 | +---| "ember" | |
| 93 | +---| "emmet_language_server" | |
| 94 | +---| "emmet_ls" | |
| 95 | +---| "erg_language_server" | |
| 96 | +---| "erlangls" | |
| 97 | +---| "esbonio" | |
| 98 | +---| "eslint" | |
| 99 | +---| "facility_language_server" | |
| 100 | +---| "fennel_language_server" | |
| 101 | +---| "fennel_ls" | |
| 102 | +---| "fish_lsp" | |
| 103 | +---| "flow" | |
| 104 | +---| "flux_lsp" | |
| 105 | +---| "foam_ls" | |
| 106 | +---| "fortls" | |
| 107 | +---| "fsautocomplete" | |
| 108 | +---| "fsharp_language_server" | |
| 109 | +---| "fstar" | |
| 110 | +---| "futhark_lsp" | |
| 111 | +---| "gdscript" | |
| 112 | +---| "gdshader_lsp" | |
| 113 | +---| "gh_actions_ls" | |
| 114 | +---| "ghcide" | |
| 115 | +---| "ghdl_ls" | |
| 116 | +---| "ginko_ls" | |
| 117 | +---| "gitlab_ci_ls" | |
| 118 | +---| "glasgow" | |
| 119 | +---| "gleam" | |
| 120 | +---| "glint" | |
| 121 | +---| "glsl_analyzer" | |
| 122 | +---| "glslls" | |
| 123 | +---| "golangci_lint_ls" | |
| 124 | +---| "gopls" | |
| 125 | +---| "gradle_ls" | |
| 126 | +---| "grammarly" | |
| 127 | +---| "graphql" | |
| 128 | +---| "groovyls" | |
| 129 | +---| "guile_ls" | |
| 130 | +---| "harper_ls" | |
| 131 | +---| "haxe_language_server" | |
| 132 | +---| "hdl_checker" | |
| 133 | +---| "helm_ls" | |
| 134 | +---| "hhvm" | |
| 135 | +---| "hie" | |
| 136 | +---| "hlasm" | |
| 137 | +---| "hls" | |
| 138 | +---| "hoon_ls" | |
| 139 | +---| "html" | |
| 140 | +---| "htmx" | |
| 141 | +---| "hydra_lsp" | |
| 142 | +---| "hyprls" | |
| 143 | +---| "idris2_lsp" | |
| 144 | +---| "intelephense" | |
| 145 | +---| "janet_lsp" | |
| 146 | +---| "java_language_server" | |
| 147 | +---| "jdtls" | |
| 148 | +---| "jedi_language_server" | |
| 149 | +---| "jinja_lsp" | |
| 150 | +---| "jqls" | |
| 151 | +---| "jsonls" | |
| 152 | +---| "jsonnet_ls" | |
| 153 | +---| "julials" | |
| 154 | +---| "just" | |
| 155 | +---| "kcl" | |
| 156 | +---| "koka" | |
| 157 | +---| "kotlin_language_server" | |
| 158 | +---| "kulala_ls" | |
| 159 | +---| "laravel_ls" | |
| 160 | +---| "lean3ls" | |
| 161 | +---| "leanls" | |
| 162 | +---| "lelwel_ls" | |
| 163 | +---| "lemminx" | |
| 164 | +---| "lexical" | |
| 165 | +---| "lsp_ai" | |
| 166 | +---| "ltex" | |
| 167 | +---| "ltex_plus" | |
| 168 | +---| "lua_ls" | |
| 169 | +---| "luau_lsp" | |
| 170 | +---| "lwc_ls" | |
| 171 | +---| "m68k" | |
| 172 | +---| "markdown_oxide" | |
| 173 | +---| "marko" | |
| 174 | +---| "marksman" | |
| 175 | +---| "matlab_ls" | |
| 176 | +---| "mdx_analyzer" | |
| 177 | +---| "mesonlsp" | |
| 178 | +---| "metals" | |
| 179 | +---| "millet" | |
| 180 | +---| "mint" | |
| 181 | +---| "mlir_lsp_server" | |
| 182 | +---| "mlir_pdll_lsp_server" | |
| 183 | +---| "mm0_ls" | |
| 184 | +---| "mojo" | |
| 185 | +---| "motoko_lsp" | |
| 186 | +---| "move_analyzer" | |
| 187 | +---| "msbuild_project_tools_server" | |
| 188 | +---| "muon" | |
| 189 | +---| "mutt_ls" | |
| 190 | +---| "nelua_lsp" | |
| 191 | +---| "neocmake" | |
| 192 | +---| "nextflow_ls" | |
| 193 | +---| "nextls" | |
| 194 | +---| "nginx_language_server" | |
| 195 | +---| "nickel_ls" | |
| 196 | +---| "nil_ls" | |
| 197 | +---| "nim_langserver" | |
| 198 | +---| "nimls" | |
| 199 | +---| "nixd" | |
| 200 | +---| "nomad_lsp" | |
| 201 | +---| "ntt" | |
| 202 | +---| "nushell" | |
| 203 | +---| "nxls" | |
| 204 | +---| "ocamlls" | |
| 205 | +---| "ocamllsp" | |
| 206 | +---| "ols" | |
| 207 | +---| "omnisharp" | |
| 208 | +---| "opencl_ls" | |
| 209 | +---| "openedge_ls" | |
| 210 | +---| "openscad_ls" | |
| 211 | +---| "openscad_lsp" | |
| 212 | +---| "oxlint" | |
| 213 | +---| "pact_ls" | |
| 214 | +---| "pasls" | |
| 215 | +---| "pbls" | |
| 216 | +---| "perlls" | |
| 217 | +---| "perlnavigator" | |
| 218 | +---| "perlpls" | |
| 219 | +---| "pest_ls" | |
| 220 | +---| "phan" | |
| 221 | +---| "phpactor" | |
| 222 | +---| "pico8_ls" | |
| 223 | +---| "pkgbuild_language_server" | |
| 224 | +---| "please" | |
| 225 | +---| "poryscript_pls" | |
| 226 | +---| "postgres_lsp" | |
| 227 | +---| "powershell_es" | |
| 228 | +---| "prismals" | |
| 229 | +---| "prolog_ls" | |
| 230 | +---| "prosemd_lsp" | |
| 231 | +---| "protols" | |
| 232 | +---| "psalm" | |
| 233 | +---| "pug" | |
| 234 | +---| "puppet" | |
| 235 | +---| "purescriptls" | |
| 236 | +---| "pylsp" | |
| 237 | +---| "pylyzer" | |
| 238 | +---| "pyre" | |
| 239 | +---| "pyright" | |
| 240 | +---| "qmlls" | |
| 241 | +---| "quick_lint_js" | |
| 242 | +---| "r_language_server" | |
| 243 | +---| "racket_langserver" | |
| 244 | +---| "raku_navigator" | |
| 245 | +---| "reason_ls" | |
| 246 | +---| "regal" | |
| 247 | +---| "regols" | |
| 248 | +---| "relay_lsp" | |
| 249 | +---| "remark_ls" | |
| 250 | +---| "rescriptls" | |
| 251 | +---| "rls" | |
| 252 | +---| "rnix" | |
| 253 | +---| "robotcode" | |
| 254 | +---| "robotframework_ls" | |
| 255 | +---| "roc_ls" | |
| 256 | +---| "rome" | |
| 257 | +---| "rpmspec" | |
| 258 | +---| "rubocop" | |
| 259 | +---| "ruby_lsp" | |
| 260 | +---| "ruff" | |
| 261 | +---| "ruff_lsp" | |
| 262 | +---| "rune_languageserver" | |
| 263 | +---| "rust_analyzer" | |
| 264 | +---| "salt_ls" | |
| 265 | +---| "scheme_langserver" | |
| 266 | +---| "scry" | |
| 267 | +---| "selene3p_ls" | |
| 268 | +---| "serve_d" | |
| 269 | +---| "shopify_theme_ls" | |
| 270 | +---| "sixtyfps" | |
| 271 | +---| "slangd" | |
| 272 | +---| "slint_lsp" | |
| 273 | +---| "smarty_ls" | |
| 274 | +---| "smithy_ls" | |
| 275 | +---| "snakeskin_ls" | |
| 276 | +---| "snyk_ls" | |
| 277 | +---| "solang" | |
| 278 | +---| "solargraph" | |
| 279 | +---| "solc" | |
| 280 | +---| "solidity" | |
| 281 | +---| "solidity_ls" | |
| 282 | +---| "solidity_ls_nomicfoundation" | |
| 283 | +---| "somesass_ls" | |
| 284 | +---| "sorbet" | |
| 285 | +---| "sourcekit" | |
| 286 | +---| "sourcery" | |
| 287 | +---| "spectral" | |
| 288 | +---| "spyglassmc_language_server" | |
| 289 | +---| "sqlls" | |
| 290 | +---| "sqls" | |
| 291 | +---| "standardrb" | |
| 292 | +---| "starlark_rust" | |
| 293 | +---| "starpls" | |
| 294 | +---| "statix" | |
| 295 | +---| "steep" | |
| 296 | +---| "stimulus_ls" | |
| 297 | +---| "stylelint_lsp" | |
| 298 | +---| "stylua3p_ls" | |
| 299 | +---| "superhtml" | |
| 300 | +---| "svelte" | |
| 301 | +---| "svlangserver" | |
| 302 | +---| "svls" | |
| 303 | +---| "swift_mesonls" | |
| 304 | +---| "syntax_tree" | |
| 305 | +---| "systemd_ls" | |
| 306 | +---| "tabby_ml" | |
| 307 | +---| "tailwindcss" | |
| 308 | +---| "taplo" | |
| 309 | +---| "tblgen_lsp_server" | |
| 310 | +---| "teal_ls" | |
| 311 | +---| "templ" | |
| 312 | +---| "terraform_lsp" | |
| 313 | +---| "terraformls" | |
| 314 | +---| "texlab" | |
| 315 | +---| "textlsp" | |
| 316 | +---| "tflint" | |
| 317 | +---| "theme_check" | |
| 318 | +---| "thriftls" | |
| 319 | +---| "tilt_ls" | |
| 320 | +---| "tinymist" | |
| 321 | +---| "ts_ls" | |
| 322 | +---| "ts_query_ls" | |
| 323 | +---| "tsp_server" | |
| 324 | +---| "ttags" | |
| 325 | +---| "turbo_ls" | |
| 326 | +---| "turtle_ls" | |
| 327 | +---| "tvm_ffi_navigator" | |
| 328 | +---| "twiggy_language_server" | |
| 329 | +---| "typeprof" | |
| 330 | +---| "typos_lsp" | |
| 331 | +---| "typst_lsp" | |
| 332 | +---| "uiua" | |
| 333 | +---| "ungrammar_languageserver" | |
| 334 | +---| "unison" | |
| 335 | +---| "unocss" | |
| 336 | +---| "uvls" | |
| 337 | +---| "v_analyzer" | |
| 338 | +---| "vacuum" | |
| 339 | +---| "vala_ls" | |
| 340 | +---| "vale_ls" | |
| 341 | +---| "vdmj" | |
| 342 | +---| "vectorcode_server" | |
| 343 | +---| "verible" | |
| 344 | +---| "veridian" | |
| 345 | +---| "veryl_ls" | |
| 346 | +---| "vhdl_ls" | |
| 347 | +---| "vimls" | |
| 348 | +---| "visualforce_ls" | |
| 349 | +---| "vls" | |
| 350 | +---| "volar" | |
| 351 | +---| "vscoqtop" | |
| 352 | +---| "vtsls" | |
| 353 | +---| "vuels" | |
| 354 | +---| "wasm_language_tools" | |
| 355 | +---| "wgsl_analyzer" | |
| 356 | +---| "yamlls" | |
| 357 | +---| "yang_lsp" | |
| 358 | +---| "yls" | |
| 359 | +---| "ziggy" | |
| 360 | +---| "ziggy_schema" | |
| 361 | +---| "zk" | |
| 362 | +---| "zls" |