@@ -5483,6 +5483,73 @@ f_has(typval_T *argvars, typval_T *rettv)
54835483 rettv -> vval .v_number = n ;
54845484}
54855485
5486+ /*
5487+ * Return TRUE if "feature" can change later.
5488+ * Also when checking for the feature has side effects, such as loading a DLL.
5489+ */
5490+ int
5491+ dynamic_feature (char_u * feature )
5492+ {
5493+ return (feature == NULL
5494+ #if defined(FEAT_BEVAL ) && defined(FEAT_GUI_MSWIN )
5495+ || STRICMP (feature , "balloon_multiline" ) == 0
5496+ #endif
5497+ #if defined(FEAT_GUI ) && defined(FEAT_BROWSE )
5498+ || (STRICMP (feature , "browse" ) == 0 && !gui .in_use )
5499+ #endif
5500+ #ifdef VIMDLL
5501+ || STRICMP (feature , "filterpipe" ) == 0
5502+ #endif
5503+ #if defined(FEAT_GUI ) && !defined(ALWAYS_USE_GUI )
5504+ // this can only change on Unix where the ":gui" command could be
5505+ // used.
5506+ || (STRICMP (feature , "gui_running" ) == 0 && !gui .in_use )
5507+ #endif
5508+ #if defined(USE_ICONV ) && defined(DYNAMIC_ICONV )
5509+ || STRICMP (feature , "iconv" ) == 0
5510+ #endif
5511+ #ifdef DYNAMIC_LUA
5512+ || STRICMP (feature , "lua" ) == 0
5513+ #endif
5514+ #ifdef FEAT_MOUSE_GPM
5515+ || (STRICMP (feature , "mouse_gpm_enabled" ) == 0 && !gpm_enabled ())
5516+ #endif
5517+ #ifdef DYNAMIC_MZSCHEME
5518+ || STRICMP (feature , "mzscheme" ) == 0
5519+ #endif
5520+ #ifdef FEAT_NETBEANS_INTG
5521+ || STRICMP (feature , "netbeans_enabled" ) == 0
5522+ #endif
5523+ #ifdef DYNAMIC_PERL
5524+ || STRICMP (feature , "perl" ) == 0
5525+ #endif
5526+ #ifdef DYNAMIC_PYTHON
5527+ || STRICMP (feature , "python" ) == 0
5528+ #endif
5529+ #ifdef DYNAMIC_PYTHON3
5530+ || STRICMP (feature , "python3" ) == 0
5531+ #endif
5532+ #if defined(DYNAMIC_PYTHON ) || defined(DYNAMIC_PYTHON3 )
5533+ || STRICMP (feature , "pythonx" ) == 0
5534+ #endif
5535+ #ifdef DYNAMIC_RUBY
5536+ || STRICMP (feature , "ruby" ) == 0
5537+ #endif
5538+ #ifdef FEAT_SYN_HL
5539+ || STRICMP (feature , "syntax_items" ) == 0
5540+ #endif
5541+ #ifdef DYNAMIC_TCL
5542+ || STRICMP (feature , "tcl" ) == 0
5543+ #endif
5544+ // once "starting" is zero it will stay that way
5545+ || (STRICMP (feature , "vim_starting" ) == 0 && starting != 0 )
5546+ || STRICMP (feature , "multi_byte_encoding" ) == 0
5547+ #if defined(FEAT_TERMINAL ) && defined(MSWIN )
5548+ || STRICMP (feature , "conpty" ) == 0
5549+ #endif
5550+ );
5551+ }
5552+
54865553/*
54875554 * "haslocaldir()" function
54885555 */
0 commit comments