nvf/docs/manual/configuring/queries.md
2026-04-24 21:55:14 +02:00

1 KiB

Queries (vim.treesitter.queries)

Queries allow you to change Neovim's behavior based on Tree-sitter.
Read more about it in the neovim docs.

Example:

In the following example, we are creating a custom injection, to highlight the Lua string after mkLuaInline.

foo = mkLuaInline ''
  function bar()
    return 'foobar'
  end
'';
{
  vim.treesitter.queries = [{
    type = "injections";
    filetypes = ["nix"];
    query = ''
      ;; extends

      ((apply_expression
        function: (variable_expression
          name: (identifier) @_func
          (#eq? @_func "mkLuaInline"))

        argument: (indented_string_expression
          (string_fragment) @injection.content)

        (#set! injection.language "lua")
        (#set! injection.combined)))
    '';
  }];
}

This will generate a queries/nix/injections.scm in a Neovim runtime directory.

Note

When multiple queries match the same filetype and type, they are merged.