Patch 9.0.1295

5 views
Skip to first unread message

Bram Moolenaar

unread,
Feb 10, 2023, 9:51:10 AM2/10/23
to vim...@googlegroups.com

Patch 9.0.1295
Problem: The option initialization function is too long.
Solution: Move code to separate functions. (Yegappan Lakshmanan,
closes #11966)
Files: src/option.c


*** ../vim-9.0.1294/src/option.c 2023-02-09 22:08:48.515700662 +0000
--- src/option.c 2023-02-10 14:47:05.059052260 +0000
***************
*** 70,105 ****
static void compatible_set(void);

/*
! * Initialize the options, first part.
! *
! * Called only once from main(), just after creating the first buffer.
! * If "clean_arg" is TRUE Vim was started with --clean.
*/
! void
! set_init_1(int clean_arg)
{
char_u *p;
- int opt_idx;
- long_u n;
-
- #ifdef FEAT_LANGMAP
- langmap_init();
- #endif
-
- // Be Vi compatible by default
- p_cp = TRUE;
-
- // Use POSIX compatibility when $VIM_POSIX is set.
- if (mch_getenv((char_u *)"VIM_POSIX") != NULL)
- {
- set_string_default("cpo", (char_u *)CPO_ALL);
- set_string_default("shm", (char_u *)SHM_POSIX);
- }

! /*
! * Find default value for 'shell' option.
! * Don't use it if it is empty.
! */
if (((p = mch_getenv((char_u *)"SHELL")) != NULL && *p != NUL)
#if defined(MSWIN)
|| ((p = mch_getenv((char_u *)"COMSPEC")) != NULL && *p != NUL)
--- 70,84 ----
static void compatible_set(void);

/*
! * Initialize the 'shell' option to a default value.
*/
! static void
! set_init_default_shell(void)
{
char_u *p;

! // Find default value for 'shell' option.
! // Don't use it if it is empty.
if (((p = mch_getenv((char_u *)"SHELL")) != NULL && *p != NUL)
#if defined(MSWIN)
|| ((p = mch_getenv((char_u *)"COMSPEC")) != NULL && *p != NUL)
***************
*** 129,198 ****
#else
set_string_default_esc("sh", p, TRUE);
#endif

! /*
! * Set the default for 'backupskip' to include environment variables for
! * temp files.
! */
! {
#ifdef UNIX
! static char *(names[4]) = {"", "TMPDIR", "TEMP", "TMP"};
#else
! static char *(names[3]) = {"TMPDIR", "TEMP", "TMP"};
#endif
! int len;
! garray_T ga;
! int mustfree;
! char_u *item;

! opt_idx = findoption((char_u *)"backupskip");

! ga_init2(&ga, 1, 100);
! for (n = 0; n < (long)ARRAY_LENGTH(names); ++n)
! {
! mustfree = FALSE;
#ifdef UNIX
! if (*names[n] == NUL)
# ifdef MACOS_X
! p = (char_u *)"/private/tmp";
# else
! p = (char_u *)"/tmp";
# endif
! else
#endif
! p = vim_getenv((char_u *)names[n], &mustfree);
! if (p != NULL && *p != NUL)
{
! // First time count the NUL, otherwise count the ','.
! len = (int)STRLEN(p) + 3;
! item = alloc(len);
! STRCPY(item, p);
! add_pathsep(item);
! STRCAT(item, "*");
! if (find_dup_item(ga.ga_data, item, options[opt_idx].flags)
! == NULL
! && ga_grow(&ga, len) == OK)
! {
! if (ga.ga_len > 0)
! STRCAT(ga.ga_data, ",");
! STRCAT(ga.ga_data, item);
! ga.ga_len += len;
! }
! vim_free(item);
}
! if (mustfree)
! vim_free(p);
! }
! if (ga.ga_data != NULL)
! {
! set_string_default("bsk", ga.ga_data);
! vim_free(ga.ga_data);
}
}

- /*
- * 'maxmemtot' and 'maxmem' may have to be adjusted for available memory
- */
opt_idx = findoption((char_u *)"maxmemtot");
if (opt_idx >= 0)
{
--- 108,190 ----
#else
set_string_default_esc("sh", p, TRUE);
#endif
+ }

! /*
! * Set the default for 'backupskip' to include environment variables for
! * temp files.
! */
! static void
! set_init_default_backupskip(void)
! {
! int opt_idx;
! long_u n;
! char_u *p;
#ifdef UNIX
! static char *(names[4]) = {"", "TMPDIR", "TEMP", "TMP"};
#else
! static char *(names[3]) = {"TMPDIR", "TEMP", "TMP"};
#endif
! int len;
! garray_T ga;
! int mustfree;
! char_u *item;

! opt_idx = findoption((char_u *)"backupskip");

! ga_init2(&ga, 1, 100);
! for (n = 0; n < (long)ARRAY_LENGTH(names); ++n)
! {
! mustfree = FALSE;
#ifdef UNIX
! if (*names[n] == NUL)
# ifdef MACOS_X
! p = (char_u *)"/private/tmp";
# else
! p = (char_u *)"/tmp";
# endif
! else
#endif
! p = vim_getenv((char_u *)names[n], &mustfree);
! if (p != NULL && *p != NUL)
! {
! // First time count the NUL, otherwise count the ','.
! len = (int)STRLEN(p) + 3;
! item = alloc(len);
! STRCPY(item, p);
! add_pathsep(item);
! STRCAT(item, "*");
! if (find_dup_item(ga.ga_data, item, options[opt_idx].flags)
! == NULL
! && ga_grow(&ga, len) == OK)
{
! if (ga.ga_len > 0)
! STRCAT(ga.ga_data, ",");
! STRCAT(ga.ga_data, item);
! ga.ga_len += len;
}
! vim_free(item);
}
+ if (mustfree)
+ vim_free(p);
}
+ if (ga.ga_data != NULL)
+ {
+ set_string_default("bsk", ga.ga_data);
+ vim_free(ga.ga_data);
+ }
+ }
+
+ /*
+ * Initialize the 'maxmemtot' and 'maxmem' options to a default value.
+ * 'maxmemtot' and 'maxmem' may have to be adjusted for available memory.
+ */
+ static void
+ set_init_default_maxmemtot(void)
+ {
+ int opt_idx;
+ long_u n;

opt_idx = findoption((char_u *)"maxmemtot");
if (opt_idx >= 0)
{
***************
*** 221,286 ****
}
}
}

{
! char_u *cdpath;
! char_u *buf;
! int i;
! int j;
! int mustfree = FALSE;
!
! // Initialize the 'cdpath' option's default value.
! cdpath = vim_getenv((char_u *)"CDPATH", &mustfree);
! if (cdpath != NULL)
{
! buf = alloc((STRLEN(cdpath) << 1) + 2);
! if (buf != NULL)
{
! buf[0] = ','; // start with ",", current dir first
! j = 1;
! for (i = 0; cdpath[i] != NUL; ++i)
! {
! if (vim_ispathlistsep(cdpath[i]))
! buf[j++] = ',';
! else
! {
! if (cdpath[i] == ' ' || cdpath[i] == ',')
! buf[j++] = '\\';
! buf[j++] = cdpath[i];
! }
! }
! buf[j] = NUL;
! opt_idx = findoption((char_u *)"cdpath");
! if (opt_idx >= 0)
! {
! options[opt_idx].def_val[VI_DEFAULT] = buf;
! options[opt_idx].flags |= P_DEF_ALLOCED;
! }
! else
! vim_free(buf); // cannot happen
}
- if (mustfree)
- vim_free(cdpath);
}
}

#if defined(FEAT_POSTSCRIPT) && \
! (defined(MSWIN) || defined(VMS) || defined(MAC) || defined(hpux))
// Set print encoding on platforms that don't default to latin1
set_string_default("penc",
# if defined(MSWIN)
! (char_u *)"cp1252"
# elif defined(VMS)
! (char_u *)"dec-mcs"
# elif defined(MAC)
! (char_u *)"mac-roman"
# else // HPUX
! (char_u *)"hp-roman8"
# endif
! );
#endif

#ifdef FEAT_POSTSCRIPT
// 'printexpr' must be allocated to be able to evaluate it.
set_string_default("pexpr",
# if defined(MSWIN)
--- 213,297 ----
}
}
}
+ }

+ /*
+ * Initialize the 'cdpath' option to a default value.
+ */
+ static void
+ set_init_default_cdpath(void)
+ {
+ int opt_idx;
+ char_u *cdpath;
+ char_u *buf;
+ int i;
+ int j;
+ int mustfree = FALSE;
+
+ cdpath = vim_getenv((char_u *)"CDPATH", &mustfree);
+ if (cdpath == NULL)
+ return;
+
+ buf = alloc((STRLEN(cdpath) << 1) + 2);
+ if (buf != NULL)
{
! buf[0] = ','; // start with ",", current dir first
! j = 1;
! for (i = 0; cdpath[i] != NUL; ++i)
{
! if (vim_ispathlistsep(cdpath[i]))
! buf[j++] = ',';
! else
{
! if (cdpath[i] == ' ' || cdpath[i] == ',')
! buf[j++] = '\\';
! buf[j++] = cdpath[i];
}
}
+ buf[j] = NUL;
+ opt_idx = findoption((char_u *)"cdpath");
+ if (opt_idx >= 0)
+ {
+ options[opt_idx].def_val[VI_DEFAULT] = buf;
+ options[opt_idx].flags |= P_DEF_ALLOCED;
+ }
+ else
+ vim_free(buf); // cannot happen
}
+ if (mustfree)
+ vim_free(cdpath);
+ }

+ /*
+ * Initialize the 'printencoding' option to a default value.
+ */
+ static void
+ set_init_default_printencoding(void)
+ {
#if defined(FEAT_POSTSCRIPT) && \
! (defined(MSWIN) || defined(VMS) || defined(MAC) || defined(hpux))
// Set print encoding on platforms that don't default to latin1
set_string_default("penc",
# if defined(MSWIN)
! (char_u *)"cp1252"
# elif defined(VMS)
! (char_u *)"dec-mcs"
# elif defined(MAC)
! (char_u *)"mac-roman"
# else // HPUX
! (char_u *)"hp-roman8"
# endif
! );
#endif
+ }

#ifdef FEAT_POSTSCRIPT
+ /*
+ * Initialize the 'printexpr' option to a default value.
+ */
+ static void
+ set_init_default_printexpr(void)
+ {
// 'printexpr' must be allocated to be able to evaluate it.
set_string_default("pexpr",
# if defined(MSWIN)
***************
*** 292,307 ****
(char_u *)"system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice) . ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error"
# endif
);
#endif

- /*
- * Set all the options (except the terminal options) to their default
- * value. Also set the global value for local options.
- */
- set_options_default(0);
-
#ifdef UNIX
! // Force restricted-mode on for "nologin" or "false" $SHELL
p = get_isolated_shell_name();
if (p != NULL)
{
--- 303,320 ----
(char_u *)"system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice) . ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error"
# endif
);
+ }
#endif

#ifdef UNIX
! /*
! * Force restricted-mode on for "nologin" or "false" $SHELL
! */
! static void
! set_init_restricted_mode(void)
! {
! char_u *p;
!
p = get_isolated_shell_name();
if (p != NULL)
{
***************
*** 309,368 ****
restricted = TRUE;
vim_free(p);
}
#endif

#ifdef CLEAN_RUNTIMEPATH
! if (clean_arg)
{
! opt_idx = findoption((char_u *)"runtimepath");
! if (opt_idx >= 0)
! {
! options[opt_idx].def_val[VI_DEFAULT] = (char_u *)CLEAN_RUNTIMEPATH;
! p_rtp = (char_u *)CLEAN_RUNTIMEPATH;
! }
! opt_idx = findoption((char_u *)"packpath");
! if (opt_idx >= 0)
! {
! options[opt_idx].def_val[VI_DEFAULT] = (char_u *)CLEAN_RUNTIMEPATH;
! p_pp = (char_u *)CLEAN_RUNTIMEPATH;
! }
}
#endif

! #ifdef FEAT_GUI
! if (found_reverse_arg)
! set_option_value_give_err((char_u *)"bg", 0L, (char_u *)"dark", 0);
! #endif
!
! curbuf->b_p_initialized = TRUE;
! curbuf->b_p_ar = -1; // no local 'autoread' value
! curbuf->b_p_ul = NO_LOCAL_UNDOLEVEL;
! check_buf_options(curbuf);
! check_win_options(curwin);
! check_options();
!
! // Must be before option_expand(), because that one needs vim_isIDc()
! didset_options();
!
! #ifdef FEAT_SPELL
! // Use the current chartab for the generic chartab. This is not in
! // didset_options() because it only depends on 'encoding'.
! init_spell_chartab();
! #endif

- /*
- * Expand environment variables and things like "~" for the defaults.
- * If option_expand() returns non-NULL the variable is expanded. This can
- * only happen for non-indirect options.
- * Also set the default to the expanded value, so ":set" does not list
- * them.
- * Don't set the P_ALLOCED flag, because we don't want to free the
- * default.
- */
for (opt_idx = 0; !istermoption_idx(opt_idx); opt_idx++)
{
if ((options[opt_idx].flags & P_GETTEXT)
! && options[opt_idx].var != NULL)
p = (char_u *)_(*(char **)options[opt_idx].var);
else
p = option_expand(opt_idx, NULL);
--- 322,374 ----
restricted = TRUE;
vim_free(p);
}
+ }
#endif

#ifdef CLEAN_RUNTIMEPATH
! /*
! * When Vim is started with the "--clean" argument, set the default value
! * for the 'runtimepath' and 'packpath' options.
! */
! static void
! set_init_clean_rtp(void)
! {
! int opt_idx;
!
! opt_idx = findoption((char_u *)"runtimepath");
! if (opt_idx >= 0)
{
! options[opt_idx].def_val[VI_DEFAULT] = (char_u *)CLEAN_RUNTIMEPATH;
! p_rtp = (char_u *)CLEAN_RUNTIMEPATH;
}
+ opt_idx = findoption((char_u *)"packpath");
+ if (opt_idx >= 0)
+ {
+ options[opt_idx].def_val[VI_DEFAULT] = (char_u *)CLEAN_RUNTIMEPATH;
+ p_pp = (char_u *)CLEAN_RUNTIMEPATH;
+ }
+ }
#endif

! /*
! * Expand environment variables and things like "~" for the defaults.
! * If option_expand() returns non-NULL the variable is expanded. This can
! * only happen for non-indirect options.
! * Also set the default to the expanded value, so ":set" does not list
! * them.
! * Don't set the P_ALLOCED flag, because we don't want to free the
! * default.
! */
! static void
! set_init_expand_env(void)
! {
! int opt_idx;
! char_u *p;

for (opt_idx = 0; !istermoption_idx(opt_idx); opt_idx++)
{
if ((options[opt_idx].flags & P_GETTEXT)
! && options[opt_idx].var != NULL)
p = (char_u *)_(*(char **)options[opt_idx].var);
else
p = option_expand(opt_idx, NULL);
***************
*** 379,407 ****
options[opt_idx].flags |= P_DEF_ALLOCED;
}
}

! save_file_ff(curbuf); // Buffer is unchanged
!
! #if defined(FEAT_ARABIC)
! // Detect use of mlterm.
! // Mlterm is a terminal emulator akin to xterm that has some special
! // abilities (bidi namely).
! // NOTE: mlterm's author is being asked to 'set' a variable
! // instead of an environment variable due to inheritance.
! if (mch_getenv((char_u *)"MLTERM") != NULL)
! set_option_value_give_err((char_u *)"tbidi", 1L, NULL, 0);
! #endif
!
! didset_options2();
!
! # if defined(MSWIN) && defined(FEAT_GETTEXT)
! /*
! * If $LANG isn't set, try to get a good value for it. This makes the
! * right language be used automatically. Don't do this for English.
! */
if (mch_getenv((char_u *)"LANG") == NULL)
{
char buf[20];

// Could use LOCALE_SISO639LANGNAME, but it's not in Win95.
// LOCALE_SABBREVLANGNAME gives us three letters, like "enu", we use
--- 385,405 ----
options[opt_idx].flags |= P_DEF_ALLOCED;
}
}
+ }

! /*
! * Initialize the 'LANG' environment variable to a default value.
! */
! static void
! set_init_lang_env(void)
! {
! #if defined(MSWIN) && defined(FEAT_GETTEXT)
! // If $LANG isn't set, try to get a good value for it. This makes the
! // right language be used automatically. Don't do this for English.
if (mch_getenv((char_u *)"LANG") == NULL)
{
char buf[20];
+ long_u n;

// Could use LOCALE_SISO639LANGNAME, but it's not in Win95.
// LOCALE_SABBREVLANGNAME gives us three letters, like "enu", we use
***************
*** 423,432 ****
vim_setenv((char_u *)"LANG", (char_u *)buf);
}
}
! # elif defined(MACOS_CONVERT)
// Moved to os_mac_conv.c to avoid dependency problems.
mac_lang_init();
! # endif

# ifdef MSWIN
// MS-Windows has builtin support for conversion to and from Unicode, using
--- 421,440 ----
vim_setenv((char_u *)"LANG", (char_u *)buf);
}
}
! #elif defined(MACOS_CONVERT)
// Moved to os_mac_conv.c to avoid dependency problems.
mac_lang_init();
! #endif
! }
!
! /*
! * Initialize the 'encoding' option to a default value.
! */
! static void
! set_init_default_encoding(void)
! {
! char_u *p;
! int opt_idx;

# ifdef MSWIN
// MS-Windows has builtin support for conversion to and from Unicode, using
***************
*** 437,531 ****
// This works best for properly configured systems, old and new.
p = enc_locale();
# endif
! if (p != NULL)
! {
! char_u *save_enc;

! // Try setting 'encoding' and check if the value is valid.
! // If not, go back to the default encoding.
! save_enc = p_enc;
! p_enc = p;
! if (STRCMP(p_enc, "gb18030") == 0)
{
! // We don't support "gb18030", but "cp936" is a good substitute
! // for practical purposes, thus use that. It's not an alias to
! // still support conversion between gb18030 and utf-8.
! p_enc = vim_strsave((char_u *)"cp936");
! vim_free(p);
}
- if (mb_init() == NULL)
- {
- opt_idx = findoption((char_u *)"encoding");
- if (opt_idx >= 0)
- {
- options[opt_idx].def_val[VI_DEFAULT] = p_enc;
- options[opt_idx].flags |= P_DEF_ALLOCED;
- }

#if defined(MSWIN) || defined(MACOS_X) || defined(VMS)
! if (STRCMP(p_enc, "latin1") == 0 || enc_utf8)
! {
! // Adjust the default for 'isprint' and 'iskeyword' to match
! // latin1. Also set the defaults for when 'nocompatible' is
! // set.
! set_string_option_direct((char_u *)"isp", -1,
! ISP_LATIN1, OPT_FREE, SID_NONE);
! set_string_option_direct((char_u *)"isk", -1,
! ISK_LATIN1, OPT_FREE, SID_NONE);
! opt_idx = findoption((char_u *)"isp");
! if (opt_idx >= 0)
! options[opt_idx].def_val[VIM_DEFAULT] = ISP_LATIN1;
! opt_idx = findoption((char_u *)"isk");
! if (opt_idx >= 0)
! options[opt_idx].def_val[VIM_DEFAULT] = ISK_LATIN1;
! (void)init_chartab();
! }
#endif

#if defined(MSWIN) && (!defined(FEAT_GUI) || defined(VIMDLL))
! // Win32 console: When GetACP() returns a different value from
! // GetConsoleCP() set 'termencoding'.
! if (
# ifdef VIMDLL
! (!gui.in_use && !gui.starting) &&
# endif
! GetACP() != GetConsoleCP())
! {
! char buf[50];

! // Win32 console: In ConPTY, GetConsoleCP() returns zero.
! // Use an alternative value.
! if (GetConsoleCP() == 0)
! sprintf(buf, "cp%ld", (long)GetACP());
! else
! sprintf(buf, "cp%ld", (long)GetConsoleCP());
! p_tenc = vim_strsave((char_u *)buf);
! if (p_tenc != NULL)
{
! opt_idx = findoption((char_u *)"termencoding");
! if (opt_idx >= 0)
! {
! options[opt_idx].def_val[VI_DEFAULT] = p_tenc;
! options[opt_idx].flags |= P_DEF_ALLOCED;
! }
! convert_setup(&input_conv, p_tenc, p_enc);
! convert_setup(&output_conv, p_enc, p_tenc);
}
! else
! p_tenc = empty_option;
}
#endif
#if defined(MSWIN)
! // $HOME may have characters in active code page.
! init_homedir();
#endif
- }
- else
- {
- vim_free(p_enc);
- p_enc = save_enc;
- }
}

#ifdef FEAT_MULTI_LANG
// Set the default for 'helplang'.
--- 445,627 ----
// This works best for properly configured systems, old and new.
p = enc_locale();
# endif
! if (p == NULL)
! return;

! // Try setting 'encoding' and check if the value is valid.
! // If not, go back to the default encoding.
! char_u *save_enc = p_enc;
! p_enc = p;
! if (STRCMP(p_enc, "gb18030") == 0)
! {
! // We don't support "gb18030", but "cp936" is a good substitute
! // for practical purposes, thus use that. It's not an alias to
! // still support conversion between gb18030 and utf-8.
! p_enc = vim_strsave((char_u *)"cp936");
! vim_free(p);
! }
! if (mb_init() == NULL)
! {
! opt_idx = findoption((char_u *)"encoding");
! if (opt_idx >= 0)
{
! options[opt_idx].def_val[VI_DEFAULT] = p_enc;
! options[opt_idx].flags |= P_DEF_ALLOCED;
}

#if defined(MSWIN) || defined(MACOS_X) || defined(VMS)
! if (STRCMP(p_enc, "latin1") == 0 || enc_utf8)
! {
! // Adjust the default for 'isprint' and 'iskeyword' to match
! // latin1. Also set the defaults for when 'nocompatible' is
! // set.
! set_string_option_direct((char_u *)"isp", -1,
! ISP_LATIN1, OPT_FREE, SID_NONE);
! set_string_option_direct((char_u *)"isk", -1,
! ISK_LATIN1, OPT_FREE, SID_NONE);
! opt_idx = findoption((char_u *)"isp");
! if (opt_idx >= 0)
! options[opt_idx].def_val[VIM_DEFAULT] = ISP_LATIN1;
! opt_idx = findoption((char_u *)"isk");
! if (opt_idx >= 0)
! options[opt_idx].def_val[VIM_DEFAULT] = ISK_LATIN1;
! (void)init_chartab();
! }
#endif

#if defined(MSWIN) && (!defined(FEAT_GUI) || defined(VIMDLL))
! // Win32 console: When GetACP() returns a different value from
! // GetConsoleCP() set 'termencoding'.
! if (
# ifdef VIMDLL
! (!gui.in_use && !gui.starting) &&
# endif
! GetACP() != GetConsoleCP())
! {
! char buf[50];

! // Win32 console: In ConPTY, GetConsoleCP() returns zero.
! // Use an alternative value.
! if (GetConsoleCP() == 0)
! sprintf(buf, "cp%ld", (long)GetACP());
! else
! sprintf(buf, "cp%ld", (long)GetConsoleCP());
! p_tenc = vim_strsave((char_u *)buf);
! if (p_tenc != NULL)
! {
! opt_idx = findoption((char_u *)"termencoding");
! if (opt_idx >= 0)
{
! options[opt_idx].def_val[VI_DEFAULT] = p_tenc;
! options[opt_idx].flags |= P_DEF_ALLOCED;
}
! convert_setup(&input_conv, p_tenc, p_enc);
! convert_setup(&output_conv, p_enc, p_tenc);
}
+ else
+ p_tenc = empty_option;
+ }
#endif
#if defined(MSWIN)
! // $HOME may have characters in active code page.
! init_homedir();
#endif
}
+ else
+ {
+ vim_free(p_enc);
+ p_enc = save_enc;
+ }
+
+ }
+
+ /*
+ * Initialize the options, first part.
+ *
+ * Called only once from main(), just after creating the first buffer.
+ * If "clean_arg" is TRUE Vim was started with --clean.
+ */
+ void
+ set_init_1(int clean_arg)
+ {
+ #ifdef FEAT_LANGMAP
+ langmap_init();
+ #endif
+
+ // Be Vi compatible by default
+ p_cp = TRUE;
+
+ // Use POSIX compatibility when $VIM_POSIX is set.
+ if (mch_getenv((char_u *)"VIM_POSIX") != NULL)
+ {
+ set_string_default("cpo", (char_u *)CPO_ALL);
+ set_string_default("shm", (char_u *)SHM_POSIX);
+ }
+
+ set_init_default_shell();
+ set_init_default_backupskip();
+ set_init_default_maxmemtot();
+ set_init_default_cdpath();
+ set_init_default_printencoding();
+ #ifdef FEAT_POSTSCRIPT
+ set_init_default_printexpr();
+ #endif
+
+ /*
+ * Set all the options (except the terminal options) to their default
+ * value. Also set the global value for local options.
+ */
+ set_options_default(0);
+
+ #ifdef UNIX
+ set_init_restricted_mode();
+ #endif
+
+ #ifdef CLEAN_RUNTIMEPATH
+ if (clean_arg)
+ set_init_clean_rtp();
+ #endif
+
+ #ifdef FEAT_GUI
+ if (found_reverse_arg)
+ set_option_value_give_err((char_u *)"bg", 0L, (char_u *)"dark", 0);
+ #endif
+
+ curbuf->b_p_initialized = TRUE;
+ curbuf->b_p_ar = -1; // no local 'autoread' value
+ curbuf->b_p_ul = NO_LOCAL_UNDOLEVEL;
+ check_buf_options(curbuf);
+ check_win_options(curwin);
+ check_options();
+
+ // Must be before option_expand(), because that one needs vim_isIDc()
+ didset_options();
+
+ #ifdef FEAT_SPELL
+ // Use the current chartab for the generic chartab. This is not in
+ // didset_options() because it only depends on 'encoding'.
+ init_spell_chartab();
+ #endif
+
+ // Expand environment variables and things like "~" for the defaults.
+ set_init_expand_env();
+
+ save_file_ff(curbuf); // Buffer is unchanged
+
+ #if defined(FEAT_ARABIC)
+ // Detect use of mlterm.
+ // Mlterm is a terminal emulator akin to xterm that has some special
+ // abilities (bidi namely).
+ // NOTE: mlterm's author is being asked to 'set' a variable
+ // instead of an environment variable due to inheritance.
+ if (mch_getenv((char_u *)"MLTERM") != NULL)
+ set_option_value_give_err((char_u *)"tbidi", 1L, NULL, 0);
+ #endif
+
+ didset_options2();
+
+ set_init_lang_env();
+ set_init_default_encoding();

#ifdef FEAT_MULTI_LANG
// Set the default for 'helplang'.
*** ../vim-9.0.1294/src/version.c 2023-02-09 22:08:48.515700662 +0000
--- src/version.c 2023-02-10 14:50:19.726923185 +0000
***************
*** 697,698 ****
--- 697,700 ----
{ /* Add new patch number below this line */
+ /**/
+ 1295,
/**/

--
hundred-and-one symptoms of being an internet addict:
108. While reading a magazine, you look for the Zoom icon for a better
look at a photograph.

/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// \\\
\\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
Reply all
Reply to author
Forward
0 new messages