mirror of
https://github.com/neovim/neovim.git
synced 2025-09-16 08:18:17 +00:00

Some functions from upstream VIM were reintegrated for this: - get_option_value_strict - set_option_value_err - set_option_value_for - unset_global_local_option
71 lines
2.4 KiB
C
71 lines
2.4 KiB
C
#ifndef NEOVIM_API_HELPERS_H
|
|
#define NEOVIM_API_HELPERS_H
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include "api/defs.h"
|
|
#include "../vim.h"
|
|
|
|
#define set_api_error(message, err) \
|
|
do { \
|
|
strncpy(err->msg, message, sizeof(err->msg)); \
|
|
err->set = true; \
|
|
} while (0)
|
|
|
|
/// Start block that may cause vimscript exceptions
|
|
void try_start(void);
|
|
|
|
/// End try block, set the error message if any and return true if an error
|
|
/// occurred.
|
|
///
|
|
/// @param err Pointer to the stack-allocated error object
|
|
/// @return true if an error occurred
|
|
bool try_end(Error *err);
|
|
|
|
/// Recursively expands a vimscript value in a dict
|
|
///
|
|
/// @param dict The vimscript dict
|
|
/// @param key The key
|
|
/// @param bool If true it will pop the value from the dict
|
|
/// @param[out] err Details of an error that may have occurred
|
|
Object dict_get_value(dict_T *dict, String key, bool pop, Error *err);
|
|
|
|
/// Set a value in a dict. Objects are recursively expanded into their
|
|
/// vimscript equivalents.
|
|
///
|
|
/// @param dict The vimscript dict
|
|
/// @param key The key
|
|
/// @param value The new value
|
|
/// @param[out] err Details of an error that may have occurred
|
|
/// @return the old value, if any
|
|
Object dict_set_value(dict_T *dict, String key, Object value, Error *err);
|
|
|
|
/// Gets the value of a global or local(buffer, window) option.
|
|
///
|
|
/// @param from If `type` is `SREQ_WIN` or `SREQ_BUF`, this must be a pointer
|
|
/// to the window or buffer.
|
|
/// @param type One of `SREQ_GLOBAL`, `SREQ_WIN` or `SREQ_BUF`
|
|
/// @param name The option name
|
|
/// @param[out] err Details of an error that may have occurred
|
|
/// @return the option value
|
|
Object get_option_from(void *from, int type, String name, Error *err);
|
|
|
|
/// Sets the value of a global or local(buffer, window) option.
|
|
///
|
|
/// @param to If `type` is `SREQ_WIN` or `SREQ_BUF`, this must be a pointer
|
|
/// to the window or buffer.
|
|
/// @param type One of `SREQ_GLOBAL`, `SREQ_WIN` or `SREQ_BUF`
|
|
/// @param name The option name
|
|
/// @param[out] err Details of an error that may have occurred
|
|
void set_option_to(void *to, int type, String name, Object value, Error *err);
|
|
|
|
/// Convert a vim object to an `Object` instance, recursively expanding
|
|
/// Arrays/Dictionaries.
|
|
///
|
|
/// @param obj The source object
|
|
/// @return The converted value
|
|
Object vim_to_object(typval_T *obj);
|
|
|
|
#endif /* NEOVIM_API_HELPERS_H */
|
|
|