mirror of
https://github.com/neovim/neovim.git
synced 2026-04-24 08:15:41 +00:00
vim-patch:9.1.0359: MS-Windows: relative import in a script sourced from a buffer doesn't work
Problem: MS-Windows: Relative import in a script sourced from a buffer
doesn't work (Ernie Rael)
Solution: Set a filename, so that we are not trying to use
script-relative filename (Yegappan Lakshmanan)
When a script is sourced from a buffer, the file name is set to ":source
buffer=". In MS-Windows, the ":" is a path separator character (used
after a drive letter). This results in the code trying to use the ":"
prefix to import the script on MS-Windows. To fix this, when importing a
script from a script sourced from a buffer with nofile, don't use
a script relative path name.
fixes vim/vim#14588
closes: vim/vim#14603
f135fa28e4
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
This commit is contained in:
@@ -1993,14 +1993,19 @@ static char *do_source_buffer_init(source_cookie_T *sp, const exarg_T *eap, bool
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (ex_lua) {
|
||||
// Use ":{range}lua buffer=<num>" as the script name
|
||||
snprintf(IObuff, IOSIZE, ":{range}lua buffer=%d", curbuf->b_fnum);
|
||||
char *fname;
|
||||
if (curbuf->b_ffname != NULL) {
|
||||
fname = xstrdup(curbuf->b_ffname);
|
||||
} else {
|
||||
// Use ":source buffer=<num>" as the script name
|
||||
snprintf(IObuff, IOSIZE, ":source buffer=%d", curbuf->b_fnum);
|
||||
if (ex_lua) {
|
||||
// Use ":{range}lua buffer=<num>" as the script name
|
||||
snprintf(IObuff, IOSIZE, ":{range}lua buffer=%d", curbuf->b_fnum);
|
||||
} else {
|
||||
// Use ":source buffer=<num>" as the script name
|
||||
snprintf(IObuff, IOSIZE, ":source buffer=%d", curbuf->b_fnum);
|
||||
}
|
||||
fname = xstrdup(IObuff);
|
||||
}
|
||||
char *fname = xstrdup(IObuff);
|
||||
|
||||
ga_init(&sp->buflines, sizeof(char *), 100);
|
||||
// Copy the lines from the buffer into a grow array
|
||||
|
||||
Reference in New Issue
Block a user