Mercurial > vim
diff src/globals.h @ 19181:94eda51ba9ba v8.2.0149
patch 8.2.0149: maintaining a Vim9 branch separately is more work
Commit: https://github.com/vim/vim/commit/8a7d6542b33e5d2b352262305c3bfdb2d14e1cf8
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jan 26 15:56:19 2020 +0100
patch 8.2.0149: maintaining a Vim9 branch separately is more work
Problem: Maintaining a Vim9 branch separately is more work.
Solution: Merge the Vim9 script changes.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 26 Jan 2020 16:00:05 +0100 |
parents | fd1070ff696b |
children | 133ef7ba4e4e |
line wrap: on
line diff
--- a/src/globals.h +++ b/src/globals.h @@ -286,8 +286,11 @@ EXTERN int debug_backtrace_level INIT(= EXTERN int do_profiling INIT(= PROF_NONE); // PROF_ values # endif EXTERN garray_T script_items INIT5(0, 0, sizeof(scriptitem_T), 4, NULL); -#define SCRIPT_ITEM(id) (((scriptitem_T *)script_items.ga_data)[(id) - 1]) -#define FUNCLINE(fp, j) ((char_u **)(fp->uf_lines.ga_data))[j] +# define SCRIPT_ITEM(id) (((scriptitem_T *)script_items.ga_data)[(id) - 1]) +# define SCRIPT_SV(id) (SCRIPT_ITEM(id).sn_vars) +# define SCRIPT_VARS(id) (SCRIPT_SV(id)->sv_dict.dv_hashtab) + +# define FUNCLINE(fp, j) ((char_u **)(fp->uf_lines.ga_data))[j] /* * The exception currently being thrown. Used to pass an exception to @@ -359,9 +362,6 @@ EXTERN int suppress_errthrow INIT(= FALS */ EXTERN except_T *caught_stack INIT(= NULL); -#endif - -#ifdef FEAT_EVAL /* * Garbage collection can only take place when we are sure there are no Lists * or Dictionaries being used internally. This is flagged with @@ -376,6 +376,39 @@ EXTERN int garbage_collect_at_exit INIT( // Script CTX being sourced or was sourced to define the current function. EXTERN sctx_T current_sctx INIT4(0, 0, 0, 0); + + +// Commonly used types. +EXTERN type_T t_any INIT4(VAR_UNKNOWN, 0, NULL, NULL); +EXTERN type_T t_void INIT4(VAR_VOID, 0, NULL, NULL); +EXTERN type_T t_bool INIT4(VAR_BOOL, 0, NULL, NULL); +EXTERN type_T t_special INIT4(VAR_SPECIAL, 0, NULL, NULL); +EXTERN type_T t_number INIT4(VAR_NUMBER, 0, NULL, NULL); +#ifdef FEAT_FLOAT +EXTERN type_T t_float INIT4(VAR_FLOAT, 0, NULL, NULL); +#endif +EXTERN type_T t_string INIT4(VAR_STRING, 0, NULL, NULL); +EXTERN type_T t_blob INIT4(VAR_BLOB, 0, NULL, NULL); +EXTERN type_T t_job INIT4(VAR_JOB, 0, NULL, NULL); +EXTERN type_T t_channel INIT4(VAR_CHANNEL, 0, NULL, NULL); + +EXTERN type_T t_func_void INIT4(VAR_FUNC, -1, &t_void, NULL); +EXTERN type_T t_func_any INIT4(VAR_FUNC, -1, &t_any, NULL); + +EXTERN type_T t_partial_void INIT4(VAR_PARTIAL, -1, &t_void, NULL); +EXTERN type_T t_partial_any INIT4(VAR_PARTIAL, -1, &t_any, NULL); + +EXTERN type_T t_list_any INIT4(VAR_LIST, 0, &t_any, NULL); +EXTERN type_T t_dict_any INIT4(VAR_DICT, 0, &t_any, NULL); + +EXTERN type_T t_list_number INIT4(VAR_LIST, 0, &t_number, NULL); +EXTERN type_T t_list_string INIT4(VAR_LIST, 0, &t_string, NULL); +EXTERN type_T t_list_dict_any INIT4(VAR_LIST, 0, &t_dict_any, NULL); + +EXTERN type_T t_dict_number INIT4(VAR_DICT, 0, &t_number, NULL); +EXTERN type_T t_dict_string INIT4(VAR_DICT, 0, &t_string, NULL); + + #endif EXTERN int did_source_packages INIT(= FALSE); @@ -1038,6 +1071,8 @@ EXTERN int ctrl_c_interrupts INIT(= TRUE EXTERN cmdmod_T cmdmod; // Ex command modifiers +EXTERN int is_export INIT(= FALSE); // :export {cmd} + EXTERN int msg_silent INIT(= 0); // don't print messages EXTERN int emsg_silent INIT(= 0); // don't print error messages EXTERN int emsg_noredir INIT(= 0); // don't redirect error messages @@ -1465,9 +1500,13 @@ EXTERN char e_cmdwin[] INIT(= N_("E11: I EXTERN char e_curdir[] INIT(= N_("E12: Command not allowed from exrc/vimrc in current dir or tag search")); #ifdef FEAT_EVAL EXTERN char e_endif[] INIT(= N_("E171: Missing :endif")); -EXTERN char e_endtry[] INIT(= N_("E600: Missing :endtry")); +EXTERN char e_catch[] INIT(= N_("E603: :catch without :try")); +EXTERN char e_finally[] INIT(= N_("E606: :finally without :try")); +EXTERN char e_finally_dup[] INIT(= N_("E607: multiple :finally")); +EXTERN char e_endtry[] INIT(= N_("E600: Missing :endtry")); +EXTERN char e_no_endtry[] INIT(= N_("E602: :endtry without :try")); EXTERN char e_endwhile[] INIT(= N_("E170: Missing :endwhile")); -EXTERN char e_endfor[] INIT(= N_("E170: Missing :endfor")); +EXTERN char e_endfor[] INIT(= N_("E170: Missing :endfor")); EXTERN char e_while[] INIT(= N_("E588: :endwhile without :while")); EXTERN char e_for[] INIT(= N_("E588: :endfor without :for")); #endif @@ -1556,7 +1595,7 @@ EXTERN char e_notmp[] INIT(= N_("E483: EXTERN char e_notopen[] INIT(= N_("E484: Can't open file %s")); EXTERN char e_notread[] INIT(= N_("E485: Can't read file %s")); EXTERN char e_null[] INIT(= N_("E38: Null argument")); -#if defined(FEAT_DIGRAPHS) || defined(FEAT_TIMERS) +#if defined(FEAT_DIGRAPHS) || defined(FEAT_TIMERS) || defined(FEAT_EVAL) EXTERN char e_number_exp[] INIT(= N_("E39: Number expected")); #endif #ifdef FEAT_QUICKFIX @@ -1575,10 +1614,10 @@ EXTERN char e_prev_dir[] INIT(= N_("E459 #ifdef FEAT_QUICKFIX EXTERN char e_quickfix[] INIT(= N_("E42: No Errors")); -EXTERN char e_loclist[] INIT(= N_("E776: No location list")); +EXTERN char e_loclist[] INIT(= N_("E776: No location list")); #endif -EXTERN char e_re_damg[] INIT(= N_("E43: Damaged match string")); -EXTERN char e_re_corr[] INIT(= N_("E44: Corrupted regexp program")); +EXTERN char e_re_damg[] INIT(= N_("E43: Damaged match string")); +EXTERN char e_re_corr[] INIT(= N_("E44: Corrupted regexp program")); EXTERN char e_readonly[] INIT(= N_("E45: 'readonly' option is set (add ! to override)")); #ifdef FEAT_EVAL EXTERN char e_undefvar[] INIT(= N_("E121: Undefined variable: %s")); @@ -1589,17 +1628,23 @@ EXTERN char e_readonlyvar[] INIT(= N_("E EXTERN char e_readonlysbx[] INIT(= N_("E794: Cannot set variable in the sandbox: \"%s\"")); EXTERN char e_stringreq[] INIT(= N_("E928: String required")); EXTERN char e_emptykey[] INIT(= N_("E713: Cannot use empty key for Dictionary")); -EXTERN char e_dictreq[] INIT(= N_("E715: Dictionary required")); -EXTERN char e_listidx[] INIT(= N_("E684: list index out of range: %ld")); -EXTERN char e_blobidx[] INIT(= N_("E979: Blob index out of range: %ld")); +EXTERN char e_dictreq[] INIT(= N_("E715: Dictionary required")); +EXTERN char e_listidx[] INIT(= N_("E684: list index out of range: %ld")); +EXTERN char e_blobidx[] INIT(= N_("E979: Blob index out of range: %ld")); EXTERN char e_invalblob[] INIT(= N_("E978: Invalid operation for Blob")); EXTERN char e_toomanyarg[] INIT(= N_("E118: Too many arguments for function: %s")); +EXTERN char e_toofewarg[] INIT(= N_("E119: Not enough arguments for function: %s")); +EXTERN char e_func_deleted[] INIT(= N_("E933: Function was deleted: %s")); EXTERN char e_dictkey[] INIT(= N_("E716: Key not present in Dictionary: %s")); -EXTERN char e_listreq[] INIT(= N_("E714: List required")); +EXTERN char e_listreq[] INIT(= N_("E714: List required")); EXTERN char e_listblobreq[] INIT(= N_("E897: List or Blob required")); EXTERN char e_listdictarg[] INIT(= N_("E712: Argument of %s must be a List or Dictionary")); EXTERN char e_listdictblobarg[] INIT(= N_("E896: Argument of %s must be a List, Dictionary or Blob")); +EXTERN char e_modulus[] INIT(= N_("E804: Cannot use '%' with Float")); EXTERN char e_inval_string[] INIT(= N_("E908: using an invalid value as a String")); +EXTERN char e_const_option[] INIT(= N_("E996: Cannot lock an option")); +EXTERN char e_unknown_option[] INIT(= N_("E113: Unknown option: %s")); +EXTERN char e_letunexp[] INIT(= N_("E18: Unexpected characters in :let")); #endif #ifdef FEAT_QUICKFIX EXTERN char e_readerrf[] INIT(= N_("E47: Error while reading errorfile")); @@ -1632,7 +1677,12 @@ EXTERN char e_write[] INIT(= N_("E80: E EXTERN char e_zerocount[] INIT(= N_("E939: Positive count required")); #ifdef FEAT_EVAL EXTERN char e_usingsid[] INIT(= N_("E81: Using <SID> not in a script context")); -EXTERN char e_missingparen[] INIT(= N_("E107: Missing parentheses: %s")); +EXTERN char e_missing_paren[] INIT(= N_("E107: Missing parentheses: %s")); +EXTERN char e_missing_close[] INIT(= N_("E110: Missing ')'")); +EXTERN char e_missing_dict_colon[] INIT(= N_("E720: Missing colon in Dictionary: %s")); +EXTERN char e_duplicate_key[] INIT(= N_("E721: Duplicate key in Dictionary: \"%s\"")); +EXTERN char e_missing_dict_comma[] INIT(= N_("E722: Missing comma in Dictionary: %s")); +EXTERN char e_missing_dict_end[] INIT(= N_("E723: Missing end of Dictionary '}': %s")); #endif #ifdef FEAT_CLIENTSERVER EXTERN char e_invexprmsg[] INIT(= N_("E449: Invalid expression received")); @@ -1660,6 +1710,18 @@ EXTERN char e_menuothermode[] INIT(= N_( #endif EXTERN char e_invalwindow[] INIT(= N_("E957: Invalid window number")); EXTERN char e_listarg[] INIT(= N_("E686: Argument of %s must be a List")); +#ifdef FEAT_EVAL +EXTERN char e_missing_colon[] INIT(= N_("E109: Missing ':' after '?'")); +EXTERN char e_missing_in[] INIT(= N_("E690: Missing \"in\" after :for")); +EXTERN char e_unknownfunc[] INIT(= N_("E117: Unknown function: %s")); +EXTERN char e_missbrac[] INIT(= N_("E111: Missing ']'")); +EXTERN char e_else_without_if[] INIT(= N_("E581: :else without :if")); +EXTERN char e_elseif_without_if[] INIT(= N_("E582: :elseif without :if")); +EXTERN char e_endif_without_if[] INIT(= N_("E580: :endif without :if")); +EXTERN char e_continue[] INIT(= N_("E586: :continue without :while or :for")); +EXTERN char e_break[] INIT(= N_("E587: :break without :while or :for")); +EXTERN char e_nowhitespace[] INIT(= N_("E274: No white space allowed before parenthesis")); +#endif #ifdef FEAT_GUI_MAC EXTERN short disallow_gui INIT(= FALSE); @@ -1735,6 +1797,9 @@ EXTERN int *eval_lavars_used INIT(= NULL // Only filled for Win32. EXTERN char windowsVersion[20] INIT(= {0}); + +// Used for a non-materialized range() list. +EXTERN listitem_T range_list_item; #endif #ifdef MSWIN