---@meta -- luacheck: no unused args error('Cannot require a meta file') ---@defgroup vim.builtin --- ---@brief
help ---vim.api.{func}({...}) *vim.api* --- Invokes Nvim |API| function {func} with arguments {...}. --- Example: call the "nvim_get_current_line()" API function: >lua --- print(tostring(vim.api.nvim_get_current_line())) --- ---vim.NIL *vim.NIL* --- Special value representing NIL in |RPC| and |v:null| in Vimscript --- conversion, and similar cases. Lua `nil` cannot be used as part of a Lua --- table representing a Dictionary or Array, because it is treated as --- missing: `{"foo", nil}` is the same as `{"foo"}`. --- ---vim.type_idx *vim.type_idx* --- Type index for use in |lua-special-tbl|. Specifying one of the values from --- |vim.types| allows typing the empty table (it is unclear whether empty Lua --- table represents empty list or empty array) and forcing integral numbers --- to be |Float|. See |lua-special-tbl| for more details. --- ---vim.val_idx *vim.val_idx* --- Value index for tables representing |Float|s. A table representing --- floating-point value 1.0 looks like this: >lua --- { --- [vim.type_idx] = vim.types.float, --- [vim.val_idx] = 1.0, --- } ---< See also |vim.type_idx| and |lua-special-tbl|. --- ---vim.types *vim.types* --- Table with possible values for |vim.type_idx|. Contains two sets of --- key-value pairs: first maps possible values for |vim.type_idx| to --- human-readable strings, second maps human-readable type names to values --- for |vim.type_idx|. Currently contains pairs for `float`, `array` and --- `dictionary` types. --- --- Note: One must expect that values corresponding to `vim.types.float`, --- `vim.types.array` and `vim.types.dictionary` fall under only two following --- assumptions: --- 1. Value may serve both as a key and as a value in a table. Given the --- properties of Lua tables this basically means “value is not `nil`”. --- 2. For each value in `vim.types` table `vim.types[vim.types[value]]` is the --- same as `value`. --- No other restrictions are put on types, and it is not guaranteed that --- values corresponding to `vim.types.float`, `vim.types.array` and --- `vim.types.dictionary` will not change or that `vim.types` table will only --- contain values for these three types. --- --- *log_levels* *vim.log.levels* ---Log levels are one of the values defined in `vim.log.levels`: --- --- vim.log.levels.DEBUG --- vim.log.levels.ERROR --- vim.log.levels.INFO --- vim.log.levels.TRACE --- vim.log.levels.WARN --- vim.log.levels.OFF --- ------@class vim.NIL ---@type vim.NIL ---@nodoc vim.NIL = ... --- Returns true if the code is executing as part of a "fast" event handler, --- where most of the API is disabled. These are low-level events (e.g. --- |lua-loop-callbacks|) which can be invoked whenever Nvim polls for input. --- When this is `false` most API functions are callable (but may be subject --- to other restrictions such as |textlock|). function vim.in_fast_event() end --- Creates a special empty table (marked with a metatable), which Nvim --- converts to an empty dictionary when translating Lua values to Vimscript --- or API types. Nvim by default converts an empty table `{}` without this --- metatable to an list/array. --- --- Note: If numeric keys are present in the table, Nvim ignores the metatable --- marker and converts the dict to a list/array anyway. --- @return table function vim.empty_dict() end --- Sends {event} to {channel} via |RPC| and returns immediately. If {channel} --- is 0, the event is broadcast to all channels. --- --- This function also works in a fast callback |lua-loop-callbacks|. --- @param channel integer --- @param method string --- @param args? any[] --- @param ...? any function vim.rpcnotify(channel, method, args, ...) end --- Sends a request to {channel} to invoke {method} via |RPC| and blocks until --- a response is received. --- --- Note: NIL values as part of the return value is represented as |vim.NIL| --- special value --- @param channel integer --- @param method string --- @param args? any[] --- @param ...? any function vim.rpcrequest(channel, method, args, ...) end --- Compares strings case-insensitively. --- @param a string --- @param b string --- @return 0|1|-1 --- if strings are --- equal, {a} is greater than {b} or {a} is lesser than {b}, respectively. function vim.stricmp(a, b) end --- Convert UTF-32 or UTF-16 {index} to byte index. If {use_utf16} is not --- supplied, it defaults to false (use UTF-32). Returns the byte index. --- --- Invalid UTF-8 and NUL is treated like by |vim.str_byteindex()|. --- An {index} in the middle of a UTF-16 sequence is rounded upwards to --- the end of that sequence. --- @param str string --- @param index number --- @param use_utf16? any function vim.str_byteindex(str, index, use_utf16) end --- Gets a list of the starting byte positions of each UTF-8 codepoint in the given string. --- --- Embedded NUL bytes are treated as terminating the string. --- @param str string --- @return table function vim.str_utf_pos(str) end --- Gets the distance (in bytes) from the starting byte of the codepoint (character) that {index} --- points to. --- --- The result can be added to {index} to get the starting byte of a character. --- --- Examples: --- --- ```lua --- -- The character 'æ' is stored as the bytes '\xc3\xa6' (using UTF-8) --- --- -- Returns 0 because the index is pointing at the first byte of a character --- vim.str_utf_start('æ', 1) --- --- -- Returns -1 because the index is pointing at the second byte of a character --- vim.str_utf_start('æ', 2) --- ``` --- --- @param str string --- @param index number --- @return number function vim.str_utf_start(str, index) end --- Gets the distance (in bytes) from the last byte of the codepoint (character) that {index} points --- to. --- --- Examples: --- --- ```lua --- -- The character 'æ' is stored as the bytes '\xc3\xa6' (using UTF-8) --- --- -- Returns 0 because the index is pointing at the last byte of a character --- vim.str_utf_end('æ', 2) --- --- -- Returns 1 because the index is pointing at the penultimate byte of a character --- vim.str_utf_end('æ', 1) --- ``` --- --- @param str string --- @param index number --- @return number function vim.str_utf_end(str, index) end --- Convert byte index to UTF-32 and UTF-16 indices. If {index} is not --- supplied, the length of the string is used. All indices are zero-based. --- --- Embedded NUL bytes are treated as terminating the string. Invalid UTF-8 --- bytes, and embedded surrogates are counted as one code point each. An --- {index} in the middle of a UTF-8 sequence is rounded upwards to the end of --- that sequence. --- @param str string --- @param index? number --- @return integer UTF-32 index --- @return integer UTF-16 index function vim.str_utfindex(str, index) end --- The result is a String, which is the text {str} converted from --- encoding {from} to encoding {to}. When the conversion fails `nil` is --- returned. When some characters could not be converted they --- are replaced with "?". --- The encoding names are whatever the iconv() library function --- can accept, see ":Man 3 iconv". --- --- @param str string Text to convert --- @param from number Encoding of {str} --- @param to number Target encoding --- @param opts? table