if vim.g.ivy_ft then return end vim.g.ivy_ft = true vim.filetype.add({ extension = { rn = "html", rune = "html", }, pattern = { ["shaders/.*%.[vf]sh"] = "glsl", }, filename = { ["todo.txt"] = "todotxt", }, }) --- source @nvim-treesitter https://github.com/nvim-treesitter/nvim-treesitter/blob/4916d6592ede8c07973490d9322f187e07dfefac/plugin/filetypes.lua local filetypes = { angular = { "htmlangular" }, bash = { "sh" }, bibtex = { "bib" }, c_sharp = { "cs", "csharp" }, commonlisp = { "lisp" }, cooklang = { "cook" }, devicetree = { "dts" }, diff = { "gitdiff" }, eex = { "eelixir" }, elixir = { "ex" }, embedded_template = { "eruby" }, erlang = { "erl" }, facility = { "fsd" }, faust = { "dsp" }, gdshader = { "gdshaderinc" }, git_config = { "gitconfig" }, git_rebase = { "gitrebase" }, glimmer = { "handlebars", "html.handlebars" }, godot_resource = { "gdresource" }, haskell = { "hs" }, haskell_persistent = { "haskellpersistent" }, idris = { "idris2" }, ini = { "confini", "dosini" }, janet_simple = { "janet" }, javascript = { "javascriptreact", "ecma", "ecmascript", "jsx", "js" }, json = { "jsonc" }, glimmer_javascript = { "javascript.glimmer" }, latex = { "tex" }, linkerscript = { "ld" }, m68k = { "asm68k" }, make = { "automake" }, markdown = { "pandoc" }, muttrc = { "neomuttrc" }, ocaml_interface = { "ocamlinterface" }, perl = { "pl" }, poe_filter = { "poefilter" }, powershell = { "ps1" }, properties = { "jproperties" }, python = { "py", "gyp" }, qmljs = { "qml" }, runescript = { "clientscript" }, scala = { "sbt" }, slang = { "shaderslang" }, sqp = { "mysqp" }, ssh_config = { "sshconfig" }, starlark = { "bzl" }, surface = { "sface" }, systemverilog = { "verilog" }, t32 = { "trace32" }, tcl = { "expect" }, terraform = { "terraform-vars" }, textproto = { "pbtxt" }, tlaplus = { "tla" }, tsx = { "typescriptreact", "typescript.tsx" }, typescript = { "ts" }, glimmer_typescript = { "typescript.glimmer" }, typst = { "typ" }, udev = { "udevrules" }, uxntal = { "tal", "uxn" }, v = { "vlang" }, vhs = { "tape" }, xml = { "xsd", "xslt", "svg" }, xresources = { "xdefaults" }, } for lang, ft in pairs(filetypes) do vim.treesitter.language.register(lang, ft) end vim.on("FileType", "*", {}, function(ev) if not vim.api.nvim_buf_is_loaded(ev.buf) then return end local ok, _ = pcall(vim.treesitter.start, ev.buf) if not ok then return end vim.wo.foldmethod = "expr" vim.wo.foldexpr = "v:lua.vim.treesitter.foldexpr()" vim.bo.indentexpr = "v:lua.require('ivy.treesitter-indentexpr').indent()" end)