From 794266a4edc8ab57b0d637626f01b5278a9123d8 Mon Sep 17 00:00:00 2001 From: Pham Huy Hoang Date: Sat, 16 Sep 2023 19:08:08 +0900 Subject: [PATCH] injections(lua): add vim highlights to api funcs (#5404) Add vim injections for `vim.api.nvim[_buf]_create_user_command` and `vim.api.nvim_create_autocmd` --- queries/lua/injections.scm | 70 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/queries/lua/injections.scm b/queries/lua/injections.scm index 908c805da..6f7b97267 100644 --- a/queries/lua/injections.scm +++ b/queries/lua/injections.scm @@ -28,6 +28,76 @@ (#eq? @_method "nvim_exec_lua") (#set! injection.language "lua")) +; vim.api.nvim_create_autocmd("FileType", { command = "injected here" }) +(function_call + name: (_) @_vimcmd_identifier + arguments: + (arguments + . (_) + . + (table_constructor + (field + name: (identifier) @_command + value: + (string content: (_) @injection.content))) + .) ; limit so only 2-argument functions gets matched before pred handle + (#eq? @_vimcmd_identifier "vim.api.nvim_create_autocmd") + (#eq? @_command "command") + (#set! injection.language "vim")) + + +(function_call + name: (_) @_user_cmd + arguments: + (arguments + . (_) + . + (string + content: (_) @injection.content) + . (_) .) + (#eq? @_user_cmd "vim.api.nvim_create_user_command") + (#set! injection.language "vim")) + +(function_call + name: (_) @_user_cmd + arguments: + (arguments + . (_) + . (_) + . + (string + content: (_) @injection.content) + . (_) .) ; Limiting predicate handling to only functions with 4 arguments + (#eq? @_user_cmd "vim.api.nvim_buf_create_user_command") + (#set! injection.language "vim")) + +;; rhs highlighting for vim.keymap.set/vim.api.nvim_set_keymap/vim.api.nvim_buf_set_keymap +; (function_call +; name: (_) @_map +; arguments: +; (arguments +; . (_) +; . (_) +; . +; (string +; content: (_) @injection.content)) +; (#any-of? @_map "vim.api.nvim_set_keymap" "vim.keymap.set") +; (#set! injection.language "vim")) +; +; (function_call +; name: (_) @_map +; arguments: +; (arguments +; . (_) +; . (_) +; . (_) +; . +; (string +; content: (_) @injection.content) +; . (_) .) +; (#eq? @_map "vim.api.nvim_buf_set_keymap") +; (#set! injection.language "vim")) + ;; highlight string as query if starts with `;; query` (string content: _ @injection.content (#lua-match? @injection.content "^%s*;+%s?query")