neovim

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

tsnode.lua (5979B)


      1 ---@meta
      2 -- luacheck: no unused args
      3 error('Cannot require a meta file')
      4 
      5 --- @brief A "treesitter node" represents one specific element of the parsed contents of a buffer,
      6 --- which can be captured by a |Query| for, e.g., highlighting. It is a |userdata| reference to an
      7 --- object held by the treesitter library.
      8 ---
      9 --- An instance `TSNode` of a treesitter node supports the following methods.
     10 
     11 ---@nodoc
     12 ---@class TSNode: userdata
     13 local TSNode = {} -- luacheck: no unused
     14 
     15 --- Get the node's immediate parent.
     16 --- Prefer |TSNode:child_with_descendant()|
     17 --- for iterating over the node's ancestors.
     18 --- @return TSNode?
     19 function TSNode:parent() end
     20 
     21 --- Get the node's next sibling.
     22 --- @return TSNode?
     23 function TSNode:next_sibling() end
     24 
     25 --- Get the node's previous sibling.
     26 --- @return TSNode?
     27 function TSNode:prev_sibling() end
     28 
     29 --- Get the node's next named sibling.
     30 --- @return TSNode?
     31 function TSNode:next_named_sibling() end
     32 
     33 --- Get the node's previous named sibling.
     34 --- @return TSNode?
     35 function TSNode:prev_named_sibling() end
     36 
     37 --- Iterates over all the direct children of {TSNode}, regardless of whether
     38 --- they are named or not.
     39 --- Returns the child node plus the eventual field name corresponding to this
     40 --- child node.
     41 --- @return fun(): TSNode, string
     42 function TSNode:iter_children() end
     43 
     44 --- Returns a list of all the node's children that have the given field name.
     45 --- @param name string
     46 --- @return TSNode[]
     47 function TSNode:field(name) end
     48 
     49 --- Get the node's number of children.
     50 --- @return integer
     51 function TSNode:child_count() end
     52 
     53 --- Get the node's child at the given {index}, where zero represents the first
     54 --- child.
     55 --- @param index integer
     56 --- @return TSNode?
     57 function TSNode:child(index) end
     58 
     59 --- Get the node's number of named children.
     60 --- @return integer
     61 function TSNode:named_child_count() end
     62 
     63 --- Returns a list of the node's named children.
     64 --- @return TSNode[]
     65 function TSNode:named_children() end
     66 
     67 --- Check if the node has any of the given node types as its ancestor.
     68 --- @param node_types string[]
     69 --- @return boolean
     70 function TSNode:__has_ancestor(node_types) end
     71 
     72 --- Get the node's named child at the given {index}, where zero represents the
     73 --- first named child.
     74 --- @param index integer
     75 --- @return TSNode?
     76 function TSNode:named_child(index) end
     77 
     78 --- Get the node's child that contains {descendant} (includes {descendant}).
     79 ---
     80 --- For example, with the following node hierarchy:
     81 ---
     82 --- ```
     83 --- a -> b -> c
     84 ---
     85 --- a:child_with_descendant(c) == b
     86 --- a:child_with_descendant(b) == b
     87 --- a:child_with_descendant(a) == nil
     88 --- ```
     89 --- @param descendant TSNode
     90 --- @return TSNode?
     91 function TSNode:child_with_descendant(descendant) end
     92 
     93 --- Get the node's start position. Return three values: the row, column and
     94 --- total byte count (all zero-based).
     95 --- @return integer, integer, integer
     96 function TSNode:start() end
     97 
     98 --- Get the node's end position. Return three values: the row, column and
     99 --- total byte count (all zero-based).
    100 --- @return integer, integer, integer
    101 function TSNode:end_() end
    102 
    103 --- Get the range of the node.
    104 ---
    105 --- Return four or six values:
    106 ---
    107 --- - start row
    108 --- - start column
    109 --- - start byte (if {include_bytes} is `true`)
    110 --- - end row
    111 --- - end column
    112 --- - end byte (if {include_bytes} is `true`)
    113 --- @param include_bytes false?
    114 --- @return integer, integer, integer, integer
    115 --- @overload fun(self: TSNode, include_bytes: true): integer, integer, integer, integer, integer, integer
    116 function TSNode:range(include_bytes) end
    117 
    118 --- Get the node's type as a string.
    119 --- @return string
    120 function TSNode:type() end
    121 
    122 --- Get the node's type as a numerical id.
    123 --- @return integer
    124 function TSNode:symbol() end
    125 
    126 --- Check if the node is named. Named nodes correspond to named rules in the
    127 --- grammar, whereas anonymous nodes correspond to string literals in the
    128 --- grammar.
    129 --- @return boolean
    130 function TSNode:named() end
    131 
    132 --- Check if the node is missing. Missing nodes are inserted by the parser in
    133 --- order to recover from certain kinds of syntax errors.
    134 --- @return boolean
    135 function TSNode:missing() end
    136 
    137 --- Check if the node is extra. Extra nodes represent things like comments,
    138 --- which are not required by the grammar but can appear anywhere.
    139 --- @return boolean
    140 function TSNode:extra() end
    141 
    142 --- Check if a syntax node has been edited.
    143 --- @return boolean
    144 function TSNode:has_changes() end
    145 
    146 --- Check if the node is a syntax error or contains any syntax errors.
    147 --- @return boolean
    148 function TSNode:has_error() end
    149 
    150 --- Get an S-expression representing the node as a string.
    151 --- @return string
    152 function TSNode:sexpr() end
    153 
    154 --- Get a unique identifier for the node inside its own tree.
    155 ---
    156 --- No guarantees are made about this identifier's internal representation,
    157 --- except for being a primitive Lua type with value equality (so not a
    158 --- table). Presently it is a (non-printable) string.
    159 ---
    160 --- Note: The `id` is not guaranteed to be unique for nodes from different
    161 --- trees.
    162 --- @return string
    163 function TSNode:id() end
    164 
    165 --- Get the |TSTree| of the node.
    166 --- @return TSTree
    167 function TSNode:tree() end
    168 
    169 --- Get the smallest node within this node that spans the given range of (row,
    170 --- column) positions
    171 --- @param start_row integer
    172 --- @param start_col integer
    173 --- @param end_row integer
    174 --- @param end_col integer
    175 --- @return TSNode?
    176 function TSNode:descendant_for_range(start_row, start_col, end_row, end_col) end
    177 
    178 --- Get the smallest named node within this node that spans the given range of
    179 --- (row, column) positions
    180 --- @param start_row integer
    181 --- @param start_col integer
    182 --- @param end_row integer
    183 --- @param end_col integer
    184 --- @return TSNode?
    185 function TSNode:named_descendant_for_range(start_row, start_col, end_row, end_col) end
    186 
    187 --- Check if {node} refers to the same node within the same tree.
    188 --- @param node TSNode
    189 --- @return boolean
    190 function TSNode:equal(node) end
    191 
    192 --- Return the number of bytes spanned by this node.
    193 --- @return integer
    194 function TSNode:byte_length() end