MDX support in NvChad with treesitter
This is largely an extension to this blog post with some updates and some changes to specifically make it work in NvChad.
1. Add an mdx
filetype
Add to ~/.config/nvim/lua/custom/init.lua
:
vim.filetype.add({
extension = {
mdx = 'mdx'
}
})
2. Register markdown as the parser for mdx files
In your ~/.config/nvim/lua/custom/plugins.lua
file, add or replace this item in the plugins array:
{
"nvim-treesitter/nvim-treesitter",
opts = overrides.treesitter,
config = function(_, opts)
dofile(vim.g.base46_cache .. "syntax")
require("nvim-treesitter.configs").setup(opts)
-- tell treesitter to use the markdown parser for mdx files
vim.treesitter.language.register('markdown', 'mdx')
end,
},
3. Add tsx highlighting
Create a file .config/nvim/after/queries/markdown/injections.scm
with this content:
; extends
((inline) @injection.content
(#lua-match? @injection.content "^%s*import")
(#set! injection.language "typescript"))
((inline) @injection.content
(#lua-match? @injection.content "^%s*export")
(#set! injection.language "typescript"))
Again, refer to phelipe’s blog post for how and why this works.
That’s it—you have decent mdx support now.
No AI tooling was used in the creation of this article. More articles: