injections.scm (3237B)
1 ((function_call 2 name: [ 3 (identifier) @_cdef_identifier 4 (_ 5 _ 6 (identifier) @_cdef_identifier) 7 ] 8 arguments: (arguments 9 (string 10 content: _ @injection.content))) 11 (#set! injection.language "c") 12 (#eq? @_cdef_identifier "cdef")) 13 14 ((function_call 15 name: (_) @_vimcmd_identifier 16 arguments: (arguments 17 (string 18 content: _ @injection.content))) 19 (#set! injection.language "vim") 20 (#any-of? @_vimcmd_identifier "vim.cmd" "vim.api.nvim_command" "vim.api.nvim_exec2")) 21 22 ((function_call 23 name: (_) @_vimcmd_identifier 24 arguments: (arguments 25 (string 26 content: _ @injection.content) .)) 27 (#set! injection.language "query") 28 (#any-of? @_vimcmd_identifier "vim.treesitter.query.set" "vim.treesitter.query.parse")) 29 30 ((function_call 31 name: (_) @_vimcmd_identifier 32 arguments: (arguments 33 . 34 (_) 35 . 36 (string 37 content: (_) @_method) 38 . 39 (string 40 content: (_) @injection.content))) 41 (#any-of? @_vimcmd_identifier "vim.rpcrequest" "vim.rpcnotify") 42 (#eq? @_method "nvim_exec_lua") 43 (#set! injection.language "lua")) 44 45 ; exec_lua [[ ... ]] in functionaltests 46 ((function_call 47 name: (identifier) @_function 48 arguments: (arguments 49 (string 50 content: (string_content) @injection.content))) 51 (#eq? @_function "exec_lua") 52 (#set! injection.language "lua")) 53 54 ; vim.api.nvim_create_autocmd("FileType", { command = "injected here" }) 55 (function_call 56 name: (_) @_vimcmd_identifier 57 arguments: (arguments 58 . 59 (_) 60 . 61 (table_constructor 62 (field 63 name: (identifier) @_command 64 value: (string 65 content: (_) @injection.content))) .) 66 ; limit so only 2-argument functions gets matched before pred handle 67 (#eq? @_vimcmd_identifier "vim.api.nvim_create_autocmd") 68 (#eq? @_command "command") 69 (#set! injection.language "vim")) 70 71 (function_call 72 name: (_) @_user_cmd 73 arguments: (arguments 74 . 75 (_) 76 . 77 (string 78 content: (_) @injection.content) 79 . 80 (_) .) 81 (#eq? @_user_cmd "vim.api.nvim_create_user_command") 82 (#set! injection.language "vim")) 83 84 (function_call 85 name: (_) @_user_cmd 86 arguments: (arguments 87 . 88 (_) 89 . 90 (_) 91 . 92 (string 93 content: (_) @injection.content) 94 . 95 (_) .) 96 ; Limiting predicate handling to only functions with 4 arguments 97 (#eq? @_user_cmd "vim.api.nvim_buf_create_user_command") 98 (#set! injection.language "vim")) 99 100 ; rhs highlighting for vim.keymap.set/vim.api.nvim_set_keymap/vim.api.nvim_buf_set_keymap 101 ; (function_call 102 ; name: (_) @_map 103 ; arguments: 104 ; (arguments 105 ; . (_) 106 ; . (_) 107 ; . 108 ; (string 109 ; content: (_) @injection.content)) 110 ; (#any-of? @_map "vim.api.nvim_set_keymap" "vim.keymap.set") 111 ; (#set! injection.language "vim")) 112 ; 113 ; (function_call 114 ; name: (_) @_map 115 ; arguments: 116 ; (arguments 117 ; . (_) 118 ; . (_) 119 ; . (_) 120 ; . 121 ; (string 122 ; content: (_) @injection.content) 123 ; . (_) .) 124 ; (#eq? @_map "vim.api.nvim_buf_set_keymap") 125 ; (#set! injection.language "vim")) 126 ; highlight string as query if starts with `;; query` 127 (string 128 content: _ @injection.content 129 (#lua-match? @injection.content "^%s*;+%s?query") 130 (#set! injection.language "query"))