neovim

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

runtime_defs.h (2680B)


      1 #pragma once
      2 
      3 #include <stdbool.h>
      4 
      5 #include "nvim/autocmd_defs.h"
      6 
      7 typedef enum {
      8  ETYPE_TOP,       ///< toplevel
      9  ETYPE_SCRIPT,    ///< sourcing script, use es_info.sctx
     10  ETYPE_UFUNC,     ///< user function, use es_info.ufunc
     11  ETYPE_AUCMD,     ///< autocomand, use es_info.aucmd
     12  ETYPE_MODELINE,  ///< modeline, use es_info.sctx
     13  ETYPE_EXCEPT,    ///< exception, use es_info.exception
     14  ETYPE_ARGS,      ///< command line argument
     15  ETYPE_ENV,       ///< environment variable
     16  ETYPE_INTERNAL,  ///< internal operation
     17  ETYPE_SPELL,     ///< loading spell file
     18 } etype_T;
     19 
     20 /// Entry in the execution stack "exestack".
     21 typedef struct {
     22  linenr_T es_lnum;     ///< replaces "sourcing_lnum"
     23  char *es_name;        ///< replaces "sourcing_name"
     24  etype_T es_type;
     25  union {
     26    sctx_T *sctx;       ///< script and modeline info
     27    ufunc_T *ufunc;     ///< function info
     28    AutoPatCmd *aucmd;  ///< autocommand info
     29    except_T *except;   ///< exception info
     30  } es_info;
     31 } estack_T;
     32 
     33 /// Argument for estack_sfile().
     34 typedef enum {
     35  ESTACK_NONE,
     36  ESTACK_SFILE,
     37  ESTACK_STACK,
     38  ESTACK_SCRIPT,
     39 } estack_arg_T;
     40 
     41 /// Holds the hashtab with variables local to each sourced script.
     42 /// Each item holds a variable (nameless) that points to the dict_T.
     43 typedef struct {
     44  ScopeDictDictItem sv_var;
     45  dict_T sv_dict;
     46 } scriptvar_T;
     47 
     48 typedef struct {
     49  scriptvar_T *sn_vars;         ///< stores s: variables for this script
     50 
     51  char *sn_name;
     52  bool sn_lua;                  ///< true for a lua script
     53  bool sn_prof_on;              ///< true when script is/was profiled
     54  bool sn_pr_force;             ///< forceit: profile functions in this script
     55  proftime_T sn_pr_child;       ///< time set when going into first child
     56  int sn_pr_nest;               ///< nesting for sn_pr_child
     57  // profiling the script as a whole
     58  int sn_pr_count;              ///< nr of times sourced
     59  proftime_T sn_pr_total;       ///< time spent in script + children
     60  proftime_T sn_pr_self;        ///< time spent in script itself
     61  proftime_T sn_pr_start;       ///< time at script start
     62  proftime_T sn_pr_children;    ///< time in children after script start
     63  // profiling the script per line
     64  garray_T sn_prl_ga;           ///< things stored for every line
     65  proftime_T sn_prl_start;      ///< start time for current line
     66  proftime_T sn_prl_children;   ///< time spent in children for this line
     67  proftime_T sn_prl_wait;       ///< wait start time for current line
     68  linenr_T sn_prl_idx;          ///< index of line being timed; -1 if none
     69  int sn_prl_execed;            ///< line being timed was executed
     70 } scriptitem_T;
     71 
     72 typedef bool (*DoInRuntimepathCB)(int, char **, bool, void *);