neovim

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

option.h (2254B)


      1 #pragma once
      2 
      3 #include <stdio.h>  // IWYU pragma: keep
      4 
      5 #include "nvim/api/private/defs.h"  // IWYU pragma: keep
      6 #include "nvim/api/private/helpers.h"
      7 #include "nvim/cmdexpand_defs.h"  // IWYU pragma: keep
      8 #include "nvim/eval/typval_defs.h"  // IWYU pragma: keep
      9 #include "nvim/ex_cmds_defs.h"  // IWYU pragma: keep
     10 #include "nvim/macros_defs.h"
     11 #include "nvim/option_defs.h"  // IWYU pragma: keep
     12 #include "nvim/types_defs.h"  // IWYU pragma: keep
     13 
     14 /// flags for buf_copy_options()
     15 enum {
     16  BCO_ENTER  = 1,  ///< going to enter the buffer
     17  BCO_ALWAYS = 2,  ///< always copy the options
     18  BCO_NOHELP = 4,  ///< don't touch the help related options
     19 };
     20 
     21 /// Flags for option-setting functions
     22 ///
     23 /// When OPT_GLOBAL and OPT_LOCAL are both missing, set both local and global
     24 /// values, get local value.
     25 typedef enum {
     26  OPT_GLOBAL    = 0x01,  ///< Use global value.
     27  OPT_LOCAL     = 0x02,  ///< Use local value.
     28  OPT_MODELINE  = 0x04,  ///< Option in modeline.
     29  OPT_WINONLY   = 0x08,  ///< Only set window-local options.
     30  OPT_NOWIN     = 0x10,  ///< Don’t set window-local options.
     31  OPT_ONECOLUMN = 0x20,  ///< list options one per line
     32  OPT_NO_REDRAW = 0x40,  ///< ignore redraw flags on option
     33  OPT_SKIPRTP   = 0x80,  ///< "skiprtp" in 'sessionoptions'
     34 } OptionSetFlags;
     35 
     36 /// Get name of OptValType as a string.
     37 static inline const char *optval_type_get_name(const OptValType type)
     38 {
     39  switch (type) {
     40  case kOptValTypeNil:
     41    return "nil";
     42  case kOptValTypeBoolean:
     43    return "boolean";
     44  case kOptValTypeNumber:
     45    return "number";
     46  case kOptValTypeString:
     47    return "string";
     48  }
     49  UNREACHABLE;
     50 }
     51 
     52 // OptVal helper macros.
     53 #define NIL_OPTVAL ((OptVal) { .type = kOptValTypeNil })
     54 #define BOOLEAN_OPTVAL(b) ((OptVal) { .type = kOptValTypeBoolean, .data.boolean = b })
     55 #define NUMBER_OPTVAL(n) ((OptVal) { .type = kOptValTypeNumber, .data.number = n })
     56 #define STRING_OPTVAL(s) ((OptVal) { .type = kOptValTypeString, .data.string = s })
     57 
     58 #define CSTR_AS_OPTVAL(s) STRING_OPTVAL(cstr_as_string(s))
     59 #define CSTR_TO_OPTVAL(s) STRING_OPTVAL(cstr_to_string(s))
     60 #define STATIC_CSTR_AS_OPTVAL(s) STRING_OPTVAL(STATIC_CSTR_AS_STRING(s))
     61 #define STATIC_CSTR_TO_OPTVAL(s) STRING_OPTVAL(STATIC_CSTR_TO_STRING(s))
     62 
     63 #include "option.h.generated.h"