Add .overlay files
szczys opened this issue · 2 comments
Thank you for this grammar for highlighting Devicetree file! It makes my Zephyr dev experience much better.
After installing, highlighting works for .dts files. But my nvim doesn't recognize .overlay files as belonging to devicetree. I looked through the code here, but I don't see a place where file extensions are referenced so maybe that's not possible from the grammar itself?
My solution was to add the filetype when my treesitter.lua file is run during initialization:
require'nvim-treesitter.configs'.setup {
-- A list of parser names, or "all" (the five listed parsers should always be installed)
ensure_installed = { "c", "lua", "vim", "vimdoc", "query", "devicetree", "kconfig", "markdown_inline" },
-- Install parsers synchronously (only applied to `ensure_installed`)
sync_install = false,
-- Automatically install missing parsers when entering buffer
-- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
auto_install = true,
-- List of parsers to ignore installing (or "all")
ignore_install = { "javascript" },
---- If you need to change the installation directory of the parsers (see -> Advanced Setup)
-- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")!
highlight = {
enable = true,
-- NOTE: these are the names of the parsers and not the filetype. (for example if you want to
-- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is
-- the name of the parser)
-- list of language that will be disabled
disable = { "c", "rust" },
-- Or use a function for more flexibility, e.g. to disable slow treesitter highlight for large files
disable = function(lang, buf)
local max_filesize = 100 * 1024 -- 100 KB
local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
if ok and stats and stats.size > max_filesize then
return true
end
end,
-- Setting this to true will run `:h syntax` and tree-sitter at the same time.
-- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
-- Using this option may slow down your editor, and you may see some duplicate highlights.
-- Instead of true it can also be a list of languages
additional_vim_regex_highlighting = false,
-- This code adds *.overlay files to the devicetree filetype
vim.filetype.add({
extension = {
overlay = 'devicetree',
},
})
},
}
The non-automatic way is to use :set filetype=devicetree
when you have your .overlay file open.
Is there a way to apply this automatically at the grammar level? If not, I'd be happy to open a PR that details this approach in the README file. Thanks!
Tree-sitter grammars don't typically include info for integrating themselves into other tools. That would be the responsibility of the tool itself.
Looking at this, I think nvim-treesitter already has this repo integrated: https://github.com/nvim-treesitter/nvim-treesitter/blob/c0da2013d1cef768c00f3f0b7f365fe19a10bca3/lua/nvim-treesitter/parsers.lua#L358
If nvim just doesn't recognize .overlay as a belonging to the dts filetype, then that sounds like something that needs to be fixed in nvim.
Okay, thanks! I'll take a look and see if I can make a PR for this in nvim.