馃 my neovim config:)
1if vim.g.ivy_ft then
2 return
3end
4
5vim.g.ivy_ft = true
6
7vim.filetype.add({
8 extension = {
9 rn = "html",
10 rune = "html",
11 },
12 pattern = {
13 ["shaders/.*%.[vf]sh"] = "glsl",
14 },
15 filename = {
16 ["todo.txt"] = "todotxt",
17 },
18})
19
20--- source @nvim-treesitter https://github.com/nvim-treesitter/nvim-treesitter/blob/4916d6592ede8c07973490d9322f187e07dfefac/plugin/filetypes.lua
21local filetypes = {
22 angular = { "htmlangular" },
23 bash = { "sh" },
24 bibtex = { "bib" },
25 c_sharp = { "cs", "csharp" },
26 commonlisp = { "lisp" },
27 cooklang = { "cook" },
28 devicetree = { "dts" },
29 diff = { "gitdiff" },
30 eex = { "eelixir" },
31 elixir = { "ex" },
32 embedded_template = { "eruby" },
33 erlang = { "erl" },
34 facility = { "fsd" },
35 faust = { "dsp" },
36 gdshader = { "gdshaderinc" },
37 git_config = { "gitconfig" },
38 git_rebase = { "gitrebase" },
39 glimmer = { "handlebars", "html.handlebars" },
40 godot_resource = { "gdresource" },
41 haskell = { "hs" },
42 haskell_persistent = { "haskellpersistent" },
43 idris = { "idris2" },
44 ini = { "confini", "dosini" },
45 janet_simple = { "janet" },
46 javascript = { "javascriptreact", "ecma", "ecmascript", "jsx", "js" },
47 json = { "jsonc" },
48 glimmer_javascript = { "javascript.glimmer" },
49 latex = { "tex" },
50 linkerscript = { "ld" },
51 m68k = { "asm68k" },
52 make = { "automake" },
53 markdown = { "pandoc" },
54 muttrc = { "neomuttrc" },
55 ocaml_interface = { "ocamlinterface" },
56 perl = { "pl" },
57 poe_filter = { "poefilter" },
58 powershell = { "ps1" },
59 properties = { "jproperties" },
60 python = { "py", "gyp" },
61 qmljs = { "qml" },
62 runescript = { "clientscript" },
63 scala = { "sbt" },
64 slang = { "shaderslang" },
65 sqp = { "mysqp" },
66 ssh_config = { "sshconfig" },
67 starlark = { "bzl" },
68 surface = { "sface" },
69 systemverilog = { "verilog" },
70 t32 = { "trace32" },
71 tcl = { "expect" },
72 terraform = { "terraform-vars" },
73 textproto = { "pbtxt" },
74 tlaplus = { "tla" },
75 tsx = { "typescriptreact", "typescript.tsx" },
76 typescript = { "ts" },
77 glimmer_typescript = { "typescript.glimmer" },
78 typst = { "typ" },
79 udev = { "udevrules" },
80 uxntal = { "tal", "uxn" },
81 v = { "vlang" },
82 vhs = { "tape" },
83 xml = { "xsd", "xslt", "svg" },
84 xresources = { "xdefaults" },
85}
86
87for lang, ft in pairs(filetypes) do
88 vim.treesitter.language.register(lang, ft)
89end
90
91vim.on("FileType", "*", {}, function(ev)
92 if not vim.api.nvim_buf_is_loaded(ev.buf) then
93 return
94 end
95
96 local ok, _ = pcall(vim.treesitter.start, ev.buf)
97 if not ok then
98 return
99 end
100 vim.wo.foldmethod = "expr"
101 vim.wo.foldexpr = "v:lua.vim.treesitter.foldexpr()"
102 vim.bo.indentexpr = "v:lua.require('ivy.treesitter-indentexpr').indent()"
103end)