neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

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"))