irongit

filetype configs with named files. has telescope

first commit

huncholanehuncholaneauthored
commit 2c1bd0f4bcb99c5d7457a996b3e307bea04c32ddBrowse files

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"