mirror of
https://github.com/neovim/neovim.git
synced 2025-09-14 15:28:17 +00:00
refactor: eliminate autocmd_fname_full
global
It's a micro-optimization; check path_is_absolute_path(autocmd_fname) instead. The main optimization (which is still in place) afforded by Vim 7.2.021 was to avoid resolving <afile> when it is not needed.
This commit is contained in:
@@ -13814,7 +13814,7 @@ static void f_rpcrequest(typval_T *argvars, typval_T *rettv, FunPtr fptr)
|
|||||||
scid_T save_current_SID;
|
scid_T save_current_SID;
|
||||||
uint8_t *save_sourcing_name, *save_autocmd_fname, *save_autocmd_match;
|
uint8_t *save_sourcing_name, *save_autocmd_fname, *save_autocmd_match;
|
||||||
linenr_T save_sourcing_lnum;
|
linenr_T save_sourcing_lnum;
|
||||||
int save_autocmd_fname_full, save_autocmd_bufnr;
|
int save_autocmd_bufnr;
|
||||||
void *save_funccalp;
|
void *save_funccalp;
|
||||||
|
|
||||||
if (l_provider_call_nesting) {
|
if (l_provider_call_nesting) {
|
||||||
@@ -13825,7 +13825,6 @@ static void f_rpcrequest(typval_T *argvars, typval_T *rettv, FunPtr fptr)
|
|||||||
save_sourcing_lnum = sourcing_lnum;
|
save_sourcing_lnum = sourcing_lnum;
|
||||||
save_autocmd_fname = autocmd_fname;
|
save_autocmd_fname = autocmd_fname;
|
||||||
save_autocmd_match = autocmd_match;
|
save_autocmd_match = autocmd_match;
|
||||||
save_autocmd_fname_full = autocmd_fname_full;
|
|
||||||
save_autocmd_bufnr = autocmd_bufnr;
|
save_autocmd_bufnr = autocmd_bufnr;
|
||||||
save_funccalp = save_funccal();
|
save_funccalp = save_funccal();
|
||||||
|
|
||||||
@@ -13834,7 +13833,6 @@ static void f_rpcrequest(typval_T *argvars, typval_T *rettv, FunPtr fptr)
|
|||||||
sourcing_lnum = provider_caller_scope.sourcing_lnum;
|
sourcing_lnum = provider_caller_scope.sourcing_lnum;
|
||||||
autocmd_fname = provider_caller_scope.autocmd_fname;
|
autocmd_fname = provider_caller_scope.autocmd_fname;
|
||||||
autocmd_match = provider_caller_scope.autocmd_match;
|
autocmd_match = provider_caller_scope.autocmd_match;
|
||||||
autocmd_fname_full = provider_caller_scope.autocmd_fname_full;
|
|
||||||
autocmd_bufnr = provider_caller_scope.autocmd_bufnr;
|
autocmd_bufnr = provider_caller_scope.autocmd_bufnr;
|
||||||
restore_funccal(provider_caller_scope.funccalp);
|
restore_funccal(provider_caller_scope.funccalp);
|
||||||
}
|
}
|
||||||
@@ -13850,7 +13848,6 @@ static void f_rpcrequest(typval_T *argvars, typval_T *rettv, FunPtr fptr)
|
|||||||
sourcing_lnum = save_sourcing_lnum;
|
sourcing_lnum = save_sourcing_lnum;
|
||||||
autocmd_fname = save_autocmd_fname;
|
autocmd_fname = save_autocmd_fname;
|
||||||
autocmd_match = save_autocmd_match;
|
autocmd_match = save_autocmd_match;
|
||||||
autocmd_fname_full = save_autocmd_fname_full;
|
|
||||||
autocmd_bufnr = save_autocmd_bufnr;
|
autocmd_bufnr = save_autocmd_bufnr;
|
||||||
restore_funccal(save_funccalp);
|
restore_funccal(save_funccalp);
|
||||||
}
|
}
|
||||||
@@ -22448,7 +22445,6 @@ typval_T eval_call_provider(char *provider, char *method, list_T *arguments)
|
|||||||
.sourcing_lnum = sourcing_lnum,
|
.sourcing_lnum = sourcing_lnum,
|
||||||
.autocmd_fname = autocmd_fname,
|
.autocmd_fname = autocmd_fname,
|
||||||
.autocmd_match = autocmd_match,
|
.autocmd_match = autocmd_match,
|
||||||
.autocmd_fname_full = autocmd_fname_full,
|
|
||||||
.autocmd_bufnr = autocmd_bufnr,
|
.autocmd_bufnr = autocmd_bufnr,
|
||||||
.funccalp = save_funccal()
|
.funccalp = save_funccal()
|
||||||
};
|
};
|
||||||
|
@@ -8546,11 +8546,10 @@ eval_vars (
|
|||||||
resultbuf = result; /* remember allocated string */
|
resultbuf = result; /* remember allocated string */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SPEC_AFILE: /* file name for autocommand */
|
case SPEC_AFILE: // file name for autocommand
|
||||||
if (autocmd_fname != NULL && !autocmd_fname_full) {
|
if (autocmd_fname != NULL && !path_is_absolute_path(autocmd_fname)) {
|
||||||
// Still need to turn the fname into a full path. It was
|
// Still need to turn the fname into a full path. It was
|
||||||
// postponed to avoid a delay when <afile> is not used.
|
// postponed to avoid a delay when <afile> is not used.
|
||||||
autocmd_fname_full = true;
|
|
||||||
result = (char_u *)FullName_save((char *)autocmd_fname, false);
|
result = (char_u *)FullName_save((char *)autocmd_fname, false);
|
||||||
// Copy into `autocmd_fname`, don't reassign it. #8165
|
// Copy into `autocmd_fname`, don't reassign it. #8165
|
||||||
xstrlcpy((char *)autocmd_fname, (char *)result, MAXPATHL);
|
xstrlcpy((char *)autocmd_fname, (char *)result, MAXPATHL);
|
||||||
|
@@ -6655,7 +6655,6 @@ static bool apply_autocmds_group(event_T event, char_u *fname, char_u *fname_io,
|
|||||||
char_u *save_sourcing_name;
|
char_u *save_sourcing_name;
|
||||||
linenr_T save_sourcing_lnum;
|
linenr_T save_sourcing_lnum;
|
||||||
char_u *save_autocmd_fname;
|
char_u *save_autocmd_fname;
|
||||||
int save_autocmd_fname_full;
|
|
||||||
int save_autocmd_bufnr;
|
int save_autocmd_bufnr;
|
||||||
char_u *save_autocmd_match;
|
char_u *save_autocmd_match;
|
||||||
int save_autocmd_busy;
|
int save_autocmd_busy;
|
||||||
@@ -6728,7 +6727,6 @@ static bool apply_autocmds_group(event_T event, char_u *fname, char_u *fname_io,
|
|||||||
* Save the autocmd_* variables and info about the current buffer.
|
* Save the autocmd_* variables and info about the current buffer.
|
||||||
*/
|
*/
|
||||||
save_autocmd_fname = autocmd_fname;
|
save_autocmd_fname = autocmd_fname;
|
||||||
save_autocmd_fname_full = autocmd_fname_full;
|
|
||||||
save_autocmd_bufnr = autocmd_bufnr;
|
save_autocmd_bufnr = autocmd_bufnr;
|
||||||
save_autocmd_match = autocmd_match;
|
save_autocmd_match = autocmd_match;
|
||||||
save_autocmd_busy = autocmd_busy;
|
save_autocmd_busy = autocmd_busy;
|
||||||
@@ -6758,7 +6756,6 @@ static bool apply_autocmds_group(event_T event, char_u *fname, char_u *fname_io,
|
|||||||
// Allocate MAXPATHL for when eval_vars() resolves the fullpath.
|
// Allocate MAXPATHL for when eval_vars() resolves the fullpath.
|
||||||
autocmd_fname = vim_strnsave(autocmd_fname, MAXPATHL);
|
autocmd_fname = vim_strnsave(autocmd_fname, MAXPATHL);
|
||||||
}
|
}
|
||||||
autocmd_fname_full = false; // call FullName_save() later
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set the buffer number to be used for <abuf>.
|
* Set the buffer number to be used for <abuf>.
|
||||||
@@ -6925,7 +6922,6 @@ static bool apply_autocmds_group(event_T event, char_u *fname, char_u *fname_io,
|
|||||||
sourcing_lnum = save_sourcing_lnum;
|
sourcing_lnum = save_sourcing_lnum;
|
||||||
xfree(autocmd_fname);
|
xfree(autocmd_fname);
|
||||||
autocmd_fname = save_autocmd_fname;
|
autocmd_fname = save_autocmd_fname;
|
||||||
autocmd_fname_full = save_autocmd_fname_full;
|
|
||||||
autocmd_bufnr = save_autocmd_bufnr;
|
autocmd_bufnr = save_autocmd_bufnr;
|
||||||
autocmd_match = save_autocmd_match;
|
autocmd_match = save_autocmd_match;
|
||||||
current_SID = save_current_SID;
|
current_SID = save_current_SID;
|
||||||
|
@@ -416,7 +416,7 @@ EXTERN struct caller_scope {
|
|||||||
scid_T SID;
|
scid_T SID;
|
||||||
uint8_t *sourcing_name, *autocmd_fname, *autocmd_match;
|
uint8_t *sourcing_name, *autocmd_fname, *autocmd_match;
|
||||||
linenr_T sourcing_lnum;
|
linenr_T sourcing_lnum;
|
||||||
int autocmd_fname_full, autocmd_bufnr;
|
int autocmd_bufnr;
|
||||||
void *funccalp;
|
void *funccalp;
|
||||||
} provider_caller_scope;
|
} provider_caller_scope;
|
||||||
EXTERN int provider_call_nesting INIT(= 0);
|
EXTERN int provider_call_nesting INIT(= 0);
|
||||||
@@ -872,7 +872,6 @@ EXTERN char_u *last_cmdline INIT(= NULL); // last command line (for ":)
|
|||||||
EXTERN char_u *repeat_cmdline INIT(= NULL); // command line for "."
|
EXTERN char_u *repeat_cmdline INIT(= NULL); // command line for "."
|
||||||
EXTERN char_u *new_last_cmdline INIT(= NULL); // new value for last_cmdline
|
EXTERN char_u *new_last_cmdline INIT(= NULL); // new value for last_cmdline
|
||||||
EXTERN char_u *autocmd_fname INIT(= NULL); // fname for <afile> on cmdline
|
EXTERN char_u *autocmd_fname INIT(= NULL); // fname for <afile> on cmdline
|
||||||
EXTERN int autocmd_fname_full; // autocmd_fname is full path
|
|
||||||
EXTERN int autocmd_bufnr INIT(= 0); // fnum for <abuf> on cmdline
|
EXTERN int autocmd_bufnr INIT(= 0); // fnum for <abuf> on cmdline
|
||||||
EXTERN char_u *autocmd_match INIT(= NULL); // name for <amatch> on cmdline
|
EXTERN char_u *autocmd_match INIT(= NULL); // name for <amatch> on cmdline
|
||||||
EXTERN int did_cursorhold INIT(= false); // set when CursorHold t'gerd
|
EXTERN int did_cursorhold INIT(= false); // set when CursorHold t'gerd
|
||||||
|
Reference in New Issue
Block a user