aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/file_search.c5
-rw-r--r--test/functional/terminal/ex_terminal_spec.lua36
2 files changed, 41 insertions, 0 deletions
diff --git a/src/nvim/file_search.c b/src/nvim/file_search.c
index 73faac0a43..d733ba311a 100644
--- a/src/nvim/file_search.c
+++ b/src/nvim/file_search.c
@@ -1370,6 +1370,11 @@ find_file_in_path_option (
char_u *buf = NULL;
int rel_to_curdir;
+ if (rel_fname != NULL && path_with_url((const char *)rel_fname)) {
+ // Do not attempt to search "relative" to a URL. #6009
+ rel_fname = NULL;
+ }
+
if (first == TRUE) {
/* copy file name into NameBuff, expanding environment variables */
save_char = ptr[len];
diff --git a/test/functional/terminal/ex_terminal_spec.lua b/test/functional/terminal/ex_terminal_spec.lua
index 4247be0417..7c391db18c 100644
--- a/test/functional/terminal/ex_terminal_spec.lua
+++ b/test/functional/terminal/ex_terminal_spec.lua
@@ -112,4 +112,40 @@ describe(':terminal (with fake shell)', function()
eq(2, eval("1+1")) -- Still alive?
end)
+ it('works with findfile()', function()
+ execute('terminal')
+ eq('term://', string.match(eval('bufname("%")'), "^term://"))
+ eq('scripts/shadacat.py', eval('findfile("scripts/shadacat.py", ".")'))
+ end)
+
+ it('works with :find', function()
+ terminal_with_fake_shell()
+ wait()
+ screen:expect([[
+ ready $ |
+ [Process exited 0] |
+ |
+ -- TERMINAL -- |
+ ]])
+ eq('term://', string.match(eval('bufname("%")'), "^term://"))
+ helpers.feed([[<C-\><C-N>]])
+ execute([[find */shadacat.py]])
+ eq('scripts/shadacat.py', eval('bufname("%")'))
+ end)
+
+ it('works with gf', function()
+ terminal_with_fake_shell([[echo "scripts/shadacat.py"]])
+ wait()
+ screen:expect([[
+ ready $ echo "scripts/shadacat.py" |
+ |
+ [Process exited 0] |
+ -- TERMINAL -- |
+ ]])
+ helpers.feed([[<C-\><C-N>]])
+ eq('term://', string.match(eval('bufname("%")'), "^term://"))
+ helpers.feed([[ggf"lgf]])
+ eq('scripts/shadacat.py', eval('bufname("%")'))
+ end)
+
end)