diff --git a/README.md b/README.md index 9e868a3..9794993 100644 --- a/README.md +++ b/README.md @@ -4,40 +4,7 @@ tree-sitter grammar for [dotenv](https://dotenvx.com) ## Installation -### Neovim - -To use this parser in neovim, you need to configure [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter) - -Add this to nvim-treesitter's config function: - -```lua -config = function(_, opts) - local parser_config = require("nvim-treesitter.parsers").get_parser_configs() - - -- Tell treesitter where dotenv parser is located - parser_config.dotenv = { - install_info = { - url = "https://github.com/pnx/tree-sitter-dotenv", - branch = "main", - files = { "src/parser.c", "src/scanner.c" }, - }, - filetype = "dotenv", - } - - -- Associate .env files as "dotenv" - vim.filetype.add({ - pattern = { - ['%.env'] = 'dotenv', - ['%.env%..+'] = 'dotenv', - }, - }) -end -``` - -#### Syntax highlighting - -In order for neovim to know how to color the text, a `highlights.scm` file is needed. -Copy [highlights.scm](queries/highlights.scm) from this repo to your nvim config under `queries/dotenv/highlights.scm` +[neovim](docs/neovim.md) ## Author diff --git a/docs/neovim.md b/docs/neovim.md new file mode 100644 index 0000000..60d6b9f --- /dev/null +++ b/docs/neovim.md @@ -0,0 +1,74 @@ +# Neovim + +## nvim-treesitter + +To use this parser in neovim, configure [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter). + +### nvim-treesitter `main` (new API) + +Use this if you are on the rewritten `main` branch (Neovim 0.12+): + +```lua +vim.api.nvim_create_autocmd('User', { + pattern = 'TSUpdate', + callback = function() + require('nvim-treesitter.parsers').dotenv = { + install_info = { + url = 'https://github.com/pnx/tree-sitter-dotenv', + }, + filetype = "dotenv" + } + end, + + vim.filetype.add({ + filename = { + ['.env'] = 'dotenv', + }, + pattern = { + ['%.env%..+'] = 'dotenv', + }, + }) +}) + +vim.api.nvim_create_autocmd('FileType', { + pattern = 'dotenv', + callback = function() pcall(vim.treesitter.start) end, +}) +``` + +### nvim-treesitter `master` (legacy API) + +Use this if you are on the legacy `master` branch (Neovim 0.10/0.11), add this to `config` block: + +```lua +config = function(_, opts) + local parser_config = require("nvim-treesitter.parsers").get_parser_configs() + + -- Tell treesitter where dotenv parser is located + parser_config.dotenv = { + install_info = { + url = "https://github.com/pnx/tree-sitter-dotenv", + branch = "main", + files = { "src/parser.c", "src/scanner.c" }, + } + } + + vim.filetype.add({ + filename = { + ['.env'] = 'dotenv', + }, + pattern = { + ['%.env%..+'] = 'dotenv', + }, + }) +end + + +``` + +Then run `:TSInstall dotenv`. + +## Syntax highlighting + +In order for neovim to know how to color the text, a `highlights.scm` file is needed. +Copy [highlights.scm](../queries/highlights.scm) from this repo to your nvim config under `queries/dotenv/highlights.scm`