forked from aniani/vim
patch 8.2.4060: win_execute() slow on systems where getcwd()/chdir() is slow
Problem: win_execute() is slow on systems where getcwd() or chdir() is slow. (Rick Howe) Solution: Avoid using getcwd() and chdir() if no local directory is used and 'acd' is not set. (closes #9504)
This commit is contained in:
@@ -707,13 +707,26 @@ f_win_execute(typval_T *argvars, typval_T *rettv)
|
||||
{
|
||||
pos_T curpos = wp->w_cursor;
|
||||
char_u cwd[MAXPATHL];
|
||||
int cwd_status;
|
||||
int cwd_status = FAIL;
|
||||
#ifdef FEAT_AUTOCHDIR
|
||||
char_u autocwd[MAXPATHL];
|
||||
int apply_acd = FALSE;
|
||||
#endif
|
||||
|
||||
cwd_status = mch_dirname(cwd, MAXPATHL);
|
||||
// Getting and setting directory can be slow on some systems, only do
|
||||
// this when the current or target window/tab have a local directory or
|
||||
// 'acd' is set.
|
||||
if (curwin != wp
|
||||
&& (curwin->w_localdir != NULL
|
||||
|| wp->w_localdir != NULL
|
||||
|| (curtab != tp
|
||||
&& (curtab->tp_localdir != NULL
|
||||
|| tp->tp_localdir != NULL))
|
||||
#ifdef FEAT_AUTOCHDIR
|
||||
|| p_acd
|
||||
#endif
|
||||
))
|
||||
cwd_status = mch_dirname(cwd, MAXPATHL);
|
||||
|
||||
#ifdef FEAT_AUTOCHDIR
|
||||
// If 'acd' is set, check we are using that directory. If yes, then
|
||||
|
@@ -750,6 +750,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
4060,
|
||||
/**/
|
||||
4059,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user